Example #1
0
        public IHttpActionResult PostPickUpCost(PickUpCostWEB pickupCost)
        {
            // Получим все заголовки запроса:
            ShowAllHeaders();

            // отправка статусного кода 400
            if (pickupCost == null)
            {
                return(BadRequest());
            }

            //----------   обработка частных случаев валидации  ----------------->>
            //
            if (pickupCost.TownId.HasValue && pickupCost.TownId.Value <= 0)
            {
                ModelState.AddModelError("TownId", "Указанного города нет в списке.");
            }


            // Все ошибки валидаци сохраняются в объекте ModelState, который передается в метод BadRequest и,
            // таким образом, отправляется клиенту вместе с ошибкой 400.
            //
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            // costService.PostPickUpCost()
            //
            try
            {
                Mapper.Initialize(cfg => cfg.CreateMap <PickUpCostWEB, PickUpCostDTO>());
                var pickUpCostDTO = Mapper.Map <PickUpCostWEB, PickUpCostDTO>(pickupCost);
                pickupCost.Cost = CostService.PostPickUpCost(pickUpCostDTO);
            }
            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.PostAddServiceCost({0},{1},{2},{3},{4},{5},{6},{7})",
                                            pickupCost.TownId ?? pickupCost.TownId.Value, pickupCost.NotExistedTown, pickupCost.Oversized, pickupCost.Warmly, pickupCost.AfterHours, pickupCost.FixedTime, pickupCost.Idling, pickupCost.Discharge);

            System.Web.HttpContext.Current.Response.Headers.Add(s_output, pickupCost.Cost.ToString());

            Trace.WriteLine(s_output + " = " + pickupCost.Cost);

            return(Ok(pickupCost.Cost));
        }