auto_service/AutoService/ViewModels/ReceiptWindowVM.cs

75 lines
2.2 KiB
C#

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<Work> 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<Work> 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;
}
}
}