Exemple #1
0
        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);
        }