コード例 #1
0
ファイル: EventsController.cs プロジェクト: BartaskaM/debook
        public async Task <IActionResult> Update(int id, [FromBody] EventItemRequest request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            try
            {
                var userIdClaim = ((ClaimsIdentity)User.Identity).FindFirst(ClaimTypes.NameIdentifier);
                var userId      = int.Parse(userIdClaim.Value);

                await _eventsRepository.Update(id, request, userId);

                return(NoContent());
            }
            catch (InvalidEventException)
            {
                return(NotFound());
            }
            catch (InvalidOfficeException)
            {
                string errorText = String.Format("Office with ID: {0} doesn't exist", request.OfficeId);
                return(StatusCode(StatusCodes.Status409Conflict, new { Message = errorText }));
            }
            catch (InvalidDeviceException)
            {
                string errorText = String.Format("Device with ID: {0} doesn't exist", request.DeviceId);
                return(StatusCode(StatusCodes.Status409Conflict, new { Message = errorText }));
            }
        }
コード例 #2
0
        public async Task <int> Create(EventItemRequest request, int userId)
        {
            var office = _dbContext.Offices
                         .AsNoTracking()
                         .FirstOrDefaultAsync(x => x.Id == request.OfficeId);

            var device = _dbContext.Devices
                         .AsNoTracking()
                         .FirstOrDefaultAsync(x => x.Id == request.DeviceId);

            await Task.WhenAll(office, device);

            if (office.Result == null)
            {
                throw new InvalidOfficeException();
            }
            if (device.Result == null)
            {
                throw new InvalidDeviceException();
            }

            var newItem = new Event
            {
                Action    = request.Action,
                DeviceId  = device.Result.Id,
                OfficeId  = office.Result.Id,
                UserId    = userId,
                CreatedOn = request.Date,
            };

            _dbContext.Events.Add(newItem);
            await _dbContext.SaveChangesAsync();

            return(newItem.Id);
        }
コード例 #3
0
        protected override CachedTask <EventItemResponse> GetData(bool force, CancellationToken token)
        {
            if (force)
            {
                var request = new EventItemRequest
                {
                    ItemId      = _itemId,
                    UserTickets = _settings.UserTickets.ToArray(),
                    Language    = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName
                };

                return(CachedTask.Create(() => _eventsService.GetEventItemAsync(request, token), _itemId, DateTime.Now.Add(CacheDuration)));
            }

            return(CachedTask.NoNewData <EventItemResponse>());
        }
コード例 #4
0
        public async Task Update(int id, EventItemRequest request, int userId)
        {
            var item = await _dbContext.Events
                       .FirstOrDefaultAsync(x => x.Id == id);

            if (item == null)
            {
                throw new InvalidEventException();
            }

            var office = _dbContext.Offices
                         .AsNoTracking()
                         .FirstOrDefaultAsync(x => x.Id == request.OfficeId);

            var device = _dbContext.Devices
                         .AsNoTracking()
                         .FirstOrDefaultAsync(x => x.Id == request.DeviceId);

            await Task.WhenAll(office, device);

            if (office.Result == null)
            {
                throw new InvalidOfficeException();
            }
            if (device.Result == null)
            {
                throw new InvalidDeviceException();
            }

            item.Action    = request.Action;
            item.DeviceId  = device.Result.Id;
            item.OfficeId  = office.Result.Id;
            item.UserId    = userId;
            item.CreatedOn = request.Date;

            await _dbContext.SaveChangesAsync();
        }
コード例 #5
0
 public Task <EventItemResponse> GetEventItemAsync(EventItemRequest request, CancellationToken cancellationToken)
 {
     return(CallAsync <EventItemRequest, CancellationToken, EventItemResponse>(x => x.GetEventItemAsync, request, cancellationToken));
 }