public IActionResult Put(Guid id, [FromBody] TaskWork taskWork)
        {
            try
            {
                if (id.Equals(Guid.Empty))
                {
                    return(BadRequest(new { Message = "Id is Empty" }));
                }
                if (taskWork.IsObjectNull())
                {
                    return(BadRequest(new { Message = "Task Object is Null" }));
                }
                if (!ModelState.IsValid)
                {
                    return(BadRequest(new { Message = "Invalid model object" }));
                }

                bool secuence = this.taskWorkBR.UdpdateTask(id, taskWork);

                if (!secuence)
                {
                    return(NotFound());
                }

                return(Ok(taskWork));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, new { Message = $"Internal server error: {ex.Message}" }));
            }
        }
Exemple #2
0
        public IHttpActionResult GetTaskReminders()
        {
            TaskCountModel result = new TaskCountModel();

            result.TaskCount     = TaskWork.GetUseableTaskWork().Count(c => c.ReceiverAccount == ClientCookie.UserCode && c.Status == TaskWorkStatus.UnFinish);
            result.ReminderCount = Remind.Count(c => c.ReceiverAccount == ClientCookie.UserCode &&
                                                !c.IsReaded);
            result.NoticeCount = Notification.Count(ClientCookie.UserCode);
            //获取PMT任务数量
            string encryptUserCode = Cryptography.Encrypt(ClientCookie.UserCode, DateTime.Now.ToString("yyyyMMdd"), "oms");
            string redirectUrl     = string.Format(Constants.AM_To_PMT_RedirectUrl, "&eid=" + encryptUserCode);
            string callPMTTaskUrl  = string.Format(Constants.Get_PMT_TaskUrl, encryptUserCode);

            if (Constants.GetPMTTask)
            {
                var pmtTaskResult = ApiProxy.Call <PMTTaskCountModel>(callPMTTaskUrl);
                if (pmtTaskResult != null)
                {
                    result.PMT_ApproveCount = pmtTaskResult.ApproveCount;
                    result.PMT_DealCount    = pmtTaskResult.DealCount;
                    result.PMT_NotifyCount  = pmtTaskResult.NotifyCount;
                    result.PMT_RemindCount  = pmtTaskResult.RemindCount;
                    result.PMT_Total        = pmtTaskResult.Total;
                }
            }
            result.PMT_URL = redirectUrl;
            return(Ok(result));
        }
Exemple #3
0
        private void lstEvent_Click(object sender, EventArgs e)
        {
            #region Hiển thị cho các control ở trên
            this.txtTieuDe.Text   = this.lstEvent.SelectedItems[0].SubItems[1].Text.Trim();
            this.dtpBatDau.Value  = DateTime.Parse(this.lstEvent.SelectedItems[0].SubItems[2].Text.Trim());
            this.dtpKetThuc.Value = DateTime.Parse(this.lstEvent.SelectedItems[0].SubItems[3].Text.Trim());
            this.rtbMoTa.Text     = this.lstEvent.SelectedItems[0].SubItems[4].Text.Trim();
            #endregion
            #region Hiển thị ảnh theo ID ở hàng được chọn
            using (FileStream stream = new FileStream(String.Format("{0}.jpg",
                                                                    this.lstEvent.SelectedItems[0].SubItems[0].Text.Trim()), FileMode.Open, FileAccess.Read))
            {
                ptbDraw.Image = Image.FromStream(stream);
            }
            #endregion
            #region Hiển thị danh sách người dùng trong lstUsers
            this.lstUsers.Items.Clear();
            //string displayUsers = this.lstEvent.SelectedItems[0].SubItems[5].Text.Trim();
            //string[] displayForList = displayUsers.Split();
            //for (int i = 0; i < displayForList.Count(); i++)
            //{
            //    //var user = listUsers.FirstOrDefault(x => x.username == displayForList[i]);

            //    this.lstUsers.Items.Add(user as User);
            //}
            List <TaskWork> taskWorks = TaskController.GetAllTasks();
            TaskWork        task      = taskWorks.Where(x => x.ID == int.Parse(this.lstEvent.SelectedItems[0].SubItems[0].Text)).Single();
            foreach (var user in task.listUser)
            {
                this.lstUsers.Items.Add(user as User);
            }
            #endregion
        }
