public ActionResult Participate(ParticipateContestBindingModel model) { if (ModelState.IsValid) { string userId = this.service.GetUserIdByName(User.Identity.Name); bool isSucceeded = this.service.AddUserToContest(userId, model); if (isSucceeded) { this.AddNotification($"{User.Identity.Name} was joined successfuly!", NotificationType.SUCCESS); return(RedirectToAction("Contests")); } } this.AddNotification($"{ User.Identity.Name} wasn't joined to contest!", NotificationType.ERROR); return(RedirectToAction("Contests")); }
public ActionResult Unparticipate(ParticipateContestBindingModel model) { if (ModelState.IsValid) { string userId = this.service.GetUserIdByName(User.Identity.Name); bool isRemoved = this.service.RemoveUserFromContest(userId, model); if (isRemoved) { this.AddNotification($"{User.Identity.Name} was retreated to this contest", NotificationType.SUCCESS); return(RedirectToAction("Contests")); } } this.AddNotification($"{User.Identity.Name} wasn't retreated to this contest", NotificationType.ERROR); return(RedirectToAction("Contests")); }
public bool AddUserToContest(string userId, ParticipateContestBindingModel model) { int regularUserId = this.db.RegularUsers.FindFirst(u => u.AppUserId == userId).Id; this.db.Contests.FindFirst(c => c.Id == model.ContestId).Participants.Add(new ContestRegularUser { RegularUserId = regularUserId }); try { this.db.SaveChanges(); } catch (DbEntityValidationException) { return(false); } return(true); }
public bool RemoveUserFromContest(string userId, ParticipateContestBindingModel model) { int regularUserId = this.db.RegularUsers.FindFirst(u => u.AppUserId == userId).Id; var contestUser = this.db.Contests.FindFirst(c => c.Id == model.ContestId).Participants .FirstOrDefault(c => c.RegularUserId == regularUserId); this.db.Contests.FindFirst(c => c.Id == model.ContestId).Participants.Remove(contestUser); try { this.db.SaveChanges(); } catch (DbEntityValidationException) { return(false); } return(true); }