private void DeliverSelectedGarment()
 {
     if (SelectedGarment == null)
     {
         MessageBox.Show("Please, click on a garment on the list first");
     }
     else
     {
         if (SelectedGarment.Paid)
         {
             MessageBox.Show("The selected garment has already been delivered");
         }
         else
         {
             LaundryDb db;
             using (db = new LaundryDb())
             {
                 db.Garments.Find(SelectedGarment.Id).Paid = true;
                 db.SaveChanges();
             }
             _garments.Remove(SelectedGarment);
             OnPropertyChanged("Garments");
         }
     }
 }
 private void PerformPayment()
 {
     if (SelectedTicket != null)
     {
         if (Payment < 0)
         {
             MessageBox.Show("Please, input a non-negative value");
         }
         else
         {
             LaundryDb db;
             double    payment  = Payment;
             double    remanent = SelectedTicket.TotalAmount - SelectedTicket.PaidAmount;
             if (payment >= remanent)
             {
                 payment = remanent;
             }
             using (db = new LaundryDb())
             {
                 db.Tickets.Find(SelectedTicket.Id).PaidAmount += payment;
                 db.SaveChanges();
             }
             ShowTicket();
         }
     }
     else
     {
         MessageBox.Show("Please, pick a Ticket first");
     }
 }
Example #3
0
        private void SearchTicketByColor()
        {
            LaundryDb db;

            using (db = new LaundryDb())
            {
                var ticketsOfInterest = db.Tickets.Join(db.Garments,
                                                        t => t.Id,
                                                        g => g.TicketId,
                                                        (t, g) => new
                {
                    TicketId     = t.Id,
                    TicketPhone  = t.Phone,
                    GarmentColor = g.Color
                }).Where(t => t.GarmentColor.ToUpper() == this.GarmentColor.ToUpper());

                if (ticketsOfInterest.Count() != 0)
                {
                    ColorTickets = new List <string>();
                    foreach (var t in ticketsOfInterest)
                    {
                        string s = string.Format("Tickets {0} with color: {1}", t.TicketPhone, t.GarmentColor);

                        ColorTickets.Add(s);
                    }
                    RaisePropertyChanged("ColorTickets");
                }
                else
                {
                    MessageBox.Show("The Garment colour specified is not stored in the Database");
                }
            }
        }
        private void PerformSearch()
        {
            LaundryDb db;

            using (db = new LaundryDb())
            {
                var garmentsDelivered        = db.Garments.Where(g => g.Paid);
                var garmentsDeliveredGrouped = garmentsDelivered.GroupBy(g => g.GarmentType)
                                               .Select(gr => new
                {
                    GarmentType   = gr.Key,
                    TotalEarnings = gr.Sum(g => g.PriceTag)
                });

                EarningsByGarment = new List <string>();
                foreach (var g in garmentsDelivered)
                {
                    string s = string.Format("Garment {1}, with id {0} generated an income of {2}", g.Id, g.Name, g.PriceTag);
                    EarningsByGarment.Add(s);
                }
                RaisePropertyChanged("EarningsByGarment");

                EarningsByGarmentType = new List <string>();
                foreach (var gr in garmentsDeliveredGrouped)
                {
                    string s = string.Format("Garment Type {0} generated an income of {1}", gr.GarmentType, gr.TotalEarnings);
                    EarningsByGarmentType.Add(s);
                }
                RaisePropertyChanged("EarningsByGarmentType");
            }
        }
        private void SearchTicketByTicketId()
        {
            LaundryDb db;

            using (db = new LaundryDb())
            {
                var tickets = db.Tickets.Join(db.Garments,
                                              t => t.Id,
                                              g => g.TicketId,
                                              (t, g) => new
                {
                    TicketId    = t.Id,
                    TicketPhone = t.Phone,
                    GarmentName = g.Name
                }).Where(t => t.TicketId == this.TicketId);

                if (tickets.Count() != 0)
                {
                    IdTickets = new List <string>();
                    foreach (var t in tickets)
                    {
                        string s = string.Format("Garment Name:{0} with ticket Id:{1} and Phone:{2}", t.GarmentName, t.TicketId, t.TicketPhone);
                        IdTickets.Add(s);
                    }
                    RaisePropertyChanged("IdTickets");
                }
                else
                {
                    MessageBox.Show("The Ticket identifier specified is not stored in the Database");
                }
            }
        }
Example #6
0
 public void GetDeliveries()
 {
     using (_db = new LaundryDb())
     {
         _deliveries = _db.Tickets.Count(t => t.DeliveryDate.Contains(_ticket.DeliveryDate)).ToString();
         Deliveries  = _deliveries == "" ? "0" : _deliveries;
     }
 }
        private void ShowTicket()
        {
            _tickets = new ObservableCollection <Ticket>();
            LaundryDb db;

            using (db = new LaundryDb())
            {
                var ticketsWithPhone = db.Tickets.Where(t => t.Phone == PhoneToSearch);
                foreach (var t in ticketsWithPhone)
                {
                    _tickets.Add(t);
                }
            }
            OnPropertyChanged("Tickets");
        }
