75 lines
2.2 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|