public static string GenerateTicket(Order order)
 {
     using (PartShopDbContext db = new PartShopDbContext())
     {
         double sum        = 0;
         var    orderParts = from o in db.Orders
                             join op in db.OrderedParts
                             on o.OrderId equals op.OrderId
                             join p in db.Parts
                             on op.PartId equals p.PartId
                             where o.OrderId == order.OrderId
                             select new
         {
             Name   = p.Name,
             Amount = op.Amount,
             Price  = p.Price,
             Mark   = p.Mark.MarkName
         };
         StringBuilder body = new StringBuilder();
         body.Append($"Чек заказа {order.OrderId} из магазина автозапастей AutoLight");
         body.Append("\n" + order.OrderDate);
         body.Append("\n-----------------------------------");
         foreach (var p in orderParts)
         {
             body.Append($"\nЗапчасть: {p.Name}, Количество: {p.Amount}, Цена: {p.Price}, Для авто: {p.Mark}");
             sum += p.Price * p.Amount;
         }
         body.Append("\n-----------------------------------");
         body.Append($"\nДоставка: {order.Delivery.Name}");
         body.Append($"\nИтоговая сумма: {sum + order.Delivery.Price}");
         body.Append("\n-----------------------------------");
         body.Append("\nСпасибо за заказ в нашем магазине!");
         return(body.ToString());
     }
 }
 public SearchViewModel()
 {
     using (PartShopDbContext db = new PartShopDbContext())
     {
         Parts      = new ObservableCollection <Part>(db.Parts);
         Categories = new ObservableCollection <Category>(db.Categories);
         Marks      = new ObservableCollection <Mark>(db.Marks);
     }
 }
 public void AddOrder(ObservableCollection <Part> parts)
 {
     using (PartShopDbContext db = new PartShopDbContext())
     {
         try
         {
             if (Card.Balance < Summary)
             {
                 throw new Exception("Недостаточно средств на счете");
             }
             else if (selectedDelivery == null)
             {
                 throw new Exception("Должна быть выбрана доставка");
             }
             Order order = new Order();
             order.OrderDate  = DateTime.Now;
             order.OrderState = Resources.waiting;
             List <OrderedParts> details = new List <OrderedParts>();
             foreach (Part i in Parts)
             {
                 if (i.Amount > db.Parts.Where(x => x.PartId == i.PartId).FirstOrDefault().Quantity)
                 {
                     throw new Exception($"Товаров {i.Name} недостаточно на складе для заказа");
                 }
                 details.Add(new OrderedParts()
                 {
                     OrderId = order.OrderId,
                     PartId  = i.PartId,
                     Amount  = i.Amount
                 });
                 db.Parts.Where(x => x.PartId == i.PartId).FirstOrDefault().Quantity -= i.Amount;
             }
             order.Parts      = details;
             order.UserId     = Settings.Default.UserId;
             order.DeliveryId = selectedDelivery.DeliveryId;
             db.Orders.Add(order);
             Card.Balance -= Summary;
             Parts.Clear();
             Summary = 0;
             db.SaveChanges();
             ConfirmOrderViewModel.orderId = order.OrderId;
             Singleton.getInstance(null).MainViewModel.CurrentViewModel = new ConfirmOrderViewModel();
         }
         catch (Exception e)
         {
             ErrorMessage = e.Message;
         }
     }
 }
 public HomeViewModel()
 {
     using (PartShopDbContext db = new PartShopDbContext())
     {
         try
         {
             Parts          = new ObservableCollection <Part>(db.Parts);
             PartsForSearch = new ObservableCollection <Part>(db.Parts);
             categories     = new ObservableCollection <Category>(db.Categories);
             Marks          = new ObservableCollection <Mark>(db.Marks);
         }
         catch (Exception e)
         {
             MessageBox.Show(e.Message);
         }
     }
 }