Exemple #4
0
        private void btEdit_Click(object sender, EventArgs e)
        {
            if (lbID.Text == "ID")
            {
                return;
            }
            if (!CheckInput.CheckInputAddTask(tbTitle, tbPercentCompleted, dtpFDate, dtpTDate, cmbPriority, errorProvider1))
            {
                return;
            }
            TaskWork task = new TaskWork();

            task.ID               = Convert.ToInt32(lbID.Text);
            task.description      = tbDescription.Text;
            task.Url              = rtbLink.Text;
            task.Priority         = cmbPriority.Text;
            task.Title            = tbTitle.Text;
            task.ToDate           = dtpTDate.Value;
            task.FromDate         = dtpFDate.Value;
            task.PercentCompleted = Convert.ToInt32(tbPercentCompleted.Text);
            task.Users            = new List <User>();
            foreach (object item in lsbUsers.Items)
            {
                task.Users.Add(UserController.GetUser(item.ToString()));
            }
            TaskController.EditTask(task);
            HienThi(TaskController.GetListTask());
        }
Exemple #5
0
        public IHttpActionResult IsFinished(int procInstId, string typeCode)
        {
            var userCode = ClientCookie.UserCode;
            var result   = TaskWork.IsK2Finished(procInstId, typeCode, userCode);

            return(Ok(result));
        }
        public IActionResult Post([FromBody] TaskWork taskWorkNew)
        {
            if (taskWorkNew.IsObjectNull())
            {
                return(BadRequest(new { Message = "DeathDate object is null" }));
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(new { Message = "Invalid model object" }));
            }
            try
            {
                this.taskWorkBR.CreateTask(taskWorkNew);
                if (taskWorkNew.IsEmptyObject())
                {
                    return(BadRequest(new { Message = "Task Object is not Created" }));
                }

                return(CreatedAtRoute("TaskWorkById", new { id = taskWorkNew.Id }, taskWorkNew));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, new { Message = $"Internal server error: {ex.Message}" }));
            }
        }
Exemple #7
0
        public static void EditTask(TaskWork task)
        {
            using (var _context = new DbGantChartContext())
            {
                var taskdb = (from t in _context.TaskWorks.Include(x => x.Users)
                              where t.ID == task.ID
                              select t).Single();
                taskdb.Title            = task.Title;
                taskdb.description      = task.description;
                taskdb.FromDate         = task.FromDate;
                taskdb.ToDate           = task.ToDate;
                taskdb.PercentCompleted = task.PercentCompleted;
                taskdb.Priority         = task.Priority;
                taskdb.Url = task.Url;
                taskdb.Users.Clear();


                foreach (User user in task.Users)
                {
                    var userdb = (from u in _context.Users.Include(u => u.Tasks)
                                  where u.UserName == user.UserName
                                  select u).Single();
                    taskdb.Users.Add(userdb);
                }
                _context.SaveChanges();
            }
        }
Exemple #8
0
 public IHttpActionResult EditMultipleProjects(PostEditProjects postEditProjects)
 {
     if (postEditProjects.EditProjects.Count > 0)
     {
         using (TransactionScope tranScope = new TransactionScope())
         {
             var projectId          = postEditProjects.ProjectId;
             var parentCode         = postEditProjects.EditProjects[0].ParentCode;
             var projects           = ProjectInfo.Search(pi => pi.ProjectId == projectId).ToList();
             var usCode             = projects[0].USCode;
             var store              = StoreBasicInfo.GetStorInfo(usCode);
             var minExecuteSequence = postEditProjects.EditProjects.Min(p => p.ExecuteSequence);
             var maxExecuteSequance = postEditProjects.EditProjects.Max(p => p.ExecuteSequence);
             foreach (TopNavigator nav in postEditProjects.EditProjects)
             {
                 var workflow = BaseWFEntity.GetWorkflowEntity(postEditProjects.ProjectId, nav.Code);
                 workflow.Edit();
             }
             string[] cancelWorkflowCodes = FlowInfo.Search(f => f.ParentCode == parentCode && f.ExecuteSequence <= maxExecuteSequance + 1).Select(f => f.Code).ToArray();
             TaskWork.Cancel(t => cancelWorkflowCodes.Contains(t.TypeCode) && t.RefID == postEditProjects.ProjectId && t.Status != TaskWorkStatus.Finished);
             postEditProjects.EditProjects.Where(n => n.ExecuteSequence == minExecuteSequence).ToList().ForEach(n =>
             {
                 var project            = projects.FirstOrDefault(pi => pi.FlowCode == n.Code);
                 var originator         = Employee.GetSimpleEmployeeByCode(project.CreateUserAccount);
                 var source             = FlowInfo.Get(n.ParentCode);
                 var taskType           = FlowInfo.Get(n.Code);
                 TaskWork task          = new TaskWork();
                 task.Id                = Guid.NewGuid();
                 task.SourceCode        = source.Code;
                 task.SourceNameENUS    = source.NameENUS;
                 task.SourceNameZHCN    = source.NameZHCN;
                 task.Status            = TaskWorkStatus.UnFinish;
                 task.StatusNameZHCN    = "任务";
                 task.StatusNameENUS    = "任务";
                 task.Title             = TaskWork.BuildTitle(postEditProjects.ProjectId, store.NameZHCN, store.NameENUS);
                 task.RefID             = postEditProjects.ProjectId;
                 task.StoreCode         = usCode;
                 task.ReceiverAccount   = originator.Code;
                 task.ReceiverNameENUS  = originator.NameENUS;
                 task.ReceiverNameZHCN  = originator.NameZHCN;
                 task.TypeCode          = taskType.Code;
                 task.TypeNameENUS      = taskType.NameENUS;
                 task.TypeNameZHCN      = taskType.NameZHCN;
                 task.Url               = TaskWork.BuildUrl(n.Code, projectId, "");
                 task.CreateTime        = DateTime.Now;
                 task.CreateUserAccount = ClientCookie.UserCode;
                 task.Sequence          = 0;
                 task.ActivityName      = "Start";
                 task.Add();
             });
             tranScope.Complete();
         }
         return(Ok());
     }
     else
     {
         return(BadRequest("you must select projects to be edited!"));
     }
 }
Exemple #9
0
        public void FinishTest()
        {
            var taskWork = TaskWork.FirstOrDefault(e => e.Id == new Guid("6bae9906-8608-49a2-8faa-0bbd5eaa43ee"));

            var wfEntity = BaseWFEntity.GetWorkflowEntity("MajorLease15030405", FlowCode.MajorLease_ConsInfo);

            wfEntity.Finish(TaskWorkStatus.K2ProcessApproved, taskWork);
        }
Exemple #10
0
        public IHttpActionResult PostClosureConsInvtChecking(ClosureConsInvtChecking entity)
        {
            //ClosureInfo closure = new ClosureInfo();
            //closure = closure.GetByProjectId(entity.ProjectId.Value);

            var task = TaskWork.FirstOrDefault(
                e => e.ReceiverAccount == ClientCookie.UserCode && e.Status == 0 && e.SourceCode == FlowCode.Closure &&
                e.TypeCode == FlowCode.Closure_ConsInvtChecking && e.RefID == entity.ProjectId);

            task.Finish();
            // Start K2 Process
            string _procCode = WFConsInvtChecking.ProcessCode;

            List <ProcessDataField> _listDataFields = new List <ProcessDataField>();



            var _diff = CalDiff(entity);;

            /*
             * Total Variance <= +-5%   :  1
             +-5%  < Total Variance <= +- 10%   :   2
             *  Total Variance > +- 10% :  3
             */

            var closureEntity = ClosureInfo.GetByProjectId(entity.ProjectId);

            _listDataFields.Add(new ProcessDataField("flag_DiffRangeType", _diff)); //传偏差值范围 1, 2, 3

            //_listDataFields.Add(new ProcessDataField("dest_Creator", ClientCookie.UserCode));
            _listDataFields.Add(new ProcessDataField("dest_Creator", entity.CreateUserAccount)); // 发起人也变成工程PM,不是actor
            _listDataFields.Add(new ProcessDataField("dest_EngPM", entity.PMSupervisor));
            _listDataFields.Add(new ProcessDataField("dest_Fin", entity.FinControllerAccount));
            _listDataFields.Add(new ProcessDataField("dest_VPGM", entity.VPGMAccount));
            _listDataFields.Add(new ProcessDataField("dest_Group1", entity.FinanceAccount + ";" + entity.PMSupervisor));
            _listDataFields.Add(new ProcessDataField("ProcessCode", _procCode));
            //_listDataFields.Add(new ProcessDataField("dest_Receiver", "")); 知会人

            //将 WFConsInvtChecking 的任务传给K2
            var taskJson = Newtonsoft.Json.JsonConvert.SerializeObject(task);

            _listDataFields.Add(new ProcessDataField("ProjectTaskInfo", taskJson));
            int _procInstID = K2FxContext.Current.StartProcess(_procCode, ClientCookie.UserCode, _listDataFields);


            if (_procInstID > 0)
            {
                // 更新 ConsInvtChecking 表的ProcInstId
                entity.ProcInstID = _procInstID;
                ClosureConsInvtChecking.Update(entity);

                SaveCommers(entity, ProjectAction.Submit, ProjectCommentStatus.Submit);
                ProjectInfo.FinishNode(entity.ProjectId, FlowCode.Closure_ConsInvtChecking,
                                       NodeCode.Closure_ConsInvtChecking_ResultUpload);
            }
            return(Ok());
        }
        public IHttpActionResult ProcessClosureWOCheckList(ClosureWOCheckList entity)
        {
            int procInstID = entity.ProcInstID.Value;

            string actionLower = entity.Action.ToLower();



            string account = ClientCookie.UserCode;
            //评论信息
            string comments = entity.Comments;

            // To-Do K2 action
            ProcessActionResult _action = BPMHelper.ConvertToProcAction(actionLower);

            if (actionLower.Equals(ProjectAction.Return, StringComparison.CurrentCultureIgnoreCase))
            {
                TaskWork.Finish(e => e.RefID == entity.ProjectId &&
                                e.TypeCode == FlowCode.Closure_WOCheckList &&
                                e.Status == TaskWorkStatus.UnFinish &&
                                e.K2SN != entity.SN);
            }

            if (actionLower == "resubmit")
            {
                List <ProcessDataField> _listDataFields = new List <ProcessDataField>();

                _listDataFields.Add(new ProcessDataField("dest_PMSupervisor", entity.PMSupervisorAccount));                                                                                    // 工程PM直属上级
                _listDataFields.Add(new ProcessDataField("dest_MCCLApprovers", string.Join(";", entity.MCCLApproverAccount, entity.MCCLITApproverAccount, entity.MCCLMCCLEqApproverAccount))); // MCCL Approvers
                K2FxContext.Current.ApprovalProcess(entity.SN, account, _action.ToString(), comments, _listDataFields);

                entity.Save();
                _db.Entry(entity).State = EntityState.Modified;
                _db.SaveChanges();
            }
            else
            {
                K2FxContext.Current.ApprovalProcess(entity.SN, account, _action.ToString(), comments);
            }



            if (actionLower == "submit")
            {
            }
            else if (actionLower == "resubmit")
            {
                ProjectInfo.FinishNode(entity.ProjectId, FlowCode.Closure_WOCheckList,
                                       NodeCode.Closure_WOCheckList_ClosingCost);
            }

            //ProjectInfo.UpdateProjectStatus(entity.ProjectId, FlowCode.Closure_WOCheckList, entity.GetProjectStatus(entity.Action));
            SaveCommers(entity, _action.ToString(), ProjectCommentStatus.Submit);

            return(Ok(entity.Status));
        }
