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 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.")
@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 } } }