private async void LoadLookups() { this.UseWaitCursor = true; var supplier = _context.Supplier.SingleOrDefault(s => s.EnumValue == (int)FlexInterfaces.Enumerations.FlexExternalSuppliers.FareHarbor); if (supplier == null) { this.DisplayError("The supplier was not found."); } else { var guid = supplier.GUID; _supplierConnection = _context.SupplierConnection.FirstOrDefault(s => s.Supplier_GUID == guid); var rq = new CommonRQ(); var companies = await GetDataFromAPI <Company>(typeof(CompaniesRS), _supplierConnection, "companies/", rq); imageComboBoxEditCompanies.Properties.Items.Add(new ImageComboBoxItem()); imageComboBoxEditCompanies.Properties.Items.AddRange( companies.Select(c => new ImageComboBoxItem() { Description = c.Name, Value = c.Shortname }).ToArray()); } var lookup = new List <CodeName> { new CodeName(null) }; lookup.AddRange(_context.CITYCOD .OrderBy(o => o.CODE) .Select(s => new CodeName() { Code = s.CODE, Name = s.NAME })); searchLookUpEditCity.Properties.DataSource = lookup; lookup = new List <CodeName> { new CodeName(null) }; lookup.AddRange(_context.SERVTYPE .OrderBy(o => o.TYPE) .Select(s => new CodeName() { Code = s.TYPE, Name = s.DESCRIP })); searchLookUpEditServiceType.Properties.DataSource = lookup; this.UseWaitCursor = false; }
private async Task <List <T> > GetDataFromAPI <T>(Type type, SupplierConnection connection, string url, CommonRQ request) { Dictionary <string, string> headers = new Dictionary <string, string> { { "X-FareHarbor-API-App", connection.Login }, { "X-FareHarbor-API-User", connection.Secret }, }; List <T> list = new List <T>(); //convert strongly typed class to dictionary of request parameters Dictionary <string, string> parameters = request.AsDictionary(); string result = await ApiInvoker.SendRequestGet(connection.URL + url, parameters, headers); var rs = JsonConvert.DeserializeObject(result, type); //Deserialize the data as the provided type CommonRS common = (CommonRS)rs; //We know all returned data can be cast to this basic type var data = common.GetData <T>(); //Get the actual list of results as generic type list.AddRange(data); return(list); }