Beispiel #1
0
        private static RuleInfo ReadRule(SqlDataReader reader)
        {
            try
            {
                IMetadataManager  iMetadataManager = new MetadataManager.Contracts.MetadataManager();
                List <SourceInfo> lstSource        = reader.IsDBNull(4) ? null : Newtonsoft.Json.JsonConvert.DeserializeObject <List <SourceInfo> >(reader.GetString(4));
                List <TargetInfo> lstTarget        = reader.IsDBNull(5) ? null : Newtonsoft.Json.JsonConvert.DeserializeObject <List <TargetInfo> >(reader.GetString(5));
                RuleTypeEnum      ruleType         = reader.IsDBNull(3) ? RuleTypeEnum.Visibility : (RuleTypeEnum)reader.GetInt32(3);
                string            strRuleTypeName  = ruleType.ToString();
                string            entityId         = reader.IsDBNull(8) ? string.Empty : reader.GetString(8);
                string            entityName       = (entityId == null) ? string.Empty : iMetadataManager.GetEntityNameByEntityContext(entityId);

                var rule = new RuleInfo
                {
                    TenantId     = reader.IsDBNull(0) ? Guid.Empty : reader.GetGuid(0),
                    Id           = reader.IsDBNull(1) ? Guid.Empty : reader.GetGuid(1),
                    RuleName     = reader.IsDBNull(2) ? string.Empty : reader.GetString(2),
                    RuleType     = reader.IsDBNull(3) ? RuleTypeEnum.Visibility : (RuleTypeEnum)reader.GetInt32(3),
                    Source       = reader.IsDBNull(4) ? string.Empty : reader.GetString(4),
                    Target       = reader.IsDBNull(5) ? string.Empty : reader.GetString(5),
                    SourceList   = lstSource,
                    TargetList   = lstTarget,
                    UpdatedBy    = reader.IsDBNull(7) ? Guid.Empty : reader.GetGuid(7),
                    RuleTypeName = strRuleTypeName,
                    EntityId     = entityId,
                    EntityName   = entityName
                };
                return(rule);
            }
            catch (System.Exception ex)
            {
                throw ex.InnerException;
            }
        }
        internal static void MapQueryFilter(Guid tenantId, string entityName, QueryContext queryModel)
        {
            IMetadataManager entityManager = new MetadataManager.Contracts.MetadataManager();
            var allColumns = entityManager.GetColumnNameByEntityName(entityName, null);

            if (queryModel.FreeTextSearch != null && queryModel.FreeTextSearch.Any())
            {
                MapData(queryModel.FreeTextSearch, allColumns);
            }
            if (queryModel.Filters != null && queryModel.Filters.Any())
            {
                MapData(queryModel.FreeTextSearch, allColumns);
            }
            var orderByArr = queryModel.OrderBy.Split(',');

            if (orderByArr.Count() > 1)
            {
                // Sorting orderEnum = Sorting.Ascending;
                // switch (orderByArr[1].Trim ().ToUpper ()) {
                //     case "ASC":
                //         orderEnum = Sorting.Ascending;
                //         break;
                //     case "DESC":
                //         orderEnum = Sorting.Descending;
                //         break;
                // }
                // var orderByColumnData = allColumns.FirstOrDefault (t => t.FieldName.ToLower ().Equals (orderByArr[0].ToLower ()));
                // if (orderByColumnData != null) {
                //     queryModel.OrderBy = orderByColumnData.EntityPrefix + "." + orderByColumnData.ColumnName;
                //     //queryBuilder.AddOrderBy (orderByColumnData.EntityPrefix + "." + orderByColumnData.ColumnName, orderEnum);
                // }
            }
        }
