示例#1
0
        public Order(int offerNumber, int clientNumber, Worker worker, int orderClientsAmount, DateTime travelStartDate, List <ILogger> logs)
        {
            TravelOfferNumber = offerNumber;
            ServiceWorker     = worker;
            OrderClientNumber = clientNumber;
            OrderRegisterDate = DateTime.Now;
            TravelStartDate   = travelStartDate;
            List <Order> list = DatabaseMethods.SelectOrders();

            if (list.Count > 0)
            {
                OrderNumber = list.Select(x => x.OrderNumber).Max() + 1;
            }
            else
            {
                OrderNumber = 1;
            }
            OrderClientsAmount = orderClientsAmount;
            OrderPrice         = DatabaseMethods.SelectOffers().Where(x => x.OfferNumber == TravelOfferNumber).First().Price *orderClientsAmount;
            AddOrderPriceToBudget(OrderPrice);
            string email = DatabaseMethods.SelectClients().Where(x => x.ClientNumber == OrderClientNumber).First().Email;

            foreach (ILogger log in logs)
            {
                if (log != null)
                {
                    log.WriteToLog(this, OrderRegisterDate, "Created order", email);
                }
            }
        }
示例#2
0
 private async Task SetLabelsAwait()
 {
     clientsQuantity.Text = (await GetLabelTextAsync(DatabaseMethods.SelectClients().Count, "Number of clients: "));
     offersQuantity.Text  = (await GetLabelTextAsync(DatabaseMethods.SelectOffers().Count(), "Number of offers: "));
     workersQuantity.Text = (await GetLabelTextAsync(DatabaseMethods.SelectWorkers().Count(), "Number of workers: "));
     ordersQuantity.Text  = (await GetLabelTextAsync(DatabaseMethods.SelectOrders().Count(), "Number of orders: "));
     activeOrders.Text    = (await GetLabelTextAsync(CheckActiveOrders(), "Active orders: "));
     if (!Budget.IsBankrupt())
     {
         budgetBalance.BackColor = DefaultBackColor;
         budgetBalance.Text      = (await GetLabelTextAsync((int)Budget.Balance, "Budget balance: €"));
     }
 }
