public async Task <TaxJarCalculateResponse> Calculate(TaxCalculationRequest request) { OrderModel mapped = mapper.Map <OrderModel>(request); //NOTE: Returning mocked data so clientId isn't used right now ClientModel client = clientService.GetClient(mapped.ClientId); ProductModel product = productService.GetProduct(request.ProductId); var lineItems = new List <Models.LineItem> { mapper.Map <Models.LineItem>(product) }; mapped.LineItems = lineItems; mapped.FromCity = client.City; mapped.FromCountry = client.Country; mapped.FromState = client.State; mapped.FromStreet = client.Street; mapped.FromZip = client.Zip; TaxJarCalculateResponse response = null; response = await taxRepository.Post <OrderModel, TaxJarCalculateResponse>(mapped); //TODO: Add mapping to TaxCalculationResposne, but for sake of time, return object from TaxJar. I would like to flatten this response out eventually. return(response); }
public async Task <IActionResult> Post([FromBody] TaxCalculationRequest request) { try { if (request == null) { return(BadRequest("Invalid Request")); } //TODO: Recommended to get clientId from Auth token/Identity unless an 'agent' is selecting clients in the app if (string.IsNullOrEmpty(request.ClientId)) { return(BadRequest("ClientId is Required")); } if (string.IsNullOrEmpty(request.ToCountry)) { return(BadRequest("Ship to Country is Required")); } if (string.IsNullOrEmpty(request.ToState)) { return(BadRequest("Ship to State is Required")); } if (request.Shipping == 0) { return(BadRequest("Total amount to Ship is Required")); } if (request.ToCountry == "US" || request.ToCountry == "CA") { if (string.IsNullOrEmpty(request.ToZip)) { return(BadRequest("Zip is required if US or CA is the Country")); } } TaxJarCalculateResponse calculation = await taxService.Calculate(request); return(Ok(JsonConvert.SerializeObject(calculation))); } catch (Exception ex) { return(BadRequest()); } }