using PersonalFinance; using PersonalFinance.Entity; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Data.Entity; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Data; namespace PersonalFinanceWindow.ViewModel { class PaymentViewModel : ViewModelBase { PaymentService paymentsrv; BindingList payments; public BindingList Payments { get { return payments; } set { Set(ref payments, value); } } Payment selected; public Payment Selected { get { return selected; } set { Set(ref selected, value); } } BindingList allPayments; public BindingList AllPayments { get { return allPayments; } set { Set(ref allPayments, value); } } Payment allSelected; public Payment AllSelected { get { return allSelected; } set { Set(ref allSelected, value); } } public BindingList Groups { get; set; } PaymentGroup selectedGroup; public PaymentGroup SelectedGroup { get { return selectedGroup; } set { Set(ref selectedGroup, value); } } public BindingList Currencies { get; set; } PaymentCurrency selectedCurrency; public PaymentCurrency SelectedCurrency { get { return selectedCurrency; } set { Set(ref selectedCurrency, value); } } public RelayCommand AddPayment { get; set; } public RelayCommand DeletePayment { get; set; } public PaymentViewModel() { AddPayment = new RelayCommand(AddPaymentAction); DeletePayment = new RelayCommand(DeletePaymentAction); paymentsrv = new PaymentService(ctx); GetEnums(); if ((bool)(DesignerProperties.IsInDesignModeProperty.GetMetadata(typeof(DependencyObject)).DefaultValue)) { //dummy data Payments = new BindingList(new List { new Payment() {PaymentId = 1, Currency = PaymentCurrency.CZK, Date = DateTime.Now, Price = 1700000, Purpose = "Elektřina", Group = PaymentGroup.Family, Paid = true } }); } else { //Database.SetInitializer(new EntityContextInit()); //paymentsrv = new PaymentService(ctx); //PaymentService paymentsrv = new PaymentService(ctx); //List p = paymentsrv.GetAllPayments().FindAll(i => i.User.UserId == 2); //int u = UserViewModel.loggedUserId; //Payments = new BindingList(p); Payments = new BindingList(); } if (Payments.Count > 0) { Selected = Payments[0]; } } public void LoadPayment() { //Database.SetInitializer(new EntityContextInit()); //PaymentService paymentsrv = new PaymentService(ctx); List p = paymentsrv.GetAllPayments().FindAll(i => i.User.UserId == UserViewModel.loggedUserId); Payments = new BindingList(p); if (Payments.Count > 0) { Selected = Payments[0]; } } public void LoadAllPayment() { //Database.SetInitializer(new EntityContextInit()); //PaymentService paymentsrv = new PaymentService(ctx); List p = paymentsrv.GetAllPayments().FindAll(i => i.Group != PaymentGroup.Private); AllPayments = new BindingList(p); if (AllPayments.Count > 0) { AllSelected = AllPayments[0]; } } private void GetEnums(){ Groups = new BindingList(); Groups.Add(PaymentGroup.Family); Groups.Add(PaymentGroup.Personal); Groups.Add(PaymentGroup.Private); Currencies = new BindingList(); Currencies.Add(PaymentCurrency.CZK); Currencies.Add(PaymentCurrency.EUR); Currencies.Add(PaymentCurrency.USD); } public void AddPaymentAction() { Payment p = new Payment() { PaymentId = paymentsrv.GetAllPayments().Max(i => i.PaymentId) + 1, Price = 0, Paid = false, Purpose = "NEW PAYMENT", Date = DateTime.Now, Currency = PaymentCurrency.CZK, Group = PaymentGroup.Family, User = UserViewModel.loggedUser }; Payments.Add(p); paymentsrv.AddPayment(p); Selected = p; } bool AddUseCanExecute() { return true; } public void DeletePaymentAction() { Payment p = Selected as Payment; Payments.Remove(p); paymentsrv.DeletePayment(p); } } }