public DataTable GetTicketTableData(string bankName, DateTime date) { string tableName = $"{bankName} ticket for {date.ToShortDateString()}"; Ticket ticket = _context.Ticket.FirstOrDefault( x => x.BankShortName == bankName && x.Date.Year == date.Year && x.Date.Month == date.Month && x.Date.Day == date.Day ); if (ticket == null) { return(ErrorTable(tableName, "There is no ticket for this date")); } DataTable table = new DataTable(tableName); table.Columns.Add(new DataColumn("Currency", typeof(string))); table.Columns.Add(new DataColumn("Name", typeof(string))); table.Columns.Add(new DataColumn("Country", typeof(string))); table.Columns.Add(new DataColumn("Quantity", typeof(string))); table.Columns.Add(new DataColumn("Buy", typeof(string))); table.Columns.Add(new DataColumn("Sell", typeof(string))); Dictionary <string, CurrencyMetadata> metadata = _context.CurrencyMetadata.ToDictionary(k => k.IsoName, v => v); List <Currency> currencies = _context.Currency.Where(x => x.TicketId == ticket.Id).ToList(); foreach (Currency currency in currencies) { object[] rowData = new object[table.Columns.Count]; CurrencyMetadata meta = metadata[currency.IsoName]; rowData[0] = currency.IsoName; rowData[1] = meta.Name ?? "X"; rowData[2] = meta.Country ?? "X"; rowData[3] = meta.Quantity; rowData[4] = currency.Buy; rowData[5] = currency.Sell.HasValue ? currency.Sell.Value.ToString() : "X"; table.Rows.Add(rowData); } table.AcceptChanges(); return(table); }
private void SaveBankCurrencyMetada(BCCContext context, ICurrencyMetada metaData) { CurrencyMetadata ret = context.CurrencyMetadata.Where(x => x.IsoName == metaData.ISOName).FirstOrDefault(); if (ret == null) { if (string.IsNullOrWhiteSpace(metaData.ISOName)) { return; } if (metaData.Quantity < 1) { return; } ret = new CurrencyMetadata() { IsoName = metaData.ISOName, Name = metaData.Name, Quantity = metaData.Quantity, Country = metaData.Country }; context.CurrencyMetadata.Add(ret); context.SaveChanges(); } else { if (string.IsNullOrWhiteSpace(ret.Name) && !string.IsNullOrWhiteSpace(metaData.Name)) { ret.Name = metaData.Name; } if (string.IsNullOrWhiteSpace(ret.Country) && !string.IsNullOrWhiteSpace(ret.Country)) { ret.Country = metaData.Country; } } }