public void CreateTaskRKD(Guid projectUID, Guid taskUID, DateTime dateFinish, int percentCompleted) { if (projectUID != null || taskUID != null) { ProjectServer_UpdateTasks newTask = new ProjectServer_UpdateTasks { finishDate = dateFinish, projectUID = projectUID, taskUID = taskUID, percentComplited = percentCompleted }; db.ProjectServer_UpdateTasks.Add(newTask); db.SaveChanges(); } }
private int UpdateTasksInProject(IGrouping <Guid, ProjectServer_UpdateTasks> data) { try { using (ProjectContext projectCont1 = new ProjectContext(PwaPath)) { string nameProject = _db.PWA_EmpProject.First(d => d.ProjectUID == data.Key).ProjectName; var projCollection = projectCont1.LoadQuery(projectCont1.Projects.Where(p => p.Name == nameProject)); projectCont1.ExecuteQuery(); PublishedProject proj2Edit = projCollection.First(); DraftProject projCheckedOut = proj2Edit.CheckOut(); projectCont1.Load(projCheckedOut.Tasks); projectCont1.ExecuteQuery(); DraftTaskCollection catskill = projCheckedOut.Tasks; foreach (DraftTask task in catskill) { try { if (task.Name != null && task.Id == _db.ProjectServer_UpdateTasks.First(d => d.taskUID == task.Id).taskUID) { ProjectServer_UpdateTasks projectServer_UpdateTasks = _db.ProjectServer_UpdateTasks.First(d => d.taskUID == task.Id); var nk = projectServer_UpdateTasks.nk; if (nk != null) { int time = (int)nk; projectCont1.Load(task.CustomFields); projectCont1.ExecuteQuery(); foreach (CustomField cus in task.CustomFields) { if (cus.Name == "НК") { string intname = cus.InternalName; task[intname] = time; } } if (task.PercentComplete == 0) { task.Work = time + "ч"; } else { int factWork = Convert.ToInt32(task.Work.Substring(0, task.Work.Length - 1)) - Convert.ToInt32(task.RemainingWork.Substring(0, task.RemainingWork.Length - 1)); if (factWork < time) { task.Work = time - factWork + "ч"; } } QueueJob qJob1 = projCheckedOut.Update(); JobState jobState1 = projectCont1.WaitForQueue(qJob1, 10); } else { ProjectServer_UpdateTasks pTask = _db.ProjectServer_UpdateTasks.First(d => d.taskUID == task.Id); if (pTask.percentComplited != null) { task.PercentComplete = (int)pTask.percentComplited; } if (pTask.finishDate != null) { task.Finish = (DateTime)pTask.finishDate; } if (task.IsMilestone == true) { task.Start = (DateTime)pTask.finishDate; } QueueJob qJob1 = projCheckedOut.Update(); JobState jobState1 = projectCont1.WaitForQueue(qJob1, 10); } } } catch { } } projCheckedOut.Publish(true); QueueJob qJob = projectCont1.Projects.Update(); JobState jobState = projectCont1.WaitForQueue(qJob, 20); } return(1); } catch { return(0); } }