Beispiel #3
0
        WorkFlowProcessMessage IOperation.Execute(dynamic obj)
        {
            IMetadataManager    iMetadataManager = new MetadataManager.Contracts.MetadataManager();
            IEntityQueryManager _queryManager    = new EntityQueryManager();
            // IEntityResourceManager _iEntityResourceManager = new VPC.Framework.Business.EntityResourceManager.Contracts.EntityResourceManager();
            var objWorkFlowProcessMessage = new WorkFlowProcessMessage();

            try
            {
                objWorkFlowProcessMessage = new WorkFlowProcessMessage {
                    Success = true
                };
                var workFlowProcessProperties = (WorkFlowProcessProperties)obj[0];
                var jObject  = (JObject)obj[1];
                var tenantId = (Guid)obj[2];

                var queryFilter1 = new List <QueryFilter> ();
                queryFilter1.Add(new QueryFilter {
                    FieldName = "TenantId", Operator = "Equal", Value = tenantId.ToString()
                });
                queryFilter1.Add(new QueryFilter {
                    FieldName = "ProductId", Operator = "Equal", Value = workFlowProcessProperties.resultId.ToString()
                });
                var queryContext1 = new QueryContext {
                    Fields = "VersionNo", Filters = queryFilter1, PageSize = 100, PageIndex = 1
                };
                DataTable productVersionDataTable = _queryManager.GetResult(tenantId, "productversion", queryContext1);



                var productVersionInfo = EntityMapper <ProductVersion> .Mapper(productVersionDataTable);

                var updateStatus = _queryManager.UpdateSpecificField(tenantId, "Product", workFlowProcessProperties.resultId, "ActiveVersion", productVersionInfo.InternalId.Value.ToString());

                //Update WorkFlowFirst step
                IOperationFlowEngine operationEngine = new OperationFlowEngine();
                var subTypeCode = iMetadataManager.GetSubTypeId("productversion", "standard");
                var properties  = new WorkFlowProcessProperties {
                    resultId = Guid.Parse(productVersionInfo.InternalId.Value), EntityName = "productversion", SubTypeCode = subTypeCode, UserId = workFlowProcessProperties.UserId, IsSuperAdmin = false
                };
                operationEngine.FirstOperation(tenantId, properties);
                return(objWorkFlowProcessMessage);
            }
            catch (System.Exception ex)
            {
                _log.Error("TenantEmailPostProcess  having exception message" + ex.Message);

                objWorkFlowProcessMessage.Success      = false;
                objWorkFlowProcessMessage.ErrorMessage = new ErrorMessage
                {
                    Code        = WorkFlowMessage.ApplicationError,
                    Description = ex.Message
                };
                return(objWorkFlowProcessMessage);
            }
        }
Beispiel #4
0
        public List <ColumnAndField> InsertIntersectEntity(Guid tenantId, Guid userId, string entityName, JObject resource, List <ColumnAndField> entityColumns, Guid relatedId)
        {
            IMetadataManager iMetadataManager = new MetadataManager.Contracts.MetadataManager();
            var matchingColumns = new List <ColumnAndField> ();

            foreach (var col in entityColumns)
            {
                // var columnName = (!string.IsNullOrEmpty (col.ClientName)) ? col.ClientName + "." + col.FieldName : col.FieldName;
                var matching = resource[col.EntityFullName];
                if (matching != null)
                {
                    if (col.ColumnName.Equals(col.PrimaryKey))
                    {
                        col.Value = Guid.NewGuid();
                    }
                    else if (col.ColumnName.Equals(_tenantId))
                    {
                        col.Value = tenantId;
                    }
                    else
                    {
                        var valueStr = matching.ToObject <string> ();
                        if (!string.IsNullOrEmpty(valueStr))
                        {
                            string[] relationList = valueStr.Split('|');
                            if (relationList.Any() && relationList.Count() > 1)
                            {
                                var relationClassName = relationList[0];
                                if (col.ReferenceTableName != null && col.ReferenceTableName.ToLower().Contains(relationClassName.ToLower()))
                                {
                                    string[] values = relationList[1].Split(',');
                                    if (values.Any())
                                    {
                                        col.Value = values[0];
                                    }
                                }
                                else if (col.ReferenceTableName != null && col.ReferenceTableName.ToLower().Contains(entityName.ToLower()))
                                {
                                    col.Value = relatedId;
                                }
                            }
                            else
                            {
                                if (col.ReferenceTableName != null && col.ReferenceTableName.ToLower().Contains(entityName.ToLower()))
                                {
                                    col.Value = relatedId;
                                }
                            }
                        }
                    }
                    matchingColumns.Add(col);
                }
            }
            return(matchingColumns);
        }
