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); }
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)); }