public async Task <string> Handle(CreateGroupRoleCommand request, CancellationToken cancellationToken) { // Pokusím se načíst skupinu uživatelů, do které se má přidat nová role (vyhodím výjimku, pokud ji nedohledám). var group = await _groupRepository.GetByIdAsync(request.GroupId, true); // Připravím si role aktuálně přihlášeného uživatele, abych věděl jestli má právo na přidání role. var currentUserRoles = _groupRoleRepository.GetForUserInGroup(_currentUserIdService.UserId, request.GroupId); // Pokud nemá aktuálně přihlášený uživatel právo na přidání role, vyhodím výjimku. if (group.CreatedBy != _currentUserIdService.UserId && currentUserRoles.Any(r => r.Permission == UserGroupPermission.Admin)) { throw new ForbiddenAccessException(); } // Vytvořím entitu naplněnou daty z příkazu. var entity = new GroupRole() { GroupId = request.GroupId, Name = request.Name, Permission = request.Permission }; // Přidám záznam do datového zdroje a uložím.` await _groupRoleRepository.AddOrUpdateAsync(entity, cancellationToken); await _unitOfWork.SaveChangesAsync(cancellationToken); // Vrátím Id vytvořeného záznamu. return(entity.Id); }
public async Task <Unit> Handle(UpdateGroupRoleCommand request, CancellationToken cancellationToken) { // Vytáhnu záznam z datového zdroje (vyhodím výjimku, pokud se mi ho nepodaří dohledat). var entity = await _groupRoleRepository.GetByIdAsync(request.Id, true); // Naplním entitu daty z příkazu. entity.Name = request.Name; entity.Permission = request.Permission; // Přidám záznam do datového zdroje a uložím. await _groupRoleRepository.AddOrUpdateAsync(entity, cancellationToken); await _unitOfWork.SaveChangesAsync(cancellationToken); return(Unit.Value); }