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

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

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


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

            // costService.PostAddServiceCost()
            //
            try
            {
                Mapper.Initialize(cfg => cfg.CreateMap <AddServiceCostWEB, AddServiceCostDTO>());
                var addServiceCostDTO = Mapper.Map <AddServiceCostWEB, AddServiceCostDTO>(serviceCost);
                serviceCost.Cost = CostService.PostAddServiceCost(addServiceCostDTO);
            }
            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})",
                                            serviceCost.Warmly, serviceCost.LocalStore, serviceCost.Brittle, serviceCost.ReCount, serviceCost.Packing, serviceCost.Insurance,
                                            serviceCost.DeclaredValue.HasValue ? serviceCost.DeclaredValue.Value.ToString() : "null");

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

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

            return(Ok(serviceCost.Cost));
        }