BokaMera.API.Host

<back to all web services

CollidingBookingQuery

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, superadmin
The following routes are available for this service:
GET/timeexceptions/collidingeventsSearches for collisions with existing bookings of the resourceSearches 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

F# CollidingBookingQuery DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + 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
		}
	}
}