public void UpdatePsDm_Tables() { PsDmDict _PsDmDict = new PsDmDict(); Dictionary <string, List <int> > row_ids = new Dictionary <string, List <int> >();//key: ps EbSid this.GetPsQueryAndParams(_PsDmDict, row_ids); _PsDmDict.ExecuteQuery(this.ebForm); _PsDmDict.AttachPsDmTable(this.ebForm, this._FormData, this.drPsList, row_ids); }
private void GetPsQueryAndParams(PsDmDict _PsDmDict, Dictionary <string, List <int> > row_ids) { string psqry; int p_i = 0; EbDataReader dataReader; if (this.ebForm.EbConnectionFactory == null) { throw new FormException("Something went wrong", (int)HttpStatusCode.InternalServerError, "ConnectionFactory is null", "PsDmHelper -> GetPsQueryAndParams"); } foreach (EbControl psCtrl in this.drPsList) { row_ids.Add(psCtrl.EbSid, new List <int>()); List <Param> ParamsList = (psCtrl as IEbDataReaderControl).ParamsList; IEbPowerSelect ipsCtrl = psCtrl as IEbPowerSelect; if (ParamsList == null) { Console.WriteLine($"ParamsList in PowerSelect {psCtrl.Name} is null. Trying to UpdateParamsMeta..."); ipsCtrl.UpdateParamsMeta(service, service.Redis); ParamsList = (psCtrl as IEbDataReaderControl).ParamsList; if (ParamsList == null) { throw new FormException($"Invalid ParamsList in '{psCtrl.Label ?? psCtrl.Name}'. Contact Admin", (int)HttpStatusCode.InternalServerError, "Save object in dev side", "EbWebForm"); } } TableSchema _pstable = this.ebForm.FormSchema.Tables.Find(e => e.TableName == ipsCtrl.TableName); if (_pstable == null) { throw new FormException("Something went wrong", (int)HttpStatusCode.InternalServerError, "_pstable is null", "EbWebForm"); } SingleTable psTable = this._FormData.MultipleTables.ContainsKey(_pstable.TableName) ? this._FormData.MultipleTables[_pstable.TableName] : null; if (psTable == null) { Console.WriteLine("[INFO] PS_Table is null."); } string vm_vals = string.Empty; (psqry, dataReader) = ipsCtrl.GetSqlAndDr(this.service); IDatabase DataDB = dataReader.GetDatastore(this.ebForm.EbConnectionFactory); if (psCtrl is EbDGPowerSelectColumn dgpsCtrl && dgpsCtrl.StrictSelect && psTable?.Count > 0)// separate query { _PsDmDict.TryAdd(DataDB, psCtrl); foreach (SingleRow Row in psTable) { if (Row[psCtrl.Name] != null) { string temp = this.AddPsParams(psCtrl, DataDB, _PsDmDict.GetPList(DataDB), Row, ref p_i, psqry); List <int> nums = Convert.ToString(Row[psCtrl.Name]).Split(",").Select(e => { return(int.TryParse(e, out int ie) ? ie : 0); }).ToList(); _PsDmDict.AppendQuery(DataDB, GetPsDmSelectQuery(temp, ipsCtrl, nums)); p_i++; row_ids[psCtrl.EbSid].Add(Row.RowId); } } }