лвб 3 начал

This commit is contained in:
Ismailov_Rovshan 2023-11-14 20:32:44 +04:00
parent 96234cb606
commit 4bcc573fbb
14 changed files with 330 additions and 1 deletions

View File

@ -0,0 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\OrdersContracts\OrdersContracts.csproj" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,67 @@
using OrdersContracts.BindingModels;
using OrdersContracts.BusinessLogicContracts;
using OrdersContracts.StorageContracts;
using OrdersContracts.ViewModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OrderBusinessLogic
{
public class OrderLogic : IOrderLogic
{
private readonly IOrderStorage _orderStorage;
public OrderLogic(IOrderStorage orderStorage)
{
_orderStorage = orderStorage;
}
public void CreateOrUpdate(OrderBindingModel model)
{
var element = _orderStorage.GetElement(
new OrderBindingModel
{
Info = model.Info,
Name = model.Name,
Status = model.Status,
Amount = model.Amount
});
if (element != null && element.Id != model.Id)
{
throw new Exception("Такой заказ уже существует");
}
if (model.Id.HasValue)
{
_orderStorage.Update(model);
}
else
{
_orderStorage.Insert(model);
}
}
public void Delete(OrderBindingModel model)
{
var element = _orderStorage.GetElement(new OrderBindingModel { Id = model.Id });
if (element == null)
{
throw new Exception("Заказ не найден");
}
_orderStorage.Delete(model);
}
public List<OrderViewModel> Read(OrderBindingModel model)
{
if (model == null)
{
return _orderStorage.GetFullList();
}
if (model.Id.HasValue)
{
return new List<OrderViewModel> { _orderStorage.GetElement(model) };
}
return _orderStorage.GetFilteredList(model);
}
}
}

View File

@ -0,0 +1,60 @@
using OrdersContracts.BindingModels;
using OrdersContracts.BusinessLogicContracts;
using OrdersContracts.StorageContracts;
using OrdersContracts.ViewModels;
namespace OrderBusinessLogic
{
public class StatusLogic : IStatusLogic
{
private readonly IStatusStorage _statusStorage;
public StatusLogic(IStatusStorage statusStorage)
{
_statusStorage = statusStorage;
}
public void CreateOrUpdate(StatusBindingModel model)
{
var element = _statusStorage.GetElement(
new StatusBindingModel
{
Name = model.Name
});
if (element != null && element.Id != model.Id)
{
throw new Exception("Такой статус уже существует");
}
if (model.Id.HasValue)
{
_statusStorage.Update(model);
}
else
{
_statusStorage.Insert(model);
}
}
public void Delete(StatusBindingModel model)
{
var element = _statusStorage.GetElement(new StatusBindingModel { Id = model.Id });
if (element == null)
{
throw new Exception("Статус не найден");
}
_statusStorage.Delete(model);
}
public List<StatusViewModel> Read(StatusBindingModel model)
{
if (model == null)
{
return _statusStorage.GetFullList();
}
if (model.Id.HasValue)
{
return new List<StatusViewModel> { _statusStorage.GetElement(model) };
}
return _statusStorage.GetFilteredList(model);
}
}
}

View File

@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OrdersContracts.BindingModels
{
public class OrderBindingModel
{
public int? Id { get; set; }
public string Name { get; set; }
public string Info { get; set; }
public string Status { get; set; }
public int? Amount { get; set; }
}
}

View File

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OrdersContracts.BindingModels
{
public class StatusBindingModel
{
public int? Id { get; set; }
public string Name { get; set; }
}
}

View File

@ -0,0 +1,17 @@
using OrdersContracts.BindingModels;
using OrdersContracts.ViewModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OrdersContracts.BusinessLogicContracts
{
public interface IOrderLogic
{
List<OrderViewModel> Read(OrderBindingModel model);
void CreateOrUpdate(OrderBindingModel model);
void Delete(OrderBindingModel model);
}
}

View File