Beispiel #5
0
        public List <ColumnAndField> GetBasicColumnOfPickListOrLookup(Guid tenantId, List <ColumnAndField> pickListOrLookupWhichFoundInQuery)
        {
            List <ColumnAndField> matchingColumns = new List <ColumnAndField> ();
            IMetadataManager      entityManager   = new MetadataManager.Contracts.MetadataManager();

            foreach (var item in pickListOrLookupWhichFoundInQuery)
            {
                var virtualName = !string.IsNullOrEmpty(item.ClientName) ? item.ClientName + "." + item.FieldName : item.FieldName;
                if (item.DataType.Equals(VPC.Metadata.Business.DataAnnotations.DataType.Lookup))
                {
                    //newly added condition need to fix this portion
                    //reason product :: product version workflow..

                    if (
                        !string.IsNullOrEmpty(item.ReferenceColumnName)
                        )
                    {
                        continue;
                    }

                    var isItem = entityManager.EntityIsAnItem(item.TypeOf, false);
                    if (isItem)
                    {
                        var context          = entityManager.GetEntityContextByEntityName(item.TypeOf, false);
                        var itemTableColumns = ItemHelper.GetItemSelectDetails(tenantId, context, 0);
                        List <ColumnAndField> basicColumn = new List <ColumnAndField> ();
                        var itemId   = itemTableColumns.FirstOrDefault(t => t.ColumnName.Equals(ItemHelper.ItemTablePrimarykey));
                        var itemText = itemTableColumns.FirstOrDefault(t => t.ColumnName.Equals(ItemHelper.ItemTableItemNameField));
                        basicColumn.Add(itemId);
                        basicColumn.Add(itemText);
                        MapBasicFields(matchingColumns, entityManager, item, virtualName, basicColumn);
                    }
                }
                else
                {
                    var basicColumn = entityManager.GetBasicColumnNameByEntityName(item.TypeOf, null);
                    if (basicColumn.Any())
                    {
                        MapBasicFields(matchingColumns, entityManager, item, virtualName, basicColumn);
                    }
                }
            }
            return(matchingColumns);
        }
        WorkFlowProcessMessage IOperation.Execute(dynamic obj)
        {
            IEntityQueryManager _queryManager    = new EntityQueryManager();
            IMetadataManager    iMetadataManager = new MetadataManager.Contracts.MetadataManager();
            var objWorkFlowProcessMessage        = new WorkFlowProcessMessage();

            try
            {
                objWorkFlowProcessMessage = new WorkFlowProcessMessage {
                    Success = true
                };
                var workFlowProcessProperties = (WorkFlowProcessProperties)obj[0];
                var jObject  = (JObject)obj[1];
                var tenantId = (Guid)obj[2];



                var userObj = jObject.Children().FirstOrDefault(t => t.Path.ToLower().Equals("user"));
                var details = userObj.First().ToObject <JObject> ();


                var userEntity = EntityMapper <VPC.Entities.EntityCore.Metadata.User> .MapperJObject(details);

                var tenantCode = _queryManager.GetSpecificIdByQuery(tenantId, "Tenant", tenantId, "Code");

                details.Add(new JProperty("TenantCode", tenantCode));
                var template  = _iEntityResourceManager.GetWellKnownTemplate(tenantId, "Emailtemplate", "User", (int)ContextTypeEnum.Welcome, details);
                var returnVal = DataUtility.SaveEmail(tenantId, workFlowProcessProperties.UserId, template, userEntity.UserCredential.Username.Value, "NewUserCredential", InfoType.User);
                return(objWorkFlowProcessMessage);
            }
            catch (System.Exception ex)
            {
                _log.Error("User_Email_Create_Post  having exception message" + ex.Message);

                objWorkFlowProcessMessage.Success      = false;
                objWorkFlowProcessMessage.ErrorMessage = new ErrorMessage
                {
                    Code        = WorkFlowMessage.ApplicationError,
                    Description = ex.Message
                };
                return(objWorkFlowProcessMessage);
            }
        }
