public IHttpActionResult PostTotalCost(TotalCostWEB totalCostWEB) { // Получим все заголовки запроса: ShowAllHeaders(); // отправка статусного кода 400 if (totalCostWEB == null) { return(BadRequest()); } //---------- обработка частных случаев валидации ----------------->> // if (totalCostWEB.volumeCost.TownFromId == totalCostWEB.volumeCost.TownToId) { ModelState.AddModelError("TownToId", "Город отправления не может совпадать с городом получения"); } // Все ошибки валидаци сохраняются в объекте ModelState, который передается в метод BadRequest и, // таким образом, отправляется клиенту вместе с ошибкой 400. // if (!ModelState.IsValid) { return(BadRequest(ModelState)); } // costService.PostTotalCost() // decimal totalCost = 0; try { Mapper.Initialize(cfg => { cfg.CreateMap <VolumeCostWEB, VolumeCostDTO>(); cfg.CreateMap <LathingCostWEB, LathingCostDTO>(); cfg.CreateMap <AddServiceCostWEB, AddServiceCostDTO>(); cfg.CreateMap <PickUpCostWEB, PickUpCostDTO>(); }); var volumeCostDTO = Mapper.Map <VolumeCostWEB, VolumeCostDTO>(totalCostWEB.volumeCost); var lathingCostDTO = Mapper.Map <LathingCostWEB, LathingCostDTO>(totalCostWEB.lathingCost); var addServiceCostDTO = Mapper.Map <AddServiceCostWEB, AddServiceCostDTO>(totalCostWEB.addServiceCost); var pickUpFromCostDTO = Mapper.Map <PickUpCostWEB, PickUpCostDTO>(totalCostWEB.pickUpFromCost); var pickUpToCostDTO = Mapper.Map <PickUpCostWEB, PickUpCostDTO>(totalCostWEB.pickUpToCost); totalCost = CostService.PostTotalCost(volumeCostDTO, lathingCostDTO, addServiceCostDTO, pickUpFromCostDTO, pickUpToCostDTO); } catch (ValidationException x) { ModelState.AddModelError(x.Property, x.Message); return(BadRequest(ModelState)); } catch (Exception x) { ModelState.AddModelError("common", x.Message); return(BadRequest(ModelState)); } // //---------- обработка частных случаев валидации -----------------// //++ Add output data to Headers collection string s_output = string.Format("x-costService.PostTotalCost({0},{1},{2},{3})", totalCostWEB.volumeCost.TownFromId, totalCostWEB.volumeCost.TownToId, totalCostWEB.volumeCost.Weight, totalCostWEB.volumeCost.Volume); System.Web.HttpContext.Current.Response.Headers.Add(s_output, totalCost.ToString()); Trace.WriteLine(s_output + " = " + totalCost); return(Ok(totalCost)); }