Exemple #1
0
        /// <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();
            }
        }
Exemple #2
0
        /// <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 = "Ошибка обновления участников в задаче. Возможно текущие данные уже обновлены.";
            }
        }
Exemple #3
0
        /// <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;
                }
            }
        }