Requires any of the roles: | bookingsupplier-administrator-write, superadmin |
GET | /timeexceptions/collidingevents | Searches for collisions with existing bookings of the resource | Searches for existing bookings and investigates if a proposed time exception would collide with them, if so, the bookings should be unbooked to be able to create the time exception. A time exception must be either recurring (DaysOfWeek, ExceptionFromTime, ExceptionToTime is set) or non recurring (From and To are set). |
---|
import java.math.*
import java.util.*
import net.servicestack.client.*
@ApiResponse(Description="The request parameters was not valid", StatusCode=400)
// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
// @ApiResponse(Description="You have too low privilegies to call this service", StatusCode=403)
@ValidateRequest(Validator="IsAuthenticated")
open class CollidingBookingQuery
{
/**
* The company id, if empty will use the company id for the user you are logged in with.
*/
@ApiMember(Description="The company id, if empty will use the company id for the user you are logged in with.")
var CompanyId:UUID? = null
/**
* Resource ids of the resource that should be matched against booked events
*/
@ApiMember(Description="Resource ids of the resource that should be matched against booked events")
var ResourceIds:ArrayList<Int>? = null
/**
* Time exception starting date
*/
@ApiMember(Description="Time exception starting date")
var From:Date? = null
/**
* Time exception ending date
*/
@ApiMember(Description="Time exception ending date")
var To:Date? = null
/**
* This value indicates the time of day when the time exception begins. Example: 10:00. If Recurring this will be the startime for each recurring day.
*/
@ApiMember(Description="This value indicates the time of day when the time exception begins. Example: 10:00. If Recurring this will be the startime for each recurring day.")
var FromTime:TimeSpan? = null
/**
* This value indicates the time of day when the time exception ends. Example: 12:00. If Recurring this will be the endtime for each recurring day.
*/
@ApiMember(Description="This value indicates the time of day when the time exception ends. Example: 12:00. If Recurring this will be the endtime for each recurring day.")
var ToTime:TimeSpan? = null
/**
* A comma separated list of which days this day exception belongs to, 1 = Monday .. 7 = Sunday
*/
@ApiMember(Description="A comma separated list of which days this day exception belongs to, 1 = Monday .. 7 = Sunday")
var DaysOfWeek:ArrayList<Int>? = null
/**
* If you want to include the service information for the booking
*/
@ApiMember(DataType="boolean", Description="If you want to include the service information for the booking", ParameterType="query")
var IncludeServiceInformation:Boolean? = null
/**
* If you want to include the customer information for the booking
*/
@ApiMember(DataType="boolean", Description="If you want to include the customer information for the booking", ParameterType="query")
var IncludeCustomerInformation:Boolean? = null
}
open class CollidingBookingQueryResponse
{
/**
* Resource id of the resource that owns this exception
*/
@ApiMember(Description="Resource id of the resource that owns this exception")
var ResourceIds:ArrayList<Int>? = null
/**
* A list of bookings that would collide with the time exception
*/
@ApiMember(Description="A list of bookings that would collide with the time exception")
var Bookings:ArrayList<BookingIntervalResponse> = ArrayList<BookingIntervalResponse>()
var ResponseStatus:ResponseStatus? = null
}
open class BookingIntervalResponse
{
var Id:Int? = null
var CompanyId:UUID? = null
var From:Date? = null
var To:Date? = null
var Status:BookingStatusEnum? = null
var StatusId:Int? = null
var StatusName:String? = null
var Customer:BookedCustomer? = null
var Service:ServiceInfoResponse? = null
var CreatedDate:Date? = null
}
enum class BookingStatusEnum(val value:Int)
{
Booked(1),
Unbooked(2),
Reserved(3),
Canceled(4),
AwaitingPayment(5),
AwaitingPaymentNoTimeLimit(6),
Payed(7),
AwaitingPaymentRequestFromAdmin(8),
AwaitingPaymentFromProvider(9),
Invoiced(10),
}
open class BookedCustomer
{
var Id:UUID? = null
var Firstname:String? = null
var Lastname:String? = null
var Email:String? = null
var Phone:String? = null
var FacebookUserName:String? = null
var ImageUrl:String? = null
var CorporateIdentityNumber:String? = null
var InvoiceAddress1:String? = null
var InvoiceAddress2:String? = null
var InvoiceCity:String? = null
var InvoicePostalCode:String? = null
var InvoiceCountryCode:String? = null
}
open class ServiceInfoResponse
{
var Id:Int? = null
var Name:String? = null
var Description:String? = null
var ImageUrl:Uri? = null
var LengthInMinutes:Int? = null
var MaxNumberOfSpotsPerBooking:Int? = null
var MinNumberOfSpotsPerBooking:Int? = null
var GroupBooking:GroupBookingSettings? = null
var MultipleResource:MultipleResourceSettings? = null
var IsGroupBooking:Boolean? = null
var IsPaymentEnabled:Boolean? = null
}
open class GroupBookingSettings
{
var Active:Boolean? = null
var Min:Int? = null
var Max:Int? = null
}
open class MultipleResourceSettings
{
var Active:Boolean? = null
var Min:Int? = null
var Max:Int? = null
}
Kotlin CollidingBookingQuery DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
GET /timeexceptions/collidingevents HTTP/1.1 Host: api.bokamera.se Accept: text/jsv
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { ResourceIds: [ 0 ], Bookings: [ { Id: 0, Status: Booked, StatusId: 0, StatusName: String, Customer: { Firstname: String, Lastname: String, Email: String, Phone: String, FacebookUserName: String, ImageUrl: String, CorporateIdentityNumber: String, InvoiceAddress1: String, InvoiceAddress2: String, InvoiceCity: String, InvoicePostalCode: String, InvoiceCountryCode: String }, Service: { Id: 0, Name: String, Description: String, LengthInMinutes: 0, MaxNumberOfSpotsPerBooking: 0, MinNumberOfSpotsPerBooking: 0, GroupBooking: { Active: False, Min: 0, Max: 0 }, MultipleResource: { Active: False, Min: 0, Max: 0 }, IsGroupBooking: False, IsPaymentEnabled: False } } ], ResponseStatus: { ErrorCode: String, Message: String, StackTrace: String, Errors: [ { ErrorCode: String, FieldName: String, Message: String, Meta: { String: String } } ], Meta: { String: String } } }