| 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 Foundation
import ServiceStack
// @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")
public class CollidingBookingQuery : Codable
{
/**
* 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.")
public var companyId:String?
/**
* 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")
public var resourceIds:[Int] = []
/**
* Time exception starting date
*/
// @ApiMember(Description="Time exception starting date")
public var from:Date
/**
* Time exception ending date
*/
// @ApiMember(Description="Time exception ending date")
public var to:Date
/**
* This value indicates the time of day when the time exception begins. Example: 10:00. If Recurring this will be the start time 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 start time for each recurring day.")
@TimeSpan public var fromTime:TimeInterval
/**
* 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.")
@TimeSpan public var toTime:TimeInterval
/**
* 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")
public var daysOfWeek:[Int] = []
/**
* 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")
public var includeServiceInformation:Bool
/**
* 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")
public var includeCustomerInformation:Bool
required public init(){}
}
public class CollidingBookingQueryResponse : Codable
{
/**
* Resource id of the resource that owns this exception
*/
// @ApiMember(Description="Resource id of the resource that owns this exception")
public var resourceIds:[Int] = []
/**
* A list of bookings that would collide with the time exception
*/
// @ApiMember(Description="A list of bookings that would collide with the time exception")
public var bookings:[BookingIntervalResponse] = []
public var responseStatus:ResponseStatus
required public init(){}
}
public class BookingIntervalResponse : Codable
{
public var id:Int
public var companyId:String
public var from:Date
public var to:Date
public var status:BookingStatusEnum
public var statusId:Int
public var statusName:String
public var customer:BookedCustomer
public var service:ServiceInfoResponse
public var createdDate:Date
required public init(){}
}
public enum BookingStatusEnum : Int, Codable
{
case Booked = 1
case Unbooked = 2
case Reserved = 3
case Canceled = 4
case AwaitingPayment = 5
case AwaitingPaymentNoTimeLimit = 6
case Payed = 7
case AwaitingPaymentRequestFromAdmin = 8
case AwaitingPaymentFromProvider = 9
case Invoiced = 10
}
public class BookedCustomer : Codable
{
public var id:String
public var firstname:String
public var lastname:String
public var email:String
public var phone:String
public var facebookUserName:String
public var imageUrl:String
public var corporateIdentityNumber:String
public var invoiceAddress1:String
public var invoiceAddress2:String
public var invoiceCity:String
public var invoicePostalCode:String
public var invoiceCountryCode:String
required public init(){}
}
public class ServiceInfoResponse : Codable
{
public var id:Int
public var name:String
public var Description:String
public var imageUrl:Uri
public var lengthInMinutes:Int?
public var maxNumberOfSpotsPerBooking:Int
public var minNumberOfSpotsPerBooking:Int
public var groupBooking:GroupBookingSettings
public var multipleResource:MultipleResourceSettings
public var isGroupBooking:Bool
public var isPaymentEnabled:Bool
required public init(){}
}
public class GroupBookingSettings : Codable
{
public var active:Bool
public var min:Int
public var max:Int
required public init(){}
}
public class MultipleResourceSettings : Codable
{
public var active:Bool
public var min:Int
public var max:Int
required public init(){}
}
Swift 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
}
}
}