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

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

            //----------   обработка частных случаев валидации  ----------------->>
            //
            if (lathing.Volume < 0)
            {
                ModelState.AddModelError("Volume", "Объем указан некорректно!");
            }

            if (lathing.Ratio < 1)
            {
                ModelState.AddModelError("Ratio", "Коэффициент указан некорректно!");
            }


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

            // costService.PostLathingCost()
            //
            try
            {
                Mapper.Initialize(cfg => cfg.CreateMap <LathingCostWEB, LathingCostDTO>());
                var lathingCostDTO = Mapper.Map <LathingCostWEB, LathingCostDTO>(lathing);
                lathing.Cost = CostService.PostLathingCost(lathingCostDTO);
            }
            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.PostLathingCost({0},{1})", lathing.Volume, lathing.Ratio);

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

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

            return(Ok(lathing.Cost));
        }