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).
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using BokaMera.API.ServiceModel.Dtos;
using BokaMera.API.ServiceModel.Enums;

namespace BokaMera.API.ServiceModel.Dtos
{
    public partial class BookedCustomer
    {
        public virtual Guid Id { get; set; }
        public virtual string Firstname { get; set; }
        public virtual string Lastname { get; set; }
        public virtual string Email { get; set; }
        public virtual string Phone { get; set; }
        public virtual string FacebookUserName { get; set; }
        public virtual string ImageUrl { get; set; }
        public virtual string CorporateIdentityNumber { get; set; }
        public virtual string InvoiceAddress1 { get; set; }
        public virtual string InvoiceAddress2 { get; set; }
        public virtual string InvoiceCity { get; set; }
        public virtual string InvoicePostalCode { get; set; }
        public virtual string InvoiceCountryCode { get; set; }
    }

    public partial class BookingIntervalResponse
    {
        public virtual int Id { get; set; }
        public virtual Guid CompanyId { get; set; }
        public virtual DateTime From { get; set; }
        public virtual DateTime To { get; set; }
        public virtual BookingStatusEnum Status { get; set; }
        public virtual int StatusId { get; set; }
        public virtual string StatusName { get; set; }
        public virtual BookedCustomer Customer { get; set; }
        public virtual ServiceInfoResponse Service { get; set; }
        public virtual DateTime CreatedDate { 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("IsAuthenticated")]
    public partial class CollidingBookingQuery
    {
        public CollidingBookingQuery()
        {
            ResourceIds = new int[]{};
            DaysOfWeek = new int[]{};
        }