Exemple #12
0
        public static bool IsFlowStarted(string projectId, string flowCode)
        {
            bool isStart = TaskWork.Any(e => e.RefID == projectId &&
                                        e.TypeCode == flowCode &&
                                        e.ActivityName != "Start" &&
                                        e.ActivityName != "Originator" &&
                                        e.Status == TaskWorkStatus.UnFinish);

            return(isStart);
        }
Exemple #13
0
        public IHttpActionResult Get(string sourceCode, string refId)
        {
            var task = TaskWork.Search(c => c.SourceCode == sourceCode && c.RefID == refId).FirstOrDefault();

            if (task == null)
            {
                return(NotFound());
            }
            return(Ok(task));
        }
Exemple #14
0
        public IHttpActionResult PackageList(TaskWorkCondition condition)
        {
            condition.Status   = TaskWorkStatus.Holding;
            condition.TypeCode = FlowCode.Reimage_Package;

            int totalSize;
            var data = TaskWork.Query(condition, out totalSize).ToList();

            return(Ok(new { data, totalSize }));
        }
Exemple #15
0
        public IHttpActionResult ProcessClosureConsInvtChecking(ClosureConsInvtChecking entity)
        {
            int procInstID = entity.ProcInstID.Value;

            string actionLower = entity.Action.ToLower();
            string account     = ClientCookie.UserCode;
            //评论信息
            string comments = entity.Comments;


            // To-Do K2 action
            ProcessActionResult _action = BPMHelper.ConvertToProcAction(actionLower);

            List <ProcessDataField> _listDataFields = new List <ProcessDataField>();

            if (entity.Action == "ReSubmit")
            {
                var _diff = CalDiff(entity);
                _listDataFields.Add(new ProcessDataField("flag_DiffRangeType", _diff)); // 1, 2, 3

                //_listDataFields.Add(new ProcessDataField("dest_Creator", ClientCookie.UserCode));
                _listDataFields.Add(new ProcessDataField("dest_Creator", entity.CreateUserAccount)); // 发起人也变成工程PM,不是actor
                _listDataFields.Add(new ProcessDataField("dest_EngPM", entity.PMSupervisor));
                _listDataFields.Add(new ProcessDataField("dest_Fin", entity.FinControllerAccount));
                _listDataFields.Add(new ProcessDataField("dest_VPGM", entity.VPGMAccount));
                _listDataFields.Add(new ProcessDataField("dest_Group1", entity.FinanceAccount + ";" + entity.PMSupervisor));
                K2FxContext.Current.ApprovalProcess(entity.SN, account, _action.ToString(), comments, _listDataFields);
            }
            else
            {
                K2FxContext.Current.ApprovalProcess(entity.SN, account, _action.ToString(), comments);
            }

            if (actionLower.Equals(ProjectAction.Return, StringComparison.CurrentCultureIgnoreCase))
            {
                TaskWork.Finish(e => e.RefID == entity.ProjectId &&
                                e.TypeCode == FlowCode.Closure_ConsInvtChecking &&
                                e.Status == TaskWorkStatus.UnFinish &&
                                e.K2SN != entity.SN);
            }

            if (actionLower == "resubmit")
            {
                ProjectInfo.FinishNode(entity.ProjectId, FlowCode.Closure_ConsInvtChecking, NodeCode.Closure_ConsInvtChecking_WriteOffData);
            }
            else if (actionLower == "return")
            {
                //ProjectInfo.Reset(entity.ProjectId, FlowCode.Closure_ConsInvtChecking);
            }

            SaveCommers(entity, _action.ToString(), ProjectCommentStatus.Submit);


            return(Ok());
        }
