示例#1
0
        public async Task <OknObject> UpdateObjectEvent(UpdateObjectEventCommand command, CancellationToken cancellationToken)
        {
            var filter = Builders <ObjectEntity> .Filter.Where(x => x.ObjectId == command.ObjectId);

            var originalEntity = await _context.Objects
                                 .Find(filter)
                                 .FirstOrDefaultAsync(cancellationToken);

            if (originalEntity == null)
            {
                throw new ObjectEventNotExistException("Object with this id doesn't exist");
            }

            var originalObjectEvent = originalEntity.Events.FirstOrDefault(x => x.EventId == command.EventId);

            if (originalObjectEvent == null)
            {
                throw new ObjectEventNotExistException("Object event with this id doesn't exist");
            }

            SetObjectVersionIfNotExist(command, originalEntity);

            originalObjectEvent.Name        = command.Name ?? originalObjectEvent.Name;
            originalObjectEvent.Description = command.Description ?? originalObjectEvent.Description;
            originalObjectEvent.OccuredAt   = command.OccuredAt != default ? command.OccuredAt : originalObjectEvent.OccuredAt;

            if (command.Photos != null)
            {
                originalObjectEvent.Photos = command.Photos.Select(x => ProcessFileInfo(x)).ToList();
            }

            if (command.Files != null)
            {
                originalObjectEvent.Files = command.Files.Select(x => ProcessFileInfo(x)).ToList();
            }

            await IncObjectVersion(command, originalEntity, originalEntity, cancellationToken);

            var result = await _context.Objects.ReplaceOneAsync(filter, originalEntity, cancellationToken : cancellationToken);

            return(null);
        }
示例#2
0
        public async Task <IActionResult> Update([FromRoute] string objectId, [FromRoute] string eventId,
                                                 [FromBody] UpdateObjectEventViewModel request)
        {
            if (request == null)
            {
                return(BadRequest());
            }

            var currentUser = HttpContext.User;

            var updateCommand = new UpdateObjectEventCommand(objectId, eventId)
            {
                Name        = request.Name,
                Description = request.Description,
                OccuredAt   = request.OccuredAt ?? DateTime.UtcNow,
                Files       = request.Files?.Select(x => new FileInfo
                {
                    FileId      = x.FileId,
                    Description = x.Description
                }).ToList(),
                Photos = request.Photos?.Select(x => new FileInfo
                {
                    FileId      = x.FileId,
                    Description = x.Description
                }).ToList()
            };

            updateCommand.SetCreator(
                long.Parse(currentUser.FindFirstValue(ClaimTypes.NameIdentifier)).ToString(),
                currentUser.FindFirstValue(ClaimTypes.Name),
                currentUser.FindFirstValue(ClaimTypes.Email));

            await _objectsEventsRepository.UpdateObjectEvent(updateCommand, CancellationToken.None);

            return(Ok());
        }