Example #8
0
        private void PerformSearch()
        {
            LaundryDb db;

            using (db = new LaundryDb())
            {
                var ticketsNotFullyPaid = db.Tickets.Where(t => t.PaidAmount < t.TotalAmount);

                TicketsNotYetPaid = new List <string>();
                foreach (var t in ticketsNotFullyPaid)
                {
                    string s = string.Format("Ticket ID {0} with Phone {1} still has an unpaid amount of {2}", t.Id, t.Phone, t.TotalAmount - t.PaidAmount);
                    TicketsNotYetPaid.Add(s);
                }
                RaisePropertyChanged("TicketsNotYetPaid");
            }
        }
        private void SearchTicketByGarment()
        {
            LaundryDb db;

            using (db = new LaundryDb())
            {
                Garment garment = db.Garments.Find(GarmentId);
                if (garment != null)
                {
                    var ticket = db.Tickets.Find(garment.TicketId);
                    MessageBox.Show(string.Format("Garment name:\t '{0}'.\n Ticket phone:\t '{1}'", garment.Name, ticket.Phone));
                }
                else
                {
                    MessageBox.Show(string.Format("The Garment Identifier specified is not stored in the Database"));
                }
            }
        }
Example #10
0
        public void Initialize()
        {
            _garments = new ObservableCollection <Garment>();
            _ticket   = new Ticket();

            using (_db = new LaundryDb())
            {
                TicketId = _db.Tickets.Count() + 1;
            }

            Phone        = 0;
            TotalAmount  = 0;
            PaidAmount   = 0;
            Deliveries   = "";
            DeliveryDate = "Select a date";
            Garments.Clear();
            OnPropertyChanged("Garments");
        }
Example #11
0
 public void SaveTicket()
 {
     CalculateTotalAmount();
     if (IsValidate())
     {
         _ticket.Garments = _garments;
         using (_db = new LaundryDb())
         {
             for (int i = 0; i < _garments.Count(); i++)
             {
                 _db.Garments.Add(_garments[i]);
             }
             _db.Tickets.Add(_ticket);
             _db.SaveChanges();
         }
         Initialize();
     }
 }
 private void LoadGarments()
 {
     if (SelectedTicket != null)
     {
         _garments = new ObservableCollection <Garment>();
         LaundryDb db;
         using (db = new LaundryDb())
         {
             var garments = db.Garments.Where(g => g.TicketId == SelectedTicket.Id);
             foreach (var g in garments)
             {
                 _garments.Add(g);
             }
         }
         OnPropertyChanged("Garments");
     }
     else
     {
         MessageBox.Show("Please, pick a Ticket first");
     }
 }
 private void DeliverAllGarments()
 {
     if (SelectedTicket == null)
     {
         MessageBox.Show("Please, pick a ticket first");
     }
     else
     {
         LaundryDb db;
         using (db = new LaundryDb())
         {
             var garmentsToFlagAsPaid = db.Garments.Where(g => g.TicketId == SelectedTicket.Id);
             foreach (var g in garmentsToFlagAsPaid)
             {
                 g.Paid = true;
             }
             db.SaveChanges();
         }
         _garments.Clear();
         OnPropertyChanged("Garments");
     }
 }
Example #14
0
        private void ListByPaidAmount()
        {
            LaundryDb db;

            using (db = new LaundryDb())
            {
                var clientsOrdered = db.Tickets.OrderByDescending(t => t.PaidAmount)
                                     .Select(t => new
                {
                    ClientPhone      = t.Phone,
                    ClientPaidAmount = t.PaidAmount
                });

                BestClients = new List <string>();
                foreach (var c in clientsOrdered)
                {
                    string s = string.Format("Client with Phone {0} has paid us {1}", c.ClientPhone, c.ClientPaidAmount);
                    BestClients.Add(s);
                }
                RaisePropertyChanged("BestClients");
            }
        }
Example #15
0
        private void ListByNumberOfGarments()
        {
            LaundryDb db;

            using (db = new LaundryDb())
            {
                var clientsOrdered = db.Tickets.Select(t => new
                {
                    ClientPhone            = t.Phone,
                    ClientNumberOfGarments = t.Garments.Count()
                })
                                     .OrderByDescending(c => c.ClientNumberOfGarments);

                BestClients = new List <string>();
                foreach (var c in clientsOrdered)
                {
                    string s = string.Format("Client with Phone {0} has registered {1} garments", c.ClientPhone, c.ClientNumberOfGarments);
                    BestClients.Add(s);
                }
                RaisePropertyChanged("BestClients");
            }
        }
Example #16
0
        private void ListByEarnings()
        {
            LaundryDb db;

            using (db = new LaundryDb())
            {
                string deliveryDate      = DeliveryDate.Substring(0, 10);
                var    dailyEarningsList = db.Tickets.Where(t => t.DeliveryDate == deliveryDate)
                                           .Select(t => new
                {
                    TicketPhone = t.Phone,
                    Income      = t.PaidAmount
                });

                DailyEarnings = new List <string>();
                foreach (var e in dailyEarningsList)
                {
                    string s = string.Format("Earnings for ticket with Phone {0}: {1}", e.TicketPhone, e.Income);
                    DailyEarnings.Add(s);
                }
                RaisePropertyChanged("DailyEarnings");
            }
        }
        private void ListTicketsNotRetrieved()
        {
            LaundryDb db;

            using (db = new LaundryDb())
            {
                string deliveryDate        = DeliveryDate.Substring(0, 10);
                var    ticketsNotRetrieved = db.Tickets.Select(t => new
                {
                    TicketPhone        = t.Phone,
                    TicketDeliveryDate = t.DeliveryDate
                })
                                             .AsEnumerable()
                                             .Where(t => HasExpired(t.TicketDeliveryDate, deliveryDate));

                TicketsNotRetrieved = new List <string>();
                foreach (var t in ticketsNotRetrieved)
                {
                    string s = string.Format("Ticket with Phone {0} should have been retrieved on {1}", t.TicketPhone, t.TicketDeliveryDate);
                    TicketsNotRetrieved.Add(s);
                }
                RaisePropertyChanged("TicketsNotRetrieved");
            }
        }