Example #1
0
        public async Task <IActionResult> GetShippingCost(CostPackageRequest costPackageRequest)
        {
            var validationResult = await new CostPackageRequestValidator().ValidateAsync(costPackageRequest);

            if (!validationResult.IsValid)
            {
                return(new BadRequestObjectResult(new ApiResponseBase
                {
                    Success = false, Message = validationResult.Errors.FirstOrDefault()?.ErrorMessage
                }));
            }

            var command = Mapper.Map <PackageCostQueryCommand>(costPackageRequest);
            var package = await CommandBus.SendCommandAsync <PackageCostQueryCommandResponse>(command);

            var costPackageResponse = package.MapTo <CostPackageResponse>(Mapper);

            if (Notifications.HasErrorsOrValidations)
            {
                costPackageResponse.Success = false;
                costPackageResponse.Message = Notifications.ToApiResponseValidations().FirstOrDefault()?.Message;
            }
            else if (package.PackageType == PackageType.Undefined)
            {
                costPackageResponse.Success = false;
                costPackageResponse.Message = ShippingMessages.UnableIdentifySize;
            }
            else
            {
                costPackageResponse.Success = true;
                costPackageResponse.Message = ShippingMessages.PackageSuccessfullyCalculated;
            }

            if (costPackageResponse.Success)
            {
                return(new OkObjectResult(costPackageResponse));
            }

            return(new BadRequestObjectResult(new ApiResponseBase
            {
                Success = false, Message = ShippingMessages.UnableIdentifySize
            }));
        }
Example #2
0
 public async Task <IActionResult> Calculate([FromBody] CostPackageRequest costPackageRequest)
 {
     return(await _appService.GetShippingCost(costPackageRequest));
 }