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 .csv suffix or ?format=csv
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/csv
HTTP/1.1 200 OK Content-Type: text/csv 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"}}}