Пример #1
0
        private static void ProcessUserDefineEntityColumn(PdmGridClrDto aPdmGridEntity, DataTable toReturnDcuTable, List <SimpleUserDefineEntityRow> listRow, int masterColumnId)
        {
            Dictionary <int, SimpleUserDefineEntityRow> dictRow = listRow.ToDictionary(o => o.RowId, o => o);

            foreach (DataRow dataRow in toReturnDcuTable.Rows)
            {
                string valueId = dataRow[masterColumnId.ToString()] as string;

                CLROutput.OutputDebug("masterColumnId value" + valueId);
                if (!string.IsNullOrEmpty(valueId))
                {
                    // int.Parse (
                    int intValueId = int.Parse(valueId);
                    if (dictRow.ContainsKey(intValueId))
                    {
                        var dtRow = dictRow[intValueId];
                        foreach (var dependentEntityColumn in aPdmGridEntity.MasterEntityDepdentColumn[masterColumnId])
                        {
                            int userDefineColumnId = int.Parse(dependentEntityColumn.InternalCode);

                            //  CLROutput.Output("userDefineColumnId" + userDefineColumnId);

                            object value = ControlTypeValueConverter.ConvertValueToObject(dtRow[userDefineColumnId], dependentEntityColumn.ColumnTypeId);
                            if (value != null)
                            {
                                dataRow[dependentEntityColumn.GridColumnId.ToString()] = value;
                            }
                        }
                    }
                }
            }
        }
Пример #2
0
        public static DataTable ConvertSimpleGridProductRowToDataTable(IEnumerable <SimpleGridProductRow> rowList, List <int> columnIds, DataTable table)
        {
            //



            Dictionary <int, int> dictGridColumnIdAndType = PdmCacheManager.GetMutiplePdmGridMetaColumnEntityFromCache(columnIds).ToDictionary(o => o.GridColumnId, o => o.ColumnTypeId);

            foreach (var gridRow in rowList)
            {
                DataRow dataRow = table.NewRow();

                dataRow[GridColumnConstantName.ProductReferenceID] = gridRow.ProductReferenceId;
                dataRow[GridColumnConstantName.RowValueGUID]       = gridRow.RowValueGuId;
                dataRow[GridColumnConstantName.Sort] = gridRow.Sort;

                foreach (int columnId in columnIds)
                {
                    object value = ControlTypeValueConverter.ConvertValueToObject(gridRow[columnId], dictGridColumnIdAndType[columnId]);


                    if (value == null)
                    {
                        dataRow[columnId.ToString()] = DBNull.Value;
                    }
                    else
                    {
                        //  CLROutput.Output("convervalue=" + value);
                        dataRow[columnId.ToString()] = value;

                        //  CLROutput.Output("dataRow[subitem.id.ToString()]" + dataRow[subitem.id.ToString()]);
                    }

                    // need to remove !!!! !
                    // dataRow[columnId.ToString()] = value;
                }

                table.Rows.Add(dataRow);
            }

            return(table);
        }