Beispiel #7
0
        // List<GroupedColumns> IEntityQueryManagerV1.MatchTest (Guid tenantId, string entityName, JObject payload, string subtype, Guid userId)
        // {
        //     return GetMatchingColumns(tenantId, entityName, payload, subtype, userId);
        // }

        private List <GroupedColumns> GetMatchingColumns(Guid primaryId, Guid tenantId, string entityName, JObject payload, string subtype, Guid userId)
        {
            IMetadataManager iMetadataManager = new MetadataManager.Contracts.MetadataManager();
            var entityColumns = iMetadataManager.GetColumnNameByEntityName(entityName, null);
            var context       = iMetadataManager.GetEntityContextByEntityName(entityName);

            if (entityColumns == null)
            {
                throw new FieldAccessException("Column not found.");
            }
            var matchingOptions = new MatchingOptions
            {
                PrimaryId           = primaryId,
                TenantId            = tenantId,
                AddValueFromPayload = true,
                Context             = context,
                UserId        = userId,
                EntitySubType = subtype,
            };
            IMatcher iMatcher = new Matcher();

            return(iMatcher.GetMatchingColumnsForInsertQuery(entityName, entityColumns, payload, matchingOptions));
        }
        public DataTable MapResult(Guid tenantId, string entityName, DataTable source, QueryContext queryModel)
        {
            if (source == null || source.Rows.Count == 0)
            {
                return(source);
            }

            IMetadataManager iMetadataManager = new MetadataManager.Contracts.MetadataManager();
            var subTypes = iMetadataManager.GetSubTypesDetails(entityName);
            IPicklistManager iPicklistManager = new PicklistManager();
            var picklists             = iPicklistManager.GetAllPicklists(tenantId);
            var simpleNonCustomizable = picklists.Where(t => !t.CustomizeValue).ToList();

            if (!simpleNonCustomizable.Any())
            {
                return(source);
            }
            var entity            = iMetadataManager.GetEntitityByName(entityName);
            List <MappedItem> val = new List <MappedItem>();

            if (entity.Fields != null && entity.Fields.Any())
            {
                GetUsedPicklistInEntity(tenantId, simpleNonCustomizable, entity.Fields, val);
            }
            if (entity.VersionControl != null && entity.VersionControl.Fields != null && entity.VersionControl.Fields.Any())
            {
                GetUsedPicklistInEntity(tenantId, simpleNonCustomizable, entity.VersionControl.Fields, val);
            }

            DataTable dtClone = source.Clone(); //just copy structure, no data

            for (int i = 0; i < dtClone.Columns.Count; i++)
            {
                if (dtClone.Columns[i].DataType != typeof(string))
                {
                    dtClone.Columns[i].DataType = typeof(string);
                }
            }

            foreach (DataRow dr in source.Rows)
            {
                dtClone.ImportRow(dr);
            }

            var customFields = new List <FieldModel>();

            // string[] userQuery = null;
            if (queryModel.Fields != null && queryModel.Fields.Any())
            {
                var entityDetails = iMetadataManager.GetEntitityByName(entityName);

                if (entityDetails?.Fields != null && entityDetails.Fields.Any())
                {
                    var userQuery = queryModel?.Fields?.Split(',');
                    foreach (var clientField in userQuery)
                    {
                        var match = entityDetails.Fields.FirstOrDefault(t =>
                                                                        t.Name.ToLower().Equals(clientField.ToString().ToLower()) && !string.IsNullOrEmpty(t.Context) && !string.IsNullOrEmpty(t.ContextType));
                        if (match != null)
                        {
                            if (match.ContextType.Equals("CustomServerFieldBase"))
                            {
                                dtClone.Columns.Add(match.Name, typeof(string));
                                customFields.Add(match);
                            }
                            else if (match.ContextType.Equals("CustomClientFieldBase"))
                            {
                                DataColumn client = new DataColumn(match.Name, typeof(string));
                                //  client.DefaultValue = match.Context;
                                dtClone.Columns.Add(client);
                            }
                        }
                    }
                }
            }

            foreach (DataRow item in dtClone.Rows)
            {
                try
                {
                    var subType = item["SubType"];
                    var mapped  = subTypes.FirstOrDefault(t => t.Key.Equals(subType));
                    if (mapped.Key != null)
                    {
                        item["SubType"] = mapped.Value.ToString();
                    }

                    foreach (var data in val)
                    {
                        if (item.Table.Columns.Contains(data.Name.ToLower()))
                        {
                            if (data.Result != null && data.Result.Rows.Count > 0)
                            {
                                var       actualValue = item[data.Name].ToString();
                                DataRow[] rowsData    = data.Result.Select();
                                for (int i = 0; i < rowsData.Length; i++)
                                {
                                    var existenceValue = rowsData[i]["InternalId"];
                                    if (actualValue.ToString().ToLower().Equals(existenceValue.ToString().ToLower()))
                                    {
                                        var text = rowsData[i]["Text"].ToString();
                                        item[data.Name] = text.ToString();
                                    }
                                }
                            }
                        }
                    }
                    //------------------------- custom client field
                    if (customFields.Any())
                    {
                        foreach (var cf in customFields)
                        {
                            if (item.Table.Columns.Contains(cf.Name))
                            {
                                var conditions = new Dictionary <string, string>();
                                //conditions.Add ("InternalId", item["InternalId"].ToString ());
                                var id = Guid.Parse(item["InternalId"].ToString());
                                item[cf.Name] = GetCustomFieldValue(id, cf.Context, conditions);
                            }
                        }
                    }
                }
                catch
                { //digest exceptions }
                }
            }
            return(dtClone);
        }
        public DataTable GetCustomField(Guid tenantId, string entityName, DataTable source, QueryContext queryModel)
        {
            if (source == null || source.Rows.Count == 0)
            {
                return(source);
            }
            IMetadataManager iMetadataManager = new MetadataManager.Contracts.MetadataManager();
            var subTypes = iMetadataManager.GetSubTypesDetails(entityName);
            IPicklistManager iPicklistManager = new PicklistManager();
            var entity            = iMetadataManager.GetEntitityByName(entityName);
            List <MappedItem> val = new List <MappedItem> ();
            var customFields      = new List <FieldModel> ();

            // string[] userQuery = null;
            if (queryModel.Fields != null && queryModel.Fields.Any())
            {
                var entityDetails = iMetadataManager.GetEntitityByName(entityName);
                if (entityDetails?.Fields != null && entityDetails.Fields.Any())
                {
                    var userQuery = queryModel?.Fields?.Split(',');
                    foreach (var clientField in userQuery)
                    {
                        var match = entityDetails.Fields.FirstOrDefault(t =>
                                                                        t.Name.ToLower().Equals(clientField.ToString().ToLower()) && !string.IsNullOrEmpty(t.Context) && !string.IsNullOrEmpty(t.ContextType));
                        if (match != null)
                        {
                            if (match.ContextType.Equals("CustomServerFieldBase"))
                            {
                                source.Columns.Add(match.Name, typeof(string));
                                customFields.Add(match);
                            }
                            else if (match.ContextType.Equals("CustomClientFieldBase"))
                            {
                                DataColumn client = new DataColumn(match.Name, typeof(string));
                                // client.DefaultValue = match.Context;
                                source.Columns.Add(client);
                            }
                        }
                    }
                }
            }

            foreach (DataRow item in source.Rows)
            {
                try {
                    if (customFields.Any())
                    {
                        foreach (var cf in customFields)
                        {
                            if (item.Table.Columns.Contains(cf.Name))
                            {
                                var conditions = new Dictionary <string, string> ();
                                var id         = Guid.Parse(item["InternalId"].ToString());
                                item[cf.Name] = GetCustomFieldValue(id, cf.Context, conditions);
                            }
                        }
                    }
                } catch { //digest exceptions }
                }
            }
            return(source);
        }
Beispiel #10
0
        private string BuildInsertQueryV1(Guid itemId, string entityName, List <GroupedColumns> matchingColumns)
        {
            //create lower tables...
            Dictionary <string, string> executedTables = new Dictionary <string, string>();
            var query = "";
            var tablesWhoHasForeignKeyReference = matchingColumns.Where(t => t.NeedToUpdateColumn != null).ToList();

            if (tablesWhoHasForeignKeyReference.Any())
            {
                foreach (var table in tablesWhoHasForeignKeyReference)
                {
                    query += GetQueryStr(table);
                    StoreExecutedTables(executedTables, table);
                }
            }

            //create item table..
            var itemTable = matchingColumns.FirstOrDefault(t => t.EntityFullName.ToLower().Equals(ItemHelper.ItemClassName.ToLower()));

            if (itemTable != null)
            {
                query += GetQueryStr(itemTable);
                StoreExecutedTables(executedTables, itemTable);
            }

            //create other tables..
            foreach (var item in matchingColumns)
            {
                var clientName = (string.IsNullOrEmpty(item.ClientName)) ? item.EntityFullName : item.ClientName;
                var isExecuted = executedTables.Where(t => t.Key.Equals(clientName)).ToList();
                if (isExecuted.Any())
                {
                    continue;
                }
                query += GetQueryStr(item);
            }

            // add relateions
            foreach (var table in tablesWhoHasForeignKeyReference)
            {
                if (table.NeedToUpdateColumn == null)
                {
                    continue;
                }
                var columnWithValue            = new Dictionary <string, string>();
                UpdateQueryBuilder updateQuery = new UpdateQueryBuilder();
                columnWithValue.Add(table.NeedToUpdateColumn.ColumnName, table.Id.ToString());
                updateQuery.AddTable(table.NeedToUpdateColumn.TableName, columnWithValue);
                var targetRow = matchingColumns.FirstOrDefault(t => t.EntityFullName.ToLower().Equals(table.NeedToUpdateColumn.EntityFullName.ToLower()));
                if (targetRow == null)
                {
                    continue;
                }
                updateQuery.AddWhere(table.NeedToUpdateColumn.PrimaryKey, Comparison.Equals, targetRow.Id.ToString(), 1);
                query += updateQuery.BuildQuery();
            }

            IMetadataManager iMetadataManager = new MetadataManager.Contracts.MetadataManager();
            var triggers = iMetadataManager.GetTriggerProperties(entityName);

            if (triggers.Any())
            {
                var singletonTrigger = triggers[0];
                var bodyProp         = singletonTrigger.GetBody();
                var search           = matchingColumns.FirstOrDefault(t => t.EntityFullName.ToLower().Equals(entityName.ToLower()));
                if (search == null)
                {
                    return(TransactionHelper.BuildQuery(query));
                }
                {
                    var payload = bodyProp.Select(item => search.Columns.FirstOrDefault(t => t.FieldName.ToLower().Equals(item.ToLower()))).Where(matching => matching != null).ToDictionary <ColumnAndField, string, string>(matching => matching.ColumnName, matching => matching.Value);
                    if (!payload.Any())
                    {
                        return(TransactionHelper.BuildQuery(query));
                    }
                    var triggerEngine           = new TriggerEngine();
                    var triggerExecutionPayload = new TriggerExecutionPayload
                    {
                        PayloadObj       = payload,
                        ConditionalValue = itemId.ToString()
                    };
                    var triggerQuery = triggerEngine.GetQuery(triggers, triggerExecutionPayload);
                    if (!string.IsNullOrEmpty(triggerQuery))
                    {
                        query += triggerQuery;
                    }
                }
            }
            //------------
            return(TransactionHelper.BuildQuery(query));
        }
