Compare commits
No commits in common. "9fd6904a399cfdae6829cceeb9d3f8eb317462cd" and "dce673898d2a54a02c0f3bb62a5bbb3cb2508dd8" have entirely different histories.
9fd6904a39
...
dce673898d
|
|
@ -1,13 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace AutoService.Models
|
|
||||||
{
|
|
||||||
public interface IProceedRepository
|
|
||||||
{
|
|
||||||
public void SaveOrder(IEnumerable<Work> works, Order order);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace AutoService.Models
|
|
||||||
{
|
|
||||||
public class Order
|
|
||||||
{
|
|
||||||
public string ClientName { get; set; }
|
|
||||||
public string AutoModel { get; set; }
|
|
||||||
public int ServiceId { get; set; }
|
|
||||||
public int TotalPrice { get; set; }
|
|
||||||
public int DiscountPercent { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,76 +0,0 @@
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using MySqlConnector;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace AutoService.Models
|
|
||||||
{
|
|
||||||
public class ProceedRepository : BaseRepository, IProceedRepository
|
|
||||||
{
|
|
||||||
public ProceedRepository(IOptions<DatabaseSettings> databaseSettings) : base(databaseSettings)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SaveOrder(IEnumerable<Work> works, Order order)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
OpenConnection();
|
|
||||||
string sql1 = "INSERT INTO orders (id, client_name, car_model, service_id, total_amount, discount_percent, order_date) VALUES(0, @ClientName, @AutoModel, @ServiceId, @TotalAmount, @DiscountPercent, @Date);";
|
|
||||||
string sql2 = "SELECT LAST_INSERT_ID() as id;";
|
|
||||||
string sql3 = "INSERT INTO auto_service_db.order_items (id, order_id, work_id, work_price) VALUES(0, @OrderId, @WorkId, @WorkPrice);";
|
|
||||||
using var transaction = connection.BeginTransaction();
|
|
||||||
int newId;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
using (var mc = new MySqlCommand(sql1, connection, transaction))
|
|
||||||
{
|
|
||||||
mc.Parameters.AddWithValue("@ClientName", order.ClientName);
|
|
||||||
mc.Parameters.AddWithValue("@AutoModel", order.AutoModel);
|
|
||||||
mc.Parameters.AddWithValue("@ServiceId", order.ServiceId);
|
|
||||||
mc.Parameters.AddWithValue("@TotalAmount", order.TotalPrice);
|
|
||||||
mc.Parameters.AddWithValue("@DiscountPercent", order.DiscountPercent);
|
|
||||||
mc.Parameters.AddWithValue("@Date", DateTime.Now);
|
|
||||||
mc.ExecuteNonQuery();
|
|
||||||
}
|
|
||||||
using (var mc = new MySqlCommand(sql2, connection, transaction))
|
|
||||||
{
|
|
||||||
var result = mc.ExecuteScalar();
|
|
||||||
if (result != null)
|
|
||||||
{
|
|
||||||
newId = Convert.ToInt32(result);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
throw new Exception("Это печально всё");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
foreach (var work in works)
|
|
||||||
{
|
|
||||||
using (var mc = new MySqlCommand(sql3, connection, transaction))
|
|
||||||
{
|
|
||||||
mc.Parameters.AddWithValue("@OrderId", newId);
|
|
||||||
mc.Parameters.AddWithValue("@WorkId", work.Id);
|
|
||||||
mc.Parameters.AddWithValue("@WorkPrice", work.Price);
|
|
||||||
mc.ExecuteNonQuery();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
transaction.Commit();
|
|
||||||
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Console.WriteLine(ex);
|
|
||||||
}
|
|
||||||
CloseConnection();
|
|
||||||
}catch(Exception e)
|
|
||||||
{
|
|
||||||
Console.WriteLine(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -8,7 +8,6 @@ namespace AutoService.Models
|
||||||
{
|
{
|
||||||
public class Work
|
public class Work
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
|
||||||
public string Title { get; set; }
|
public string Title { get; set; }
|
||||||
public int Price { get; set; }
|
public int Price { get; set; }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ namespace AutoService.Models
|
||||||
|
|
||||||
public IEnumerable<Work> GetByServiceId(int serviceId)
|
public IEnumerable<Work> GetByServiceId(int serviceId)
|
||||||
{
|
{
|
||||||
string sql = "SELECT id, work_name, price FROM works WHERE service_id=@SID";
|
string sql = "SELECT work_name, price FROM works WHERE service_id=@SID";
|
||||||
List<Work> result = new();
|
List<Work> result = new();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
@ -28,7 +28,6 @@ namespace AutoService.Models
|
||||||
{
|
{
|
||||||
result.Add(new Work()
|
result.Add(new Work()
|
||||||
{
|
{
|
||||||
Id = reader.GetInt32("id"),
|
|
||||||
Title = reader.GetString("work_name"),
|
Title = reader.GetString("work_name"),
|
||||||
Price = reader.GetInt32("price")
|
Price = reader.GetInt32("price")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,6 @@ namespace AutoService
|
||||||
s.AddTransient<ReceiptWindow>();
|
s.AddTransient<ReceiptWindow>();
|
||||||
s.AddSingleton<IWorkRepository,WorkRepository>();
|
s.AddSingleton<IWorkRepository,WorkRepository>();
|
||||||
s.AddSingleton<IServiceRepository, ServiceRepository>();
|
s.AddSingleton<IServiceRepository, ServiceRepository>();
|
||||||
s.AddSingleton<IProceedRepository, ProceedRepository>();
|
|
||||||
s.AddSingleton<LocalContainer>();
|
s.AddSingleton<LocalContainer>();
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
using AutoService.Models;
|
using AutoService.Models;
|
||||||
using Avalonia.Controls.ApplicationLifetimes;
|
|
||||||
using CommunityToolkit.Mvvm.ComponentModel;
|
using CommunityToolkit.Mvvm.ComponentModel;
|
||||||
using CommunityToolkit.Mvvm.Input;
|
using CommunityToolkit.Mvvm.Input;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|
@ -39,7 +38,6 @@ namespace AutoService.ViewModels
|
||||||
_container = localContainer;
|
_container = localContainer;
|
||||||
ClientName = "";
|
ClientName = "";
|
||||||
AutoModel = "";
|
AutoModel = "";
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
services = new ObservableCollection<Service>(_serviceRepository.GetAll());
|
services = new ObservableCollection<Service>(_serviceRepository.GetAll());
|
||||||
|
|
@ -56,7 +54,6 @@ namespace AutoService.ViewModels
|
||||||
[RelayCommand]
|
[RelayCommand]
|
||||||
public async Task StartWorksWindowAsync()
|
public async Task StartWorksWindowAsync()
|
||||||
{
|
{
|
||||||
var _currentWindow = (App.Current.ApplicationLifetime as IClassicDesktopStyleApplicationLifetime).MainWindow;
|
|
||||||
if (ClientName.Length > 2 && AutoModel.Length > 2)
|
if (ClientName.Length > 2 && AutoModel.Length > 2)
|
||||||
{
|
{
|
||||||
if (!_container.StringValues.ContainsKey("ClientName"))
|
if (!_container.StringValues.ContainsKey("ClientName"))
|
||||||
|
|
@ -75,13 +72,11 @@ namespace AutoService.ViewModels
|
||||||
{
|
{
|
||||||
_container.StringValues["AutoModel"] = AutoModel;
|
_container.StringValues["AutoModel"] = AutoModel;
|
||||||
}
|
}
|
||||||
_container.SelectedService = SelectedService;
|
|
||||||
var vm = _serviceProvider.GetRequiredService<WorksWindowVM>();
|
var vm = _serviceProvider.GetRequiredService<WorksWindowVM>();
|
||||||
var win = _serviceProvider.GetRequiredService<WorksWindow>();
|
var win = _serviceProvider.GetRequiredService<WorksWindow>();
|
||||||
win.DataContext = vm;
|
win.DataContext = vm;
|
||||||
vm.SetWindow(win);
|
|
||||||
win.Show();
|
win.Show();
|
||||||
_currentWindow.Close();
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
using AutoService.Models;
|
using AutoService.Models;
|
||||||
using Avalonia.Controls;
|
|
||||||
using CommunityToolkit.Mvvm.ComponentModel;
|
using CommunityToolkit.Mvvm.ComponentModel;
|
||||||
using CommunityToolkit.Mvvm.Input;
|
using CommunityToolkit.Mvvm.Input;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
|
|
@ -19,9 +17,6 @@ namespace AutoService.ViewModels
|
||||||
|
|
||||||
private readonly LocalContainer _localContainer;
|
private readonly LocalContainer _localContainer;
|
||||||
|
|
||||||
private readonly IProceedRepository _proceedRepository;
|
|
||||||
|
|
||||||
public Button Btn { get; set; }
|
|
||||||
|
|
||||||
[ObservableProperty]
|
[ObservableProperty]
|
||||||
private ObservableCollection<Work> works;
|
private ObservableCollection<Work> works;
|
||||||
|
|
@ -36,16 +31,10 @@ namespace AutoService.ViewModels
|
||||||
|
|
||||||
[ObservableProperty]
|
[ObservableProperty]
|
||||||
private double totalPrice;
|
private double totalPrice;
|
||||||
private ReceiptWindow _currentWindow;
|
public ReceiptWindowVM(IServiceProvider serviceProvider, ObservableCollection<Work> works, LocalContainer localContainer)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public ReceiptWindowVM(IServiceProvider serviceProvider, ObservableCollection<Work> works, LocalContainer localContainer, ProceedRepository proceedRepository)
|
|
||||||
{
|
{
|
||||||
_serviceProvider = serviceProvider;
|
_serviceProvider = serviceProvider;
|
||||||
_localContainer = localContainer;
|
_localContainer = localContainer;
|
||||||
_proceedRepository = proceedRepository;
|
|
||||||
Works = works;
|
Works = works;
|
||||||
foreach (var item in Works) sumPrice += item.Price;
|
foreach (var item in Works) sumPrice += item.Price;
|
||||||
if (sumPrice >= 10_000) discount = 0.1;
|
if (sumPrice >= 10_000) discount = 0.1;
|
||||||
|
|
@ -58,33 +47,7 @@ namespace AutoService.ViewModels
|
||||||
[RelayCommand]
|
[RelayCommand]
|
||||||
public void ProceedTransaction()
|
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);
|
|
||||||
Btn.IsEnabled = false;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
[RelayCommand]
|
|
||||||
public void ReturnToMain()
|
|
||||||
{
|
|
||||||
var vm = _serviceProvider.GetRequiredService<MainWindowVM>();
|
|
||||||
var win = _serviceProvider.GetRequiredService<MainWindow>();
|
|
||||||
win.DataContext = vm;
|
|
||||||
win.Show();
|
|
||||||
_currentWindow.Close();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void SetWindow(ReceiptWindow window)
|
|
||||||
{
|
|
||||||
_currentWindow = window;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ namespace AutoService.ViewModels
|
||||||
|
|
||||||
[ObservableProperty]
|
[ObservableProperty]
|
||||||
private ObservableCollection<WorkIsChecked> works;
|
private ObservableCollection<WorkIsChecked> works;
|
||||||
private WorksWindow _currentWindow;
|
|
||||||
|
|
||||||
public WorksWindowVM(IServiceProvider serviceProvider, IWorkRepository workRepository, LocalContainer container)
|
public WorksWindowVM(IServiceProvider serviceProvider, IWorkRepository workRepository, LocalContainer container)
|
||||||
{
|
{
|
||||||
|
|
@ -47,18 +47,10 @@ namespace AutoService.ViewModels
|
||||||
{
|
{
|
||||||
if (work.IsChecked) selectedWorks.Add(work.Work);
|
if (work.IsChecked) selectedWorks.Add(work.Work);
|
||||||
}
|
}
|
||||||
var procRep = _serviceProvider.GetRequiredService<IProceedRepository>();
|
var vm = ActivatorUtilities.CreateInstance<ReceiptWindowVM>(_serviceProvider, selectedWorks, _localContainer);
|
||||||
var vm = ActivatorUtilities.CreateInstance<ReceiptWindowVM>(_serviceProvider, selectedWorks, _localContainer, procRep);
|
|
||||||
var win = _serviceProvider.GetRequiredService<ReceiptWindow>();
|
var win = _serviceProvider.GetRequiredService<ReceiptWindow>();
|
||||||
win.DataContext = vm;
|
win.DataContext = vm;
|
||||||
vm.SetWindow(win);
|
|
||||||
vm.Btn = win.ProceedBtn;
|
|
||||||
win.Show();
|
win.Show();
|
||||||
_currentWindow.Close();
|
|
||||||
}
|
|
||||||
public void SetWindow(WorksWindow window)
|
|
||||||
{
|
|
||||||
_currentWindow = window;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -28,8 +28,6 @@
|
||||||
<TextBlock Text="Итого к оплате: "/>
|
<TextBlock Text="Итого к оплате: "/>
|
||||||
<TextBlock Text="{Binding TotalPrice}"/>
|
<TextBlock Text="{Binding TotalPrice}"/>
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
<Button Content="Подтвердить!" Command="{Binding ProceedTransactionCommand}" x:Name="ProceedBtn"/>
|
<Button Content="Подтвердить!" Command="{Binding ProceedTransactionCommand}"/>
|
||||||
<Button Content="Вернуться в окно выбора услуг" Command="{Binding ReturnToMainCommand}"/>
|
|
||||||
|
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Window>
|
</Window>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue