private async void DisplayListOfAdministrators() { var admins = await AdministratorRepository.SingleInstance.FetchAdministratorsAsync(); List <SalesIncomeReportViewModel> listOfIncomeReports = new List <SalesIncomeReportViewModel>(); foreach (var admin in admins) { try { var totalSale = await SalesIncomeReportRepository.SingleInstance.FetchTotalSaleOfAdminAsync(admin.Username); SalesIncomeReportViewModel salesIncomeReportViewModel = new SalesIncomeReportViewModel { Administrator = admin, TotalSale = totalSale.TotalSale, TotalSaleOnsite = totalSale.TotalSaleOnsite, TotalSaleOrders = totalSale.TotalSaleOrders }; listOfIncomeReports.Add(salesIncomeReportViewModel); } catch (Exception) { } } SalesIncomeDisplay = listOfIncomeReports; }
/// <summary> /// Calculates the total sales sold by a specific administrator /// </summary> /// <param name="administrator"> /// Passes a parameter administrator name /// </param> /// <returns> /// <para>Returns a model of model containing all the transactions made by the administrator</para> /// <para>Type: SalesIncomeReportViewModel</para> /// </returns> public async Task <SalesIncomeReportViewModel> FetchTotalSaleOfAdminAsync(string administrator) { SalesIncomeReportViewModel salesIncome = new SalesIncomeReportViewModel(); using (MySqlConnection connection = new MySqlConnection(DbConnString.DBCONN_STRING)) { await connection.OpenAsync(); string queryString = "SELECT (SELECT SUM(onsite_products_transaction_table.subtotal_price) FROM onsite_products_transaction_table WHERE onsite_products_transaction_table.administrator_username = @username) as TotalSaleOnSite, (SELECT SUM(specific_orders_table.subtotal_price) FROM specific_orders_table INNER JOIN customer_orders_table ON customer_orders_table.order_id = specific_orders_table.order_id WHERE specific_orders_table.administrator_username = @username AND customer_orders_table.order_status='Finished' ) AS TotalSaleOrder"; MySqlCommand command = new MySqlCommand(queryString, connection); command.Parameters.AddWithValue("@username", administrator); MySqlDataReader reader = (MySqlDataReader)await command.ExecuteReaderAsync(); if (await reader.ReadAsync()) { if (String.IsNullOrEmpty(reader["TotalSaleOnSite"].ToString())) { salesIncome.TotalSaleOnsite = 0; } else { salesIncome.TotalSaleOnsite = int.Parse(reader["TotalSaleOnSite"].ToString()); } if (String.IsNullOrEmpty(reader["TotalSaleOrder"].ToString())) { salesIncome.TotalSaleOrders = 0; } else { salesIncome.TotalSaleOrders = int.Parse(reader["TotalSaleOrder"].ToString()); } salesIncome.TotalSale = salesIncome.TotalSaleOnsite + salesIncome.TotalSaleOrders; salesIncome.Administrator = await AdministratorRepository.SingleInstance.FindAdministratorAsync(administrator); } } return(salesIncome); }