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));
        }
Example #2
0
        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));
        }