public HttpResponseMessage CreateZoneList([FromUri] int count)
        {
            List <ZoneModel> zones = new List <ZoneModel>();

            ZoneModel[] currentZones = _zoneRepository.GetZones().ToArray();
            for (int i = 1; i <= count; i++)
            {
                ZoneModel zone = currentZones.FirstOrDefault(x => x.Number == i);
                if (zone == null)
                {
                    zone        = new ZoneModel();
                    zone.Id     = Guid.NewGuid();
                    zone.Name   = "Зона " + i;
                    zone.Number = i;
                    _zoneRepository.Create(zone);
                }
                zones.Add(zone);
            }

            var negotiator = this.Configuration.Services.GetContentNegotiator();

            var result = negotiator.Negotiate(typeof(List <ZoneModel>),
                                              this.Request,
                                              this.Configuration.Formatters);

            // no formatter found
            if (result == null)
            {
                throw new HttpResponseException(
                          new HttpResponseMessage(HttpStatusCode.NotAcceptable));
            }

            var response = new HttpResponseMessage
            {
                Content = new ObjectContent <List <ZoneModel> >(
                    zones,                     // data
                    result.Formatter,          // media formatter
                    result.MediaType.MediaType // MIME type
                    )
            };

            response.Content.Headers.ContentDisposition =
                new ContentDispositionHeaderValue("attachment")
            {
                FileName = "cars-download." + GetFileExt(result.Formatter)
            };

            return(response);
        }
Exemple #2
0
 public HttpResponseMessage OpenZone(Guid inventorization, [FromUri] int code)
 {
     try
     {
         ZoneModel zone  = _zoneRepository.GetZone(code);
         ZoneState state = _inventorizationRepository.GetZoneState(inventorization, code);
         if (state == null)
         {
             if (zone == null)
             {
                 zone        = new ZoneModel();
                 zone.Id     = Guid.NewGuid();
                 zone.Name   = "Зона " + code;
                 zone.Number = code;
                 _zoneRepository.Create(zone);
             }
             var userClaims = Request.GetOwinContext().Authentication.User;
             _inventorizationRepository.OpenZone(inventorization, zone.Id, Guid.Parse(userClaims.Claims.Single(x => x.Type == ClaimTypes.Sid).Value));
             state = _inventorizationRepository.GetZoneState(inventorization, zone.Id);
         }
         if (state.ClosedAt.HasValue && state.ClosedAt.Value.ToUniversalTime() < DateTime.UtcNow)
         {
             return(Request.CreateResponse(HttpStatusCode.Forbidden, "Зона уже была закрыта. Для повторного открытия обратитесь к менеджеру."));
         }
         return(Request.CreateResponse(HttpStatusCode.OK, zone));
     }
     catch (Exception ex)
     {
         _logger.Error(ex, $"Open zone error. Zone code:{code}. InventorizationId: {inventorization}");
     }
     return(Request.CreateResponse(HttpStatusCode.OK));
 }