Guid IEntityResourceManager.SaveResult(Guid tenantId, Guid userId, string entityName, JObject resource, string subType) { IOperationFlowEngine operationEngine = new OperationFlowEngine(); var subTypeCode = _iMetadataManager.GetSubTypeId(entityName, subType); var mainObj = resource.Children().FirstOrDefault(t => t.Path.ToLower().Equals(entityName.ToLower())); var targetObj = mainObj.First().ToObject <JObject> (); var properties = new WorkFlowProcessProperties { EntityName = entityName, SubTypeCode = subTypeCode, UserId = userId, IsSuperAdmin = false }; operationEngine.PreProcess(tenantId, new OperationWapper { OperationType = WorkFlowOperationType.Create, Data = targetObj }, properties); properties.resultId = _queryManager.SaveResult(tenantId, entityName, resource, subTypeCode, userId); operationEngine.Process(tenantId, new OperationWapper { OperationType = WorkFlowOperationType.Create, Data = targetObj }, properties); operationEngine.FirstOperation(tenantId, properties); operationEngine.PostProcess(tenantId, new OperationWapper { OperationType = WorkFlowOperationType.Create, Data = targetObj }, properties); return(properties.resultId); // return _queryManager.SaveResult (tenantId, entityName, resource, subTypeCode, userId); }
LayoutModel GetDefaultLayoutForEntity(Guid tenantId, string entityName, int layoutType, string subType, int context) { var entityContext = _iMetadataManager.GetEntityContextByEntityName(entityName, false); if (string.IsNullOrEmpty(entityContext)) { return(null); } //return _review.GetLayoutsDetail(tenantId, entityContext, layoutType, _iMetadataManager.GetSubTypeId(subType), context); var layout = _review.GetLayoutsDetail(tenantId, entityContext, layoutType, _iMetadataManager.GetSubTypeId(entityName, subType), context); if (layout != null) { MapLayoutDetails(tenantId, layout); if (layoutType.Equals((int)LayoutType.List) && layout.ListLayoutDetails != null && layout.ListLayoutDetails.Fields != null && layout.ListLayoutDetails.Fields.Any()) { foreach (var field in layout.ListLayoutDetails.Fields) { if (field.DataType.ToLower().Equals("picklist") && !string.IsNullOrEmpty(field.DefaultView)) { var splitPicklist = field.Name.Split('.'); var picklistName = splitPicklist[splitPicklist.Count() - 1]; var view = GetDefaultPicklistLayout(tenantId, picklistName, LayoutType.View, 0); //it should be view layout... if (view != null && view.ViewLayoutDetails != null && view.ViewLayoutDetails.Fields != null && view.ViewLayoutDetails.Fields.Any()) { foreach (var item in view.ViewLayoutDetails.Fields) { layout.ListLayoutDetails.Fields.Add(item); } } } } } //append plural name var result = _iMetadataManager.GetEntitityByName(entityName); if (result != null && result.PluralName != null) { layout.PluralName = result.PluralName; } //append singular name if (result != null && result.DisplayName != null) { layout.SingularName = result.DisplayName; } //append version name if (result != null && result.VersionControl != null && !string.IsNullOrEmpty(result.VersionControl.Name)) { layout.VersionName = Char.ToLowerInvariant(result.VersionControl.Name[0]) + result.VersionControl.Name.Substring(1);; } } return(layout); }
private List <WorkFlowProcessInfo> WorkFlowCommon(Guid tenantId, string entityName, string subTypeName, Guid innerStepId) { var entityId = iMetadataManager.GetEntityContextByEntityName(entityName); var subTypeCode = iMetadataManager.GetSubTypeId(entityName, subTypeName); var workFlow = _managerWorkFlow.GetWorkFlow(tenantId, entityId, subTypeCode); if (workFlow == null) { return(new List <WorkFlowProcessInfo>()); } //get its all pre/post/process var allProcess = _managerWorkFlowProcess.GetWorkFlowProcess(tenantId, workFlow.WorkFlowId); var itsOperationProcess = (from workFlowPro in allProcess where workFlowPro.OperationOrTransactionId == innerStepId select workFlowPro).ToList(); return(itsOperationProcess); }
WorkFlowInfo IManagerWorkFlow.GetWorkFlowDetail(Guid tenantId, string entityname, string subTypeName) { var entityId = iMetadataManager.GetEntityContextByEntityName(entityname); var subTypeCode = iMetadataManager.GetSubTypeId(entityname, subTypeName); var workFlow = _reviewWorkFlow.GetWorkFlow(tenantId, entityId, subTypeCode); if (workFlow != null) { var workflowOperations = _managerWorkFlowOperation.GetWorkFlowOperations(tenantId, workFlow.WorkFlowId); workFlow.Operations = workflowOperations; //Get all steps from statci class var allSteps = WorkFlowHelper.GetAllSteps(entityId); var workFlowSteps = _managerWorkFlowStep.GetWorkFlowSteps(tenantId, workFlow.WorkFlowId); var workFlowInnerSteps = _managerWorkFlowInnerStep.GetWorkFlowInnerStep(tenantId, workFlow.WorkFlowId); var workFlowProcess = _managerWorkFlowProcess.GetWorkFlowProcess(tenantId, workFlow.WorkFlowId); // var workFlowProcessTasks=_managerWorkFlowProcessTask.GetWorkFlowProcessTask(tenantId,workFlow.WorkFlowId); var allWorkFlowSteps = new List <WorkFlowStepInfo>(); var allStepSavedCount = (from workFlowStep in workFlowSteps orderby workFlowStep.SequenceNumber descending select workFlowStep.SequenceNumber).FirstOrDefault(); foreach (var step in allSteps) { //return saved step var checkStepsSaved = (from workFlowStep in workFlowSteps where workFlowStep.TransitionType.Id == step.Id select workFlowStep).FirstOrDefault(); if (checkStepsSaved != null) { checkStepsSaved.TransitionType.Name = step.Key; checkStepsSaved.WorkFlowId = workFlow.WorkFlowId; allWorkFlowSteps.Add(checkStepsSaved); } else { //return not saved step allWorkFlowSteps.Add(new WorkFlowStepInfo { WorkFlowStepId = Guid.Empty, WorkFlowId = workFlow.WorkFlowId, SequenceNumber = ++allStepSavedCount, TransitionType = new ItemName { Id = step.Id, Name = step.Key } }); } } foreach (var workFlowStep in allWorkFlowSteps) { var itsInnerSteps = (from workFlowInnerStep in workFlowInnerSteps where workFlowInnerStep.WorkFlowStepId == workFlowStep.WorkFlowStepId select workFlowInnerStep).ToList(); foreach (var workFlowInnerStep in itsInnerSteps) { workFlowInnerStep.TransitionType.Name = (from allStep in allSteps where allStep.Id == workFlowInnerStep.TransitionType.Id select allStep.Key).FirstOrDefault(); workFlowInnerStep.WorkFlowProcess = (from workFlowPro in workFlowProcess where workFlowPro.OperationOrTransactionId == workFlowInnerStep.InnerStepId select workFlowPro).ToList(); } workFlowStep.InnerSteps = itsInnerSteps.OrderBy(p => p.SequenceNumber).ToList(); } workFlow.Steps = allWorkFlowSteps.OrderBy(p => p.SequenceNumber).ToList(); //Chnage sab typesId To name workFlow.SubTypeCode = subTypeName; workFlow.EntityId = entityname; } return(workFlow); }
bool IManagerWorkFlowSecurity.InitializeRootTenantWorkFlow(Guid tenantId) { var allEntities = iMetadataManager.GetEntities(false); // Filtwer all Workflow supported entity var workFlowEntities = (from allEntity in allEntities where allEntity.SupportWorkflow select allEntity).ToList(); foreach (var workFlowEntity in workFlowEntities) { var entityContextAll = iMetadataManager.GetEntitityByName(workFlowEntity.Name); var entityContext = iMetadataManager.GetEntityContextByEntityName(workFlowEntity.Name); foreach (var subtype in workFlowEntity.Subtypes) { var workflowInfo = new WorkFlowInfo { WorkFlowId = Guid.NewGuid(), EntityId = entityContext, Status = true, SubTypeCode = iMetadataManager.GetSubTypeId(workFlowEntity.Name, subtype) }; _managerWorkFlow.CreateWorkFlow(tenantId, workflowInfo); //all steps from static classes (Transition) List <WorkFlowResource> allSteps = WorkFlowHelper.GetAllSteps(entityContext); var count = 0; foreach (var allStep in allSteps) { var workFlowStep = new WorkFlowStepInfo { WorkFlowId = workflowInfo.WorkFlowId, TransitionType = new ItemName { Id = allStep.Id }, SequenceNumber = count++ }; workFlowStep.WorkFlowStepId = _managerWorkFlowStep.CreateWorkFlowStep(tenantId, workFlowStep); } // (Operations) List <WorkFlowOperationInfo> workFlowOperations = new List <WorkFlowOperationInfo>(); foreach (var entityCon in entityContextAll.Operations) { if (entityCon.Name == "Create") { workFlowOperations.Add(new WorkFlowOperationInfo { WorkFlowOperationId = Guid.NewGuid(), OperationType = WorkFlowOperationType.Create, WorkFlowId = workflowInfo.WorkFlowId }); } else if (entityCon.Name == "Update") { workFlowOperations.Add(new WorkFlowOperationInfo { WorkFlowOperationId = Guid.NewGuid(), OperationType = WorkFlowOperationType.Update, WorkFlowId = workflowInfo.WorkFlowId }); } else if (entityCon.Name == "Delete") { workFlowOperations.Add(new WorkFlowOperationInfo { WorkFlowOperationId = Guid.NewGuid(), OperationType = WorkFlowOperationType.Delete, WorkFlowId = workflowInfo.WorkFlowId }); } else if (entityCon.Name == "UpdateStatus") { workFlowOperations.Add(new WorkFlowOperationInfo { WorkFlowOperationId = Guid.NewGuid(), OperationType = WorkFlowOperationType.UpdateStatus, WorkFlowId = workflowInfo.WorkFlowId }); } } _managerOperation.CreateWorkFlowOperations(tenantId, workFlowOperations); count = 0; List <WorkFlowProcessInfo> workFlowProcesses = new List <WorkFlowProcessInfo>(); foreach (var workFlowOperation in workFlowOperations) { workFlowProcesses.Add(new WorkFlowProcessInfo { WorkFlowProcessId = Guid.NewGuid(), WorkFlowId = workflowInfo.WorkFlowId, OperationOrTransactionId = workFlowOperation.WorkFlowOperationId, OperationOrTransactionType = (int)OperationOrTransactionType.Operation, ProcessType = (int)WorkFlowProcessType.PreProcess }); workFlowProcesses.Add(new WorkFlowProcessInfo { WorkFlowProcessId = Guid.NewGuid(), WorkFlowId = workflowInfo.WorkFlowId, OperationOrTransactionId = workFlowOperation.WorkFlowOperationId, OperationOrTransactionType = (int)OperationOrTransactionType.Operation, ProcessType = (int)WorkFlowProcessType.Process }); workFlowProcesses.Add(new WorkFlowProcessInfo { WorkFlowProcessId = Guid.NewGuid(), WorkFlowId = workflowInfo.WorkFlowId, OperationOrTransactionId = workFlowOperation.WorkFlowOperationId, OperationOrTransactionType = (int)OperationOrTransactionType.Operation, ProcessType = (int)WorkFlowProcessType.PostProcess }); } _managerWorkFlowProcess.CreateWorkFlowProcess(tenantId, workFlowProcesses); } } return(true); }