PUT | /services/{Id}/calculateprice | Calculate price on service | Calculate an price on a service. |
---|
namespace BokaMera.API.ServiceModel.Dtos
open System
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations
[<AllowNullLiteral>]
type RebateCodeTypeResponse() =
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
[<AllowNullLiteral>]
type AppliedRebateCodesResponse() =
member val RebateCodeSign:String = null with get,set
member val RebateCodeValue:Int32 = new Int32() with get,set
member val RebateCodeType:RebateCodeTypeResponse = null with get,set
member val RebateCodeId:Int32 = new Int32() with get,set
member val RebateAmount:Double = new Double() with get,set
[<AllowNullLiteral>]
type TotalPricePriceDetail() =
member val Quantity:Int32 = new Int32() with get,set
member val Price:Double = new Double() with get,set
member val VatAmount:Double = new Double() with get,set
member val Description:String = null with get,set
[<AllowNullLiteral>]
type TotalPriceInformationResponse() =
member val PriceSign:String = null with get,set
member val CurrencyId:String = null with get,set
member val TotalPrice:Double = new Double() with get,set
member val TotalVatAmount:Double = new Double() with get,set
member val TotalPriceBeforeRebate:Double = new Double() with get,set
member val AppliedCodes:ResizeArray<AppliedRebateCodesResponse> = new ResizeArray<AppliedRebateCodesResponse>() with get,set
member val PriceDetails:ResizeArray<TotalPricePriceDetail> = new ResizeArray<TotalPricePriceDetail>() with get,set
[<AllowNullLiteral>]
type PriceInterval() =
///<summary>
///The start date and time for the price to be calculated. Normally the booking start datetime.
///</summary>
[<ApiMember(Description="The start date and time for the price to be calculated. Normally the booking start datetime.", IsRequired=true)>]
member val From:DateTime = new DateTime() with get,set
///<summary>
///The end date and time for the price to be calculated.Normally the booking end datetime. If nothing entered it will use the service length.
///</summary>
[<ApiMember(Description="The end date and time for the price to be calculated.Normally the booking end datetime. If nothing entered it will use the service length.")>]
member val To:Nullable<DateTime> = new Nullable<DateTime>() with get,set
[<AllowNullLiteral>]
type CalculateTotalPriceOnService() =
///<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>
///Id of the service
///</summary>
[<ApiMember(Description="Id of the service", IsRequired=true, ParameterType="path")>]
member val Id:Int32 = new Int32() with get,set
///<summary>
///The price interval to be used for calculations
///</summary>
[<ApiMember(Description="The price interval to be used for calculations", IsRequired=true)>]
member val Interval:PriceInterval = null with get,set
///<summary>
///Rebate codes applied to booking
///</summary>
[<ApiMember(Description="Rebate codes applied to booking")>]
member val RebateCodeIds:ResizeArray<Int32> = new ResizeArray<Int32>() with get,set
///<summary>
///If you have selected to include the prices, here you can include the quantities to book to get the correct total price.
///</summary>
[<ApiMember(Description="If you have selected to include the prices, here you can include the quantities to book to get the correct total price.")>]
member val Quantities:QuantityToBook[] = [||] with get,set
///<summary>
///
///</summary>
[<ApiMember(Description="")>]
member val CustomerEmail:String = null with get,set
[<AllowNullLiteral>]
type QuantityToBook() =
///<summary>
///If service has a price, enter the price id for that price. If no price exists for the service set 0 as PriceId. If you put 0 and a price exists, it will use that price (only works if just one price exists for the current selected date to book)
///</summary>
[<ApiMember(Description="If service has a price, enter the price id for that price. If no price exists for the service set 0 as PriceId. If you put 0 and a price exists, it will use that price (only works if just one price exists for the current selected date to book)", IsRequired=true)>]
member val PriceId:Int32 = new Int32() with get,set
///<summary>
///Set the number of spots or resources you want to book on the specific price category
///</summary>
[<ApiMember(Description="Set the number of spots or resources you want to book on the specific price category", IsRequired=true)>]
member val Quantity:Int32 = new Int32() with get,set
///<summary>
///If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information.
///</summary>
[<ApiMember(Description="If the quantity you add should occupy a spot. Default is true. If no it will only be a row that includes price information.")>]
member val OccupiesSpot:Boolean = new Boolean() with get,set
F# CalculateTotalPriceOnService DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
PUT /services/{Id}/calculateprice HTTP/1.1
Host: api.bokamera.se
Accept: application/xml
Content-Type: application/xml
Content-Length: length
<CalculateTotalPriceOnService xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/BokaMera.API.ServiceModel.Dtos">
<CompanyId>00000000-0000-0000-0000-000000000000</CompanyId>
<CustomerEmail>String</CustomerEmail>
<Id>0</Id>
<Interval>
<From>0001-01-01T00:00:00</From>
<To>0001-01-01T00:00:00</To>
</Interval>
<Quantities>
<QuantityToBook>
<OccupiesSpot>false</OccupiesSpot>
<PriceId>0</PriceId>
<Quantity>0</Quantity>
</QuantityToBook>
</Quantities>
<RebateCodeIds xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d2p1:int>0</d2p1:int>
</RebateCodeIds>
</CalculateTotalPriceOnService>
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: length <TotalPriceInformationResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/BokaMera.API.ServiceModel.Dtos"> <AppliedCodes> <AppliedRebateCodesResponse> <RebateAmount>0</RebateAmount> <RebateCodeId>0</RebateCodeId> <RebateCodeSign>String</RebateCodeSign> <RebateCodeType> <Description>String</Description> <Id>0</Id> <Name>String</Name> </RebateCodeType> <RebateCodeValue>0</RebateCodeValue> </AppliedRebateCodesResponse> </AppliedCodes> <CurrencyId>String</CurrencyId> <PriceDetails> <TotalPricePriceDetail> <Description>String</Description> <Price>0</Price> <Quantity>0</Quantity> <VatAmount>0</VatAmount> </TotalPricePriceDetail> </PriceDetails> <PriceSign>String</PriceSign> <TotalPrice>0</TotalPrice> <TotalPriceBeforeRebate>0</TotalPriceBeforeRebate> <TotalVatAmount>0</TotalVatAmount> </TotalPriceInformationResponse>