Exemple #1
0
        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);
        }
Exemple #2
0
        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());
            }
        }