[OperationContract]
[FaultContract(typeof(DbFaultContract))]
[FaultContract(typeof(ValidationFaultContract))]
[FaultContract(typeof(DuplicateComponentFaultContract))]
[FaultContract(typeof(ComponentNotFoundFaultContract))]
[FaultContract(typeof(DontOfferFaultContract))]
[FaultContract(typeof(MaxConcExceededFaultContract))]
[FaultContract(typeof(UnknownComponentDensityFaultContract))]
[FaultContract(typeof(InvalidPriceConfigurationFaultContract))]
[FaultContract(typeof(InvalidPriceInformationFaultContract))]
[SwaggerWcfTag("Offers", false)]
[SwaggerWcfPath(null, null, null, null, null, false, null, Summary = "Get the cost for a product offer", Description = "Generate a cost proposition with respect to the provided product line and sales office")]
[WebInvoke(UriTemplate = "/Offer/Cost", Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
[SwaggerWcfResponse(StatusCode = HttpStatusCode.OK, Description = "Success")]
[SwaggerWcfResponse(StatusCode = HttpStatusCode.InternalServerError, Description = "An unexpected error occurred while processing the request.", Type = typeof(JsonErrorMessage))]
[SwaggerWcfResponse(StatusCode = HttpStatusCode.BadRequest, Description = "Fault exception", Type = typeof(JsonErrorMessage))]
OfferCostContract GetCost(ProductOfferCostDetailContract productOfferCostDetail)