using AutoService.Models; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AutoService.ViewModels { public partial class ReceiptWindowVM: ViewModelBase { private readonly IServiceProvider _serviceProvider; private readonly LocalContainer _localContainer; private readonly IProceedRepository _proceedRepository; [ObservableProperty] private ObservableCollection works; [ObservableProperty] private int sumPrice = 0; private double discount = 0; [ObservableProperty] private string discountText; [ObservableProperty] private double totalPrice; private ReceiptWindow _currentWindow; public ReceiptWindowVM(IServiceProvider serviceProvider, ObservableCollection works, LocalContainer localContainer, ProceedRepository proceedRepository) { _serviceProvider = serviceProvider; _localContainer = localContainer; _proceedRepository = proceedRepository; Works = works; foreach (var item in Works) sumPrice += item.Price; if (sumPrice >= 10_000) discount = 0.1; else if (sumPrice >= 5_000) discount = 0.05; DiscountText = (discount * 100).ToString() + "%"; TotalPrice = sumPrice * (1-discount); } [RelayCommand] public void ProceedTransaction() { Order order = new Order { ClientName = _localContainer.StringValues["ClientName"], AutoModel = _localContainer.StringValues["AutoModel"], DiscountPercent=(int)(discount*100), ServiceId=_localContainer.SelectedService.Id, TotalPrice=(int)TotalPrice }; _proceedRepository.SaveOrder(Works, order); } public void SetWindow(ReceiptWindow window) { _currentWindow = window; } } }