Beispiel #11
0
        internal List <ColumnAndField> AddDataToColumns(Guid tenantId, Guid resourceId, string entityName, string tableName, string primaryKey, Dictionary <string, string> payload, List <ColumnAndField> necessaryColumns)
        {
            IMetadataManager entityManager = new MetadataManager.Contracts.MetadataManager();
            //added primary key....
            var matchingColumns         = new List <ColumnAndField> ();
            var entityPrimaryKeyColumns = necessaryColumns.FirstOrDefault(t => t.ColumnName.Equals(primaryKey) && t.TableName.Equals(tableName));

            if (entityPrimaryKeyColumns != null)
            {
                entityPrimaryKeyColumns.Value = resourceId;
                matchingColumns.Add(entityPrimaryKeyColumns);
            }

            //added query matching..
            foreach (var col in necessaryColumns)
            {
                var colname  = !string.IsNullOrEmpty(col.ClientName) ? col.ClientName + "." + col.FieldName : col.FieldName;
                var matching = payload.FirstOrDefault(t => t.Key.ToLower().Equals(colname.ToLower()));
                if (matching.Key == null)
                {
                    continue;
                }

                if (col.Value == "#ENTCAST") //this is for context to get Entitycontext Id by defaultvalueattributes
                {
                    col.Value = entityManager.GetEntityContextByEntityName(matching.Value);
                }
                else
                {
                    col.Value = matching.Value;
                }

                matchingColumns.Add(col);
            }

            //inverser key matching....
            IMetadataManager iMetadataManager = new MetadataManager.Contracts.MetadataManager();
            var columns    = iMetadataManager.GetColumnNameByEntityName(entityName, null);
            var inverseKey = columns.Where(t => !string.IsNullOrEmpty(t.InverseTableName) && !string.IsNullOrEmpty(t.InverseColumnName)).ToList();

            if (inverseKey != null)
            {
                foreach (var item in inverseKey)
                {
                    var isAddedInMatching = matchingColumns.FirstOrDefault(t => t.TableName.Equals(item.InverseTableName) && t.EntityPrefix.Equals(item.InversePrefixName));
                    if (isAddedInMatching != null && !string.IsNullOrEmpty(isAddedInMatching.Value))
                    {
                        var targetColumn = item.ColumnName.TrimStart('[').TrimEnd(']');
                        var resultValue  = GetValueFromInverseColumns(tenantId, item.TableName, item.EntityPrefix, primaryKey, targetColumn, resourceId.ToString());

                        if (!string.IsNullOrEmpty(resultValue))
                        {
                            item.Value = resultValue.ToString();
                            var updateResult = UpdateValueInInverseTable(tenantId, item.InverseTableName, item.InversePrefixName, item.PrimaryKey, necessaryColumns, resultValue.ToString());
                        }
                        else
                        {
                            var addedResult = AddValueFromInverseColumns(tenantId, item.InverseTableName, item.InversePrefixName, item.PrimaryKey, necessaryColumns, columns);
                            item.Value = addedResult.ToString();
                        }
                        matchingColumns.Add(item);
                    }
                }
            }
            List <Entity> intersects = null;
            var           entity     = iMetadataManager.GetEntitityByName(entityName);

            if (entity != null && entity.DetailEntities != null && entity.DetailEntities.Any())
            {
                intersects = entity.DetailEntities.Where(t => t.Type.ToLower().Equals("intersectentity")).ToList();
                if (intersects != null && intersects.Any())
                {
                    foreach (var item in intersects)
                    {
                        var match = payload.FirstOrDefault(t => t.Key.ToLower().Equals(item.Name.ToLower()));
                        if (match.Key != null)
                        {
                            var value = match.Value;
                            if (!string.IsNullOrEmpty(value))
                            {
                                break;
                            }
                        }
                    }
                    // if (isRequiredToAddIntersect) {
                    //     // var intersectColumns = InsertIntersectEntity (tenantId, userId, entityName, resource, entityColumns, itemId);
                    //     // var intersectQuery = BuildInsertQuery (intersectColumns);
                    //     // admin.SaveResult (tenantId, intersectColumns[0].TableName, intersectQuery);
                    // }
                }
            }

            var forenkeysInColumn          = columns.Where(t => !string.IsNullOrEmpty(t.ReferenceTableName) && !string.IsNullOrEmpty(t.ReferenceColumnName)).ToList();
            List <ColumnAndField> forenkey = new List <ColumnAndField> ();

            if (intersects != null && intersects.Any())
            {
                foreach (var fore in forenkeysInColumn)
                {
                    var matchingWithForeignKey = intersects.FirstOrDefault(t => t.Name.Equals(fore.EntityFullName));
                    if (matchingWithForeignKey == null)
                    {
                        forenkey.Add(fore);
                    }
                }
            }

            if (forenkey != null)
            {
                foreach (var item in forenkey)
                {
                    var isAddedInMatching = matchingColumns.FirstOrDefault(t => t.TableName.Equals(item.ReferenceTableName) && t.ColumnName.Equals(item.ReferenceColumnName));
                    if (isAddedInMatching != null && !string.IsNullOrEmpty(isAddedInMatching.Value.ToString()))
                    {
                        var targetColumn = item.ColumnName.TrimStart('[').TrimEnd(']');
                        var resultValue  = GetValueFromForeignKeyColumns(tenantId, item.TableName, item.EntityPrefix, primaryKey, targetColumn, resourceId.ToString());
                        if (!string.IsNullOrEmpty(resultValue))
                        {
                            item.Value = resultValue.ToString();
                            var updateResult = UpdateValueInForeignTable(tenantId, item.TableName, item.EntityPrefix, item.PrimaryKey, necessaryColumns, resultValue.ToString());
                        }
                        else
                        {
                            var addedResult = AddValueFromForeignKeyColumns(tenantId, item.TableName, item.EntityPrefix, item.ColumnName, resourceId, necessaryColumns, columns);
                            item.Value = addedResult.ToString();
                        }
                        // matchingColumns.Add (item);
                    }
                }
            }

            return(matchingColumns);
        }
