public async Task <CompetitionResponse> AddAdminToCompetition(Guid userId, Guid competitionId) { var existingAdmin = await _adminRepo.Get(userId, competitionId); existingAdmin.EnsureDoesNotExist(); var existingAdminRequest = await _adminRequestRepo.Get(userId, competitionId); existingAdminRequest.EnsureExists("Admin request not found."); _adminRepo.Create(new Admin(userId, competitionId)); _adminRequestRepo.Delete(existingAdminRequest); await _adminRepo.Save(); //return competition with admin information var competition = await _competitionRepo.GetWithInfo(competitionId); return(new CompetitionResponse(competition, true, userId)); }
public AdminModel AddAdmin(AddAdminDto dto) { return(ProtectedExecute <AddAdminDto, AdminModel>(adminDto => { CheckActiveSuperAdmin(adminDto.SuperAdminSession); if (AccountRepo.Get(adminDto.AccountId.GetValueOrDefault()) == null) { throw new NotFoundException("Account"); } if (IsAdmin(adminDto.AccountId.GetValueOrDefault())) { throw new ConflictException("admin account"); } AdminModel model = Mapper.Map <AddAdminDto, AdminModel>(adminDto); return AdminRepo.Create(model); }, dto)); }
public async Task <CompetitionResponse> AddCompetition(Guid userId, CompetitionRequest request) { var challenge = _mappingService.CreateChallenge(request); var competition = _mappingService.CreateCompetition(challenge.ChallengeId, request); _challengeRepo.Create(challenge); _competitionRepo.Create(competition); _participantRepo.Create(new Participant(userId, competition.CompetitionId)); _adminRepo.Create(new Admin(userId, competition.CompetitionId)); await _competitionRepo.Save(); return(new CompetitionResponse(competition, true, userId)); }