Example #1
0
        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()
                }));
            }
        }
Example #2
0
        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"));
        }