@ -0,0 +1,17 @@
using OrdersContracts.BindingModels;
using OrdersContracts.ViewModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OrdersContracts.BusinessLogicContracts
{
public interface IStatusLogic
{
List<StatusViewModel> Read(StatusBindingModel model);
void CreateOrUpdate(StatusBindingModel model);
void Delete(StatusBindingModel model);
}
}

View File

@ -0,0 +1,10 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,20 @@
using OrdersContracts.BindingModels;
using OrdersContracts.ViewModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OrdersContracts.StorageContracts
{
public interface IOrderStorage
{
List<OrderViewModel> GetFullList();
List<OrderViewModel> GetFilteredList(OrderBindingModel model);
OrderViewModel GetElement(OrderBindingModel model);
void Insert(OrderBindingModel model);
void Update(OrderBindingModel model);
void Delete(OrderBindingModel model);
}
}

View File

@ -0,0 +1,21 @@
using OrdersContracts.BindingModels;
using OrdersContracts.ViewModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OrdersContracts.StorageContracts
{
public interface IStatusStorage
{
List<StatusViewModel> GetFullList();
List<StatusViewModel> GetFilteredList(StatusBindingModel model);
StatusViewModel GetElement(StatusBindingModel model);
void Insert(StatusBindingModel model);
void Update(StatusBindingModel model);
void Delete(StatusBindingModel model);
}
}

View File

@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OrdersContracts.ViewModels
{
public class OrderViewModel
{
public int? Id { get; set; }
[DisplayName("ФИО")]
public string Name { get; set; }
[DisplayName("Описание")]
public string Info { get; set; }
[DisplayName("Статус")]
public string Status { get; set; }
[DisplayName("Сумма заказа")]
public string Amount { get; set; }
}
}

View File

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OrdersContracts.ViewModels
{
public class StatusViewModel
{
public int? Id { get; set; }
public string Name { get; set; }
}
}

View File

@ -0,0 +1,21 @@
using OrdersContracts.BindingModels;
using OrdersContracts.ViewModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OrdersContracts.StorageContracts
{
public interface IStatusStorage
{
List<StatusViewModel> GetFullList();
List<StatusViewModel> GetFilteredList(StatusBindingModel model);
StatusViewModel GetElement(StatusBindingModel model);
void Insert(StatusBindingModel model);
void Update(StatusBindingModel model);
void Delete(StatusBindingModel model);
}
}

View File

@ -5,7 +5,11 @@ VisualStudioVersion = 17.3.32901.215
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WinForms", "WinForms\WinForms.csproj", "{10D1B0BE-6B52-41E6-8B57-4AFC49A26F17}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisualComponentsLib", "VisualComponentsLib\VisualComponentsLib.csproj", "{EF8D5392-CB3C-429E-BB8F-A7353F56E1D8}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VisualComponentsLib", "VisualComponentsLib\VisualComponentsLib.csproj", "{EF8D5392-CB3C-429E-BB8F-A7353F56E1D8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OrdersContracts", "OrdersContracts\OrdersContracts.csproj", "{82FC5A5D-EA93-49E2-BC93-8AE514148FA0}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OrderBusinessLogic", "OrderBusinessLogic\OrderBusinessLogic.csproj", "{071BD445-8513-4B12-A60C-2531F2B795F5}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -21,6 +25,14 @@ Global
{EF8D5392-CB3C-429E-BB8F-A7353F56E1D8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EF8D5392-CB3C-429E-BB8F-A7353F56E1D8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EF8D5392-CB3C-429E-BB8F-A7353F56E1D8}.Release|Any CPU.Build.0 = Release|Any CPU
{82FC5A5D-EA93-49E2-BC93-8AE514148FA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{82FC5A5D-EA93-49E2-BC93-8AE514148FA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{82FC5A5D-EA93-49E2-BC93-8AE514148FA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{82FC5A5D-EA93-49E2-BC93-8AE514148FA0}.Release|Any CPU.Build.0 = Release|Any CPU
{071BD445-8513-4B12-A60C-2531F2B795F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{071BD445-8513-4B12-A60C-2531F2B795F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{071BD445-8513-4B12-A60C-2531F2B795F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{071BD445-8513-4B12-A60C-2531F2B795F5}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE