public async void AutoFill()
        {
            if (dataGrid.FormRenderMode == FormMode.EDIT)
            {
                return;
            }

            if (dataGrid.NetworkType == NetworkMode.Online && !string.IsNullOrEmpty(dataGrid.DataSourceRefId))
            {
                try
                {
                    MobileDataResponse data = await DataService.Instance.GetDataAsync(dataGrid.DataSourceRefId, 0, 0, dataGrid.Context?.ConvertToParams(), null, null, false, true);

                    if (data != null && data.Data != null && data.Data.Tables.HasLength(2))
                    {
                        SetValue(data.Data.Tables[1]);
                    }
                }
                catch (Exception ex)
                {
                    EbLog.Error("DataGrid autofill api error : " + ex.Message);
                }
            }
            else if ((dataGrid.NetworkType == NetworkMode.Offline || dataGrid.NetworkType == NetworkMode.Online) && !string.IsNullOrWhiteSpace(dataGrid.OfflineQuery?.Code))
            {
                try
                {
                    string             sql          = HelperFunctions.B64ToString(dataGrid.OfflineQuery.Code).TrimEnd(CharConstants.SEMICOLON);
                    List <Param>       Param        = dataGrid.Context?.ConvertToParams() ?? new List <Param>();
                    List <DbParameter> dbParameters = new List <DbParameter>();
                    foreach (Param _p in Param)
                    {
                        dbParameters.Add(new DbParameter {
                            ParameterName = _p.Name, Value = _p.Value, DbType = Convert.ToInt32(_p.Type)
                        });
                    }
                    EbDataTable dt = App.DataDB.DoQuery(sql, dbParameters.ToArray());
                    if (dt.Rows.Count > 0)
                    {
                        SetValue(dt);
                    }
                }
                catch (Exception ex)
                {
                    EbLog.Error("DataGrid autofill offline query error : " + ex.Message);
                }
            }
        }
Beispiel #2
0
        public async void GetBindingData()
        {
            try
            {
                MobileDataResponse response = await DataService.Instance.GetDataAsync(this.DataSourceRefId, 0, 0, null, null, null, false);

                if (response.Data != null && response.Data.Tables.HasLength(2))
                {
                    InitView(response.Data.Tables[1]);
                }
            }
            catch (Exception ex)
            {
                EbLog.Error("Error at [AutoFill] : " + ex.Message);
            }
        }
        public override string GetDisplayName4DG(object valueMember)
        {
            if (IsSimpleSelect || valueMember == null)
            {
                return(null);
            }
            string      strValue = valueMember?.ToString();
            EbDataTable dt       = null;

            if (this.NetworkType == NetworkMode.Offline)
            {
                dt = GetDataFromLocal(strValue);
            }
            else if (this.NetworkType == NetworkMode.Online)
            {
                Param param = new Param
                {
                    Name  = this.ValueMember.ColumnName,
                    Type  = ((int)this.ValueMember.Type).ToString(),
                    Value = strValue
                };
                try
                {
                    MobileDataResponse response = DataService.Instance.GetData(this.DataSourceRefId, 1, 0, new List <Param> {
                        param
                    }, null, null, false);

                    if (response.Data != null && response.Data.Tables.HasLength(2))
                    {
                        dt = response.Data.Tables[1];
                    }
                }
                catch (Exception ex)
                {
                    EbLog.Info("power select failed to resolve display member from live");
                    EbLog.Error(ex.Message);
                }
            }

            if (dt != null && dt.Rows.Any())
            {
                return(Convert.ToString(dt.Rows[0][DisplayMember.ColumnName]));
            }
            return(null);
        }
Beispiel #4
0
        public async Task <EbDataSet> GetDataAsync(string refid)
        {
            if (!string.IsNullOrEmpty(refid))
            {
                try
                {
                    MobileDataResponse response = await DataService.Instance.GetDataFlatAsync(refid);

                    return(response?.Data);
                }
                catch (Exception ex)
                {
                    EbLog.Info("failed to fetch [dashboard] data");
                    EbLog.Error(ex.Message);
                }
            }
            return(null);
        }
        private async Task <EbDataTable> GetDataFromCloud(List <Param> parameters)
        {
            try
            {
                MobileDataResponse response = await DataService.Instance.GetDataAsync(this.DataSourceRefId, 1, 0, parameters, null, null, false);

                if (response.Data != null && response.Data.Tables.HasLength(2))
                {
                    return(response.Data.Tables[1]);
                }
            }
            catch (Exception ex)
            {
                EbLog.Info("power select failed to resolve display member from live");
                EbLog.Error(ex.Message);
            }
            return(null);
        }
        public static async Task <string> ValidateFormRendering(EbMobileForm form, Loader loader, EbDataRow context = null)
        {
            string failMsg = null;

            if (!Utils.IsNetworkReady(form.NetworkType))
            {
                failMsg = "Not connected to internet!";
            }
            else if (!string.IsNullOrEmpty(form.RenderValidatorRefId))
            {
                try
                {
                    if (loader != null)
                    {
                        loader.Message = "Validating...";
                    }
                    List <Param> cParams = form.GetRenderValidatorParams(context);

                    cParams.Add(new Param
                    {
                        Name  = "eb_loc_id",
                        Type  = "11",
                        Value = App.Settings.CurrentLocation.LocId.ToString()
                    });

                    MobileDataResponse data = await DataService.Instance.GetDataAsync(form.RenderValidatorRefId, 0, 0, cParams, null, null, false);

                    if (data.HasData() && data.TryGetFirstRow(1, out EbDataRow row))
                    {
                        if (bool.TryParse(row[0]?.ToString(), out bool b) && b)
                        {
                            EbLog.Info("Form render validation return true");
                        }
                        else
                        {
                            failMsg = form.MessageOnFailed;
                            EbLog.Info("Form render validation return false");
                        }
                    }
                    else
                    {
                        failMsg = "Validation api returned empty data";
                        EbLog.Info("before render api returned empty row collection");
                    }
                }
                catch (Exception ex)
                {
                    failMsg = "Exception in validation api: " + ex.Message;
                    EbLog.Error("Error at form render validation api call");
                    EbLog.Info(ex.Message);
                }
            }

            if (failMsg == null && form.AutoSyncOnLoad && !form.RenderAsFilterDialog)
            {
                LocalDBServie service = new LocalDBServie();
                if (!App.Settings.SyncInProgress)
                {
                    App.Settings.SyncInProgress = true;
                    failMsg = await service.PushData(loader);

                    App.Settings.SyncInProgress = false;
                }
                else
                {
                    failMsg = "Internal error. (SyncInProgress is true)";
                    EbLog.Info("ValidateFormRendering -> SyncInProgress is true");
                }
            }

            return(failMsg);
        }