public void EditIsUnderWork(int ID, bool Is) { SubTask subTask = unitOfWork.SubTasks.GetSubTaskIncludingProject(ID); subTask.IsUnderWork = Is; if (Is) { SubTaskSession opensubtaskSession = unitOfWork.SubTaskSessions.GetOpenSubTask(userManager.GetUserId(HttpContext.User)); if (opensubtaskSession != null) { CloseOpenSubTasksession(opensubtaskSession, opensubtaskSession.SubTask); unitOfWork.SubTasks.Edit(opensubtaskSession.SubTask); } SubTaskSession subTaskSession = new SubTaskSession() { FK_SubTaskID = ID, SessStartDate = DateTime.Now, EmpId = userManager.GetUserId(HttpContext.User) }; subTaskSession = unitOfWork.SubTaskSessions.Add(subTaskSession); } else { SubTaskSession subTaskSession = unitOfWork.SubTaskSessions.GetLastSessBySubTaskID(ID); CloseOpenSubTasksession(subTaskSession, subTask); } subTask = unitOfWork.SubTasks.Edit(subTask); }
public void CloseOpenSubTasksession(SubTaskSession subTaskSession, SubTask subTask) { subTaskSession.SessEndtDate = DateTime.Now; double hourDuration = (double)(subTaskSession.SessEndtDate - subTaskSession.SessStartDate).Value.TotalHours; subTaskSession.SessDuration = (int)Math.Round(hourDuration, 0); subTaskSession = unitOfWork.SubTaskSessions.Edit(subTaskSession); subTask.ActualDuration += subTaskSession.SessDuration; subTask.IsUnderWork = false; Activity task = unitOfWork.Tasks.GetById(subTask.FK_TaskId); float LastTaskDuaration = task.ActualDuratoin; task.ActualDuratoin += subTask.ActualDuration; task = unitOfWork.Tasks.Edit(task); Project project = unitOfWork.Projects.GetById(task.FK_ProjectId); project.ActualDuration += task.ActualDuratoin - LastTaskDuaration; unitOfWork.Projects.Edit(project); }