Compare commits
8 Commits
main
...
BusinessLo
Author | SHA1 | Date | |
---|---|---|---|
|
8770645a82 | ||
|
f931b8c14e | ||
|
47d59c7bfb | ||
|
4b0183ae91 | ||
6a7395b3b5 | |||
|
9c049cd819 | ||
|
2587d43871 | ||
|
3b361e18fc |
ElectronicsShop
ElectronicsShop.sln
ElectronicsShopBusinessLogic
ElectronicsShopContracts
BindingModels
CategoryProductBindingModel.csClientBindingModel.csOrderBindingModel.csProductBindingModel.csRoleBindingModel.csShopAssistentBindingModel.cs
BusinessLogicContracts
ICategoryProductLogic.csIClientLogic.csIOrderLogic.csIProductLogic.csIRoleLogic.csShopAssistentLogic.cs
ElectronicsShopContracts.csprojSearchModels
CategoryProductSearchModel.csClientSearchModel.csOrderSearchModel.csProductSearchModel.csRoleSearchModel.csShopAssistentSearchModel.cs
StorageContracts
ICategoryProductStorage.csIClientStorage.csIOrderStorage.csIProductStorage.csIRoleStorage.csIShopAssistentStorage.cs
ViewModels
ElectronicsShopDataModels
@ -3,7 +3,31 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
|||||||
# Visual Studio Version 17
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 17.9.34728.123
|
VisualStudioVersion = 17.9.34728.123
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElectronicsShopDataModels", "ElectronicsShopDataModels\ElectronicsShopDataModels.csproj", "{380E3833-D9AE-46C7-8881-9B15B8559411}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElectronicsShopContracts", "ElectronicsShopContracts\ElectronicsShopContracts.csproj", "{69411E41-F304-4D1B-8F15-48DD08585C7A}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElectronicsShopBusinessLogic", "ElectronicsShopBusinessLogic\ElectronicsShopBusinessLogic.csproj", "{0CCDB712-EE03-4050-AC4B-4315FF14ABD2}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{380E3833-D9AE-46C7-8881-9B15B8559411}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{380E3833-D9AE-46C7-8881-9B15B8559411}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{380E3833-D9AE-46C7-8881-9B15B8559411}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{380E3833-D9AE-46C7-8881-9B15B8559411}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{69411E41-F304-4D1B-8F15-48DD08585C7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{69411E41-F304-4D1B-8F15-48DD08585C7A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{69411E41-F304-4D1B-8F15-48DD08585C7A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{69411E41-F304-4D1B-8F15-48DD08585C7A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{0CCDB712-EE03-4050-AC4B-4315FF14ABD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{0CCDB712-EE03-4050-AC4B-4315FF14ABD2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{0CCDB712-EE03-4050-AC4B-4315FF14ABD2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{0CCDB712-EE03-4050-AC4B-4315FF14ABD2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
|
@ -0,0 +1,119 @@
|
|||||||
|
using ElectronicsShopContracts.BindingModels;
|
||||||
|
using ElectronicsShopContracts.BusinessLogicContracts;
|
||||||
|
using ElectronicsShopContracts.SearchModels;
|
||||||
|
using ElectronicsShopContracts.StorageContracts;
|
||||||
|
using ElectronicsShopContracts.ViewModels;
|
||||||
|
using ElectronicsShopDataModels.Enums;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopBusinessLogic.BusinessLogic
|
||||||
|
{
|
||||||
|
public class OrderLogic : IOrderLogic
|
||||||
|
{
|
||||||
|
private readonly ILogger _logger;
|
||||||
|
//private readonly IOrderStorage _storage;
|
||||||
|
|
||||||
|
// todo нет интерфейса хранилища
|
||||||
|
public OrderLogic(ILogger<OrderLogic> logger) {
|
||||||
|
_logger = logger;
|
||||||
|
//storage = _storage;
|
||||||
|
}
|
||||||
|
public bool CreateOrder(OrderBindingModel model)
|
||||||
|
{
|
||||||
|
CheckModel(model);
|
||||||
|
model.Status = OrderStatus.Принят;
|
||||||
|
// todo _orderStorage.Insert(model) == null
|
||||||
|
if (model == null) {
|
||||||
|
_logger.LogInformation("Insert operation failed");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool DeliveryOrder(OrderBindingModel model)
|
||||||
|
{
|
||||||
|
return StatusUpdate(model, OrderStatus.Выдан);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool FinishOrder(OrderBindingModel model)
|
||||||
|
{
|
||||||
|
return StatusUpdate(model, OrderStatus.Готов);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool TakeOrderInWork(OrderBindingModel model)
|
||||||
|
{
|
||||||
|
return StatusUpdate(model, OrderStatus.Выполняется);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<OrderViewModel>? ReadList(OrderSearchModel? model)
|
||||||
|
{
|
||||||
|
_logger.LogInformation($"ReadList:ID:{model?.ID}");
|
||||||
|
// todo model == null? _orderStorage.GetFullList() : _orderStorage.GetFilteredList(model);
|
||||||
|
var list = model;
|
||||||
|
if (list == null) {
|
||||||
|
_logger.LogWarning("ReadList return null list");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
// todo "$ReadList.Count:{list.count}"
|
||||||
|
_logger.LogInformation("ReadList.Count:{Count}");
|
||||||
|
//todo return list
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CheckModel(OrderBindingModel model, bool withParams = true) {
|
||||||
|
if (model == null) {
|
||||||
|
throw new ArgumentNullException(nameof(model));
|
||||||
|
}
|
||||||
|
if (!withParams) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty((model.ID).ToString())) {
|
||||||
|
throw new ArgumentNullException("Нет ID заказа", nameof(model.ID));
|
||||||
|
}
|
||||||
|
if (model.Sum <= 0) {
|
||||||
|
throw new ArgumentNullException("Цена зака должна быть больше 0", nameof(model.Sum));
|
||||||
|
}
|
||||||
|
_logger.LogInformation($"Order. ID:{model.ID}.Sum:{model.Sum}.Status:{model.Status}.PaymeantOption:{model.PaymeantOption}." +
|
||||||
|
$"DateCreate:{model.DateCreate}.DataImplement:{model.DateImplemet}");
|
||||||
|
}
|
||||||
|
private bool StatusUpdate(OrderBindingModel model, OrderStatus newOrderStatus)
|
||||||
|
{
|
||||||
|
CheckModel(model, false);
|
||||||
|
//todo
|
||||||
|
var viewModel = model; // model == _orderStorage.GetElement(new OrderSearchModel { ID = model.ID });
|
||||||
|
if (viewModel == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(model));
|
||||||
|
}
|
||||||
|
if (viewModel.Status + 1 != newOrderStatus)
|
||||||
|
{
|
||||||
|
_logger.LogWarning("Status update to " + newOrderStatus.ToString() + " operation failed.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
model.Status = newOrderStatus;
|
||||||
|
if (model.Status == OrderStatus.Готов)
|
||||||
|
{
|
||||||
|
//todo подключить бд
|
||||||
|
//model.DateImplement = DateTime.Now;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// todo подключить бд
|
||||||
|
//model.DateImplement = viewModel.DateImplement;
|
||||||
|
}
|
||||||
|
// todo
|
||||||
|
// _orderStorage.Update(model) == null
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
_logger.LogWarning("Update operarion failed");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,104 @@
|
|||||||
|
using ElectronicsShopContracts.BindingModels;
|
||||||
|
using ElectronicsShopContracts.BusinessLogicContracts;
|
||||||
|
using ElectronicsShopContracts.SearchModels;
|
||||||
|
using ElectronicsShopContracts.ViewModels;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopBusinessLogic.BusinessLogic
|
||||||
|
{
|
||||||
|
public class RoleLogic : IRoleLogic
|
||||||
|
{
|
||||||
|
private readonly ILogger _logger;
|
||||||
|
//private readonly ICategoryProductStorage _storage;
|
||||||
|
|
||||||
|
// todo нет интерфейса хранилища
|
||||||
|
public RoleLogic(ILogger<RoleLogic> logger)
|
||||||
|
{
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Create(RoleBindingModel model)
|
||||||
|
{
|
||||||
|
CheckModel(model);
|
||||||
|
// todo _storage.Insert(model) == null
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
_logger.LogWarning("Insert operation failed");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Delete(RoleBindingModel model)
|
||||||
|
{
|
||||||
|
CheckModel(model, false);
|
||||||
|
_logger.LogInformation($"Delete. ID:{model.ID}");
|
||||||
|
// todo _storage.Insert(model) == null
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
_logger.LogWarning("Delete operation failed");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
public bool Update(RoleBindingModel model)
|
||||||
|
{
|
||||||
|
CheckModel(model);
|
||||||
|
// todo _storage.Insert(model) == null
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
_logger.LogWarning("Update operation failed");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<RoleViewModel>? ReadList(RoleSearchModel? model)
|
||||||
|
{
|
||||||
|
_logger.LogInformation($"ReadList. ID:{model?.ID}");
|
||||||
|
// todo model == null _RoleStorage.GetFullList() : _RoleStorage.GetFilteredList(model);
|
||||||
|
var list = model;
|
||||||
|
if (list == null)
|
||||||
|
{
|
||||||
|
_logger.LogWarning("ReadList return null list");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
// todo $"ReadList. Count:{list.count}"
|
||||||
|
_logger.LogInformation("ReadList. Count:{Count}");
|
||||||
|
// todo return list;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CheckModel(RoleBindingModel model, bool withParams = true)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(model));
|
||||||
|
}
|
||||||
|
if (!withParams)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(model.Name))
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException("Нет названия категории продукта", nameof(model.Name));
|
||||||
|
}
|
||||||
|
_logger.LogInformation($"CategoryProduct. Name:{model.Name}");
|
||||||
|
/*
|
||||||
|
var element = _RoleStorage.GetElement(new RoleSearchModel
|
||||||
|
{
|
||||||
|
Name = model.Name
|
||||||
|
});
|
||||||
|
if (element != null && element.Id != model.ID)
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException("Такая роль уже есть");
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,136 @@
|
|||||||
|
using ElectronicsShopContracts.BindingModels;
|
||||||
|
using ElectronicsShopContracts.BusinessLogicContracts;
|
||||||
|
using ElectronicsShopContracts.SearchModels;
|
||||||
|
using ElectronicsShopContracts.ViewModels;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.Data;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopBusinessLogic.BusinessLogic
|
||||||
|
{
|
||||||
|
public class UserLogic : IClientLogic
|
||||||
|
{
|
||||||
|
private readonly ILogger _logger;
|
||||||
|
//private readonly IClientStorage _storage;
|
||||||
|
|
||||||
|
// todo нет интерфейса хранилища
|
||||||
|
public UserLogic(ILogger<UserLogic> logger) {
|
||||||
|
_logger = logger;
|
||||||
|
//storage = _storage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Add(ClientBindingModel model)
|
||||||
|
{
|
||||||
|
CheckModel(model);
|
||||||
|
// todo логика добавления в _clientStorage:_clientStorage.Insert(model) == null
|
||||||
|
if (model == null) {
|
||||||
|
_logger.LogWarning("Add operation failed");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Update(ClientBindingModel model)
|
||||||
|
{
|
||||||
|
CheckModel(model);
|
||||||
|
// todo логика добавления в _clientStorage:_clientStorage.Update(model) == null
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
_logger.LogWarning("Update operation failed");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Delete(ClientBindingModel model)
|
||||||
|
{
|
||||||
|
CheckModel(model, false);
|
||||||
|
_logger.LogInformation($"Delete.ID:{model.UserID}");
|
||||||
|
// todo логика добавления в _clientStorage:_clientStorage.Delete(model) == null
|
||||||
|
if (model == null) {
|
||||||
|
_logger.LogWarning("Delete operation failes");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClientViewModel? ReadElemet(ClientSearchModel? model)
|
||||||
|
{
|
||||||
|
if (model == null) {
|
||||||
|
throw new ArgumentNullException(nameof(model));
|
||||||
|
}
|
||||||
|
_logger.LogInformation($"ReadElement: logint:{ model.Login}.ID:{model.UserID}");
|
||||||
|
// todo element = _clientStorage.GetElement(model);
|
||||||
|
var element = model;
|
||||||
|
if (element == null) {
|
||||||
|
_logger.LogWarning("ReadElement element not fount");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
_logger.LogInformation($"ReadElement: find.ID:{element.UserID}");
|
||||||
|
// todo retun element;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ClientViewModel>? ReadList(ClientSearchModel? model)
|
||||||
|
{
|
||||||
|
|
||||||
|
_logger.LogInformation($"ReadList: ClientID:{model?.UserID}");
|
||||||
|
// todo получение списка из хранилища, model == null ? _clientStorage.GetFullList() : _clientStorage.GetFilteredList(model);
|
||||||
|
var list = model;
|
||||||
|
if (list == null) {
|
||||||
|
_logger.LogWarning("ReadList: return null list");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
// toto ReadList:Count:{list.count},
|
||||||
|
_logger.LogInformation("ReadList:Count:{Count}");
|
||||||
|
// todo return list;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CheckModel(ClientBindingModel model, bool withParams = true) {
|
||||||
|
if (model == null) {
|
||||||
|
throw new ArgumentNullException(nameof(model));
|
||||||
|
}
|
||||||
|
if (!withParams) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(model.Login)) {
|
||||||
|
throw new ArgumentNullException("Нет логина пользователя", nameof(model.Login));
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(model.FirstName)) {
|
||||||
|
throw new ArgumentNullException("Нет имени пользователя", nameof(model.FirstName));
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(model.LastName)) {
|
||||||
|
throw new ArgumentNullException("Нет фамилии пользоватея", nameof(model.LastName));
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(model.Email)) {
|
||||||
|
throw new ArgumentNullException("Нет почты клиента", nameof(model.Email));
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(model.Password)) {
|
||||||
|
throw new ArgumentNullException("Нет пароля пользователя", nameof (model.Password));
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(model.PhoneNumber)) {
|
||||||
|
throw new ArgumentNullException("Нет номер телефона пользователя", nameof(model.PhoneNumber));
|
||||||
|
}
|
||||||
|
_logger.LogInformation($"Client. Login:{model.Login}.FirstName:{model.FirstName}.LastName:{model.LastName}.Email:{model.Email}." +
|
||||||
|
$"Password:{model.Password}.PhoneNumber:{model.PhoneNumber}");
|
||||||
|
/*
|
||||||
|
var element = _clientStorage.GetElement(new ClientSearchModel
|
||||||
|
{
|
||||||
|
Login = model.Login
|
||||||
|
});
|
||||||
|
if (element != null && element.Id != model.ID)
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException("Клиент с таким логином уже есть");
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.1" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\ElectronicsShopContracts\ElectronicsShopContracts.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
16
ElectronicsShop/ElectronicsShopContracts/BindingModels/CategoryProductBindingModel.cs
Normal file
16
ElectronicsShop/ElectronicsShopContracts/BindingModels/CategoryProductBindingModel.cs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
using ElectronicsShopDataModels.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.BindingModels
|
||||||
|
{
|
||||||
|
public class CategoryProductBindingModel : ICategoryProductModel
|
||||||
|
{
|
||||||
|
public int ID { get; set; }
|
||||||
|
|
||||||
|
public string Name { get; set; } = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
using ElectronicsShopDataModels.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.BindingModels
|
||||||
|
{
|
||||||
|
public class ClientBindingModel : IClientModel
|
||||||
|
{
|
||||||
|
//ID пользователя
|
||||||
|
public int UserID { get; set; }
|
||||||
|
//ID роли (клиент)
|
||||||
|
public int RoleID { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public string FirstName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string LastName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string Login { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string Email { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string Password { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string PhoneNumber { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
using ElectronicsShopDataModels.Enums;
|
||||||
|
using ElectronicsShopDataModels.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.BindingModels
|
||||||
|
{
|
||||||
|
public class OrderBindingModel : IOrderModel
|
||||||
|
{
|
||||||
|
public int ID { get; set; }
|
||||||
|
|
||||||
|
public double Sum { get; set; }
|
||||||
|
|
||||||
|
public OrderStatus Status { get; set; } = OrderStatus.Неизвестен;
|
||||||
|
|
||||||
|
public PaymeantOption PaymeantOption { get; set; } = PaymeantOption.Неизвестно;
|
||||||
|
|
||||||
|
public DateTime DateCreate { get; set; } = DateTime.Now;
|
||||||
|
|
||||||
|
public DateTime? DateImplemet { get; set; }
|
||||||
|
|
||||||
|
public Dictionary<int, (IProductModel, int)> ProductList { get; set; } = new();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
using ElectronicsShopDataModels.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.BindingModels
|
||||||
|
{
|
||||||
|
public class ProductBindingModel : IProductModel
|
||||||
|
{
|
||||||
|
//ID категории продукта (товара)
|
||||||
|
public int CategoryID { get; set; }
|
||||||
|
//ID продукта (товара)
|
||||||
|
public int ID { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public string ProductName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public double Price { get; set; }
|
||||||
|
|
||||||
|
public int Count { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
using ElectronicsShopDataModels.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.BindingModels
|
||||||
|
{
|
||||||
|
public class RoleBindingModel : IRoleModel
|
||||||
|
{
|
||||||
|
public int ID { get; set; }
|
||||||
|
|
||||||
|
public string Name { get; set; } = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
using ElectronicsShopDataModels.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.BindingModels
|
||||||
|
{
|
||||||
|
public class ShopAssistentBindingModel : IShopAssistentModel
|
||||||
|
{
|
||||||
|
//ID пользователя
|
||||||
|
public int UserID { get; set; }
|
||||||
|
//ID роли (сотрудник)
|
||||||
|
public int RoleID { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public string FirstName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string LastName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string Login { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string Email { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string Password { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public string PhoneNumber { get; set; } = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
20
ElectronicsShop/ElectronicsShopContracts/BusinessLogicContracts/ICategoryProductLogic.cs
Normal file
20
ElectronicsShop/ElectronicsShopContracts/BusinessLogicContracts/ICategoryProductLogic.cs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
using ElectronicsShopContracts.BindingModels;
|
||||||
|
using ElectronicsShopContracts.SearchModels;
|
||||||
|
using ElectronicsShopContracts.ViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.BusinessLogicContracts
|
||||||
|
{
|
||||||
|
public interface ICategoryProductLogic
|
||||||
|
{
|
||||||
|
List<CategoryProductViewModel>? ReadList(CategoryProductSearchModel? model);
|
||||||
|
|
||||||
|
bool Create(CategoryProductBindingModel model);
|
||||||
|
bool Update(CategoryProductBindingModel model);
|
||||||
|
bool Delete(CategoryProductBindingModel model);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
using ElectronicsShopContracts.BindingModels;
|
||||||
|
using ElectronicsShopContracts.SearchModels;
|
||||||
|
using ElectronicsShopContracts.ViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.BusinessLogicContracts
|
||||||
|
{
|
||||||
|
public interface IClientLogic
|
||||||
|
{
|
||||||
|
List<ClientViewModel>? ReadList(ClientSearchModel? model);
|
||||||
|
ClientViewModel? ReadElemet(ClientSearchModel? model);
|
||||||
|
|
||||||
|
bool Add(ClientBindingModel model);
|
||||||
|
bool Update(ClientBindingModel model);
|
||||||
|
bool Delete(ClientBindingModel model);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
using ElectronicsShopContracts.BindingModels;
|
||||||
|
using ElectronicsShopContracts.SearchModels;
|
||||||
|
using ElectronicsShopContracts.ViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.BusinessLogicContracts
|
||||||
|
{
|
||||||
|
public interface IOrderLogic
|
||||||
|
{
|
||||||
|
List<OrderViewModel>? ReadList(OrderSearchModel? model);
|
||||||
|
|
||||||
|
bool CreateOrder(OrderBindingModel model);
|
||||||
|
bool TakeOrderInWork(OrderBindingModel model);
|
||||||
|
bool FinishOrder(OrderBindingModel model);
|
||||||
|
bool DeliveryOrder(OrderBindingModel model);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
using ElectronicsShopContracts.BindingModels;
|
||||||
|
using ElectronicsShopContracts.SearchModels;
|
||||||
|
using ElectronicsShopContracts.ViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.BusinessLogicContracts
|
||||||
|
{
|
||||||
|
public interface IProductLogic
|
||||||
|
{
|
||||||
|
List<ProductViewModel>? ReadList(ProductSearchModel? model);
|
||||||
|
ProductViewModel? ReadElement(ProductSearchModel? model);
|
||||||
|
|
||||||
|
bool Create(ProductBindingModel model);
|
||||||
|
bool Update(ProductBindingModel model);
|
||||||
|
bool Delete(ProductBindingModel model);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
using ElectronicsShopContracts.BindingModels;
|
||||||
|
using ElectronicsShopContracts.SearchModels;
|
||||||
|
using ElectronicsShopContracts.ViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.BusinessLogicContracts
|
||||||
|
{
|
||||||
|
public interface IRoleLogic
|
||||||
|
{
|
||||||
|
List<RoleViewModel>? ReadList(RoleSearchModel? model);
|
||||||
|
|
||||||
|
bool Create(RoleBindingModel model);
|
||||||
|
bool Update(RoleBindingModel model);
|
||||||
|
bool Delete(RoleBindingModel model);
|
||||||
|
}
|
||||||
|
}
|
21
ElectronicsShop/ElectronicsShopContracts/BusinessLogicContracts/ShopAssistentLogic.cs
Normal file
21
ElectronicsShop/ElectronicsShopContracts/BusinessLogicContracts/ShopAssistentLogic.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
using ElectronicsShopContracts.BindingModels;
|
||||||
|
using ElectronicsShopContracts.SearchModels;
|
||||||
|
using ElectronicsShopContracts.ViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.BusinessLogicContracts
|
||||||
|
{
|
||||||
|
public interface ShopAssistentLogic
|
||||||
|
{
|
||||||
|
List<ShopAssistentViewModel>? ReadList(ShopAssistentSearchModel? model);
|
||||||
|
ShopAssistentViewModel? ReadElement(ShopAssistentSearchModel? model);
|
||||||
|
|
||||||
|
bool Add(ShopAssistentBindingModel model);
|
||||||
|
bool Update(ShopAssistentBindingModel model);
|
||||||
|
bool Delete(ShopAssistentBindingModel model);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\ElectronicsShopDataModels\ElectronicsShopDataModels.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.SearchModels
|
||||||
|
{
|
||||||
|
public class CategoryProductSearchModel
|
||||||
|
{
|
||||||
|
public int? ID { get; set; }
|
||||||
|
|
||||||
|
public string? Name { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.SearchModels
|
||||||
|
{
|
||||||
|
public class ClientSearchModel
|
||||||
|
{
|
||||||
|
public int? UserID { get; set; }
|
||||||
|
public string? Login { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
using ElectronicsShopDataModels.Enums;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.SearchModels
|
||||||
|
{
|
||||||
|
public class OrderSearchModel
|
||||||
|
{
|
||||||
|
public int? ID { get; set; }
|
||||||
|
public DateTime? DateFrom { get; set; }
|
||||||
|
public DateTime? DateTo { get; set;}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.SearchModels
|
||||||
|
{
|
||||||
|
public class ProductSearchModel
|
||||||
|
{
|
||||||
|
public int? ID { get; set; }
|
||||||
|
public string? ProductName { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.SearchModels
|
||||||
|
{
|
||||||
|
public class RoleSearchModel
|
||||||
|
{
|
||||||
|
public int? ID { get; set; }
|
||||||
|
|
||||||
|
public string? Name { get; set; } = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.SearchModels
|
||||||
|
{
|
||||||
|
public class ShopAssistentSearchModel
|
||||||
|
{
|
||||||
|
public int? UserID { get; set; }
|
||||||
|
public string? Login { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
using ElectronicsShopContracts.BindingModels;
|
||||||
|
using ElectronicsShopContracts.SearchModels;
|
||||||
|
using ElectronicsShopContracts.ViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.StorageContracts
|
||||||
|
{
|
||||||
|
public interface ICategoryProductStorage
|
||||||
|
{
|
||||||
|
List<CategoryProductViewModel> GetFullList();
|
||||||
|
List<CategoryProductViewModel> GetFilteredList(ClientSearchModel model);
|
||||||
|
CategoryProductViewModel? GetElement(ClientSearchModel model);
|
||||||
|
CategoryProductViewModel? Insert(ClientBindingModel model);
|
||||||
|
CategoryProductViewModel? Update(ClientBindingModel model);
|
||||||
|
CategoryProductViewModel? Delete(ClientBindingModel model);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
using ElectronicsShopContracts.BindingModels;
|
||||||
|
using ElectronicsShopContracts.SearchModels;
|
||||||
|
using ElectronicsShopContracts.ViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.StorageContracts
|
||||||
|
{
|
||||||
|
public interface IClientStorage
|
||||||
|
{
|
||||||
|
List<ClientViewModel> GetFullList();
|
||||||
|
List<ClientViewModel> GetFilteredList(ClientSearchModel model);
|
||||||
|
ClientViewModel? GetElement(ClientSearchModel model);
|
||||||
|
ClientViewModel? Insert(ClientBindingModel model);
|
||||||
|
ClientViewModel? Update(ClientBindingModel model);
|
||||||
|
ClientViewModel? Delete(ClientBindingModel model);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
using ElectronicsShopContracts.BindingModels;
|
||||||
|
using ElectronicsShopContracts.SearchModels;
|
||||||
|
using ElectronicsShopContracts.ViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.StorageContracts
|
||||||
|
{
|
||||||
|
public interface IOrderStorage
|
||||||
|
{
|
||||||
|
List<OrderViewModel> GetFullList();
|
||||||
|
List<OrderViewModel> GetFilteredList(ClientSearchModel model);
|
||||||
|
OrderViewModel? GetElement(ClientSearchModel model);
|
||||||
|
OrderViewModel? Insert(ClientBindingModel model);
|
||||||
|
OrderViewModel? Update(ClientBindingModel model);
|
||||||
|
OrderViewModel? Delete(ClientBindingModel model);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
using ElectronicsShopContracts.BindingModels;
|
||||||
|
using ElectronicsShopContracts.SearchModels;
|
||||||
|
using ElectronicsShopContracts.ViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.StorageContracts
|
||||||
|
{
|
||||||
|
public interface IProductStorage
|
||||||
|
{
|
||||||
|
List<ProductViewModel> GetFullList();
|
||||||
|
List<ProductViewModel> GetFilteredList(ClientSearchModel model);
|
||||||
|
ProductViewModel? GetElement(ClientSearchModel model);
|
||||||
|
ProductViewModel? Insert(ClientBindingModel model);
|
||||||
|
ProductViewModel? Update(ClientBindingModel model);
|
||||||
|
ProductViewModel? Delete(ClientBindingModel model);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
using ElectronicsShopContracts.BindingModels;
|
||||||
|
using ElectronicsShopContracts.SearchModels;
|
||||||
|
using ElectronicsShopContracts.ViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.StorageContracts
|
||||||
|
{
|
||||||
|
public interface IRoleStorage
|
||||||
|
{
|
||||||
|
List<RoleViewModel> GetFullList();
|
||||||
|
List<RoleViewModel> GetFilteredList(ClientSearchModel model);
|
||||||
|
RoleViewModel? GetElement(ClientSearchModel model);
|
||||||
|
RoleViewModel? Insert(ClientBindingModel model);
|
||||||
|
RoleViewModel? Update(ClientBindingModel model);
|
||||||
|
RoleViewModel? Delete(ClientBindingModel model);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
using ElectronicsShopContracts.BindingModels;
|
||||||
|
using ElectronicsShopContracts.SearchModels;
|
||||||
|
using ElectronicsShopContracts.ViewModels;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.StorageContracts
|
||||||
|
{
|
||||||
|
public interface IShopAssistentStorage
|
||||||
|
{
|
||||||
|
List<ShopAssistentViewModel> GetFullList();
|
||||||
|
List<ShopAssistentViewModel> GetFilteredList(ClientSearchModel model);
|
||||||
|
ShopAssistentViewModel? GetElement(ClientSearchModel model);
|
||||||
|
ShopAssistentViewModel? Insert(ClientBindingModel model);
|
||||||
|
ShopAssistentViewModel? Update(ClientBindingModel model);
|
||||||
|
ShopAssistentViewModel? Delete(ClientBindingModel model);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
using ElectronicsShopDataModels.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.ViewModels
|
||||||
|
{
|
||||||
|
public class CategoryProductViewModel : ICategoryProductModel
|
||||||
|
{
|
||||||
|
public int ID { get; set; }
|
||||||
|
|
||||||
|
[DisplayName("Название категории продукта")]
|
||||||
|
public string Name { get; set; } = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
using ElectronicsShopDataModels.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.ViewModels
|
||||||
|
{
|
||||||
|
public class ClientViewModel : IClientModel
|
||||||
|
{
|
||||||
|
|
||||||
|
//ID пользователя
|
||||||
|
public int UserID { get; set; }
|
||||||
|
//ID роли (клиент)
|
||||||
|
public int RoleID { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
[DisplayName("Имя")]
|
||||||
|
public string FirstName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[DisplayName("Фамилия")]
|
||||||
|
public string LastName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[DisplayName("Логин")]
|
||||||
|
public string Login { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[DisplayName("Почта")]
|
||||||
|
public string Email { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[DisplayName("Пароль")]
|
||||||
|
public string Password { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[DisplayName("Номер телефона")]
|
||||||
|
public string PhoneNumber { get; set; } = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
using ElectronicsShopDataModels.Enums;
|
||||||
|
using ElectronicsShopDataModels.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.ViewModels
|
||||||
|
{
|
||||||
|
public class OrderViewModel : IOrderModel
|
||||||
|
{
|
||||||
|
public int ID { get; set; }
|
||||||
|
|
||||||
|
[DisplayName("Сумма")]
|
||||||
|
public double Sum { get; set; }
|
||||||
|
|
||||||
|
[DisplayName("Статус")]
|
||||||
|
public OrderStatus Status { get; set; } = OrderStatus.Неизвестен;
|
||||||
|
|
||||||
|
[DisplayName("Стутус оплаты")]
|
||||||
|
public PaymeantOption PaymeantOption { get; set; } = PaymeantOption.Неизвестно;
|
||||||
|
|
||||||
|
[DisplayName("Дата создания")]
|
||||||
|
public DateTime DateCreate { get; set; } = DateTime.Now;
|
||||||
|
|
||||||
|
[DisplayName("Дата выполнения")]
|
||||||
|
public DateTime? DateImplemet { get; set; }
|
||||||
|
|
||||||
|
public Dictionary<int, (IProductModel, int)> ProductList { get; set; } = new();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,27 @@
|
|||||||
|
using ElectronicsShopDataModels.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.ViewModels
|
||||||
|
{
|
||||||
|
public class ProductViewModel : IProductModel
|
||||||
|
{
|
||||||
|
//ID категории продукта (товара)
|
||||||
|
public int CategoryID { get; set; }
|
||||||
|
//ID продукта (товара)
|
||||||
|
public int ID { get; set; }
|
||||||
|
|
||||||
|
[DisplayName("Название товара")]
|
||||||
|
public string ProductName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[DisplayName("Цена")]
|
||||||
|
public double Price { get; set; }
|
||||||
|
|
||||||
|
[DisplayName("Количество")]
|
||||||
|
public int Count { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,21 @@
|
|||||||
|
using ElectronicsShopDataModels;
|
||||||
|
using ElectronicsShopDataModels.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.ViewModels
|
||||||
|
{
|
||||||
|
public class RoleViewModel : IRoleModel
|
||||||
|
{
|
||||||
|
public int ID { get; set; }
|
||||||
|
|
||||||
|
[DisplayName("Название роли")]
|
||||||
|
public string Name { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
using ElectronicsShopDataModels.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopContracts.ViewModels
|
||||||
|
{
|
||||||
|
public class ShopAssistentViewModel : IShopAssistentModel
|
||||||
|
{
|
||||||
|
//ID пользователя
|
||||||
|
public int UserID { get; set; }
|
||||||
|
//ID роли (сотрудник)
|
||||||
|
public int RoleID { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
[DisplayName("Имя")]
|
||||||
|
public string FirstName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[DisplayName("Фамилия")]
|
||||||
|
public string LastName { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[DisplayName("Логин")]
|
||||||
|
public string Login { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[DisplayName("Почта")]
|
||||||
|
public string Email { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[DisplayName("Пароль")]
|
||||||
|
public string Password { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[DisplayName("Номер телефона")]
|
||||||
|
public string PhoneNumber { get; set; } = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
</Project>
|
@ -0,0 +1,21 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopDataModels.Enums
|
||||||
|
{
|
||||||
|
public enum OrderStatus
|
||||||
|
{
|
||||||
|
Неизвестен = -1,
|
||||||
|
|
||||||
|
Принят = 0,
|
||||||
|
|
||||||
|
Выполняется = 1,
|
||||||
|
|
||||||
|
Готов = 2,
|
||||||
|
|
||||||
|
Выдан = 3
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopDataModels.Enums
|
||||||
|
{
|
||||||
|
public enum PaymeantOption
|
||||||
|
{
|
||||||
|
Неизвестно = -1,
|
||||||
|
|
||||||
|
Полная_оплата = 0,
|
||||||
|
|
||||||
|
Частичная_оплата = 1
|
||||||
|
}
|
||||||
|
}
|
13
ElectronicsShop/ElectronicsShopDataModels/IID.cs
Normal file
13
ElectronicsShop/ElectronicsShopDataModels/IID.cs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopDataModels
|
||||||
|
{
|
||||||
|
public interface IID
|
||||||
|
{
|
||||||
|
int ID { get; }
|
||||||
|
}
|
||||||
|
}
|
19
ElectronicsShop/ElectronicsShopDataModels/IUser.cs
Normal file
19
ElectronicsShop/ElectronicsShopDataModels/IUser.cs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopDataModels
|
||||||
|
{
|
||||||
|
public interface IUser
|
||||||
|
{
|
||||||
|
string FirstName { get; }
|
||||||
|
string LastName { get; }
|
||||||
|
string Login { get; }
|
||||||
|
string Email { get; }
|
||||||
|
string Password { get; }
|
||||||
|
string PhoneNumber { get; }
|
||||||
|
int RoleID { get; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopDataModels.Models
|
||||||
|
{
|
||||||
|
public interface ICategoryProductModel : IID
|
||||||
|
{
|
||||||
|
string Name { get; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopDataModels.Models
|
||||||
|
{
|
||||||
|
public interface IClientModel : IUser
|
||||||
|
{
|
||||||
|
int UserID { get; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
using ElectronicsShopDataModels.Enums;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopDataModels.Models
|
||||||
|
{
|
||||||
|
public interface IOrderModel : IID
|
||||||
|
{
|
||||||
|
double Sum { get; }
|
||||||
|
OrderStatus Status { get; }
|
||||||
|
PaymeantOption PaymeantOption { get; }
|
||||||
|
DateTime DateCreate { get; }
|
||||||
|
DateTime? DateImplemet { get; }
|
||||||
|
//список товаров в заказе
|
||||||
|
Dictionary<int, (IProductModel, int)> ProductList { get; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopDataModels.Models
|
||||||
|
{
|
||||||
|
public interface IProductModel : IID
|
||||||
|
{
|
||||||
|
string ProductName { get; }
|
||||||
|
double Price { get; }
|
||||||
|
int Count { get; }
|
||||||
|
int CategoryID { get; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopDataModels.Models
|
||||||
|
{
|
||||||
|
public interface IRoleModel : IID
|
||||||
|
{
|
||||||
|
string Name { get; }
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopDataModels.Models
|
||||||
|
{
|
||||||
|
public interface IShopAssistentModel : IUser
|
||||||
|
{
|
||||||
|
int UserID { get; }
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user