че а ниче
This commit is contained in:
parent
e38f6cc36f
commit
1c7becb81c
1
.gitignore
vendored
1
.gitignore
vendored
@ -14,6 +14,7 @@
|
|||||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
*.userprefs
|
*.userprefs
|
||||||
ImplementationExtensions
|
ImplementationExtensions
|
||||||
|
BusinessLogicExtensions
|
||||||
|
|
||||||
# Mono auto generated files
|
# Mono auto generated files
|
||||||
mono_crash.*
|
mono_crash.*
|
||||||
|
@ -39,6 +39,7 @@ namespace SushiBarView
|
|||||||
{
|
{
|
||||||
column.Width = columnAttr.Width;
|
column.Width = columnAttr.Width;
|
||||||
}
|
}
|
||||||
|
column.DefaultCellStyle.Format = columnAttr.Format;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using SushiBarContracts.BusinessLogicsContracts;
|
using SushiBarContracts.BusinessLogicsContracts;
|
||||||
|
using SushiBarContracts.DI;
|
||||||
|
|
||||||
namespace SushiBarView
|
namespace SushiBarView
|
||||||
{
|
{
|
||||||
@ -40,13 +41,7 @@ namespace SushiBarView
|
|||||||
CurrentPage = currentPage
|
CurrentPage = currentPage
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (list != null)
|
dataGridView.FillAndConfigGrid(list);
|
||||||
{
|
|
||||||
dataGridView.DataSource = list;
|
|
||||||
dataGridView.Columns["ClientId"].Visible = false;
|
|
||||||
dataGridView.Columns["MessageId"].Visible = false;
|
|
||||||
dataGridView.Columns["Body"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
|
|
||||||
}
|
|
||||||
labelPage.Text = "c. " + currentPage;
|
labelPage.Text = "c. " + currentPage;
|
||||||
_logger.LogInformation("Загрузка писем");
|
_logger.LogInformation("Загрузка писем");
|
||||||
}
|
}
|
||||||
@ -75,7 +70,7 @@ namespace SushiBarView
|
|||||||
{
|
{
|
||||||
if (dataGridView.SelectedRows.Count == 1)
|
if (dataGridView.SelectedRows.Count == 1)
|
||||||
{
|
{
|
||||||
var service = Program.ServiceProvider?.GetService(typeof(FormMail));
|
var service = DependencyManager.Instance.Resolve<FormMail>();
|
||||||
if (service is FormMail form)
|
if (service is FormMail form)
|
||||||
{
|
{
|
||||||
form.MessageId = Convert.ToString(dataGridView.SelectedRows[0].Cells["MessageId"].Value);
|
form.MessageId = Convert.ToString(dataGridView.SelectedRows[0].Cells["MessageId"].Value);
|
||||||
|
@ -175,7 +175,7 @@ namespace SushiBarView
|
|||||||
|
|
||||||
private void ShopSushiToolStripMenuItem_Click(object sender, EventArgs e)
|
private void ShopSushiToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var service = Program.ServiceProvider?.GetService(typeof(FormReportShopListSushi));
|
var service = DependencyManager.Instance.Resolve<FormReportShopListSushi>();
|
||||||
if (service is FormReportShopListSushi form)
|
if (service is FormReportShopListSushi form)
|
||||||
{
|
{
|
||||||
form.ShowDialog();
|
form.ShowDialog();
|
||||||
@ -193,7 +193,7 @@ namespace SushiBarView
|
|||||||
|
|
||||||
private void OrdersGroupedByDateToolStripMenuItem_Click(object sender, EventArgs e)
|
private void OrdersGroupedByDateToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var service = Program.ServiceProvider?.GetService(typeof(FormReportOrdersGroupedByDate));
|
var service = DependencyManager.Instance.Resolve<FormReportOrdersGroupedByDate>();
|
||||||
if (service is FormReportOrdersGroupedByDate form)
|
if (service is FormReportOrdersGroupedByDate form)
|
||||||
{
|
{
|
||||||
form.ShowDialog();
|
form.ShowDialog();
|
||||||
@ -202,7 +202,7 @@ namespace SushiBarView
|
|||||||
|
|
||||||
private void ShopsToolStripMenuItem_Click(object sender, EventArgs e)
|
private void ShopsToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var service = Program.ServiceProvider?.GetService(typeof(FormShops));
|
var service = DependencyManager.Instance.Resolve<FormShops>();
|
||||||
if (service is FormShops form)
|
if (service is FormShops form)
|
||||||
{
|
{
|
||||||
form.ShowDialog();
|
form.ShowDialog();
|
||||||
@ -211,7 +211,7 @@ namespace SushiBarView
|
|||||||
|
|
||||||
private void ButtonAddSushiInShop_Click(object sender, EventArgs e)
|
private void ButtonAddSushiInShop_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var service = Program.ServiceProvider?.GetService(typeof(FormShopSushi));
|
var service = DependencyManager.Instance.Resolve<FormShopSushi>();
|
||||||
if (service is FormShopSushi form)
|
if (service is FormShopSushi form)
|
||||||
{
|
{
|
||||||
form.ShowDialog();
|
form.ShowDialog();
|
||||||
@ -220,7 +220,7 @@ namespace SushiBarView
|
|||||||
|
|
||||||
private void ButtonSellSushi_Click(object sender, EventArgs e)
|
private void ButtonSellSushi_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var service = Program.ServiceProvider?.GetService(typeof(FormSellSushi));
|
var service = DependencyManager.Instance.Resolve<FormSellSushi>();
|
||||||
if (service is FormSellSushi form)
|
if (service is FormSellSushi form)
|
||||||
{
|
{
|
||||||
form.ShowDialog();
|
form.ShowDialog();
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using SushiBarContracts.BindingModels;
|
using SushiBarContracts.BindingModels;
|
||||||
using SushiBarContracts.BusinessLogicsContracts;
|
using SushiBarContracts.BusinessLogicsContracts;
|
||||||
|
using SushiBarContracts.DI;
|
||||||
|
|
||||||
namespace SushiBarView
|
namespace SushiBarView
|
||||||
{
|
{
|
||||||
@ -22,14 +23,7 @@ namespace SushiBarView
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var list = _logic.ReadList(null);
|
dataGridView.FillAndConfigGrid(_logic.ReadList(null));
|
||||||
if (list != null)
|
|
||||||
{
|
|
||||||
dataGridView.DataSource = list;
|
|
||||||
dataGridView.Columns["Id"].Visible = false;
|
|
||||||
dataGridView.Columns["ListSushi"].Visible = false;
|
|
||||||
dataGridView.Columns["ShopName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
|
|
||||||
}
|
|
||||||
_logger.LogInformation("Загрузка магазинов");
|
_logger.LogInformation("Загрузка магазинов");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@ -41,7 +35,7 @@ namespace SushiBarView
|
|||||||
}
|
}
|
||||||
private void ButtonAdd_Click(object sender, EventArgs e)
|
private void ButtonAdd_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var service = Program.ServiceProvider?.GetService(typeof(FormShop));
|
var service = DependencyManager.Instance.Resolve<FormShop>();
|
||||||
if (service is FormShop form)
|
if (service is FormShop form)
|
||||||
{
|
{
|
||||||
if (form.ShowDialog() == DialogResult.OK)
|
if (form.ShowDialog() == DialogResult.OK)
|
||||||
@ -54,7 +48,7 @@ namespace SushiBarView
|
|||||||
{
|
{
|
||||||
if (dataGridView.SelectedRows.Count == 1)
|
if (dataGridView.SelectedRows.Count == 1)
|
||||||
{
|
{
|
||||||
var service = Program.ServiceProvider?.GetService(typeof(FormShop));
|
var service = DependencyManager.Instance.Resolve<FormShop>();
|
||||||
if (service is FormShop form)
|
if (service is FormShop form)
|
||||||
{
|
{
|
||||||
form.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value);
|
form.Id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value);
|
||||||
|
@ -59,22 +59,6 @@ namespace SushiBarView
|
|||||||
option.SetMinimumLevel(LogLevel.Information);
|
option.SetMinimumLevel(LogLevel.Information);
|
||||||
option.AddNLog("nlog.config");
|
option.AddNLog("nlog.config");
|
||||||
});
|
});
|
||||||
;
|
|
||||||
DependencyManager.Instance.RegisterType<IClientLogic, ClientLogic>();
|
|
||||||
DependencyManager.Instance.RegisterType<IIngredientLogic, IngredientLogic>();
|
|
||||||
DependencyManager.Instance.RegisterType<IOrderLogic, OrderLogic>();
|
|
||||||
DependencyManager.Instance.RegisterType<ISushiLogic, SushiLogic>();
|
|
||||||
DependencyManager.Instance.RegisterType<IReportLogic, ReportLogic>();
|
|
||||||
DependencyManager.Instance.RegisterType<IImplementerLogic, ImplementerLogic>();
|
|
||||||
DependencyManager.Instance.RegisterType<IMessageInfoLogic, MessageInfoLogic>();
|
|
||||||
DependencyManager.Instance.RegisterType<IBackUpLogic, BackUpLogic>();
|
|
||||||
|
|
||||||
DependencyManager.Instance.RegisterType<IWorkProcess, WorkModeling>();
|
|
||||||
DependencyManager.Instance.RegisterType<AbstractMailWorker, MailKitWorker>(true);
|
|
||||||
|
|
||||||
DependencyManager.Instance.RegisterType<AbstractSaveToExcel, SaveToExcel>();
|
|
||||||
DependencyManager.Instance.RegisterType<AbstractSaveToWord, SaveToWord>();
|
|
||||||
DependencyManager.Instance.RegisterType<AbstractSaveToPdf, SaveToPdf>();
|
|
||||||
|
|
||||||
DependencyManager.Instance.RegisterType<FormMain>();
|
DependencyManager.Instance.RegisterType<FormMain>();
|
||||||
DependencyManager.Instance.RegisterType<FormClients>();
|
DependencyManager.Instance.RegisterType<FormClients>();
|
||||||
@ -89,6 +73,7 @@ namespace SushiBarView
|
|||||||
DependencyManager.Instance.RegisterType<FormImplementers>();
|
DependencyManager.Instance.RegisterType<FormImplementers>();
|
||||||
DependencyManager.Instance.RegisterType<FormImplementer>();
|
DependencyManager.Instance.RegisterType<FormImplementer>();
|
||||||
DependencyManager.Instance.RegisterType<FormMails>();
|
DependencyManager.Instance.RegisterType<FormMails>();
|
||||||
|
DependencyManager.Instance.RegisterType<FormMail>();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void MailCheck(object obj) => DependencyManager.Instance.Resolve<AbstractMailWorker>()?.MailCheck();
|
private static void MailCheck(object obj) => DependencyManager.Instance.Resolve<AbstractMailWorker>()?.MailCheck();
|
||||||
|
34
SushiBar/SushiBarBusinessLogic/BusinessLogicExtension.cs
Normal file
34
SushiBar/SushiBarBusinessLogic/BusinessLogicExtension.cs
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
using SushiBarBusinessLogic.BusinessLogics;
|
||||||
|
using SushiBarBusinessLogic.MailWorker;
|
||||||
|
using SushiBarBusinessLogic.OfficePackage.Implements;
|
||||||
|
using SushiBarBusinessLogic.OfficePackage;
|
||||||
|
using SushiBarContracts.BusinessLogicsContracts;
|
||||||
|
using SushiBarContracts.DI;
|
||||||
|
|
||||||
|
namespace SushiBarBusinessLogic
|
||||||
|
{
|
||||||
|
public class BusinessLogicExtension : IBusinessLogicExtension
|
||||||
|
{
|
||||||
|
public int Priority => 0;
|
||||||
|
|
||||||
|
public void RegisterServices()
|
||||||
|
{
|
||||||
|
DependencyManager.Instance.RegisterType<IClientLogic, ClientLogic>();
|
||||||
|
DependencyManager.Instance.RegisterType<IIngredientLogic, IngredientLogic>();
|
||||||
|
DependencyManager.Instance.RegisterType<IOrderLogic, OrderLogic>();
|
||||||
|
DependencyManager.Instance.RegisterType<ISushiLogic, SushiLogic>();
|
||||||
|
DependencyManager.Instance.RegisterType<IReportLogic, ReportLogic>();
|
||||||
|
DependencyManager.Instance.RegisterType<IImplementerLogic, ImplementerLogic>();
|
||||||
|
DependencyManager.Instance.RegisterType<IMessageInfoLogic, MessageInfoLogic>();
|
||||||
|
DependencyManager.Instance.RegisterType<IBackUpLogic, BackUpLogic>();
|
||||||
|
DependencyManager.Instance.RegisterType<IShopLogic, ShopLogic>();
|
||||||
|
|
||||||
|
DependencyManager.Instance.RegisterType<IWorkProcess, WorkModeling>();
|
||||||
|
DependencyManager.Instance.RegisterType<AbstractMailWorker, MailKitWorker>(true);
|
||||||
|
|
||||||
|
DependencyManager.Instance.RegisterType<AbstractSaveToExcel, SaveToExcel>();
|
||||||
|
DependencyManager.Instance.RegisterType<AbstractSaveToWord, SaveToWord>();
|
||||||
|
DependencyManager.Instance.RegisterType<AbstractSaveToPdf, SaveToPdf>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -23,4 +23,8 @@
|
|||||||
<ProjectReference Include="..\SushiBarContracts\SushiBarContracts.csproj" />
|
<ProjectReference Include="..\SushiBarContracts\SushiBarContracts.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
|
||||||
|
<Exec Command="copy /Y "$(TargetDir)*.dll" "$(SolutionDir)BusinessLogicExtensions\*.dll"" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
@ -13,13 +13,16 @@
|
|||||||
|
|
||||||
public bool IsUseAutoSize { get; private set; }
|
public bool IsUseAutoSize { get; private set; }
|
||||||
|
|
||||||
public ColumnAttribute(string title = "", bool visible = true, int width = 0, GridViewAutoSize gridViewAutoSize = GridViewAutoSize.None, bool isUseAutoSize = false)
|
public string Format { get; private set; }
|
||||||
|
|
||||||
|
public ColumnAttribute(string title = "", bool visible = true, int width = 0, GridViewAutoSize gridViewAutoSize = GridViewAutoSize.None, bool isUseAutoSize = false, string format = "")
|
||||||
{
|
{
|
||||||
Title = title;
|
Title = title;
|
||||||
Visible = visible;
|
Visible = visible;
|
||||||
Width = width;
|
Width = width;
|
||||||
GridViewAutoSize = gridViewAutoSize;
|
GridViewAutoSize = gridViewAutoSize;
|
||||||
IsUseAutoSize = isUseAutoSize;
|
IsUseAutoSize = isUseAutoSize;
|
||||||
|
Format = format;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -23,12 +23,14 @@ namespace SushiBarContracts.DI
|
|||||||
public static void InitDependency()
|
public static void InitDependency()
|
||||||
{
|
{
|
||||||
var ext = ServiceProviderLoader.GetImplementationExtensions();
|
var ext = ServiceProviderLoader.GetImplementationExtensions();
|
||||||
if (ext == null)
|
var extLogic = ServiceProviderLoader.GetBusinessLogicExtensions();
|
||||||
|
if (ext == null || extLogic == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException("Отсутствуют компоненты для загрузки зависимостей по модулям");
|
throw new ArgumentNullException("Отсутствуют компоненты для загрузки зависимостей по модулям");
|
||||||
}
|
}
|
||||||
// регистрируем зависимости
|
// регистрируем зависимости
|
||||||
ext.RegisterServices();
|
ext.RegisterServices();
|
||||||
|
extLogic.RegisterServices();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
11
SushiBar/SushiBarContracts/DI/IBusinessLogicExtension.cs
Normal file
11
SushiBar/SushiBarContracts/DI/IBusinessLogicExtension.cs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
namespace SushiBarContracts.DI
|
||||||
|
{
|
||||||
|
public interface IBusinessLogicExtension
|
||||||
|
{
|
||||||
|
public int Priority { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// Регистрация сервисов
|
||||||
|
/// </summary>
|
||||||
|
public void RegisterServices();
|
||||||
|
}
|
||||||
|
}
|
@ -37,6 +37,39 @@ namespace SushiBarContracts.DI
|
|||||||
return source;
|
return source;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Загрузка всех классов-реализаций IBusinessLogicExtension
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static IBusinessLogicExtension? GetBusinessLogicExtensions()
|
||||||
|
{
|
||||||
|
IBusinessLogicExtension? source = null;
|
||||||
|
var files = Directory.GetFiles(TryGetBusinessLogicExtensionsFolder(), "*.dll", SearchOption.AllDirectories);
|
||||||
|
foreach (var file in files.Distinct())
|
||||||
|
{
|
||||||
|
Assembly asm = Assembly.LoadFrom(file);
|
||||||
|
foreach (var t in asm.GetExportedTypes())
|
||||||
|
{
|
||||||
|
if (t.IsClass && typeof(IBusinessLogicExtension).IsAssignableFrom(t))
|
||||||
|
{
|
||||||
|
if (source == null)
|
||||||
|
{
|
||||||
|
source = (IBusinessLogicExtension)Activator.CreateInstance(t)!;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var newSource = (IBusinessLogicExtension)Activator.CreateInstance(t)!;
|
||||||
|
if (newSource.Priority > source.Priority)
|
||||||
|
{
|
||||||
|
source = newSource;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return source;
|
||||||
|
}
|
||||||
|
|
||||||
private static string TryGetImplementationExtensionsFolder()
|
private static string TryGetImplementationExtensionsFolder()
|
||||||
{
|
{
|
||||||
var directory = new DirectoryInfo(Directory.GetCurrentDirectory());
|
var directory = new DirectoryInfo(Directory.GetCurrentDirectory());
|
||||||
@ -46,5 +79,15 @@ namespace SushiBarContracts.DI
|
|||||||
}
|
}
|
||||||
return $"{directory?.FullName}\\ImplementationExtensions";
|
return $"{directory?.FullName}\\ImplementationExtensions";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static string TryGetBusinessLogicExtensionsFolder()
|
||||||
|
{
|
||||||
|
var directory = new DirectoryInfo(Directory.GetCurrentDirectory());
|
||||||
|
while (directory != null && !directory.GetDirectories("BusinessLogicExtensions", SearchOption.AllDirectories).Any(x => x.Name == "BusinessLogicExtensions"))
|
||||||
|
{
|
||||||
|
directory = directory.Parent;
|
||||||
|
}
|
||||||
|
return $"{directory?.FullName}\\BusinessLogicExtensions";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -9,7 +9,7 @@ namespace SushiBarContracts.ViewModels
|
|||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
[Column(title: "Ингредиент", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)]
|
[Column(title: "Ингредиент", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)]
|
||||||
public string IngredientName { get; set; } = string.Empty;
|
public string IngredientName { get; set; } = string.Empty;
|
||||||
[Column(title: "Цена", width: 150)]
|
[Column(title: "Цена", width: 150, format: "c2")]
|
||||||
public double Cost { get; set; }
|
public double Cost { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
using SushiBarContracts.Attributes;
|
using SushiBarContracts.Attributes;
|
||||||
using SushiBarDataModels.Models;
|
using SushiBarDataModels.Models;
|
||||||
using System.ComponentModel;
|
|
||||||
|
|
||||||
namespace SushiBarContracts.ViewModels
|
namespace SushiBarContracts.ViewModels
|
||||||
{
|
{
|
||||||
@ -15,7 +14,7 @@ namespace SushiBarContracts.ViewModels
|
|||||||
[Column(title: "Отправитель", width: 150)]
|
[Column(title: "Отправитель", width: 150)]
|
||||||
public string SenderName { get; set; } = string.Empty;
|
public string SenderName { get; set; } = string.Empty;
|
||||||
|
|
||||||
[Column(title: "Дата письма", width: 150)]
|
[Column(title: "Дата письма", width: 150, format: "g")]
|
||||||
public DateTime DateDelivery { get; set; }
|
public DateTime DateDelivery { get; set; }
|
||||||
|
|
||||||
[Column(title: "Заголовок", width: 150)]
|
[Column(title: "Заголовок", width: 150)]
|
||||||
@ -26,10 +25,10 @@ namespace SushiBarContracts.ViewModels
|
|||||||
|
|
||||||
[Column(visible: false)]
|
[Column(visible: false)]
|
||||||
public int Id => throw new NotImplementedException();
|
public int Id => throw new NotImplementedException();
|
||||||
[DisplayName("Прочитано")]
|
[Column(title: "Прочитано", width: 100)]
|
||||||
public bool HasRead { get; set; }
|
public bool HasRead { get; set; }
|
||||||
|
|
||||||
[DisplayName("Ответ")]
|
[Column(title: "Ответ", width: 150)]
|
||||||
public string? Answer { get; set; }
|
public string? Answer { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -22,13 +22,13 @@ namespace SushiBarContracts.ViewModels
|
|||||||
public string ImplementerFIO { get; set; } = string.Empty;
|
public string ImplementerFIO { get; set; } = string.Empty;
|
||||||
[Column(title: "Количество", width: 100)]
|
[Column(title: "Количество", width: 100)]
|
||||||
public int Count { get; set; }
|
public int Count { get; set; }
|
||||||
[Column(title: "Сумма", width: 50)]
|
[Column(title: "Сумма", width: 80, format: "c2")]
|
||||||
public double Sum { get; set; }
|
public double Sum { get; set; }
|
||||||
[Column(title: "Статус", width: 50)]
|
[Column(title: "Статус", width: 100)]
|
||||||
public OrderStatus Status { get; set; } = OrderStatus.Неизвестен;
|
public OrderStatus Status { get; set; } = OrderStatus.Неизвестен;
|
||||||
[Column(title: "Дата создания", width: 100)]
|
[Column(title: "Дата создания", width: 100, format: "g")]
|
||||||
public DateTime DateCreate { get; set; } = DateTime.Now;
|
public DateTime DateCreate { get; set; } = DateTime.Now;
|
||||||
[Column(title: "Дата выполнения", width: 100)]
|
[Column(title: "Дата выполнения", width: 100, format: "g")]
|
||||||
public DateTime? DateImplement { get; set; }
|
public DateTime? DateImplement { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,22 +1,21 @@
|
|||||||
using SushiBarDataModels.Models;
|
using SushiBarContracts.Attributes;
|
||||||
using System.ComponentModel;
|
using SushiBarDataModels.Models;
|
||||||
|
|
||||||
namespace SushiBarContracts.ViewModels
|
namespace SushiBarContracts.ViewModels
|
||||||
{
|
{
|
||||||
public class ShopViewModel : IShopModel
|
public class ShopViewModel : IShopModel
|
||||||
{
|
{
|
||||||
|
[Column(visible: false)]
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
[DisplayName("Название магазина")]
|
[Column(title: "Магазин", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)]
|
||||||
public string ShopName { get; set; } = string.Empty;
|
public string ShopName { get; set; } = string.Empty;
|
||||||
|
[Column(title: "Адрес", width: 80)]
|
||||||
[DisplayName("Адрес магазина")]
|
|
||||||
public string Address { get; set; } = string.Empty;
|
public string Address { get; set; } = string.Empty;
|
||||||
|
[Column(title: "Дата открытия", width: 80, format: "d")]
|
||||||
[DisplayName("Дата открытия")]
|
|
||||||
public DateTime DateOpening { get; set; } = DateTime.Now;
|
public DateTime DateOpening { get; set; } = DateTime.Now;
|
||||||
[DisplayName("Максимальное количество суши")]
|
[Column(title: "Максимальное количество суши", width: 80)]
|
||||||
public int MaxCountSushi { get; set; }
|
public int MaxCountSushi { get; set; }
|
||||||
|
[Column(visible: false)]
|
||||||
public Dictionary<int, (ISushiModel, int)> ListSushi
|
public Dictionary<int, (ISushiModel, int)> ListSushi
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
using SushiBarContracts.Attributes;
|
using SushiBarContracts.Attributes;
|
||||||
using SushiBarDataModels.Models;
|
using SushiBarDataModels.Models;
|
||||||
using System.ComponentModel;
|
|
||||||
|
|
||||||
namespace SushiBarContracts.ViewModels
|
namespace SushiBarContracts.ViewModels
|
||||||
{
|
{
|
||||||
@ -10,7 +9,7 @@ namespace SushiBarContracts.ViewModels
|
|||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
[Column(title: "Суши", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)]
|
[Column(title: "Суши", gridViewAutoSize: GridViewAutoSize.Fill, isUseAutoSize: true)]
|
||||||
public string SushiName { get; set; } = string.Empty;
|
public string SushiName { get; set; } = string.Empty;
|
||||||
[Column(title: "Цена", width: 150)]
|
[Column(title: "Цена", width: 150, format: "c2")]
|
||||||
public double Price { get; set; }
|
public double Price { get; set; }
|
||||||
[Column(visible: false)]
|
[Column(visible: false)]
|
||||||
public Dictionary<int, (IIngredientModel, int)> SushiIngredients
|
public Dictionary<int, (IIngredientModel, int)> SushiIngredients
|
||||||
|
@ -16,6 +16,7 @@ namespace SushiBarDatabaseImplement
|
|||||||
DependencyManager.Instance.RegisterType<IMessageInfoStorage, MessageInfoStorage>();
|
DependencyManager.Instance.RegisterType<IMessageInfoStorage, MessageInfoStorage>();
|
||||||
DependencyManager.Instance.RegisterType<IOrderStorage, OrderStorage>();
|
DependencyManager.Instance.RegisterType<IOrderStorage, OrderStorage>();
|
||||||
DependencyManager.Instance.RegisterType<ISushiStorage, SushiStorage>();
|
DependencyManager.Instance.RegisterType<ISushiStorage, SushiStorage>();
|
||||||
|
DependencyManager.Instance.RegisterType<IShopStorage, ShopStorage>();
|
||||||
DependencyManager.Instance.RegisterType<IBackUpInfo, BackUpInfo>();
|
DependencyManager.Instance.RegisterType<IBackUpInfo, BackUpInfo>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,8 +26,10 @@ namespace SushiBarDatabaseImplement.Models
|
|||||||
[DataMember]
|
[DataMember]
|
||||||
[Required]
|
[Required]
|
||||||
public string Body { get; private set; } = string.Empty;
|
public string Body { get; private set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
[Required]
|
[Required]
|
||||||
public bool HasRead { get; set; }
|
public bool HasRead { get; set; }
|
||||||
|
[DataMember]
|
||||||
public string? Answer { get; set; }
|
public string? Answer { get; set; }
|
||||||
|
|
||||||
public static Message? Create(MessageInfoBindingModel model)
|
public static Message? Create(MessageInfoBindingModel model)
|
||||||
|
@ -3,24 +3,30 @@ using SushiBarContracts.ViewModels;
|
|||||||
using SushiBarDataModels.Models;
|
using SushiBarDataModels.Models;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.Xml.Linq;
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
namespace SushiBarDatabaseImplement.Models
|
namespace SushiBarDatabaseImplement.Models
|
||||||
{
|
{
|
||||||
|
[DataContract]
|
||||||
public class Shop : IShopModel
|
public class Shop : IShopModel
|
||||||
{
|
{
|
||||||
|
[DataMember]
|
||||||
public int Id { get; private set; }
|
public int Id { get; private set; }
|
||||||
|
[DataMember]
|
||||||
[Required]
|
[Required]
|
||||||
public string ShopName { get; private set; } = string.Empty;
|
public string ShopName { get; private set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
[Required]
|
[Required]
|
||||||
public string Address { get; private set; } = string.Empty;
|
public string Address { get; private set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
[Required]
|
[Required]
|
||||||
public DateTime DateOpening { get; private set; }
|
public DateTime DateOpening { get; private set; }
|
||||||
|
[DataMember]
|
||||||
[Required]
|
[Required]
|
||||||
public int MaxCountSushi { get; private set; }
|
public int MaxCountSushi { get; private set; }
|
||||||
|
|
||||||
private Dictionary<int, (ISushiModel, int)>? _shopSushi = null;
|
private Dictionary<int, (ISushiModel, int)>? _shopSushi = null;
|
||||||
|
[DataMember]
|
||||||
[NotMapped]
|
[NotMapped]
|
||||||
public Dictionary<int, (ISushiModel, int)> ListSushi
|
public Dictionary<int, (ISushiModel, int)> ListSushi
|
||||||
{
|
{
|
||||||
@ -33,11 +39,11 @@ namespace SushiBarDatabaseImplement.Models
|
|||||||
{
|
{
|
||||||
if (_shopSushi.ContainsKey(x.SushiId))
|
if (_shopSushi.ContainsKey(x.SushiId))
|
||||||
{
|
{
|
||||||
_shopSushi[x.SushiId] = (x.Sushi as ISushiModel, _shopSushi[x.SushiId].Item2 + x.Count);
|
_shopSushi[x.SushiId] = (x.Sushi, _shopSushi[x.SushiId].Item2 + x.Count);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_shopSushi[x.SushiId] = (x.Sushi as ISushiModel, x.Count);
|
_shopSushi[x.SushiId] = (x.Sushi, x.Count);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ namespace SushiBarFileImplement
|
|||||||
DependencyManager.Instance.RegisterType<IOrderStorage, OrderStorage>();
|
DependencyManager.Instance.RegisterType<IOrderStorage, OrderStorage>();
|
||||||
DependencyManager.Instance.RegisterType<ISushiStorage, SushiStorage>();
|
DependencyManager.Instance.RegisterType<ISushiStorage, SushiStorage>();
|
||||||
DependencyManager.Instance.RegisterType<IBackUpInfo, BackUpInfo>();
|
DependencyManager.Instance.RegisterType<IBackUpInfo, BackUpInfo>();
|
||||||
|
DependencyManager.Instance.RegisterType<IShopStorage, ShopStorage>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,9 +22,9 @@ namespace SushiBarFileImplement.Models
|
|||||||
public string Subject { get; private set; } = string.Empty;
|
public string Subject { get; private set; } = string.Empty;
|
||||||
[DataMember]
|
[DataMember]
|
||||||
public string Body { get; private set; } = string.Empty;
|
public string Body { get; private set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
public bool HasRead { get; set; }
|
public bool HasRead { get; set; }
|
||||||
|
[DataMember]
|
||||||
public string? Answer { get; set; }
|
public string? Answer { get; set; }
|
||||||
|
|
||||||
public static Message? Create(MessageInfoBindingModel model)
|
public static Message? Create(MessageInfoBindingModel model)
|
||||||
@ -40,6 +40,9 @@ namespace SushiBarFileImplement.Models
|
|||||||
DateDelivery = model.DateDelivery,
|
DateDelivery = model.DateDelivery,
|
||||||
SenderName = model.SenderName,
|
SenderName = model.SenderName,
|
||||||
ClientId = model.ClientId,
|
ClientId = model.ClientId,
|
||||||
|
MessageId = model.MessageId,
|
||||||
|
HasRead = model.HasRead,
|
||||||
|
Answer = model.Answer
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,6 +82,9 @@ namespace SushiBarFileImplement.Models
|
|||||||
DateDelivery = DateDelivery,
|
DateDelivery = DateDelivery,
|
||||||
SenderName = SenderName,
|
SenderName = SenderName,
|
||||||
ClientId = ClientId,
|
ClientId = ClientId,
|
||||||
|
MessageId = MessageId,
|
||||||
|
HasRead = HasRead,
|
||||||
|
Answer = Answer
|
||||||
};
|
};
|
||||||
|
|
||||||
public XElement GetXElement => new("MessageInfo",
|
public XElement GetXElement => new("MessageInfo",
|
||||||
@ -87,6 +93,9 @@ namespace SushiBarFileImplement.Models
|
|||||||
new XAttribute("ClientId", ClientId),
|
new XAttribute("ClientId", ClientId),
|
||||||
new XAttribute("MessageId", MessageId),
|
new XAttribute("MessageId", MessageId),
|
||||||
new XAttribute("SenderName", SenderName),
|
new XAttribute("SenderName", SenderName),
|
||||||
|
new XAttribute("DateDelivery", DateDelivery),
|
||||||
|
new XAttribute("HasRead", HasRead),
|
||||||
|
new XAttribute("Answer", Answer)
|
||||||
);
|
);
|
||||||
|
|
||||||
public int Id => throw new NotImplementedException();
|
public int Id => throw new NotImplementedException();
|
||||||
|
@ -2,17 +2,23 @@
|
|||||||
using SushiBarContracts.BindingModels;
|
using SushiBarContracts.BindingModels;
|
||||||
using SushiBarContracts.ViewModels;
|
using SushiBarContracts.ViewModels;
|
||||||
using SushiBarDataModels.Models;
|
using SushiBarDataModels.Models;
|
||||||
using System.Reflection.Metadata;
|
using System.Runtime.Serialization;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
|
|
||||||
namespace SushiBarFileImplement.Models
|
namespace SushiBarFileImplement.Models
|
||||||
{
|
{
|
||||||
|
[DataContract]
|
||||||
public class Shop : IShopModel
|
public class Shop : IShopModel
|
||||||
{
|
{
|
||||||
|
[DataMember]
|
||||||
public int Id { get; private set; }
|
public int Id { get; private set; }
|
||||||
|
[DataMember]
|
||||||
public string ShopName { get; private set; } = string.Empty;
|
public string ShopName { get; private set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
public string Address { get; private set; } = string.Empty;
|
public string Address { get; private set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
public DateTime DateOpening { get; private set; }
|
public DateTime DateOpening { get; private set; }
|
||||||
|
[DataMember]
|
||||||
public int MaxCountSushi { get; private set; }
|
public int MaxCountSushi { get; private set; }
|
||||||
public Dictionary<int, int> CountSushi
|
public Dictionary<int, int> CountSushi
|
||||||
{
|
{
|
||||||
@ -21,6 +27,7 @@ namespace SushiBarFileImplement.Models
|
|||||||
} = new();
|
} = new();
|
||||||
|
|
||||||
private Dictionary<int, (ISushiModel, int)>? _shopSushi = null;
|
private Dictionary<int, (ISushiModel, int)>? _shopSushi = null;
|
||||||
|
[DataMember]
|
||||||
public Dictionary<int, (ISushiModel, int)> ListSushi
|
public Dictionary<int, (ISushiModel, int)> ListSushi
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -17,6 +17,7 @@ namespace SushiBarListImplement
|
|||||||
DependencyManager.Instance.RegisterType<IOrderStorage, OrderStorage>();
|
DependencyManager.Instance.RegisterType<IOrderStorage, OrderStorage>();
|
||||||
DependencyManager.Instance.RegisterType<ISushiStorage, SushiStorage>();
|
DependencyManager.Instance.RegisterType<ISushiStorage, SushiStorage>();
|
||||||
DependencyManager.Instance.RegisterType<IBackUpInfo, BackUpInfo>();
|
DependencyManager.Instance.RegisterType<IBackUpInfo, BackUpInfo>();
|
||||||
|
DependencyManager.Instance.RegisterType<IShopStorage, ShopStorage>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,26 +1,28 @@
|
|||||||
using SushiBarContracts.BindingModels;
|
using SushiBarContracts.BindingModels;
|
||||||
using SushiBarContracts.ViewModels;
|
using SushiBarContracts.ViewModels;
|
||||||
using SushiBarDataModels.Models;
|
using SushiBarDataModels.Models;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
namespace SushiBarListImplement.Models
|
namespace SushiBarListImplement.Models
|
||||||
{
|
{
|
||||||
|
[DataContract]
|
||||||
public class Message : IMessageInfoModel
|
public class Message : IMessageInfoModel
|
||||||
{
|
{
|
||||||
|
[DataMember]
|
||||||
public string MessageId { get; private set; } = string.Empty;
|
public string MessageId { get; private set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
public int? ClientId { get; private set; }
|
public int? ClientId { get; private set; }
|
||||||
|
[DataMember]
|
||||||
public string SenderName { get; private set; } = string.Empty;
|
public string SenderName { get; private set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
public DateTime DateDelivery { get; private set; } = DateTime.Now;
|
public DateTime DateDelivery { get; private set; } = DateTime.Now;
|
||||||
|
[DataMember]
|
||||||
public string Subject { get; private set; } = string.Empty;
|
public string Subject { get; private set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
public string Body { get; private set; } = string.Empty;
|
public string Body { get; private set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
public bool HasRead { get; set; }
|
public bool HasRead { get; set; }
|
||||||
|
[DataMember]
|
||||||
public string? Answer { get; set; }
|
public string? Answer { get; set; }
|
||||||
|
|
||||||
public static Message? Create(MessageInfoBindingModel model)
|
public static Message? Create(MessageInfoBindingModel model)
|
||||||
|
@ -1,15 +1,22 @@
|
|||||||
using SushiBarContracts.BindingModels;
|
using SushiBarContracts.BindingModels;
|
||||||
using SushiBarContracts.ViewModels;
|
using SushiBarContracts.ViewModels;
|
||||||
using SushiBarDataModels.Models;
|
using SushiBarDataModels.Models;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
namespace SushiBarListImplement.Models
|
namespace SushiBarListImplement.Models
|
||||||
{
|
{
|
||||||
|
[DataContract]
|
||||||
public class Shop : IShopModel
|
public class Shop : IShopModel
|
||||||
{
|
{
|
||||||
|
[DataMember]
|
||||||
public int Id { get; private set; }
|
public int Id { get; private set; }
|
||||||
|
[DataMember]
|
||||||
public string ShopName { get; private set; } = string.Empty;
|
public string ShopName { get; private set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
public string Address { get; private set; } = string.Empty;
|
public string Address { get; private set; } = string.Empty;
|
||||||
|
[DataMember]
|
||||||
public DateTime DateOpening { get; private set; }
|
public DateTime DateOpening { get; private set; }
|
||||||
|
[DataMember]
|
||||||
public Dictionary<int, (ISushiModel, int)> ListSushi
|
public Dictionary<int, (ISushiModel, int)> ListSushi
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
|
Loading…
Reference in New Issue
Block a user