public ActionResult GetModelProfessionState(int modelVersionId, int professionId) { var modelVersion = new FileVersionService().Get(e => e.Id == modelVersionId); if (modelVersion == null) { throw new ArgumentNullException(nameof(modelVersion)); } if (!new PermissionService().CanUserVisitProject(CurrentCustomer, modelVersion.EngineeringFile.Engineering.ProjectId)) { return(NoAuthorityJson()); } var modelProfession = new ModelProfessionService().Get(e => e.ModelVersionId == modelVersionId && e.ProfessionId == professionId); var customerRoles = CurrentCustomer.CustomerRoles.Where(e => e.ProjectId == modelVersion.EngineeringFile.Engineering.ProjectId && e.FinishTime == null); string roleDes = CurrentCustomer.GetCurrentRoleDes(professionId, modelVersion.EngineeringFile.Engineering); ModelProfessionOperateModel operateModel = null; if (professionId != 0 && modelProfession != null) { var roles = CurrentCustomer.GetCurrentRoles(professionId, modelProfession.EngineerFile.Engineering); operateModel = PrepareOperateModel(modelProfession, roles); } return(Json(new { result = true, roleDes = roleDes, htmlStr = base.RenderPartialViewToString("_ModelProfessionOperate", operateModel) }, JsonRequestBehavior.AllowGet)); }
protected ModelProfessionOperateModel PrepareOperateModel(ModelProfession modelProfession, List <Role> roles) { if (!roles.Contains(Role.Checker) && !roles.Contains(Role.Reviewer)) { return(null); } if (modelProfession.EngineerFile.Engineering.Project.FileTime.HasValue) { return(null); } ModelProfessionOperateModel model = new ModelProfessionOperateModel(); model.ModelProfessionId = modelProfession.Id; model.Status = modelProfession.Status; model.Roles = roles; if (roles.Contains(Role.Checker) && (modelProfession.Status == FlowCode.Pre_AuditCompany_ProjectManager_ConformComplate || modelProfession.Status == FlowCode.AuditCompany_ProfessionReaudit_Reject_ProfessionAudit || modelProfession.Status == FlowCode.AuditCompany_ProjectManager_Sign_BuildCompany)) { model.CanCheckerSubmit = !new CommentService().HasAuditorNoAuditComment(modelProfession.ProfessionId, modelProfession.EngineeringFileId); } if (roles.Contains(Role.Reviewer) && modelProfession.Status == FlowCode.AuditCompany_ProfessionAudit_Submit) { model.CanReviewerSubmit = new CommentService().HasReaudorCanSubmitToProjectManagerComment(modelProfession.ProfessionId, modelProfession.EngineeringFileId); model.CanReviewerReturn = !new CommentService().ReaudorHasNoOperationToProfessionAudit(modelProfession.ProfessionId, modelProfession.EngineeringFileId); } if (roles.Contains(Role.Reviewer) && modelProfession.Status == FlowCode.DesignCompany_Submit_AuditCompany_ProfessionReaudit) { model.CanReviewerSubmit = new CommentService().HasReaudorCanSubmitToProjectManagerComment(modelProfession.ProfessionId, modelProfession.EngineeringFileId); } return(model); }