Example #1
0
        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);
        }
Example #2
0
        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);
        }