Beispiel #1
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));
 }
Beispiel #2
0
        private void CheckZoneAccess(Model.Action action)
        {
            ZoneState zoneState = inventorizationRepository.GetZoneState(action.Inventorization, action.Zone);

            if (zoneState == null)
            {
                throw new ZoneAccessException(action.Zone, $"Зона не была открыта. Сначала откройте зону.");
            }
            if (zoneState.ClosedAt.HasValue && zoneState.ClosedAt.Value.ToUniversalTime() < DateTime.Now)
            {
                throw new ZoneAccessException(action.Zone, $"Зона закрыта. Выберите другую зону.");
            }
        }