Exemple #16
0
        public JsonResult GetExchange()
        {
            TaskWork taskwork = new TaskWork();

            taskwork.CreteExchangeData();

            string strMsg = "Complete GetExchange!!";

            //return View();
            return(Json(new { Response = strMsg }, JsonRequestBehavior.AllowGet));
        }
Exemple #17
0
        public JsonResult WorkSchedule2()
        {
            TaskWork taskwork = new TaskWork();

            taskwork.CreteStockData();

            string strMsg = "Work Schedule2!!";

            //return View();
            return(Json(new { Response = strMsg }, JsonRequestBehavior.AllowGet));
        }
Exemple #18
0
 public void CreateTask(TaskWork taskWorkNew)
 {
     try
     {
         this.repository.TaskWork.CreateTask(taskWorkNew);
         this.repository.Save();
     }
     catch (Exception ex)
     {
         throw new Exception(ex.Message, ex.InnerException);
     }
 }
        public IHttpActionResult ReturnTask(WorkflowStepInfo info)
        {
            var task = TaskWork.GetTaskBySN(info.SN);

            if (task == null || task.Status != TaskWorkStatus.UnFinish)
            {
                return(Ok());
            }

            var    entityId  = new Guid(info.EntityID);
            string projectId = string.Empty;

            switch (info.WorkflowName)
            {
            case FlowCode.Closure_ClosurePackage:
                var closurePackage = ClosurePackage.Get(entityId);
                projectId = closurePackage.ProjectId;
                break;

            case FlowCode.TempClosure_ClosurePackage:
                var tempClosurePackage = TempClosurePackage.Get(entityId);
                projectId = tempClosurePackage.ProjectId;
                break;

            case FlowCode.MajorLease_Package:
                var majorLeasePackage = MajorLeaseChangePackage.Get(entityId);
                projectId = majorLeasePackage.ProjectId;
                break;

            case FlowCode.Rebuild_Package:
                var rebuildPackage = RebuildPackage.Get(entityId);
                projectId = rebuildPackage.ProjectId;
                break;

            case FlowCode.Renewal_Package:
                var renewalPackage = RenewalPackage.Get(entityId);
                projectId = renewalPackage.ProjectId;
                break;

            case FlowCode.Reimage_Package:
                var reimagePackage = RenewalPackage.Get(entityId);
                projectId = reimagePackage.ProjectId;
                break;

            default:
                break;
            }
            if (!string.IsNullOrEmpty(projectId))
            {
                TaskWork.Finish(e => e.RefID == projectId && e.TypeCode == info.WorkflowName && e.Status == TaskWorkStatus.UnFinish && e.ActivityName != "Originator");
            }
            return(Ok());
        }
Exemple #20
0
        public IHttpActionResult GetTaskReminders(int pageSize = 5)
        {
            ProjectReminder reminder = new ProjectReminder();

            reminder.TaskCount = TaskWork.GetUseableTaskWork().Count(c => c.ReceiverAccount == ClientCookie.UserCode && c.Status == 0 && c.ActionName != ProjectAction.Pending);
            reminder.Tasks     = TaskWork.GetUseableTaskWork().Where(c => c.ReceiverAccount == ClientCookie.UserCode && c.Status == TaskWorkStatus.UnFinish)
                                 .OrderByDescending(c => c.CreateTime).Take(pageSize).ToList();
            reminder.RemindCount = Remind.Count(c => c.ReceiverAccount == ClientCookie.UserCode && !c.IsReaded);
            reminder.Reminds     = Remind.Search(c => c.ReceiverAccount == ClientCookie.UserCode && !c.IsReaded)
                                   .OrderByDescending(c => c.CreateTime).Take(pageSize).ToList();
            return(Ok(reminder));
        }
