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

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

            //----------   обработка частных случаев валидации  ----------------->>
            //
            if (volume.TownFromId < 1)
            {
                ModelState.AddModelError("TownFromId", "Такого населенного пункта в базе данных не существует!");
            }

            if (volume.TownToId < 1)
            {
                ModelState.AddModelError("TownToId", "Такого населенного пункта в базе данных не существует!");
            }

            if (volume.TownFromId == volume.TownToId)
            {
                ModelState.AddModelError("common", "Города отправления и назначения - совпадают");
            }

            if (volume.Weight <= 0)
            {
                ModelState.AddModelError("Weight", "Вес указан некорректно!");
            }

            if (volume.Volume < 0)
            {
                ModelState.AddModelError("Volume", "Объем указан некорректно!");
            }

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

            // costService.PostVolumeCost()
            //
            try
            {
                Mapper.Initialize(cfg => cfg.CreateMap <VolumeCostWEB, VolumeCostDTO>());
                var volumeCostDTO = Mapper.Map <VolumeCostWEB, VolumeCostDTO>(volume);
                volume.Cost = CostService.PostVolumeCost(volumeCostDTO);
            }
            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.PostVolumeCost({0},{1},{2})", volume.TownFromId, volume.TownToId, volume.Weight);

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

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

            return(Ok(volume.Cost));
        }