示例#3
0
        private void ShowOrdersButton_Click(object sender, EventArgs e)
        {
            List <Order> orderList = DatabaseMethods.SelectOrders();

            if (orderList.Count() > 0)
            {
                List <string> list       = orderList.Select(i => i.OrderNumber + ". " + DatabaseMethods.SelectClients().Where(x => x.ClientNumber == i.OrderClientNumber).First().Name + " " + DatabaseMethods.SelectClients().Where(x => x.ClientNumber == i.OrderClientNumber).First().LastName + " " + DatabaseMethods.SelectOffers().Where(x => x.OfferNumber == i.TravelOfferNumber).First().TravelDestination).ToList();
                ShowObject    showObject = new ShowObject(new BindingSource(list, null), typeof(Order), this);
                showObject.Text = "Show orders";
                showObject.ShowDialog();
            }
            else
            {
                MessageBox.Show("No orders!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
示例#4
0
        private int CheckActiveOrders()
        {
            int          activeOrders = 0;
            List <Order> list         = DatabaseMethods.SelectOrders();

            if (list.Count() > 0)
            {
                foreach (Order order in list)
                {
                    if (order.TravelStartDate > DateTime.Today)
                    {
                        activeOrders++;
                    }
                }
            }
            return(activeOrders);
        }
 private void NearestDeparturesForm_Load(object sender, EventArgs e)
 {
     nearestDeparturesListView.View          = View.Details;
     nearestDeparturesListView.GridLines     = true;
     nearestDeparturesListView.FullRowSelect = true;
     nearestDeparturesListView.Columns.Add("No.", 50);
     nearestDeparturesListView.Columns.Add("Travel destination", 360);
     nearestDeparturesListView.Columns.Add("Worker", 240);
     nearestDeparturesListView.Columns.Add("Client", 240);
     nearestDeparturesListView.Columns.Add("Price", 120);
     nearestDeparturesListView.Columns.Add("Order created", 170);
     nearestDeparturesListView.Columns.Add("Travel start date", 200);
     nearestDeparturesListView.Columns.Add("Travelers", 150);
     if (_isWorkerOrders == false)
     {
         List <Order> list   = DatabaseMethods.SelectOrders();
         Order[]      orders = new Order[list.Count()];
         int          i      = 0;
         foreach (Order order in list)
         {
             orders[i] = order;
             i++;
         }
         Array.Sort(orders);
         nearestDeparturesListView.Columns.RemoveAt(7);
         foreach (Order order in orders)
         {
             if (order.IsActive())
             {
                 string[] arr = new string[7];
                 arr[0] = order.OrderNumber.ToString();
                 arr[1] = DatabaseMethods.SelectOffers().Where(x => x.OfferNumber == order.TravelOfferNumber).First().TravelDestination;
                 arr[2] = DatabaseMethods.SelectClients().Where(x => x.ClientNumber == order.OrderClientNumber).First().Name + " " + DatabaseMethods.SelectClients().Where(x => x.ClientNumber == order.OrderClientNumber).First().LastName;
                 arr[3] = DatabaseMethods.SelectWorkers().Where(x => x.WorkerNumber == order.ServiceWorker.WorkerNumber).First().Name + " " + DatabaseMethods.SelectWorkers().Where(x => x.WorkerNumber == order.ServiceWorker.WorkerNumber).First().LastName;
                 arr[4] = "€" + string.Format("{0:F2}", order.OrderPrice);
                 arr[5] = order.OrderRegisterDate.ToShortDateString();
                 arr[6] = order.TravelStartDate.ToShortDateString();
                 ListViewItem itm = new ListViewItem(arr);
                 nearestDeparturesListView.Items.Add(itm);
             }
         }
     }
 }
示例#6
0
 public void ShowButton_Click(object sender, EventArgs e)
 {
     if (type.Equals(typeof(Order)) && !deleteButton.Visible && showButton.Text != "Send information to E-mail")
     {
         if (objectBox.SelectedIndex == -1)
         {
             objectBox.BackColor = Color.Salmon;
         }
         else
         {
             NearestDeparturesForm ordersView = new NearestDeparturesForm(true);
             List <Worker>         workers    = DatabaseMethods.SelectWorkers();
             List <Order>          orders     = DatabaseMethods.SelectOrders();
             Worker worker = null;
             int    number = Convert.ToInt32(objectBox.SelectedItem.ToString().Split('.').First());
             worker = workers.Where(x => x.WorkerNumber == number).First();
             List <Order> list = orders.Where(x => x.ServiceWorker.WorkerNumber == worker.WorkerNumber).ToList();
             if (list.Count > 0)
             {
                 foreach (Order order in list)
                 {
                     if (order.IsActive())
                     {
                         string[] arr = new string[8];
                         arr[0] = order.OrderNumber.ToString();
                         arr[1] = DatabaseMethods.SelectOffers().Where(x => x.OfferNumber == order.TravelOfferNumber).First().TravelDestination;
                         arr[2] = DatabaseMethods.SelectWorkers().Where(x => x.WorkerNumber == order.ServiceWorker.WorkerNumber).First().Name + " " + DatabaseMethods.SelectWorkers().Where(x => x.WorkerNumber == order.ServiceWorker.WorkerNumber).First().LastName;
                         arr[3] = DatabaseMethods.SelectClients().Where(x => x.ClientNumber == order.OrderClientNumber).First().Name + " " + DatabaseMethods.SelectClients().Where(x => x.ClientNumber == order.OrderClientNumber).First().LastName;
                         arr[4] = "€" + string.Format("{0:F2}", order.OrderPrice);
                         arr[5] = order.OrderRegisterDate.ToShortDateString();
                         arr[6] = order.TravelStartDate.ToShortDateString();
                         arr[7] = order.OrderClientsAmount.ToString();
                         ListViewItem itm = new ListViewItem(arr);
                         ordersView.nearestDeparturesListView.Items.Add(itm);
                     }
                 }
                 ordersView.Text = worker.Name + " " + worker.LastName + " orders";
                 ordersView.ShowDialog();
             }
             else
             {
                 MessageBox.Show("No orders!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
             }
             Dispose();
         }
     }
     else if (objectBox.SelectedIndex != -1)
     {
         if (!deleteButton.Visible && type.Equals(typeof(Order)))
         {
             MainForm.SendEmailOrderHandler(this, null);
         }
         else if (!deleteButton.Visible && type.Equals(typeof(Client)))
         {
             MainForm.SendEmailClientHandler(this, null);
         }
         else if (!deleteButton.Visible && type.Equals(typeof(Worker)))
         {
             MainForm.PayOutSalaryHandler(this, null);
         }
         else
         {
             if (type.Equals(typeof(Offer)))
             {
                 List <Offer> offers = DatabaseMethods.SelectOffers();
                 Offer        offer  = null;
                 int          number = Convert.ToInt32(objectBox.SelectedItem.ToString().Split('.').First());
                 offer = offers.Where(x => x.OfferNumber == number).First();
                 MessageBox.Show(offer.ToString(), "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
             }
             if (type.Equals(typeof(Order)))
             {
                 List <Order> orders = DatabaseMethods.SelectOrders();
                 Order        order  = null;
                 int          number = Convert.ToInt32(objectBox.SelectedItem.ToString().Split('.').First());
                 order = orders.Where(x => x.OrderNumber == number).First();
                 MessageBox.Show(order.ToString(), "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
             }
             if (type.Equals(typeof(Client)))
             {
                 List <Client> clients = DatabaseMethods.SelectClients();
                 Client        client  = null;
                 int           number  = Convert.ToInt32(objectBox.SelectedItem.ToString().Split(' ').Last().Remove(objectBox.SelectedItem.ToString().Split(' ').Last().Length - 1));
                 client = clients.Where(x => x.ClientNumber == number).First();
                 MessageBox.Show(client.ToString(), "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
             }
             if (type.Equals(typeof(Worker)))
             {
                 List <Worker> workers = DatabaseMethods.SelectWorkers();
                 Worker        worker  = null;
                 int           number  = Convert.ToInt32(objectBox.SelectedItem.ToString().Split('.').First());
                 worker = workers.Where(x => x.WorkerNumber == number).First();
                 MessageBox.Show(worker.ToString(), "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
             }
         }
     }
     else
     {
         MessageBox.Show("Not selected!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }
示例#7
0
        private void chartsTab_Selected(object sender, TabControlEventArgs e)
        {
            switch (e.TabPageIndex)
            {
            case 0:
                List <string> positions     = new List <string>();
                List <int>    positionCount = new List <int>();
                var           empl          = DatabaseMethods.SelectWorkers().GroupBy(emp => emp.Position);
                foreach (var worker in empl)
                {
                    positions.Add(worker.Key);
                    positionCount.Add(worker.Count());
                }
                chart1.Series[0].LegendText = "Number of workers";
                RemoveGrid(chart1);
                chart1.Series["Series1"].IsValueShownAsLabel = true;
                chart1.Series["Series1"].Points.DataBindXY(positions, positionCount);
                break;

            case 1:
                List <string> workers  = new List <string>();
                List <double> salaries = new List <double>();
                foreach (Worker worker in DatabaseMethods.SelectWorkers().OrderByDescending(x => x.Salary).Take(5).ToList())
                {
                    workers.Add(worker.Name + " " + worker.LastName);
                    salaries.Add(DatabaseMethods.SelectWorkers().Where(x => x.Name + " " + x.LastName == worker.Name + " " + worker.LastName).First().Salary);
                }
                chart2.Series[0].LegendText = "Salary per month in €";
                RemoveGrid(chart2);
                chart2.Series["Series1"].IsValueShownAsLabel = true;
                chart2.Series["Series1"].Points.DataBindXY(workers, salaries);
                break;

            case 2:
                workers  = new List <string>();
                salaries = new List <double>();
                foreach (Worker worker in DatabaseMethods.SelectWorkers().OrderByDescending(x => x.Salary).Skip(DatabaseMethods.SelectWorkers().Count - 5).ToList())
                {
                    workers.Add(worker.Name + " " + worker.LastName);
                    salaries.Add(DatabaseMethods.SelectWorkers().Where(x => x.Name + " " + x.LastName == worker.Name + " " + worker.LastName).First().Salary);
                }
                chart3.Series[0].LegendText = "Salary per month in €";
                RemoveGrid(chart3);
                chart3.Series["Series1"].IsValueShownAsLabel = true;
                chart3.Series["Series1"].Points.DataBindXY(workers, salaries);
                break;

            case 3:
                List <Order> orders = DatabaseMethods.SelectOrders();
                List <Offer> offers = DatabaseMethods.SelectOffers();
                var          join   = orders.OrderByDescending(order => order.TravelStartDate).Reverse().Join(offers,
                                                                                                              ord => ord.TravelOfferNumber,
                                                                                                              off => off.OfferNumber,
                                                                                                              (ord, off) => new { ord.TravelStartDate, off.Price, ord.OrderClientsAmount }).GroupBy(grp => grp.TravelStartDate);
                List <string> dates  = new List <string>();
                List <double> prices = new List <double>();
                foreach (var item in join)
                {
                    dates.Add(item.Key.ToShortDateString());
                    prices.Add(item.Select(price => price.Price * price.OrderClientsAmount).Sum());
                }
                chart4.Series[0].LegendText = "Total income for day in €";
                RemoveGrid(chart4);
                chart4.Series["Series1"].IsValueShownAsLabel = true;
                chart4.Series["Series1"].Points.DataBindXY(dates, prices);
                break;
            }
        }