        ///<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.")]
        public virtual Guid? CompanyId { 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")]
        public virtual int[] ResourceIds { get; set; }

        ///<summary>
        ///Time exception starting date
        ///</summary>
        [ApiMember(Description="Time exception starting date")]
        public virtual DateTime From { get; set; }

        ///<summary>
        ///Time exception ending date
        ///</summary>
        [ApiMember(Description="Time exception ending date")]
        public virtual DateTime To { 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.")]
        public virtual TimeSpan FromTime { 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.")]
        public virtual TimeSpan ToTime { 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")]
        public virtual int[] DaysOfWeek { 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")]
        public virtual bool IncludeServiceInformation { 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")]
        public virtual bool IncludeCustomerInformation { get; set; }
    }

    public partial class CollidingBookingQueryResponse
    {
        public CollidingBookingQueryResponse()
        {
            ResourceIds = new int[]{};
            Bookings = new List<BookingIntervalResponse>{};
        }

        ///<summary>
        ///Resource id of the resource that owns this exception
        ///</summary>
        [ApiMember(Description="Resource id of the resource that owns this exception")]
        public virtual int[] ResourceIds { 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")]
        public virtual List<BookingIntervalResponse> Bookings { get; set; }

        public virtual ResponseStatus ResponseStatus { get; set; }
    }

    public partial class GroupBookingSettings
    {
        public virtual bool Active { get; set; }
        public virtual int Min { get; set; }
        public virtual int Max { get; set; }
    }

    public partial class MultipleResourceSettings
    {
        public virtual bool Active { get; set; }
        public virtual int Min { get; set; }
        public virtual int Max { get; set; }
    }

    public partial class ServiceInfoResponse
    {
        public virtual int Id { get; set; }
        public virtual string Name { get; set; }
        public virtual string Description { get; set; }
        public virtual Uri ImageUrl { get; set; }
        public virtual int? LengthInMinutes { get; set; }
        public virtual int MaxNumberOfSpotsPerBooking { get; set; }
        public virtual int MinNumberOfSpotsPerBooking { get; set; }
        public virtual GroupBookingSettings GroupBooking { get; set; }
        public virtual MultipleResourceSettings MultipleResource { get; set; }
        public virtual bool IsGroupBooking { get; set; }
        public virtual bool IsPaymentEnabled { get; set; }
    }

}

namespace BokaMera.API.ServiceModel.Enums
{
    public enum BookingStatusEnum
    {
        Booked = 1,
        Unbooked = 2,
        Reserved = 3,
        Canceled = 4,
        AwaitingPayment = 5,
        AwaitingPaymentNoTimeLimit = 6,
        Payed = 7,
        AwaitingPaymentRequestFromAdmin = 8,
        AwaitingPaymentFromProvider = 9,
        Invoiced = 10,
    }

}

C# CollidingBookingQuery DTOs

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

HTTP + XML

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: application/xml
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<CollidingBookingQueryResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/BokaMera.API.ServiceModel.Dtos">
  <Bookings>
    <BookingIntervalResponse>
      <CompanyId>00000000-0000-0000-0000-000000000000</CompanyId>
      <CreatedDate>0001-01-01T00:00:00</CreatedDate>
      <Customer>
        <CorporateIdentityNumber>String</CorporateIdentityNumber>
        <Email>String</Email>
        <FacebookUserName>String</FacebookUserName>
        <Firstname>String</Firstname>
        <Id>00000000-0000-0000-0000-000000000000</Id>
        <ImageUrl>String</ImageUrl>
        <InvoiceAddress1>String</InvoiceAddress1>
        <InvoiceAddress2>String</InvoiceAddress2>
        <InvoiceCity>String</InvoiceCity>
        <InvoiceCountryCode>String</InvoiceCountryCode>
        <InvoicePostalCode>String</InvoicePostalCode>
        <Lastname>String</Lastname>
        <Phone>String</Phone>
      </Customer>
      <From>0001-01-01T00:00:00</From>
      <Id>0</Id>
      <Service>
        <Description>String</Description>
        <GroupBooking>
          <Active>false</Active>
          <Max>0</Max>
          <Min>0</Min>
        </GroupBooking>
        <Id>0</Id>
        <ImageUrl i:nil="true" />
        <IsGroupBooking>false</IsGroupBooking>
        <IsPaymentEnabled>false</IsPaymentEnabled>
        <LengthInMinutes>0</LengthInMinutes>
        <MaxNumberOfSpotsPerBooking>0</MaxNumberOfSpotsPerBooking>
        <MinNumberOfSpotsPerBooking>0</MinNumberOfSpotsPerBooking>
        <MultipleResource>
          <Active>false</Active>
          <Max>0</Max>
          <Min>0</Min>
        </MultipleResource>
        <Name>String</Name>
      </Service>
      <Status>Booked</Status>
      <StatusId>0</StatusId>
      <StatusName>String</StatusName>
      <To>0001-01-01T00:00:00</To>
    </BookingIntervalResponse>
  </Bookings>
  <ResourceIds xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
    <d2p1:int>0</d2p1:int>
  </ResourceIds>
  <ResponseStatus xmlns:d2p1="http://schemas.servicestack.net/types">
    <d2p1:ErrorCode>String</d2p1:ErrorCode>
    <d2p1:Message>String</d2p1:Message>
    <d2p1:StackTrace>String</d2p1:StackTrace>
    <d2p1:Errors>
      <d2p1:ResponseError>
        <d2p1:ErrorCode>String</d2p1:ErrorCode>
        <d2p1:FieldName>String</d2p1:FieldName>
        <d2p1:Message>String</d2p1:Message>
        <d2p1:Meta xmlns:d5p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
          <d5p1:KeyValueOfstringstring>
            <d5p1:Key>String</d5p1:Key>
            <d5p1:Value>String</d5p1:Value>
          </d5p1:KeyValueOfstringstring>
        </d2p1:Meta>
      </d2p1:ResponseError>
    </d2p1:Errors>
    <d2p1:Meta xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <d3p1:KeyValueOfstringstring>
        <d3p1:Key>String</d3p1:Key>
        <d3p1:Value>String</d3p1:Value>
      </d3p1:KeyValueOfstringstring>
    </d2p1:Meta>
  </ResponseStatus>
</CollidingBookingQueryResponse>