Exemple #21
0
        public JsonResult WorkSchedule()
        {
            TaskWork taskwork = new TaskWork();

            taskwork.CreteData();

            //ViewBag.Message = "Work Schedule!!";
            string strMsg = "Work Schedule!!";

            //return View();
            return(Json(new { Response = strMsg }, JsonRequestBehavior.AllowGet));
        }
        public WFTempClosureLegalReview(TempClosureLegalReview entity)
            : base(entity)
        {
            var legal = ProjectUsers.FirstOrDefault(pu => pu.ProjectId == entity.ProjectId && pu.RoleCode == ProjectUserRoleCode.Legal);
            var task  = TaskWork.GetTaskWork(entity.ProjectId, ClientCookie.UserCode, TaskWorkStatus.UnFinish,
                                             FlowCode.TempClosure, FlowCode.TempClosure_LegalReview);

            K2Param.Task = task;
            K2Param.AddDataField("dest_Creator", Entity.CreateUserAccount);
            K2Param.AddDataField("dest_Legal", legal.UserAccount);
            K2Param.AddDataField("ProcessCode", ProcessCode);
            K2Param.AddDataField("ProjectTaskInfo", JsonConvert.SerializeObject(task));
        }
        public IHttpActionResult GetMaterTrackReps(string workflowId, Guid nodeId)
        {
            var tracks = MaterTrack.Search(m => m.WorkflowId == workflowId && m.NodeId == nodeId).ToList();
            var reps   = tracks.Where(t => t.TrackType == MaterTrackType.Rep).OrderBy(t => t.CreateTime).Select(t =>
            {
                var rep         = new MaterTrackRep();
                rep.Id          = t.Id;
                rep.Content     = t.Content;
                rep.CreateTime  = t.CreateTime;
                rep.Creator     = t.Creator;
                rep.CreatorZHCN = t.CreatorZHCN;
                rep.CreatorENUS = t.CreatorENUS;
                rep.TrackType   = (MaterTrackType)t.TrackType;
                if (tracks.Count(t2 => t2.TrackType == MaterTrackType.Rep && t2.CreateTime > t.CreateTime) > 0)
                {
                    rep.IsFinish = true;
                }
                else
                {
                    if (TaskWork.Count(t2 => t2.RefID == workflowId && t2.Status == TaskWorkStatus.UnFinish &&
                                       t2.ActivityName.Contains("Start_MaterTrack")) > 0)
                    {
                        rep.IsFinish = false;
                    }
                    else
                    {
                        rep.IsFinish = true;
                    }
                }
                rep.Replies = tracks.Where(f => f.ParentId == t.Id).OrderBy(f => f.CreateTime).Select(f =>
                {
                    var reply         = new MaterTrackReply();
                    reply.Id          = f.Id;
                    reply.Content     = f.Content;
                    reply.CreateTime  = f.CreateTime;
                    reply.Creator     = f.Creator;
                    reply.CreatorZHCN = f.CreatorZHCN;
                    reply.CreatorENUS = f.CreatorENUS;
                    reply.TrackType   = (MaterTrackType)f.TrackType;
                    return(reply);
                }).ToList();
                return(rep);
            }).ToList();

            return(Ok(new
            {
                Reps = reps,
                IsLegal = ProjectUsers.IsRole(workflowId, ClientCookie.UserCode, ProjectUserRoleCode.Legal),
                IsAssetActor = ProjectUsers.IsRole(workflowId, ClientCookie.UserCode, ProjectUserRoleCode.AssetActor)
            }));
        }
        public bool Add(MaterTrack materTrack)
        {
            using (TransactionScope tranScope = new TransactionScope())
            {
                materTrack.Id         = Guid.NewGuid();
                materTrack.CreateTime = DateTime.Now;
                MaterTrack.Add(materTrack);
                var project = ProjectInfo.Get(materTrack.WorkflowId, materTrack.WorkflowType);
                var store   = StoreBasicInfo.FirstOrDefault(s => s.StoreCode == project.USCode);
                var Codes   = materTrack.NodeType.Split('_');
                var url     = string.Format("/{0}/Main#/{1}/Process/View?projectId={2}", Codes[0], Codes[1], materTrack.WorkflowId);
                //if (Codes[0] == "Closure") //临时改动 只针对Closure,因为Closure 用的还是老的URL
                //{
                //    url = string.Format("/{0}/Main#/{0}/{1}/Process/View?projectId={2}", Codes[0], Codes[1], materTrack.WorkflowId);
                //}
                var title = TaskWork.BuildTitle(materTrack.WorkflowId, store.NameZHCN, store.NameENUS);
                switch (materTrack.TrackType)
                {
                case MaterTrackType.Rep:
                {
                    var actor = ProjectUsers.FirstOrDefault(pu => pu.ProjectId == materTrack.WorkflowId && pu.RoleCode == ProjectUserRoleCode.AssetActor);
                    TaskWork.SendTask(materTrack.WorkflowId, title, project.USCode, url, actor, materTrack.WorkflowType, materTrack.NodeType, "Start_MaterTrack_Rep");
                }
                break;

                case MaterTrackType.Feedback:
                {
                    var legal = ProjectUsers.FirstOrDefault(pu => pu.ProjectId == materTrack.WorkflowId && pu.RoleCode == ProjectUserRoleCode.Legal);
                    TaskWork.Finish(t => t.RefID == materTrack.WorkflowId && t.SourceCode == materTrack.WorkflowType && t.TypeCode == materTrack.NodeType && t.ActivityName == "Start_MaterTrack_Rep" && t.Status == TaskWorkStatus.UnFinish);
                    if (TaskWork.Count(t => t.RefID == materTrack.WorkflowId && t.SourceCode == materTrack.WorkflowType && t.TypeCode == materTrack.NodeType && t.ActivityName == "Start_MaterTrack_Feedback" && t.Status == TaskWorkStatus.UnFinish) == 0)
                    {
                        TaskWork.SendTask(materTrack.WorkflowId, title, project.USCode, url, legal, materTrack.WorkflowType, materTrack.NodeType, "Start_MaterTrack_Feedback");
                    }
                }
                break;

                case MaterTrackType.Reply:
                {
                    var actor = ProjectUsers.FirstOrDefault(pu => pu.ProjectId == materTrack.WorkflowId && pu.RoleCode == ProjectUserRoleCode.AssetActor);
                    TaskWork.Finish(t => t.RefID == materTrack.WorkflowId && t.SourceCode == materTrack.WorkflowType && t.TypeCode == materTrack.NodeType && t.ActivityName == "Start_MaterTrack_Feedback" && t.Status == TaskWorkStatus.UnFinish);
                    if (TaskWork.Count(t => t.RefID == materTrack.WorkflowId && t.SourceCode == materTrack.WorkflowType && t.TypeCode == materTrack.NodeType && t.ActivityName == "Start_MaterTrack_Rep" && t.Status == TaskWorkStatus.UnFinish) == 0)
                    {
                        TaskWork.SendTask(materTrack.WorkflowId, title, project.USCode, url, actor, materTrack.WorkflowType, materTrack.NodeType, "Start_MaterTrack_Rep");
                    }
                }
                break;
                }
                tranScope.Complete();
                return(true);
            }
        }
