public async Task <CompetitionResponse> RemoveAdminFromCompetition(Guid userId, Guid competitionId)
        {
            var admins = await _adminRepo.GetList(competitionId);

            //if user is only admin, either:
            //  promote user who has been asked to be admin OR
            //  inform user they must pass the responsibilities to someone else

            if (admins.Count() == 1)
            {
                var adminRequests = await _adminRequestRepo.GetList(competitionId);

                if (adminRequests.Count() == 0)
                {
                    throw new ApiError(403, "You are the only admin in this competition. Ask someone else to be an admin before relinquishing your responsibilitites.");
                }

                var newAdmin = new Admin(adminRequests.First().UserId, competitionId);
                _adminRequestRepo.Delete(adminRequests.First());
                _adminRepo.Create(newAdmin);
            }

            var admin = admins.First(x => x.UserId == userId);

            _adminRepo.Delete(admin);
            await _adminRepo.Save();

            //return competition with admin information
            var competition = await _competitionRepo.GetWithInfo(competitionId);

            return(new CompetitionResponse(competition, false, userId));
        }
Esempio n. 2
0
        public ActionResult DeleteUser(string UserName, string id, AspNetUser u)
        {
            if (id == null)
            {
                return(HttpNotFound());
            }
            AspNetUser au = Arepo.FindUsersById(id);

            if (au == null)
            {
                return(HttpNotFound());
            }
            Arepo.Delete(au);
            ViewBag.Message = "User has been deleted successfully";
            return(RedirectToAction("SearchToDeleteOrEdit"));
        }