Beispiel #12
0
        private List <ColumnAndField> GetMatchingFields(string className, List <ColumnAndField> columns, JObject clientPayload, MatchingOptions options)
        {
            IMetadataManager iMetadataManager = new MetadataManager.Contracts.MetadataManager();
            var tableName    = iMetadataManager.GetTableNameByEntityname(className);
            var primaryKey   = iMetadataManager.GetPrimaryKeyByEntityname(className);
            var classColumns = MatchingColumnsFromUserQuery(className, columns, clientPayload, options, tableName, primaryKey);

            //add internalid and tenant id from rest table

            var consolidatedChildren =
                from c in classColumns
                group c by new {
                c.EntityFullName,
                c.ClientName
            }
            into gcs
                select new GroupedColumns()
            {
                EntityFullName = gcs.Key.EntityFullName,
                ClientName     = gcs.Key.ClientName,
                Columns        = gcs.ToList(),
            };

            //add primary column and tenant columns
            foreach (var item in consolidatedChildren)
            {
                var tableName1  = item.Columns[0].TableName;
                var primaryKey1 = item.Columns[0].PrimaryKey;
                var tablePrefix = item.Columns[0].EntityPrefix;
                var itemId      = (item.EntityFullName.ToLower().Equals(className.ToLower()))?options.PrimaryId:Guid.NewGuid();
                AddBusinessColumn(columns, classColumns, primaryKey1, tableName1, tablePrefix, itemId);
                AddBusinessColumn(columns, classColumns, BusinessConstant.TenantId, tableName1, tablePrefix, options.TenantId);

                //------------------- new logic for product
                var exceptionalColumns = columns.Where(t => t.ReferenceColumnName.ToLower().Equals(primaryKey1.ToLower()) && t.ReferenceTableName.ToLower().Equals(tableName1.ToLower())).ToList();
                if (exceptionalColumns.Any())
                {
                    foreach (var col in exceptionalColumns)
                    {
                        col.Value = itemId;
                        classColumns.Add(col);
                    }
                }
                //-------------------
            }
            //
            var entityIsAnItem = iMetadataManager.EntityIsAnItem(className, false);

            if (!entityIsAnItem)
            {
                return(classColumns);
            }

            var itemFields         = ItemHelper.GetItemSelectDetails(Guid.Empty, "not-required", 0);
            var itemMatchingFields = MatchingColumnsFromUserQuery(itemFields[0].EntityFullName, itemFields, clientPayload, options, ItemHelper.ItemTableName, ItemHelper.ItemTablePrimarykey);

            var mergeColumns = classColumns.Concat(itemMatchingFields).ToList();

            //add rest item if table is item
            AddRestItemColumns(itemFields, mergeColumns, options, clientPayload);
            return(mergeColumns);
        }