Exemple #25
0
        public WFTempClosurePackage(TempClosurePackage entity)
            : base(entity)
        {
            var approvers = ApproveDialogUser.GetApproveDialogUser(entity.Id.ToString());
            var task      = TaskWork.FirstOrDefault(t => t.RefID == entity.ProjectId && t.TypeCode == FlowCode.TempClosure_ClosurePackage);

            K2Param.AddDataField("dest_Creator", Entity.CreateUserAccount);
            K2Param.AddDataField("dest_MRMgrs", string.Concat(approvers.MarketMgrCode, ";", !string.IsNullOrEmpty(approvers.RegionalMgrCode) ? approvers.RegionalMgrCode : ""));
            K2Param.AddDataField("dest_GMApprovers", string.Concat(approvers.MDDCode, ";", approvers.GMCode, ";", approvers.FCCode));
            K2Param.AddDataField("dest_VPGM", approvers.VPGMCode);
            //K2Param.AddDataField("dest_DevVP", Entity.DevVP); Cary: 没有这个环节了。2014-9-11
            K2Param.AddDataField("ProcessCode", ProcessCode);
            K2Param.AddDataField("ProjectTaskInfo", JsonConvert.SerializeObject(task));
        }
Exemple #26
0
        public void CompleteNotifyTask(string projectId)
        {
            var task = TaskWork.Search(e => e.RefID == projectId &&
                                       e.Status == TaskWorkStatus.UnFinish &&
                                       (e.TypeCode == WorkflowCode) && e.ActivityName == "Notify").FirstOrDefault();

            if (task != null)
            {
                task.Status = TaskWorkStatus.Finished;
                //string strTypeCode = task.TypeCode.Split('_')[1];
                //task.Url = string.Format("/{0}/Main#/{1}/Process/View?projectId={2}", task.TypeCode.Split('_')[0], strTypeCode, projectId);
                TaskWork.Update(task);
            }
        }
