| 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.IO
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[] = null 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> = null 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[] = null 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 start time 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 start time 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[] = null 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 .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.bookmore.com 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
}
}
}