123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- using Microsoft.EntityFrameworkCore;
- using Microsoft.Toolkit.Mvvm.Input;
- using MyMoviesWPF.MVVM.View.Pages;
- using MyMoviesWPF.MVVM.ViewModel.Core;
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- namespace MyMoviesWPF.MVVM.ViewModel
- {
- internal class OrderPageViewModel : BaseViewModel
- {
- private ObservableCollection<Order> _orders;
- private RelayCommand _continuePayment;
- private RelayCommand _cancel;
- private Order _selectedOrder;
- private string _sum;
- private string _amount;
- private string _selectedPayment;
- private bool _continuePaymentEnability = true;
- // A.Where(x => Char.IsDigit(x[0]) && x.Length == L).ToList().LastOrDefault() ?? "Not found";
- //A.Sum(x => x.Length));
- public bool ContinuePaymentEnability
- {
- get => _continuePaymentEnability;
- set
- {
- if (_continuePaymentEnability == value)
- return;
- _continuePaymentEnability = value;
- OnPropertyChanged("ContinuePaymentEnability");
- }
- }
- public RelayCommand Cancel
- {
- get
- {
- return _cancel
- ?? (_cancel = new RelayCommand(
- async () =>
- {
- foreach (Order order in Orders)
- {
- order.Status = "Отменен";
- Service.db.Orders.Update(order);
- Service.db.SaveChanges();
- }
- Service.CartMoviesCollection.Clear();
- Orders.Clear();
- Service.MainViewModel.UpdateCartStr();
- Service.MainViewModel.UpdatePage(Service.catalogPage);
- }));
- }
- }
- private ObservableCollection<String> _payments = new ObservableCollection<String>() { "Sberbank", "Paypal", "Gazprombank", "RosSelkhozbank" };
- public ObservableCollection<String> Payments
- {
- get => _payments;
- set
- {
- if (_payments == value)
- return;
- _payments = value;
- OnPropertyChanged("Payments");
- }
- }
- public string SelectedPayment
- {
- get => _selectedPayment;
- set
- {
- if (_selectedPayment == value)
- return;
- _selectedPayment = value;
- if (_continuePaymentEnability == false && Orders != null)
- {
- if(Orders.Count == 1 && Orders[0] != null || Orders.Count > 1)
- {
- UpdateEnability(true);
- }
- }
- OnPropertyChanged("SelectedPayment");
- }
- }
- public string Sum
- {
- get => _sum;
- set
- {
- if (_sum == value)
- return;
- _sum = value;
- OnPropertyChanged("Sum");
- }
- }
- public string Amount
- {
- get => _amount;
- set
- {
- if (_amount == value)
- return;
- _amount = value;
- OnPropertyChanged("Amount");
- }
- }
- public ObservableCollection<Order> Orders
- {
- get { return _orders; }
- set
- {
- if (_orders == value)
- return;
- _orders = value;
- OnPropertyChanged("Orders");
- }
- }
- //SelectedOrder
- public Order SelectedOrder
- {
- get
- {
- return _selectedOrder;
- }
- set
- {
- _selectedOrder = value;
- OnPropertyChanged();
- }
- }
- public RelayCommand ContinuePayment
- {
- get
- {
- return _continuePayment
- ?? (_continuePayment = new RelayCommand(
- async () =>
- {
- Payment payment = new Payment();
- payment.PaymentType = SelectedPayment;
- payment.Sum = Decimal.Parse(Sum);
- payment.Date = DateTime.Now;
- payment.Status = "Успешно";
- Service.db.Payments.Add(payment);
- Service.db.SaveChanges();
- foreach (Order order in Orders)
- {
- order.Status = "Выполнен";
- order.IdpaymentNavigation = payment;
- Service.db.Orders.Update(order);
- Service.db.SaveChanges();
- }
- Service.CartMoviesCollection.Clear();
- Orders.Clear();
- Service.MainViewModel.UpdateCartStr();
- MessageBox.Show("Операция прошла успешно !", "Успех", MessageBoxButton.OK, MessageBoxImage.Information);
- Service.MainViewModel.UpdatePage(Service.catalogPage);
- }));
- }
- }
- public OrderPageViewModel()
- {
- foreach (Movie thing in Service.CartMoviesCollection)
- {
- Order order = new Order();
- order.Idmovie = thing.Idmovie;
- order.Iduser = Service.LoggedUser.Iduser;
- order.Status = "В Процессе";
- order.Price = thing.Price;
- order.Date = DateTime.Now;
- //Orders.Add(order);
-
- Service.db.Orders.Add(order);
- Service.db.SaveChanges();
- }
- _orders = new ObservableCollection<Order>(Service.db.Orders.Where(x => x.Status == "В Процессе"));
- Orders = new(Service.db.Orders.Where(o => o.Status == "В Процессе").DefaultIfEmpty().Include(q => q.IdmovieNavigation).Include(u => u.IduserNavigation));
- OnPropertyChanged("Orders");
- _sum = Convert.ToString((from x in Orders where x != null select x.Price).DefaultIfEmpty().Sum() ?? 0 );
- OnPropertyChanged("Sum");
- _amount = Convert.ToString((from x in Orders where x != null select x.Idorder).DefaultIfEmpty().Count());
- if(Orders != null)
- {
- UpdateEnability(true);
- }
- if(SelectedPayment == null)
- {
- UpdateEnability(false);
- }
- }
- public void UpdateEnability()
- {
- if (_continuePaymentEnability == true)
- {
- _continuePaymentEnability = false;
- }
- else
- {
- _continuePaymentEnability = true;
- }
- OnPropertyChanged("ContinuePaymentEnability");
- }
- public void UpdateEnability(bool value)
- {
- _continuePaymentEnability = value;
- OnPropertyChanged("ContinuePaymentEnability");
- }
- }
- }
|