Exemple #27
0
        public IHttpActionResult QueryCheckPoints(string projectId, string flowCode)
        {
            var list    = nodeInfo.QueryCheckPoints(projectId, flowCode);
            var project = ProjectInfo.Get(projectId, flowCode.Split('_')[0]);

            return(Ok(new
            {
                Nodes = list,
                Info = project,
                Progress = ProjectProgress.GetProgress(projectId),
                Operators = TaskWork.GetOperators(flowCode, projectId),
                IsFinished = ProjectInfo.IsFlowFinished(projectId, flowCode)
            }));
        }
Exemple #28
0
        public List <TaskWork> ChangeWorkflowApprovers(string projectId, ApproveUsers approver)
        {
            var workflowTasks = TaskWork.Search(e => e.RefID == projectId &&
                                                e.Status == TaskWorkStatus.UnFinish &&
                                                e.K2SN != null).ToList();
            var approveDiallogUsers = ApproveDialogUser.Search(e => e.ProjectId == projectId).ToList();

            ChangeWorkflowApprovers(workflowTasks, approveDiallogUsers, approver);

            ApproveDialogUser.Update(approveDiallogUsers.ToArray());
            TaskWork.Update(workflowTasks.ToArray());

            return(workflowTasks);
        }
Exemple #29
0
        private void btnDeleteEvent_Click(object sender, EventArgs e)
        {
            //int index = this.listTasks.FindIndex(x => x.ID == int.Parse(this.lstEvent.SelectedItems[0].SubItems[0].Text));
            //this.listTasks.RemoveAt(index);
            //this.lstEvent.SelectedItems[0].Remove();
            List <TaskWork> taskWorks = TaskController.GetAllTasks();
            TaskWork        task      = taskWorks.Where(x => x.ID == int.Parse(this.lstEvent.SelectedItems[0].SubItems[0].Text)).Single();

            if (TaskController.DeleteTask(task) is false)
            {
                MessageBox.Show("Can not delete this event!", "Error");
            }
            DisplayTask();
        }
Exemple #30
0
        public IHttpActionResult Get(string projectId, Guid?Id = null)
        {
            var project     = ProjectInfo.Get(projectId, FlowCode.TempClosure_ClosurePackage);
            var tempClosure = TempClosureInfo.FirstOrDefault(tc => tc.ProjectId == projectId);
            var isActor     = ProjectUsers.IsRole(projectId, ClientCookie.UserCode, ProjectUserRoleCode.AssetActor);
            TempClosurePackage entity;

            if (Id != null)
            {
                entity = TempClosurePackage.Get(Id.Value);
            }
            else
            {
                entity = TempClosurePackage.Get(projectId);
            }
            if (entity != null)
            {
                entity.IsProjectFreezed = entity.CheckIfFreezeProject(projectId);
                var SavedComment = ProjectComment.GetSavedComment(entity.Id, "TempClosurePackage", ClientCookie.UserCode);
                var hasValidTask = TaskWork.Any(t => t.RefID == projectId && t.Status == TaskWorkStatus.UnFinish && t.ReceiverAccount != ClientCookie.UserCode);
                return(Ok(new
                {
                    Info = tempClosure,
                    ClosurePackage = entity,
                    Approver = ApproveDialogUser.GetApproveDialogUser(projectId, FlowCode.TempClosure_ClosurePackage),
                    ProjectComment = SavedComment != null ? SavedComment.Content : "",
                    Editable = ProjectInfo.IsFlowEditable(projectId, FlowCode.TempClosure_ClosurePackage),
                    Recallable = ProjectInfo.IsFlowRecallable(projectId, FlowCode.TempClosure_ClosurePackage),
                    Rejectable = ApproveDialogUser.Any(u => u.ProjectId == projectId && u.FlowCode == FlowCode.TempClosure_ClosurePackage && u.VPGMCode == ClientCookie.UserCode),
                    Savable = ProjectInfo.IsFlowSavable(projectId, FlowCode.TempClosure_ClosurePackage)
                }));
            }
            else
            {
                entity = TempClosurePackage.Create(projectId);
                return(Ok(new
                {
                    Info = tempClosure,
                    ClosurePackage = entity,
                    Approver = ApproveDialogUser.GetApproveDialogUser(projectId, FlowCode.TempClosure_ClosurePackage),
                    ProjectComment = "",
                    Editable = (project.Status == ProjectStatus.Finished || project.Status == ProjectStatus.Rejected) && isActor && !entity.IsHistory,
                    Recallable = project.Status == ProjectStatus.UnFinish && isActor && project.NodeCode != NodeCode.Start,
                    Rejectable = ApproveDialogUser.Any(u => u.ProjectId == projectId && u.FlowCode == FlowCode.TempClosure_ClosurePackage && u.VPGMCode == ClientCookie.UserCode),
                    Savable = ProjectInfo.IsFlowSavable(projectId, FlowCode.TempClosure_ClosurePackage)
                }));
            }
        }