public PartialViewResult Edit(Project proj, string ProjectId)
 {
     ObjectId projectId;
     var isValid = ObjectId.TryParse(ProjectId, out projectId);
     if (isValid)
     {
         var collections = mongoDatabase.GetCollection<Project>("Project");
         var getQuery = Query<Project>.EQ(e => e.ProjectId, projectId);
         var existingproject = collections.FindOne(getQuery);
         existingproject.Name = proj.Name;
         existingproject.StartDate = proj.StartDate;
         existingproject.EndDate = proj.EndDate;
         existingproject.Manager = proj.Manager;
         existingproject.Description = proj.Description;
         existingproject.Client = proj.Client;
         //existingproject.TotalEmployees = proj.TotalEmployees;
         existingproject.IsComplete = proj.IsComplete;
         existingproject.IsActive = proj.IsActive;
         existingproject.Url = proj.Url;
         // existingproject.AssignedTo = project.AssignedTo;
         collections.Save(existingproject);
         return GetAll();
     }
     else
     {
         return PartialView("Edit");
     }
 }
        public JsonResult GetPieCharts(string pId)
        {
            int cntTask = 0;

            var _task = mongoDatabase.GetCollection<Task>("Task");
            var _devBase = mongoDatabase.GetCollection<DevBase>("DevBase");
            var _projects = mongoDatabase.GetCollection<Project>("Project");

            ObjectId projectId;
            var isValid = ObjectId.TryParse(pId, out projectId);
            Project proj = new Project();
            if (isValid)
            {
                var getQuery = Query<Project>.EQ(e => e.ProjectId, projectId);
                proj = _projects.FindOne(getQuery);
            }

            IList<seriesData> lstseriesData = new List<seriesData>();
            var getTasks = _task.FindAs(typeof(Task), Query.Matches("ProjectId", new BsonRegularExpression(pId, "i")));

            foreach (Task tsk in getTasks)
            {
                int ntaCnt = 0;

                var getDBase = _devBase.FindAs(typeof(DevBase), Query.Matches("TaskId", new BsonRegularExpression(tsk.TaskId.ToString(), "i")));

                foreach (DevBase dbase in getDBase)
                {
                    if (dbase.Status.Equals("Not Started"))
                    {
                        foreach (seriesData mtv in lstseriesData)
                        {
                            if (mtv.name == dbase.Status)
                            {
                                int cntl = lstseriesData.IndexOf(mtv);
                                lstseriesData[cntl].y = ++(lstseriesData[cntl].y);
                                ntaCnt++;
                            }
                        }
                        
                    }
                    if (dbase.Status.Equals("In-Process"))
                    {
                        foreach (seriesData mtv in lstseriesData)
                        {
                            if (mtv.name == dbase.Status)
                            {
                                int cntl = lstseriesData.IndexOf(mtv);
                                lstseriesData[cntl].y = ++(lstseriesData[cntl].y);
                                ntaCnt++;
                            }
                        }
                    }
                    if (dbase.Status.Equals("Complete"))
                    {
                        foreach (seriesData mtv in lstseriesData)
                        {
                            if (mtv.name == dbase.Status)
                            {
                                int cntl = lstseriesData.IndexOf(mtv);
                                lstseriesData[cntl].y = ++(lstseriesData[cntl].y);
                                ntaCnt++;
                            }
                        }
                    }
                    if (dbase.Status.Equals("Waiting Approval"))
                    {
                        foreach (seriesData mtv in lstseriesData)
                        {
                            if (mtv.name == dbase.Status)
                            {
                                int cntl = lstseriesData.IndexOf(mtv);
                                lstseriesData[cntl].y = ++(lstseriesData[cntl].y);
                                ntaCnt++;
                            }
                        }
                    }
                    if (dbase.Status.Equals("On Hold"))
                    {
                        foreach (seriesData mtv in lstseriesData)
                        {
                            if (mtv.name == dbase.Status)
                            {
                                int cntl = lstseriesData.IndexOf(mtv);
                                lstseriesData[cntl].y = ++(lstseriesData[cntl].y);
                                ntaCnt++;
                            }
                        }
                    }
                    if (dbase.Status.Equals("Cancelled"))
                    {
                        foreach (seriesData mtv in lstseriesData)
                        {
                            if (mtv.name == dbase.Status)
                            {
                                int cntl = lstseriesData.IndexOf(mtv);
                                lstseriesData[cntl].y = ++(lstseriesData[cntl].y);
                                ntaCnt++;
                            }
                        }
                    }
                    if (ntaCnt <= 0)
                    {
                        seriesData mtv = new seriesData();
                        lstseriesData.Add(mtv);
                        lstseriesData[cntTask].name = dbase.Status;
                        lstseriesData[cntTask++].y = ++ntaCnt;
                    }
                }
            }

            return Json(lstseriesData.ToList(), JsonRequestBehavior.AllowGet);
        }  
 public PartialViewResult Create(Project proj)
 {
     if (ModelState.IsValid)
     {
         var collections = mongoDatabase.GetCollection<Project>("Project");
         collections.Insert(proj);
         var id = proj.ProjectId;
         return GetAll();
     }
     else
     {
         return PartialView(proj);
     }
 }
        public JsonResult CalcWorkDays(string pId)
        {
            int cntTask = 0;
            //int cntPayTask = 0;
            //int cntSubTask = 0;

            var _task = mongoDatabase.GetCollection<Task>("Task");
            var _devBase = mongoDatabase.GetCollection<DevBase>("DevBase");
            var _projects = mongoDatabase.GetCollection<Project>("Project");
            var _employee = mongoDatabase.GetCollection<Employee>("Employee");

            ObjectId projectId;
            var isValid = ObjectId.TryParse(pId, out projectId);
            Project proj = new Project();
            if (isValid)
            {
                var getQuery = Query<Project>.EQ(e => e.ProjectId, projectId);
                proj = _projects.FindOne(getQuery);
            }

            //var getProjects = _projects.FindAs(typeof(Project), Query.NE("Name", "null"));
            //var getEmployees = _employee.FindAs(typeof(Employee), Query.NE("FirstName", "null"));

            IList<Hours> lstEmpHours = new List<Hours>();

            var getTasks = _task.FindAs(typeof(Task), Query.Matches("ProjectId", new BsonRegularExpression(proj.ProjectId.ToString(), "i")));
            foreach (Task tsk in getTasks)
            {
                lstEmpHours.Add(new Hours() { Task = tsk.Name });
                foreach (Employee emp in tsk.AssignedTo)
                {
                    lstEmpHours[cntTask].Employee = emp.Fullname;
                    if (tsk.EndDate != "" && tsk.EndDate != null && Convert.ToDateTime(tsk.EndDate) < DateTime.Now)
                    {
                        lstEmpHours[cntTask].Days = Convert.ToDateTime(tsk.EndDate).Subtract(Convert.ToDateTime(tsk.StartDate)).Days;
                    }
                    else
                    {
                        lstEmpHours[cntTask].Days = DateTime.Now.Subtract(Convert.ToDateTime(tsk.StartDate)).Days;
                    }
                }
                cntTask++;
            }

            return Json(lstEmpHours.ToList(), JsonRequestBehavior.AllowGet);
        }