public ActionResult CreateProj(string projname, string projdesc, IEnumerable <string> SelectedUser) { try { if (string.IsNullOrEmpty(projname) || string.IsNullOrEmpty(projdesc) || SelectedUser == null) //if fileds are empty { TempData["EmptyFields"] = "One or more field is empty"; return(RedirectToAction("CreateProj", "Project")); } } catch { TempData["Unknown"] = "Unknown error occurred!"; return(RedirectToAction("CreateProj", "Project")); } //updating the DB- create new project if (ModelState.IsValid) { ReviseDBEntities con = new ReviseDBEntities(); var proj = new project { ProjName = projname, creation_date = DateTime.Today, description = projdesc, status = "Open" }; var usrList = new List <user>(); foreach (var usr in SelectedUser.ToList()) { var newusr = (con.users.Where(u => u.UserName == usr)); usrList.Add(newusr.FirstOrDefault()); } List <projUser> Allusers = new List <projUser>(); foreach (var usr in usrList) //users to assign to the project { var prjusr = new projUser(); prjusr.project = proj; prjusr.user = usr; prjusr.projid = proj.ProjId; prjusr.userid = usr.userid; prjusr.role = 7; prjusr.dep = 5; Allusers.Add(prjusr); } //proj.users = usrList; foreach (var user in Allusers) { con.projUsers.Add(user); } try { con.projects.Add(proj); con.SaveChanges(); } catch (DbUpdateException) { TempData["FailedProj"] = "Project with this name already exist"; return(RedirectToAction("CreateProj", "Project")); } List <category> catlist = new List <category>(); catlist = con.categories.ToList(); //link categories to the project foreach (var cat in catlist) { projCat entity = new projCat(); entity.category = cat; entity.catId = cat.CatId; entity.project = proj; entity.projId = proj.ProjId; con.projCats.Add(entity); con.SaveChanges(); } // the new id of project that create Session["IdProjectToAssign"] = proj.ProjId; Session["projectName"] = proj.ProjName; // now the user Redirect To assign role every member in project. return(RedirectToAction("AssignMembers", new{ id = proj.ProjId })); } if (SelectedUser == null) { TempData["NoUsers"] = "No users selected"; return(RedirectToAction("CreateProj", "Project")); } else { StringBuilder sb = new StringBuilder(); sb.Append("You selected- " + string.Join(",", SelectedUser)); return(Json(new { success = true, message = sb.ToString() })); } }
public ActionResult EditProject(string projname, string projdesc, IEnumerable <string> SelectRemoveUser, IEnumerable <string> SelectedUser) { ReviseDBEntities con = new ReviseDBEntities(); int id = Convert.ToInt32(Session["projId"]); string Pname = con.projects.Find(id).ProjName; string Pdesc = con.projects.Find(id).description; project proj = con.projects.Find(id); List <projUser> tempList = new List <projUser>(); List <user> Assigned = new List <user>(); List <message> MessagesToDel = new List <message>(); List <user> Remove = new List <user>(); //if nothing change or project with this name already exist try { if (projname == Pname && projdesc == Pdesc && SelectedUser == null && SelectRemoveUser == null) { TempData["NoChanges"] = "No changes made"; return(RedirectToAction("ProjectMain", "Project")); } List <project> prjlist = con.projects.ToList(); foreach (var prj in prjlist) { if (prj.ProjId != id && prj.ProjName == projname) { TempData["ProjExist"] = "Project with this name already exist"; return(RedirectToAction("EditProject", "Project", new { id = id })); } } } catch { TempData["Unknown"] = "Unknown error occurred!"; return(RedirectToAction("EditProject", "Project", new { id = id })); } //updating the project information if (ModelState.IsValid) { con.projects.Find(id).ProjName = projname; con.projects.Find(id).description = projdesc; if (SelectRemoveUser != null) { foreach (var usr in SelectRemoveUser.ToList()) { var newusr = (con.users.Where(u => u.UserName == usr)); Remove.Add(newusr.FirstOrDefault()); } foreach (var usr in Remove) { tempList.Add(con.projUsers.Find(usr.userid, id)); } foreach (var tmp in tempList) { MessagesToDel = con.messages.Where(p => p.projId == tmp.projid).Where(u => u.userid == tmp.userid).ToList(); if (MessagesToDel != null) { foreach (var msg in MessagesToDel) { con.messages.Remove(msg); } } con.projUsers.Remove(tmp); } con.SaveChanges(); } con.SaveChanges(); if (SelectedUser != null) { foreach (var usr in SelectedUser.ToList()) { var newusr = (con.users.Where(u => u.UserName == usr)); Assigned.Add(newusr.FirstOrDefault()); } List <projUser> prjUser = new List <projUser>(); foreach (var usr in Assigned) //assign users to the project { var prjusr = new projUser(); prjusr.project = proj; prjusr.user = usr; prjusr.projid = proj.ProjId; prjusr.userid = usr.userid; prjUser.Add(prjusr); } foreach (var user in prjUser) { con.projUsers.Add(user); } con.SaveChanges(); Session["IdProjectToAssign"] = proj.ProjId; return(RedirectToAction("AssignMembers", new { id = proj.ProjId })); } return(RedirectToAction("ProjectMain", "Project")); } TempData["Unknown"] = "Unknown error occurred!"; return(RedirectToAction("EditProject", "Project")); }