Пример #3
0
        private static void ProcessSystemDefineEntityColumn(PdmGridClrDto aPdmGridEntity, DataTable toReturnDcuTable, DataTable aDtResult, int gridColumnId)
        {
            var dictRowId = aDtResult.AsDataRowEnumerable().ToDictionary(dtRow => (int)dtRow["Id"], dtRow => dtRow);

            foreach (DataRow dataRow in toReturnDcuTable.Rows)
            {
                string valueId = dataRow[gridColumnId.ToString()] as string;
                if (!string.IsNullOrEmpty(valueId))
                {
                    // int.Parse (
                    int intValueId = int.Parse(valueId);
                    if (dictRowId.ContainsKey(intValueId))
                    {
                        var dtRow = dictRowId[intValueId];
                        foreach (var dependentEntityColumn in aPdmGridEntity.MasterEntityDepdentColumn[gridColumnId])
                        {
                            foreach (DataColumn aDtcolumn in aDtResult.Columns)
                            {
                                if (aDtcolumn.ColumnName == dependentEntityColumn.InternalCode)
                                {
                                    // cannot pass DataTable column DataType to the silverlight, SL doesn't support Sql.client type data

                                    object value = ControlTypeValueConverter.ConvertValueToObject(dtRow[aDtcolumn], dependentEntityColumn.ColumnTypeId);
                                    if (value != null)
                                    {
                                        dataRow[dependentEntityColumn.GridColumnId.ToString()] = value;
                                    }

                                    //else
                                    //{}
                                }
                            }
                        }
                    }
                }
            }
        }
        }        // key1: blockId, key2:referecne, value

        public static Dictionary <int, Dictionary <int, object> > RetrieveReferenceSimpleDcutValue(IEnumerable <int> referenceIds, List <PdmBlockSubItemClrDto> subItemList)
        {
            // subitemIds = subitemIds.Distinct().ToArray ();

            if (referenceIds.Count() == 0 || subItemList.Count == 0)
            {
                return(new Dictionary <int, Dictionary <int, object> >());
            }

            Dictionary <int, int> dictSuibtemIdControType = new Dictionary <int, int>();

            foreach (var blockSubitem in subItemList)
            {
                dictSuibtemIdControType.Add(blockSubitem.SubItemId, blockSubitem.ControlType);
            }

            Dictionary <int, Dictionary <int, object> > toReturn = new Dictionary <int, Dictionary <int, object> >();

            if (referenceIds == null || referenceIds.Count() == 0)
            {
                return(toReturn);
            }

            var subitemIds        = subItemList.Select(o => o.SubItemId).ToList();
            var referenceInClause = DataAcessHelper.GenerateColumnInClauseWithAndCondition(referenceIds, GridColumnConstantName.ProductReferenceID, false);
            var subitemIdInclause = DataAcessHelper.GenerateColumnInClauseWithAndCondition(subitemIds, GridColumnConstantName.SubItemID, true);

            StringBuilder aQuery = new StringBuilder();

            //   aQuery.Append( string" SELECT ProductReferenceID,BlockID, GridID,  RowID,  RowValueGUID ,Sort,");

            aQuery.Append(" SELECT " +
                          GridColumnConstantName.ProductReferenceID + ", " +
                          GridColumnConstantName.SubItemID + ", " +
                          GridColumnConstantName.ValueText
                          );

            string queryString = aQuery.ToString() + " from pdmSearchSimpleDcuValue where " + referenceInClause + subitemIdInclause;

            CLROutput.OutputDebug("from pdmSearchSimpleDcuValu" + queryString);

            DataTable dtSimpleValue;

            using (SqlConnection conn = new SqlConnection(PLMConstantString.PLM_APP_ConnectionString))
            {
                conn.Open();
                DataAcessHelper.ExecuteReadUnCommmited(conn);

                dtSimpleValue = DataAcessHelper.GetDataTableQueryResult(conn, queryString);

                DataAcessHelper.ExecuteReadCommmited(conn);
            }

            var subItemQuery = from row in dtSimpleValue.AsDataRowEnumerable()
                               group row by new
            {
                ProductReferenceID = (int)row[GridColumnConstantName.ProductReferenceID]
            } into grp
            orderby grp.Key.ProductReferenceID
                select new
            {
                Key = grp.Key.ProductReferenceID,

                SubitemIDAndValueList = grp.Select(r => new { id = (int)r[GridColumnConstantName.SubItemID], value = r[GridColumnConstantName.ValueText] }),
            };

            foreach (var o in subItemQuery)
            {
                Dictionary <int, object> dictSubitemValue = new Dictionary <int, object>();

                foreach (var subitem in o.SubitemIDAndValueList)
                {
                    var value = ControlTypeValueConverter.ConvertValueToObject(subitem.value, dictSuibtemIdControType[subitem.id]);
                    dictSubitemValue.Add(subitem.id, value);
                }

                var notInDict = subitemIds.Except(dictSubitemValue.Keys);
                foreach (var subitId in notInDict)
                {
                    dictSubitemValue.Add(subitId, null);
                }

                toReturn.Add(o.Key, dictSubitemValue);
            }

            return(toReturn);
        }        // key1: blockId, key2:referecne, value
        public static DataTable RetrieveDataTableReferenceSimpleDcutValue(IEnumerable <string> referenceIds, List <PdmBlockSubItemClrDto> subItemList, bool isShowLookUpItem = true)
        {
            Dictionary <int, int> dictSuibtemIdControType = new Dictionary <int, int>();

            foreach (var blockSubitem in subItemList)
            {
                dictSuibtemIdControType.Add(blockSubitem.SubItemId, blockSubitem.ControlType);
            }

            Dictionary <int, Dictionary <int, object> > toReturn = new Dictionary <int, Dictionary <int, object> >();

            //if (referenceIds == null || referenceIds.Count() == 0)
            //    return simpleDcuTable;

            var subitemIds = subItemList.Select(o => o.SubItemId).ToList();

            if (subitemIds.Count == 0)
            {
                return(new DataTable());
            }

            string referenceInClause = DataAcessHelper.GenerateColumnInClauseWithAndCondition(referenceIds, GridColumnConstantName.ProductReferenceID, true);

            if (referenceIds.Count() == 1 && referenceIds.ElementAt(0) == "-2")
            {
                referenceInClause = string.Empty;
            }


            string subitemIdInclause = DataAcessHelper.GenerateColumnInClauseWithAndCondition(subitemIds, GridColumnConstantName.SubItemID, false);

            StringBuilder aQuery = new StringBuilder();

            //   aQuery.Append( string" SELECT ProductReferenceID,BlockID, GridID,  RowID,  RowValueGUID ,Sort,");

            aQuery.Append(" SELECT " +
                          GridColumnConstantName.ProductReferenceID + ", " +
                          GridColumnConstantName.SubItemID + ", " +
                          GridColumnConstantName.ValueText
                          );

            string queryString = aQuery.ToString() + " from pdmSearchSimpleDcuValue where " + subitemIdInclause + referenceInClause;



            DataTable dtSimpleValue;

            var allSubitemeEntityIds = subItemList.Where(o => o.EntityId.HasValue).Select(o => o.EntityId.Value).ToList();
            Dictionary <int, Dictionary <object, string> > dictKeyEntityDictKeyIdDisplayString = PLMSEntityClrBL.GetDictEntityDictDisplayString(allSubitemeEntityIds);



            using (SqlConnection conn = new SqlConnection(PLMConstantString.PLM_APP_ConnectionString))
            {
                conn.Open();
                DataAcessHelper.ExecuteReadUnCommmited(conn);

                dtSimpleValue = DataAcessHelper.GetDataTableQueryResult(conn, queryString);
                // dictKeyEntityDictKeyIdDisplayString = PLMSEntityClrBL.GetDictEntityDictDisplayString(allSubitemeEntityIds, conn);

                DataAcessHelper.ExecuteReadCommmited(conn);
            }

            var subItemQuery = from row in dtSimpleValue.AsDataRowEnumerable()
                               group row by new
            {
                ProductReferenceID = (int)row[GridColumnConstantName.ProductReferenceID]
            } into grp
            orderby grp.Key.ProductReferenceID
                select new
            {
                Key = grp.Key.ProductReferenceID,

                SubitemIDAndValueList = grp.Select(r => new { id = (int)r[GridColumnConstantName.SubItemID], value = r[GridColumnConstantName.ValueText] }),
            };

            DataTable roReturnDcuTable = CreateDataTableStrcutureFromBlockSubitem(subItemList);

            foreach (var o in subItemQuery)
            {
                //Dictionary<int, object> dictSubitemValue = new Dictionary<int, object>();

                DataRow dataRow = roReturnDcuTable.NewRow();
                dataRow[GridColumnConstantName.ProductReferenceID] = o.Key;
                foreach (var subitem in o.SubitemIDAndValueList)
                {
                    object value = ControlTypeValueConverter.ConvertValueToObject(subitem.value, dictSuibtemIdControType[subitem.id]);


                    if (value == null)
                    {
                        dataRow[subitem.id.ToString()] = DBNull.Value;
                    }
                    else
                    {
                        //  CLROutput.Output("convervalue=" + value);
                        dataRow[subitem.id.ToString()] = value;

                        //  CLROutput.Output("dataRow[subitem.id.ToString()]" + dataRow[subitem.id.ToString()]);
                    }
                }

                roReturnDcuTable.Rows.Add(dataRow);
            }

            if (isShowLookUpItem)
            {
                List <PdmBlockSubItemClrDto> dDLSubitemDtoList = subItemList.Where(o => o.ControlType == (int)EmControlType.DDL && o.EntityId.HasValue).ToList();

                foreach (var dictDDLSubitemDto in dDLSubitemDtoList)
                {
                    int    entityId        = dictDDLSubitemDto.EntityId.Value;
                    string stringSubItemId = dictDDLSubitemDto.SubItemId.ToString();
                    if (dictKeyEntityDictKeyIdDisplayString.ContainsKey(entityId))
                    {
                        Dictionary <object, string> lookUpItem = dictKeyEntityDictKeyIdDisplayString[entityId];
                        foreach (DataRow row in roReturnDcuTable.Rows)
                        {
                            int?lookupid = ControlTypeValueConverter.ConvertValueToInt(row[stringSubItemId]);
                            if (lookupid.HasValue)
                            {
                                int idvalue = lookupid.Value;
                                if (lookUpItem.ContainsKey(idvalue))
                                {
                                    row[stringSubItemId] = lookUpItem[idvalue];;

                                    CLROutput.OutputDebug("entityID_idvalue+dislayvalue=" + entityId.ToString() + "_" + idvalue.ToString() + "_" + "_" + lookUpItem[idvalue]);
                                }
                            }
                        }
                    }
                }
            }


            return(roReturnDcuTable);
        }        // key1: blockId, key2:referecne, value