private bool CheckAssignExists(FacultyAssignment fa, ApplicationUser user) { var result = _db.FacultyAssignmentManagers.Where(fam => fam.FacultyAssignment.Id == fa.Id) .Any(fam => fam.User.Id == user.Id); return(result); }
private void BuildMail(string[] ids, FacultyAssignment fa) { var faculty = fa.Faculty.Name; var subject = "Faculty Assignment"; var callbackUrl = Url.Action("Assigned", "Faculties", null, Request.Url.Scheme); foreach (var user in ids.Select(id => _db.Users.Find(id)).Where(user => user != null)) { BackgroundJob.Enqueue(() => SendMail(user.Email, subject, callbackUrl, faculty)); } }
public void AssignAddOrUpdate(FacultyAssignment fa, ApplicationUser user, string role) { if (_db.FacultyAssignmentManagers.Where(fam => fam.FacultyAssignment.Id == fa.Id) .Any(fam => fam.Role == role)) { var fam = _db.FacultyAssignmentManagers.Where(f => f.FacultyAssignment.Id == fa.Id) .Single(f => f.Role == role); fam.User = user; } else { var fam = new FacultyAssignmentManager(role, user, fa); _db.FacultyAssignmentManagers.Add(fam); } }
public FacultyAssignmentManager(string role, ApplicationUser user, FacultyAssignment fa) { Role = role; User = user; FacultyAssignment = fa; }
public ActionResult Assign(int id, string pvc, string dlt) { var faculty = _db.Faculties.Find(id); if (faculty == null) { return(HttpNotFound()); } ValidateAssignUser(pvc, dlt); if (_errors.Count == 0) { using (var transaction = _db.Database.BeginTransaction()) { try { FacultyAssignment fa; if (_db.FacultyAssignments.Any(f => f.Faculty.Id == faculty.Id)) { fa = _db.FacultyAssignments.Single(f => f.Faculty.Id == faculty.Id); } else { fa = new FacultyAssignment(faculty); _db.FacultyAssignments.Add(fa); } if (fa != null) { var pvcUser = _db.Users.Find(pvc); if (pvcUser != null) { if (!CheckAssignExists(fa, pvcUser)) { AssignAddOrUpdate(fa, pvcUser, "pvc"); } else { _errors.Add( "Pro-Vice Chancellor and Director of Learning and Quality cannot be the same person."); } } var dltUser = _db.Users.Find(dlt); if (dltUser != null) { if (!CheckAssignExists(fa, dltUser)) { AssignAddOrUpdate(fa, dltUser, "dlt"); } else { _errors.Add( "Pro-Vice Chancellor and Director of Learning and Quality cannot be the same person."); } } } if (_errors.Count == 0) { _db.SaveChanges(); transaction.Commit(); _msgs.Add("Assign Complete"); BuildMail(new[] { pvc, dlt }, fa); } else { transaction.Rollback(); } } catch (Exception) { transaction.Rollback(); _errors.Add("Error! Assign not complete."); } } } TempData["errors"] = _errors; TempData["msgs"] = _msgs; return(RedirectToAction("Details", new { id = faculty.Id })); }