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). |
---|
namespace BokaMera.API.ServiceModel.Dtos
open System
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations
type BookingStatusEnum =
| Booked = 1
| Unbooked = 2
| Reserved = 3
| Canceled = 4
| AwaitingPayment = 5
| AwaitingPaymentNoTimeLimit = 6
| Payed = 7
| AwaitingPaymentRequestFromAdmin = 8
| AwaitingPaymentFromProvider = 9
| Invoiced = 10
[<AllowNullLiteral>]
type BookedCustomer() =
member val Id:Guid = new Guid() with get,set
member val Firstname:String = null with get,set
member val Lastname:String = null with get,set
member val Email:String = null with get,set
member val Phone:String = null with get,set
member val FacebookUserName:String = null with get,set
member val ImageUrl:String = null with get,set
member val CorporateIdentityNumber:String = null with get,set
member val InvoiceAddress1:String = null with get,set
member val InvoiceAddress2:String = null with get,set
member val InvoiceCity:String = null with get,set
member val InvoicePostalCode:String = null with get,set
member val InvoiceCountryCode:String = null with get,set
[<AllowNullLiteral>]
type GroupBookingSettings() =
member val Active:Boolean = new Boolean() with get,set
member val Min:Int32 = new Int32() with get,set
member val Max:Int32 = new Int32() with get,set
[<AllowNullLiteral>]
type MultipleResourceSettings() =
member val Active:Boolean = new Boolean() with get,set
member val Min:Int32 = new Int32() with get,set
member val Max:Int32 = new Int32() with get,set
[<AllowNullLiteral>]
type ServiceInfoResponse() =
member val Id:Int32 = new Int32() with get,set
member val Name:String = null with get,set
member val Description:String = null with get,set
member val ImageUrl:Uri = null with get,set
member val LengthInMinutes:Nullable<Int32> = new Nullable<Int32>() with get,set
member val MaxNumberOfSpotsPerBooking:Int32 = new Int32() with get,set
member val MinNumberOfSpotsPerBooking:Int32 = new Int32() with get,set
member val GroupBooking:GroupBookingSettings = null with get,set
member val MultipleResource:MultipleResourceSettings = null with get,set
member val IsGroupBooking:Boolean = new Boolean() with get,set
member val IsPaymentEnabled:Boolean = new Boolean() with get,set
[<AllowNullLiteral>]
type BookingIntervalResponse() =
member val Id:Int32 = new Int32() with get,set
member val CompanyId:Guid = new Guid() with get,set
member val From:DateTime = new DateTime() with get,set
member val To:DateTime = new DateTime() with get,set
member val Status:BookingStatusEnum = new BookingStatusEnum() with get,set
member val StatusId:Int32 = new Int32() with get,set
member val StatusName:String = null with get,set
member val Customer:BookedCustomer = null with get,set
member val Service:ServiceInfoResponse = null with get,set
member val CreatedDate:DateTime = new DateTime() with get,set
[<AllowNullLiteral>]
type CollidingBookingQueryResponse() =
///<summary>
///Resource id of the resource that owns this exception
///</summary>
[<ApiMember(Description="Resource id of the resource that owns this exception")>]
member val ResourceIds:Int32[] = [||] with get,set
///<summary>
///A list of bookings that would collide with the time exception
///</summary>
[<ApiMember(Description="A list of bookings that would collide with the time exception")>]
member val Bookings:ResizeArray<BookingIntervalResponse> = new ResizeArray<BookingIntervalResponse>() with get,set
member val ResponseStatus:ResponseStatus = null with get,set
[<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")>]
[<AllowNullLiteral>]
type CollidingBookingQuery() =
///<summary>
///The company id, if empty will use the company id for the user you are logged in with.
///</summary>
[<ApiMember(Description="The company id, if empty will use the company id for the user you are logged in with.")>]
member val CompanyId:Nullable<Guid> = new Nullable<Guid>() with get,set
///<summary>
///Resource ids of the resource that should be matched against booked events
///</summary>
[<ApiMember(Description="Resource ids of the resource that should be matched against booked events")>]
member val ResourceIds:Int32[] = [||] with get,set
///<summary>
///Time exception starting date
///</summary>
[<ApiMember(Description="Time exception starting date")>]
member val From:DateTime = new DateTime() with get,set
///<summary>
///Time exception ending date
///</summary>
[<ApiMember(Description="Time exception ending date")>]
member val To:DateTime = new DateTime() with get,set
///<summary>
///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.
///</summary>
[<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.")>]
member val FromTime:TimeSpan = new TimeSpan() with get,set
///<summary>
///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.
///</summary>
[<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.")>]
member val ToTime:TimeSpan = new TimeSpan() with get,set
///<summary>
///A comma separated list of which days this day exception belongs to, 1 = Monday .. 7 = Sunday
///</summary>
[<ApiMember(Description="A comma separated list of which days this day exception belongs to, 1 = Monday .. 7 = Sunday")>]
member val DaysOfWeek:Int32[] = [||] with get,set
///<summary>
///If you want to include the service information for the booking
///</summary>
[<ApiMember(DataType="boolean", Description="If you want to include the service information for the booking", ParameterType="query")>]
member val IncludeServiceInformation:Boolean = new Boolean() with get,set
///<summary>
///If you want to include the customer information for the booking
///</summary>
[<ApiMember(DataType="boolean", Description="If you want to include the customer information for the booking", ParameterType="query")>]
member val IncludeCustomerInformation:Boolean = new Boolean() with get,set
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"}}}