public async Task <Unit> Handle(UpdateCommunicationChannelCalendarEventCommand request, CancellationToken cancellationToken)
        {
            // Vytáhnu záznam z datového zdroje.
            var entity = await _communicationChannelCalendarEventRepository.GetByIdAsync(request.Id)
                         ?? throw new NotFoundException(nameof(CommunicationChannelCalendarEvent), request.Id);

            // Pokud uživatel nemá dostatečná práva vyhodím výjimku.
            if (entity.UserId != _currentUserService.User.Id)
            {
                throw new ForbiddenAccessException();
            }

            // Naplním entitu daty z příkazu.
            entity.StartsAt    = request.StartsAt;
            entity.EndsAt      = request.EndsAt;
            entity.Name        = request.Name;
            entity.Description = request.Description;

            // Přidám záznam do datového zdroje a uložím.`
            await _communicationChannelCalendarEventRepository.AddOrUpdateAsync(entity, cancellationToken);

            await _unitOfWork.SaveChangesAsync(cancellationToken);

            return(Unit.Value);
        }
コード例 #2
0
        public async Task <Unit> Handle(DeleteCommunicationChannelCalendarEventCommand request, CancellationToken cancellationToken)
        {
            // Vytáhnu záznam z datového zdroje (vyhodím výjimku, pokud se mi to nepodaří).
            var entity = await _communicationChannelCalendarEventRepository.GetByIdAsync(request.Id, true);

            // Záznam se podařilo nalézt -> smažu ho a uložím změny.
            _communicationChannelCalendarEventRepository.Remove(entity);
            await _unitOfWork.SaveChangesAsync(cancellationToken);

            return(Unit.Value);
        }
コード例 #3
0
        public async Task <CommunicationChannelCalendarEventDto> Handle(GetCommunicationChannelCalendarEventByIdQuery request, CancellationToken cancellationToken)
        {
            // Načtu událost z komunikačního kanálu z datového zdroje.
            var calendarEvent = await _communicationChannelCalendarEventRepository.GetByIdAsync(request.Id)
                                ?? throw new NotFoundException(nameof(CommunicationChannelCalendarEvent), request.Id);

            // Pokud aktuálně přihlášený uživatel nemá právo na zobrazení události, vyhodím výjimku.
            if (!calendarEvent.CommunicationChannel.Users.Contains(_currentUserService.User))
            {
                throw new FormatException();
            }

            return(_mapper.Map <CommunicationChannelCalendarEventDto>(calendarEvent));
        }