/// <summary> /// Sets the button status text. /// </summary> /// <param name="taskStatus">The task status.</param> private void SetStatus(TaskStatus taskStatus) { CurrentTaskStatus = taskStatus; plResult.Visible = taskStatus == TaskStatus.Completed; if (WorkflowProcessing.IsWorkflow(_taskId)) { plResult.Visible = false; plWorkflowResult.Visible = taskStatus == TaskStatus.Completed; } lrlTaskStatus.Text = EnumHelper.GetEnumDescription(taskStatus); rbtnRun.Visible = rbtnCancel.Visible = rbtnHoldOver.Visible = false; rbtnAddToPlan.Visible = rbtnCharg.Visible = rbtnReject.Visible = false; if (taskStatus == TaskStatus.Planned || taskStatus == TaskStatus.InWork) { rbtnRun.Visible = rbtnCancel.Visible = rbtnHoldOver.Visible = true; } if (taskStatus == TaskStatus.Charged || taskStatus == TaskStatus.HoldOver) { rbtnAddToPlan.Visible = true; } if (taskStatus == TaskStatus.Planned || taskStatus == TaskStatus.Rejected) { rbtnCharg.Visible = true; } if (taskStatus == TaskStatus.Charged) { rbtnReject.Visible = true; } if (taskStatus == TaskStatus.Planned) { CalculateCompletePercent(); } }
/// <summary> /// Handles the OnClick event of the lbtnSave control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param> protected void lbtnSave_OnClick(object sender, EventArgs e) { if (!Page.IsValid) { return; } var task = DataManager.Task.SelectById(SiteId, _taskId) ?? new tbl_Task(); var isWorkflow = WorkflowProcessing.IsWorkflow(_taskId); var needAddHistory = false; var needAddCreatorReminder = false; if (task.ID == Guid.Empty) { needAddHistory = true; } else if (task.StartDate != rdpStartDate.SelectedDate || task.EndDate != rdpEndDate.SelectedDate || task.DateOfControl != rdpDateOfControl.SelectedDate || task.IsImportantTask != chxIsImportantTask.Checked || task.PlanDurationHours != rntxtPlanDurationHours.Value || task.PlanDurationMinutes != rntxtPlanDurationMinutes.Value || task.ResponsibleID != ucResponsible.SelectedValue || task.TaskStatusID != (int)CurrentTaskStatus || task.TaskResultID != (dcbTaskResult.SelectedId == Guid.Empty ? null : (Guid?)dcbTaskResult.SelectedId) || task.DetailedResult != txtDetailedResult.Text) { needAddHistory = true; } if (task.ID != Guid.Empty && task.TaskStatusID != (int)CurrentTaskStatus && task.CreatorID != task.ResponsibleID && (CurrentTaskStatus == TaskStatus.Completed || CurrentTaskStatus == TaskStatus.Canceled || CurrentTaskStatus == TaskStatus.Rejected)) { needAddCreatorReminder = true; } task.Title = txtTitle.Text; if (dcbTaskType.SelectedId != Guid.Empty) { task.TaskTypeID = dcbTaskType.SelectedId; } if (rdpStartDate.SelectedDate.HasValue) { task.StartDate = (DateTime)rdpStartDate.SelectedDate; } // && (!WorkflowProcessing.IsWorkflow(_taskId) || _taskId == Guid.Empty) if (rdpDateOfControl.SelectedDate.HasValue && ((Guid)CurrentUser.Instance.ContactID == task.CreatorID || _taskId == Guid.Empty)) { task.DateOfControl = (DateTime)rdpDateOfControl.SelectedDate; } task.IsImportantTask = chxIsImportantTask.Checked; var taskType = DataManager.TaskType.SelectById(SiteId, task.TaskTypeID); if (CheckUpdatePlanDurationRights(taskType)) { if (rntxtPlanDurationHours.Value.HasValue) { task.PlanDurationHours = (int)rntxtPlanDurationHours.Value; } if (rntxtPlanDurationMinutes.Value.HasValue) { task.PlanDurationMinutes = (int)rntxtPlanDurationMinutes.Value; } if (rdpEndDate.SelectedDate.HasValue) { task.EndDate = (DateTime)rdpEndDate.SelectedDate; } } else { task.PlanDurationHours = taskType.StandardDurationHours; task.PlanDurationMinutes = taskType.StandardDurationMinutes; task.EndDate = rdpStartDate.SelectedDate.Value.AddHours(taskType.StandardDurationHours).AddMinutes(taskType.StandardDurationMinutes); } task.ResponsibleID = (Guid)ucResponsible.SelectedValue; task.ResponsibleReminderDate = rdpResponsibleReminderDate.SelectedDate; task.CreatorReminderDate = rdpCreatorReminderDate.SelectedDate; task.IsUrgentTask = chxIsUrgentTask.Checked; task.TaskStatusID = (int)CurrentTaskStatus; if (dcbTaskResult.SelectedId != Guid.Empty) { task.TaskResultID = dcbTaskResult.SelectedId; } else { task.TaskResultID = null; } task.DetailedResult = txtDetailedResult.Text; if (((TaskTypeCategory)taskType.TaskTypeCategoryID) == TaskTypeCategory.LongTermTask) { task.ActualDurationHours = ucTaskDurations.TaskDurationsList.Sum(td => td.ActualDurationHours); task.ActualDurationMinutes = ucTaskDurations.TaskDurationsList.Sum(td => td.ActualDurationMinutes); task.CompletePercentage = CalculateCompletePercent(); } else { if (CurrentTaskStatus == TaskStatus.Completed) { var date = task.EndDate - task.StartDate; task.ActualDurationHours = date.Hours; task.ActualDurationMinutes = date.Minutes; task.CompletePercentage = 100; } } if (dcbProducts.SelectedId != Guid.Empty) { task.ProductID = dcbProducts.SelectedId; } else { task.ProductID = null; } if (dcbOrders.SelectedId != Guid.Empty) { task.OrderID = dcbOrders.SelectedId; } else { task.OrderID = null; } if (task.ID == Guid.Empty) { task.SiteID = SiteId; task.CreatorID = (Guid)CurrentUser.Instance.ContactID; DataManager.Task.Add(task); } else { DataManager.Task.Update(task); } var redirect = ucTaskMembers.Save(task.ID); if (((TaskTypeCategory)taskType.TaskTypeCategoryID) == TaskTypeCategory.LongTermTask) { ucTaskDurations.Save(task.ID); } if (taskType.TaskMembersCountID == (int)TaskMembersCount.MainPlusList || taskType.TaskMembersCountID == (int)TaskMembersCount.One) { ucMainTaskMember.Save(task.ID); } if (needAddHistory) { var taskHistory = new tbl_TaskHistory { TaskID = task.ID, DateStart = task.StartDate, DateEnd = task.EndDate, DateOfControl = task.DateOfControl, IsImportantTask = task.IsImportantTask, PlanDurationHours = task.PlanDurationHours, PlanDurationMinutes = task.PlanDurationMinutes, ResponsibleID = task.ResponsibleID, TaskStatusID = task.TaskStatusID, TaskResultID = task.TaskResultID, DetailedResult = task.DetailedResult }; DataManager.TaskHistory.Add(taskHistory); } var module = DataManager.Module.SelectByName("Tasks"); if (rdpCreatorReminderDate.SelectedDate.HasValue) { UpdateReminder(task.CreatorID, rdpCreatorReminderDate.SelectedDate.Value, module.ID, task.ID); } if (rdpResponsibleReminderDate.SelectedDate.HasValue) { UpdateReminder(task.ResponsibleID, rdpResponsibleReminderDate.SelectedDate.Value, module.ID, task.ID); } if (needAddCreatorReminder) { UpdateReminder(task.CreatorID, DateTime.Now, module.ID, task.ID); } // Workflow if (isWorkflow) { switch (CurrentTaskStatus) { case TaskStatus.Completed: WorkflowProcessing.Processing(WorkflowProcessing.WorkflowElementByValue(task.ID), ddlWorkflowResult.SelectedValue); break; case TaskStatus.Canceled: WorkflowProcessing.Processing(WorkflowProcessing.WorkflowElementByValue(task.ID), WorkflowProcessing.WorkflowElementResult(task.ID, "Задача отменена").ID.ToString()); break; } } if (redirect) { Response.Redirect(UrlsData.AP_Tasks()); } else { ucNotificationMessage.Text = "Ошибка обновления участников в задаче. Возможно текущие данные уже обновлены."; } }
/// <summary> /// Binds the data. /// </summary> private void BindData() { dcbProducts.SiteID = dcbOrders.SiteID = dcbTaskResult.SiteID = dcbTaskType.SiteID = SiteId; var task = DataManager.Task.SelectById(SiteId, _taskId); if (task != null) { var taskMap = new TaskMap() { ID = task.ID, PlanDurationHours = task.PlanDurationHours, PlanDurationMinutes = task.PlanDurationMinutes, Title = task.Title, StartDate = task.StartDate, EndDate = task.EndDate, MainMemberCompanyID = task.MainMemberCompanyID, MainMemberContactID = task.MainMemberContactID }; ucTaskMembers.Task = taskMap; ucTaskDurations.Task = taskMap; ucMainTaskMember.Task = taskMap; ucSaveTaskDuration.Task = taskMap; txtTitle.Text = task.Title; dcbTaskType.SelectedId = task.TaskTypeID; rdpStartDate.SelectedDate = task.StartDate; rdpEndDate.SelectedDate = task.EndDate; rdpDateOfControl.SelectedDate = task.DateOfControl; rdpDateOfControl.Enabled = (Guid)CurrentUser.Instance.ContactID == task.CreatorID; chxIsImportantTask.Checked = task.IsImportantTask; rntxtPlanDurationHours.Value = task.PlanDurationHours; rntxtPlanDurationMinutes.Value = task.PlanDurationMinutes; ucResponsible.SelectedValue = task.ResponsibleID; ucRadWindowResponsible.SelectedValue = task.ResponsibleID; rcbCreator.Items.Add(new RadComboBoxItem(DataManager.Contact.SelectById(SiteId, task.CreatorID).UserFullName)); rdpResponsibleReminderDate.SelectedDate = task.ResponsibleReminderDate; rdpCreatorReminderDate.SelectedDate = task.CreatorReminderDate; chxIsUrgentTask.Checked = task.IsUrgentTask; SetStatus((TaskStatus)task.TaskStatusID); if (task.TaskResultID.HasValue) { dcbTaskResult.SelectedId = (Guid)task.TaskResultID; } txtDetailedResult.Text = task.DetailedResult; // Workflow var isWorkflow = WorkflowProcessing.IsWorkflow(task.ID); rdpDateOfControl.Enabled = !isWorkflow; if (isWorkflow) { var workflowTemplateElementResults = WorkflowProcessing.WorkflowElementResultsByValue(task.ID); ddlWorkflowResult.Items.Add(new ListItem("Выберите значение", "")); foreach (var workflowTemplateElementResult in workflowTemplateElementResults) { if (!workflowTemplateElementResult.IsSystem) { ddlWorkflowResult.Items.Add(new ListItem(workflowTemplateElementResult.Name, workflowTemplateElementResult.ID.ToString())); } } } var taskType = task.tbl_TaskType; //ucTaskMembers.TypeCategory = (TaskTypeCategory)task.tbl_TaskType.TaskTypeCategoryID; //ucTaskDurations.Visible = plDuration.Visible = (TaskTypeCategory)task.tbl_TaskType.TaskTypeCategoryID == TaskTypeCategory.LongTermTask; //if ((TaskTypeCategory)task.tbl_TaskType.TaskTypeCategoryID == TaskTypeCategory.LongTermTask) //{ // ucTaskDurations.BindData(); // ucSaveTaskDuration.TaskDurations = ucTaskDurations.TaskDurationsList; // ucSaveTaskDuration.BindData(); // ucProgressBar.UpdateProgressBar(CalculateCompletePercent()); //} if (task.OrderID.HasValue) { dcbOrders.SelectedId = (Guid)task.OrderID; } dcbProducts.SelectedIdNullable = task.ProductID; ucTaskMembers.ProductId = task.ProductID; UpdateInterfaceRelatedTaskType(taskType); rntxtActualDurationHours.Value = task.ActualDurationHours; rntxtActualDurationMinutes.Value = task.ActualDurationMinutes; rntxtCompletePercentage.Value = (double?)task.CompletePercentage; CreatorId = task.CreatorID; ResponsibleId = task.ResponsibleID; CheckUpdatePlanDurationRights(taskType); } else { CreatorId = (Guid)CurrentUser.Instance.ContactID; rcbCreator.Items.Add(new RadComboBoxItem(DataManager.Contact.SelectById(SiteId, (Guid)CurrentUser.Instance.ContactID).UserFullName)); ucResponsible.SelectedValue = CurrentUser.Instance.ContactID; ucRadWindowResponsible.SelectedValue = CurrentUser.Instance.ContactID; rdpStartDate.SelectedDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 9, 0, 0, 0); SetStatus(TaskStatus.Planned); ucProgressBar.UpdateProgressBar(0); if (Session["sd"] != null && Session["ed"] != null) { rdpStartDate.SelectedDate = DateTime.Parse(Session["sd"].ToString()); rdpEndDate.SelectedDate = DateTime.Parse(Session["ed"].ToString()); Session["sd"] = Session["ed"] = null; } } }