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 int Id { get; set; }
|
||||
public string Title { get; set; }
|
||||
public int Price { get; set; }
|
||||
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ namespace AutoService.Models
|
|||
|
||||
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();
|
||||
try
|
||||
{
|
||||
|
|
@ -28,7 +28,6 @@ namespace AutoService.Models
|
|||
{
|
||||
result.Add(new Work()
|
||||
{
|
||||
Id = reader.GetInt32("id"),
|
||||
Title = reader.GetString("work_name"),
|
||||
Price = reader.GetInt32("price")
|
||||
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@ namespace AutoService
|
|||
s.AddTransient<ReceiptWindow>();
|
||||
s.AddSingleton<IWorkRepository,WorkRepository>();
|
||||
s.AddSingleton<IServiceRepository, ServiceRepository>();
|
||||
s.AddSingleton<IProceedRepository, ProceedRepository>();
|
||||
s.AddSingleton<LocalContainer>();
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
using AutoService.Models;
|
||||
using Avalonia.Controls.ApplicationLifetimes;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
|
@ -39,7 +38,6 @@ namespace AutoService.ViewModels
|
|||
_container = localContainer;
|
||||
ClientName = "";
|
||||
AutoModel = "";
|
||||
|
||||
try
|
||||
{
|
||||
services = new ObservableCollection<Service>(_serviceRepository.GetAll());
|
||||
|
|
@ -56,7 +54,6 @@ namespace AutoService.ViewModels
|
|||
[RelayCommand]
|
||||
public async Task StartWorksWindowAsync()
|
||||
{
|
||||
var _currentWindow = (App.Current.ApplicationLifetime as IClassicDesktopStyleApplicationLifetime).MainWindow;
|
||||
if (ClientName.Length > 2 && AutoModel.Length > 2)
|
||||
{
|
||||
if (!_container.StringValues.ContainsKey("ClientName"))
|
||||
|
|
@ -75,13 +72,11 @@ namespace AutoService.ViewModels
|
|||
{
|
||||
_container.StringValues["AutoModel"] = AutoModel;
|
||||
}
|
||||
_container.SelectedService = SelectedService;
|
||||
|
||||
var vm = _serviceProvider.GetRequiredService<WorksWindowVM>();
|
||||
var win = _serviceProvider.GetRequiredService<WorksWindow>();
|
||||
win.DataContext = vm;
|
||||
vm.SetWindow(win);
|
||||
win.Show();
|
||||
_currentWindow.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,8 +1,6 @@
|
|||
using AutoService.Models;
|
||||
using Avalonia.Controls;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
|
|
@ -19,9 +17,6 @@ namespace AutoService.ViewModels
|
|||
|
||||
private readonly LocalContainer _localContainer;
|
||||
|
||||
private readonly IProceedRepository _proceedRepository;
|
||||
|
||||
public Button Btn { get; set; }
|
||||
|
||||
[ObservableProperty]
|
||||
private ObservableCollection<Work> works;
|
||||
|
|
@ -36,16 +31,10 @@ namespace AutoService.ViewModels
|
|||
|
||||
[ObservableProperty]
|
||||
private double totalPrice;
|
||||
private ReceiptWindow _currentWindow;
|
||||
|
||||
|
||||
|
||||
|
||||
public ReceiptWindowVM(IServiceProvider serviceProvider, ObservableCollection<Work> works, LocalContainer localContainer, ProceedRepository proceedRepository)
|
||||
public ReceiptWindowVM(IServiceProvider serviceProvider, ObservableCollection<Work> works, LocalContainer localContainer)
|
||||
{
|
||||
_serviceProvider = serviceProvider;
|
||||
_localContainer = localContainer;
|
||||
_proceedRepository = proceedRepository;
|
||||
Works = works;
|
||||
foreach (var item in Works) sumPrice += item.Price;
|
||||
if (sumPrice >= 10_000) discount = 0.1;
|
||||
|
|
@ -58,33 +47,7 @@ namespace AutoService.ViewModels
|
|||
[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);
|
||||
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,8 +20,8 @@ namespace AutoService.ViewModels
|
|||
|
||||
[ObservableProperty]
|
||||
private ObservableCollection<WorkIsChecked> works;
|
||||
private WorksWindow _currentWindow;
|
||||
|
||||
|
||||
public WorksWindowVM(IServiceProvider serviceProvider, IWorkRepository workRepository, LocalContainer container)
|
||||
{
|
||||
_serviceProvider = serviceProvider;
|
||||
|
|
@ -47,18 +47,10 @@ namespace AutoService.ViewModels
|
|||
{
|
||||
if (work.IsChecked) selectedWorks.Add(work.Work);
|
||||
}
|
||||
var procRep = _serviceProvider.GetRequiredService<IProceedRepository>();
|
||||
var vm = ActivatorUtilities.CreateInstance<ReceiptWindowVM>(_serviceProvider, selectedWorks, _localContainer, procRep);
|
||||
var vm = ActivatorUtilities.CreateInstance<ReceiptWindowVM>(_serviceProvider, selectedWorks, _localContainer);
|
||||
var win = _serviceProvider.GetRequiredService<ReceiptWindow>();
|
||||
win.DataContext = vm;
|
||||
vm.SetWindow(win);
|
||||
vm.Btn = win.ProceedBtn;
|
||||
win.Show();
|
||||
_currentWindow.Close();
|
||||
}
|
||||
public void SetWindow(WorksWindow window)
|
||||
{
|
||||
_currentWindow = window;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,8 +28,6 @@
|
|||
<TextBlock Text="Итого к оплате: "/>
|
||||
<TextBlock Text="{Binding TotalPrice}"/>
|
||||
</StackPanel>
|
||||
<Button Content="Подтвердить!" Command="{Binding ProceedTransactionCommand}" x:Name="ProceedBtn"/>
|
||||
<Button Content="Вернуться в окно выбора услуг" Command="{Binding ReturnToMainCommand}"/>
|
||||
|
||||
<Button Content="Подтвердить!" Command="{Binding ProceedTransactionCommand}"/>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
|
|
|
|||
Loading…
Reference in New Issue