示例#1
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)
                }));
            }
        }