public ReleasePlayerResponse ReleasePlayer(ReleasePlayerRequest request) { if (!_currentUserId.HasValue) { throw new InvalidOperationException("No access"); } var user = _usersService.GetUserById(new GetUserByIdRequest { UserId = _currentUserId.Value }); var command = new TransfersModule.Contract.ReleasePlayerContract.Request() { ReleasingClubId = request.ReleasingClubId, EngagingClubId = request.EngagingClubId, PlayerId = request.PlayerId, }; if (!AuthorizationService.CanExecuteCommand(user, command)) { throw new InvalidOperationException("You can only release players only from your own club"); } var response = new TransfersApi().Execute(command).Result; return(new ReleasePlayerResponse { TransferInstructionId = response.TransferInstructionId.Value }); }
public static bool CanExecuteCommand(GetUserByIdResponse user, TransfersModule.Contract.ReleasePlayerContract.Request command) { return(user.ClubId == command.ReleasingClubId); }