Beispiel #13
0
        public bool ForgetPasswordUpdateCredential(LoginInfo login, PasswordPolicy passwordpolicy)
        {
            IManagerCredential crd           = new ManagerCredential();
            ILayoutManager     layoutManager = new LayoutManager();
            IManagerRole       roleManager   = new ManagerRole();

            if (string.IsNullOrEmpty(login.TenantCode) || string.IsNullOrEmpty(login.UserName))
            {
                return(false);
            }
            //Get tenant id with code
            Guid tenantId = layoutManager.GetTenantId(InfoType.Tenant, login.TenantCode);

            if (tenantId == Guid.Empty)
            {
                return(false);
            }
            //Validate UserName
            var userId = crd.GetUserName(tenantId, login.UserName);

            if (userId == Guid.Empty)
            {
                return(false);
            }
            byte[] passwordHash, passwordSalt;
            Random random = new Random();
            int    pass   = random.Next(1000000);

            //pass = 111;
            CreatePasswordHash(pass.ToString(), out passwordHash, out passwordSalt);
            var userDetails = roleManager.GetUserDetails(tenantId, userId);

            if (userDetails.Id == Guid.Empty)
            {
                return(false);
            }
            var credentialData = crd.GetCredential(tenantId, userDetails.Id);


            IMetadataManager iMetadataManager = new MetadataManager.Contracts.MetadataManager();
            var queryFilter = new List <QueryFilter>();

            queryFilter.Add(new QueryFilter {
                FieldName = "TenantId", Operator = "Equal", Value = tenantId.ToString()
            });
            queryFilter.Add(new QueryFilter {
                FieldName = "InternalId", Operator = "Equal", Value = userDetails.Id.ToString()
            });
            var queryContext = new QueryContext {
                Fields = "FirstName,LastName,MiddleName,ContactInformation.WorkEmail1", Filters = queryFilter, PageSize = 100, PageIndex = 1
            };
            //  var queryContext = new QueryContext { Fields = "FirstName,LastName", Filters = queryFilter, PageSize = 100, PageIndex = 1 };
            IEntityResourceManager _iEntityResourceManager = new VPC.Framework.Business.EntityResourceManager.Contracts.EntityResourceManager();
            var dataTableUser = _iEntityResourceManager.GetResultById(tenantId, "user", userDetails.Id, queryContext);
            var userEntity    = EntityMapper <VPC.Entities.EntityCore.Metadata.User> .Mapper(dataTableUser);

            var            jObject            = DataUtility.ConvertToJObjectList(dataTableUser);
            CredentialInfo usercredentialinfo = UserCredentailInfo(login);

            jObject[0].Add(new JProperty("UserCredential.Username", usercredentialinfo.UserName.ToString()));
            jObject[0].Add(new JProperty("UserCredential.Password", pass.ToString()));
            jObject[0].Add(new JProperty("TenantCode", login.TenantCode.ToString()));

            var emailTemplate = _iEntityResourceManager.GetWellKnownTemplate(tenantId, "emailtemplate", "user", (int)ContextTypeEnum.Forgotpassword, jObject[0]);

            if (emailTemplate != null && emailTemplate.Body != null)
            {
                var isnew = false;
                if (passwordpolicy != null)
                {
                    isnew = passwordpolicy.ResetOnFirstLogin.Value;
                }

                crd.Update(tenantId, new CredentialInfo
                {
                    CredentialId = credentialData.CredentialId,
                    ParentId     = userDetails.Id,
                    PasswordHash = Convert.ToBase64String(passwordHash),
                    PasswordSalt = Convert.ToBase64String(passwordSalt),
                    IsNew        = isnew
                });
                var returnVal = DataUtility.SaveEmail(tenantId, userDetails.Id, emailTemplate, usercredentialinfo.UserName.ToString(), "ForgetPassword", InfoType.User);
                // SendMail(pass.ToString(),emailTemplate,jdata[0],tenantId,userDetails.Id);
            }
            else
            {
                return(false);
            }

            return(true);
        }
        //tested on
        //batchtype (26th July 2019),

        public dynamic BuildDeleteQuery(Guid tenantId, Guid userId, Guid itemId, string entityName)
        {
            IMetadataManager entityManager = new MetadataManager.Contracts.MetadataManager();
            var columns = entityManager.GetColumnNameByEntityName(entityName, null);

            //@todo need to add options based column methods.
            if (!columns.Any())
            {
                return(string.Empty);
            }

            var query              = "";
            var tableName          = entityManager.GetTableNameByEntityname(entityName);
            var primaryKey         = entityManager.GetPrimaryKeyByEntityname(entityName);
            var selectQueryBuilder = new SelectQueryBuilder();

            selectQueryBuilder.SelectFromTable(tableName, string.Empty);
            selectQueryBuilder.AddWhere(primaryKey, Comparison.Equals, itemId.ToString(), 1);
            var          selectQuery  = selectQueryBuilder.BuildQuery();
            IQueryReview review       = new QueryReview();
            var          targetResult = review.GetResult(tenantId, entityName, selectQuery);

            if (targetResult == null || targetResult.Rows.Count == 0)
            {
                return("");
            }


            //delete entity
            query += GetDeleteQuery(tableName, primaryKey, itemId.ToString());

            //delete item
            //@todo need to change business constat isPicklist..
            var isItem = entityManager.EntityIsAnItem(entityName, BusinessConstant.IsPickList);

            if (isItem)
            {
                query += GetDeleteQuery(ItemHelper.ItemTableName, ItemHelper.ItemTablePrimarykey, itemId.ToString());
            }

            foreach (var col in columns)
            {
                if (col.DataType.ToString().ToLower().Equals("picklist") || col.DataType.ToString().ToLower().Equals("lookup"))
                {
                    continue;
                }

                if (!col.EntityFullName.ToLower().Equals(entityName.ToLower()))
                {
                    continue;
                }
                var targetColum = col.ColumnName.TrimStart('[').TrimEnd(']');
                var targetValue = targetResult.Rows[0][targetColum].ToString();

                //inverse matching column
                if (!string.IsNullOrEmpty(col.InverseColumnName) && !string.IsNullOrEmpty(col.InverseTableName))
                {
                    query += GetDeleteQuery(col.InverseTableName, col.InverseColumnName, targetValue);
                }

                //foreign key matching column
                if (!string.IsNullOrEmpty(col.ReferenceColumnName) && !string.IsNullOrEmpty(col.ReferenceTableName))
                {
                    query += GetDeleteQuery(col.InverseTableName, col.InverseColumnName, targetValue);
                }
            }


            return(TransactionHelper.BuildQuery(query));
        }