Exemple #1
0
        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);
        }
Exemple #2
0
        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));
            }
        }
Exemple #3
0
 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);
     }
 }
Exemple #4
0
 public FacultyAssignmentManager(string role, ApplicationUser user, FacultyAssignment fa)
 {
     Role = role;
     User = user;
     FacultyAssignment = fa;
 }
Exemple #5
0
        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 }));
        }