fix implements & logic
This commit is contained in:
parent
7f9720200f
commit
1a56a5f1d4
@ -28,7 +28,7 @@ namespace ElectronicsShopBusinessLogic.BusinessLogic
|
|||||||
CheckModel(model);
|
CheckModel(model);
|
||||||
if (_storage.Insert(model) == null)
|
if (_storage.Insert(model) == null)
|
||||||
{
|
{
|
||||||
_logger.LogWarning("Add operation failed");
|
_logger.LogWarning("Create operation failed");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -91,10 +91,6 @@ namespace ElectronicsShopBusinessLogic.BusinessLogic
|
|||||||
|
|
||||||
private void CheckModel(ClientBindingModel model, bool withParams = true)
|
private void CheckModel(ClientBindingModel model, bool withParams = true)
|
||||||
{
|
{
|
||||||
if (model == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(model));
|
|
||||||
}
|
|
||||||
if (!withParams)
|
if (!withParams)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
@ -13,12 +13,17 @@ namespace ElectronicsShopBusinessLogic.BusinessLogic
|
|||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
private readonly ICostItemStorage _storage;
|
private readonly ICostItemStorage _storage;
|
||||||
|
|
||||||
|
public CostItemLogic(ILogger<CostItemLogic> logger, ICostItemStorage storage) {
|
||||||
|
_logger = logger;
|
||||||
|
_storage = storage;
|
||||||
|
}
|
||||||
|
|
||||||
public bool Create(CostItemBindingModel model)
|
public bool Create(CostItemBindingModel model)
|
||||||
{
|
{
|
||||||
CheckModel(model);
|
CheckModel(model);
|
||||||
if (_storage.Insert(model) == null)
|
if (_storage.Insert(model) == null)
|
||||||
{
|
{
|
||||||
_logger.LogWarning("Add operation failed");
|
_logger.LogWarning("Create operation failed");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -79,23 +84,22 @@ namespace ElectronicsShopBusinessLogic.BusinessLogic
|
|||||||
|
|
||||||
private void CheckModel(CostItemBindingModel model, bool withParams = true)
|
private void CheckModel(CostItemBindingModel model, bool withParams = true)
|
||||||
{
|
{
|
||||||
if (model == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(model));
|
|
||||||
}
|
|
||||||
if (!withParams)
|
if (!withParams)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (model.Price <= 0)
|
if (model.Price <= 0)
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException("Цена продукта должна быть больше 0", nameof(model.Price));
|
throw new ArgumentNullException("Затраты должны быть больше 0", nameof(model.Price));
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(model.Name)) {
|
||||||
|
throw new ArgumentNullException("Отсутствует название статьи затрат", nameof(model.Price));
|
||||||
}
|
}
|
||||||
_logger.LogInformation($"CostItem. ID:{model.ID}.EmployeeID:{model.EmployeeID}.Name:{model.Name}.Price:{model.Price}");
|
_logger.LogInformation($"CostItem. ID:{model.ID}.EmployeeID:{model.EmployeeID}.Name:{model.Name}.Price:{model.Price}");
|
||||||
var element = _storage.GetElement(new CostItemSearchModel { ID = model.ID });
|
var element = _storage.GetElement(new CostItemSearchModel { ID = model.ID });
|
||||||
if (element != null && element.ID != model.EmployeeID)
|
if (element != null && element.ID != model.EmployeeID)
|
||||||
{
|
{
|
||||||
throw new InvalidOperationException("Продукт с таким названием уже есть");
|
throw new InvalidOperationException("Такая статья затрат уде есть");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,46 +10,42 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace ElectronicsShopBusinessLogic.BusinessLogic
|
namespace ElectronicsShopBusinessLogic.BusinessLogic {
|
||||||
{
|
public class EmployeeLogic : IEmployeeLogic {
|
||||||
public class EmployeeLogic : IEmployeeLogic
|
|
||||||
{
|
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
private readonly IEmployeeStorage _storage;
|
private readonly IEmployeeStorage _storage;
|
||||||
|
|
||||||
public bool Add(EmployeeBindingModel model)
|
public EmployeeLogic(ILogger<EmployeeLogic> loger, IEmployeeStorage storage) {
|
||||||
{
|
_logger = loger;
|
||||||
|
_storage = storage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Create(EmployeeBindingModel model) {
|
||||||
CheckModel(model);
|
CheckModel(model);
|
||||||
if (_storage.Insert(model) == null)
|
if (_storage.Insert(model) == null) {
|
||||||
{
|
_logger.LogWarning("Create operation failed");
|
||||||
_logger.LogWarning("Add operation failed");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Delete(EmployeeBindingModel model)
|
public bool Delete(EmployeeBindingModel model) {
|
||||||
{
|
|
||||||
CheckModel(model, false);
|
CheckModel(model, false);
|
||||||
_logger.LogInformation($"Delete.ID:{model.ID}");
|
_logger.LogInformation($"Delete.ID:{model.ID}");
|
||||||
if (_storage.Delete(model) == null)
|
if (_storage.Delete(model) == null) {
|
||||||
{
|
|
||||||
_logger.LogWarning("Delete operation failed");
|
_logger.LogWarning("Delete operation failed");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public EmployeeViewModel? ReadElemet(EmployeeSearchModel model)
|
public EmployeeViewModel? ReadElemet(EmployeeSearchModel model) {
|
||||||
{
|
if (model == null) {
|
||||||
if (model == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(model));
|
throw new ArgumentNullException(nameof(model));
|
||||||
}
|
}
|
||||||
_logger.LogInformation($"ReadElement.Login:{model.Login}.ID:{model.ID}");
|
_logger.LogInformation($"ReadElement.Login:{model.Login}.ID:{model.ID}");
|
||||||
var element = _storage.GetElement(model);
|
var element = _storage.GetElement(model);
|
||||||
if (element == null)
|
if (element == null) {
|
||||||
{
|
|
||||||
_logger.LogWarning("ReadElement. element not fount");
|
_logger.LogWarning("ReadElement. element not fount");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -57,12 +53,10 @@ namespace ElectronicsShopBusinessLogic.BusinessLogic
|
|||||||
return element;
|
return element;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<EmployeeViewModel>? ReadList(EmployeeSearchModel model)
|
public List<EmployeeViewModel>? ReadList(EmployeeSearchModel model) {
|
||||||
{
|
|
||||||
_logger.LogInformation($"ReadList. ClientID:{model?.ID}");
|
_logger.LogInformation($"ReadList. ClientID:{model?.ID}");
|
||||||
var list = model == null ? _storage.GetFullList() : _storage.GetFilteredList(model); ;
|
var list = model == null ? _storage.GetFullList() : _storage.GetFilteredList(model); ;
|
||||||
if (list == null)
|
if (list == null) {
|
||||||
{
|
|
||||||
_logger.LogWarning("ReadList. return null list");
|
_logger.LogWarning("ReadList. return null list");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -70,48 +64,39 @@ namespace ElectronicsShopBusinessLogic.BusinessLogic
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool Update(EmployeeBindingModel model)
|
public bool Update(EmployeeBindingModel model) {
|
||||||
{
|
|
||||||
CheckModel(model);
|
CheckModel(model);
|
||||||
if (_storage.Update(model) == null)
|
if (_storage.Update(model) == null) {
|
||||||
{
|
|
||||||
_logger.LogWarning("Update operation failed");
|
_logger.LogWarning("Update operation failed");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
private void CheckModel(EmployeeBindingModel model, bool withParams = true)
|
private void CheckModel(EmployeeBindingModel model, bool withParams = true) {
|
||||||
{
|
if (model == null) {
|
||||||
if (model == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(model));
|
throw new ArgumentNullException(nameof(model));
|
||||||
}
|
}
|
||||||
if (!withParams)
|
if (!withParams) {
|
||||||
{
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (string.IsNullOrEmpty(model.Login))
|
if (string.IsNullOrEmpty(model.Login)) {
|
||||||
{
|
throw new ArgumentNullException("Нет логина сотрудника", nameof(model.Login));
|
||||||
throw new ArgumentNullException("Нет логина пользователя", nameof(model.Login));
|
|
||||||
}
|
}
|
||||||
if (string.IsNullOrEmpty(model.EmployeeFIO))
|
if (string.IsNullOrEmpty(model.EmployeeFIO)) {
|
||||||
{
|
throw new ArgumentNullException("Нет имени сотрудника", nameof(model.EmployeeFIO));
|
||||||
throw new ArgumentNullException("Нет имени пользователя", nameof(model.EmployeeFIO));
|
|
||||||
}
|
}
|
||||||
if (string.IsNullOrEmpty(model.Password))
|
if (string.IsNullOrEmpty(model.Password)) {
|
||||||
{
|
throw new ArgumentNullException("Нет пароля сотрудника", nameof(model.Password));
|
||||||
throw new ArgumentNullException("Нет пароля пользователя", nameof(model.Password));
|
|
||||||
}
|
}
|
||||||
_logger.LogInformation($"Client. ID:{model.ID}.ClientFIO:{model.EmployeeFIO}.Password:{model.Password}.Email:{model.Login}.");
|
_logger.LogInformation($"Client. ID:{model.ID}.ClientFIO:{model.EmployeeFIO}.Password:{model.Password}.Email:{model.Login}.");
|
||||||
|
|
||||||
var element = _storage.GetElement(new EmployeeSearchModel
|
var element = _storage.GetElement(new EmployeeSearchModel {
|
||||||
{
|
|
||||||
Login = model.Login
|
Login = model.Login
|
||||||
});
|
});
|
||||||
if (element != null && element.Login != model.Login)
|
if (element != null && element.Login != model.Login) {
|
||||||
{
|
throw new InvalidOperationException("Сотрудник с таким логином уже есть");
|
||||||
throw new InvalidOperationException("Клиент с такой почтой уже есть");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
@ -44,9 +44,6 @@ namespace ElectronicsShopBusinessLogic.BusinessLogic
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void CheckModel(OrderBindingModel model, bool withParams = true) {
|
private void CheckModel(OrderBindingModel model, bool withParams = true) {
|
||||||
if (model == null) {
|
|
||||||
throw new ArgumentNullException(nameof(model));
|
|
||||||
}
|
|
||||||
if (!withParams) {
|
if (!withParams) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -56,7 +53,10 @@ namespace ElectronicsShopBusinessLogic.BusinessLogic
|
|||||||
if (model.Sum <= 0) {
|
if (model.Sum <= 0) {
|
||||||
throw new ArgumentNullException("Цена зака должна быть больше 0", nameof(model.Sum));
|
throw new ArgumentNullException("Цена зака должна быть больше 0", nameof(model.Sum));
|
||||||
}
|
}
|
||||||
_logger.LogInformation($"Order. ID:{model.ID}.Sum:{model.Sum}.DateCreate:{model.DateCreate}.");
|
if (model.ClientID < 0) {
|
||||||
|
throw new ArgumentNullException("Некорректный идентификатор у клиента", nameof(model.ClientID));
|
||||||
|
}
|
||||||
|
_logger.LogInformation($"Order. ID:{model.ID}.Sum:{model.Sum}.DateCreate:{model.DateCreate}.ClientID:{model.ClientID}");
|
||||||
}
|
}
|
||||||
|
|
||||||
public OrderViewModel? ReadElement(OrderSearchModel model)
|
public OrderViewModel? ReadElement(OrderSearchModel model)
|
||||||
|
@ -8,11 +8,16 @@ using Microsoft.Extensions.Logging;
|
|||||||
|
|
||||||
namespace ElectronicsShopBusinessLogic.BusinessLogic
|
namespace ElectronicsShopBusinessLogic.BusinessLogic
|
||||||
{
|
{
|
||||||
public class PayLogic : IPaymentLogic
|
public class PaymentLogic : IPaymentLogic
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
private readonly IPaymentStorage _storage;
|
private readonly IPaymentStorage _storage;
|
||||||
|
|
||||||
|
public PaymentLogic(ILogger<PaymentLogic> logger, IPaymentStorage storage) {
|
||||||
|
_logger = logger;
|
||||||
|
_storage = storage;
|
||||||
|
}
|
||||||
|
|
||||||
public bool CreatePay(PaymentBindingModel model)
|
public bool CreatePay(PaymentBindingModel model)
|
||||||
{
|
{
|
||||||
CheckModel(model);
|
CheckModel(model);
|
||||||
@ -44,37 +49,29 @@ namespace ElectronicsShopBusinessLogic.BusinessLogic
|
|||||||
public List<PaymentViewModel>? ReadList(PaymentSearchModel? model)
|
public List<PaymentViewModel>? ReadList(PaymentSearchModel? model)
|
||||||
{
|
{
|
||||||
_logger.LogInformation($"ReadList. ClientID:{model?.ID}");
|
_logger.LogInformation($"ReadList. ClientID:{model?.ID}");
|
||||||
/*var list = model == null ? _storage.GetFullList() : _storage.GetFillteredList(model); ;
|
var list = model == null ? _storage.GetFullList() : _storage.GetFillteredList(model); ;
|
||||||
if (list == null)
|
if (list == null)
|
||||||
{
|
{
|
||||||
_logger.LogWarning("ReadList. return null list");
|
_logger.LogWarning("ReadList. return null list");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
_logger.LogInformation($"ReadList.Count:{list.Count}");*/
|
_logger.LogInformation($"ReadList.Count:{list.Count}");
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CheckModel(PaymentBindingModel model, bool withParams = true)
|
private void CheckModel(PaymentBindingModel model, bool withParams = true)
|
||||||
{
|
{
|
||||||
if (model == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(model));
|
|
||||||
}
|
|
||||||
if (!withParams)
|
if (!withParams)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (model.SumPayment <= 0)
|
if (model.SumPayment <= 0)
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException("Цена продукта должна быть больше 0", nameof(model.SumPayment));
|
throw new ArgumentNullException("Сумма оплаты должна быть больше 0", nameof(model.SumPayment));
|
||||||
}
|
|
||||||
_logger.LogInformation($"Payment. ID:{model.ID}.ProductID:{model.ProductID}.Sum:{model.SumPayment}.OrderID:{model.OrderID}.PayOption{model.PayOption}");
|
|
||||||
var element = _storage.GetElement(new PaymentSearchModel { ID = model.ID });
|
|
||||||
if (element != null && element.PayOption != model.PayOption)
|
|
||||||
{
|
|
||||||
throw new InvalidOperationException("Продукт с таким названием уже есть");
|
|
||||||
}
|
}
|
||||||
|
_logger.LogInformation($"Payment. ID:{model.ID}.ProductID:{model.ProductID}.Sum:{model.SumPayment}.OrderID:{model.OrderID}" +
|
||||||
|
$".PayOption{model.PayOption}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -84,9 +84,6 @@ namespace ElectronicsShopBusinessLogic.BusinessLogic
|
|||||||
|
|
||||||
private void CheckModel(ProductBindingModel model, bool withParams = true)
|
private void CheckModel(ProductBindingModel model, bool withParams = true)
|
||||||
{
|
{
|
||||||
if (model == null) {
|
|
||||||
throw new ArgumentNullException(nameof(model));
|
|
||||||
}
|
|
||||||
if (!withParams) {
|
if (!withParams) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ namespace ElectronicsShopContracts.BusinessLogicContracts {
|
|||||||
List<EmployeeViewModel>? ReadList(EmployeeSearchModel model);
|
List<EmployeeViewModel>? ReadList(EmployeeSearchModel model);
|
||||||
EmployeeViewModel? ReadElemet(EmployeeSearchModel model);
|
EmployeeViewModel? ReadElemet(EmployeeSearchModel model);
|
||||||
|
|
||||||
bool Add(EmployeeBindingModel model);
|
bool Create(EmployeeBindingModel model);
|
||||||
bool Update(EmployeeBindingModel model);
|
bool Update(EmployeeBindingModel model);
|
||||||
bool Delete(EmployeeBindingModel model);
|
bool Delete(EmployeeBindingModel model);
|
||||||
}
|
}
|
||||||
|
@ -10,5 +10,6 @@ namespace ElectronicsShopContracts.SearchModels
|
|||||||
{
|
{
|
||||||
public int? ID { get; set; }
|
public int? ID { get; set; }
|
||||||
public string? Email { get; set; }
|
public string? Email { get; set; }
|
||||||
|
public string? Passwrod { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ namespace ElectronicsShopContracts.StorageContracts {
|
|||||||
List<CostItemViewModel> GetFullList();
|
List<CostItemViewModel> GetFullList();
|
||||||
List<CostItemViewModel> GetFillteredList(CostItemSearchModel model);
|
List<CostItemViewModel> GetFillteredList(CostItemSearchModel model);
|
||||||
|
|
||||||
CostItemViewModel GetElement(CostItemSearchModel model);
|
CostItemViewModel? GetElement(CostItemSearchModel model);
|
||||||
CostItemViewModel? Insert(CostItemBindingModel model);
|
CostItemViewModel? Insert(CostItemBindingModel model);
|
||||||
CostItemViewModel? Update(CostItemBindingModel model);
|
CostItemViewModel? Update(CostItemBindingModel model);
|
||||||
CostItemViewModel? Delete(CostItemBindingModel model);
|
CostItemViewModel? Delete(CostItemBindingModel model);
|
||||||
|
@ -11,8 +11,10 @@ namespace ElectronicsShopContracts.StorageContracts
|
|||||||
{
|
{
|
||||||
public interface IPaymentStorage
|
public interface IPaymentStorage
|
||||||
{
|
{
|
||||||
List<PaymentViewModel> GetFullList();
|
List<PaymentViewModel>? GetFullList();
|
||||||
|
List<PaymentViewModel>? GetFillteredList(PaymentSearchModel model);
|
||||||
PaymentViewModel? GetElement(PaymentSearchModel model);
|
PaymentViewModel? GetElement(PaymentSearchModel model);
|
||||||
|
|
||||||
PaymentViewModel? Insert(PaymentBindingModel model);
|
PaymentViewModel? Insert(PaymentBindingModel model);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,6 @@ namespace ElectronicsShopDataBaseImplement
|
|||||||
public virtual DbSet<OrderProduct> OrderProducts { set; get; }
|
public virtual DbSet<OrderProduct> OrderProducts { set; get; }
|
||||||
public virtual DbSet<Employee> Employees { set; get; }
|
public virtual DbSet<Employee> Employees { set; get; }
|
||||||
public virtual DbSet<CostItem> CostItems { set; get; }
|
public virtual DbSet<CostItem> CostItems { set; get; }
|
||||||
|
public virtual DbSet<Payment> Payments { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,8 @@ using ElectronicsShopContracts.SearchModels;
|
|||||||
using ElectronicsShopContracts.StorageContracts;
|
using ElectronicsShopContracts.StorageContracts;
|
||||||
using ElectronicsShopContracts.ViewModels;
|
using ElectronicsShopContracts.ViewModels;
|
||||||
using ElectronicsShopDataBaseImplement.Models;
|
using ElectronicsShopDataBaseImplement.Models;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Query.Internal;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@ -13,6 +15,28 @@ namespace ElectronicsShopDataBaseImplement.Implements
|
|||||||
{
|
{
|
||||||
public class ClientStorage : IClientStorage
|
public class ClientStorage : IClientStorage
|
||||||
{
|
{
|
||||||
|
public ClientViewModel? Insert(ClientBindingModel model) {
|
||||||
|
var newComponent = Client.Create(model);
|
||||||
|
if (newComponent == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
using var context = new Database();
|
||||||
|
context.Clients.Add(newComponent);
|
||||||
|
context.SaveChanges();
|
||||||
|
return newComponent.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClientViewModel? Update(ClientBindingModel model) {
|
||||||
|
using var context = new Database();
|
||||||
|
var component = context.Clients.FirstOrDefault(x => x.ID == model.ID);
|
||||||
|
if (component == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
component.Update(model);
|
||||||
|
context.SaveChanges();
|
||||||
|
return component.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
public ClientViewModel? Delete(ClientBindingModel model)
|
public ClientViewModel? Delete(ClientBindingModel model)
|
||||||
{
|
{
|
||||||
using var context = new Database();
|
using var context = new Database();
|
||||||
@ -28,14 +52,21 @@ namespace ElectronicsShopDataBaseImplement.Implements
|
|||||||
|
|
||||||
public ClientViewModel? GetElement(ClientSearchModel model)
|
public ClientViewModel? GetElement(ClientSearchModel model)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(model.Email) && !model.ID.HasValue)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
using var context = new Database();
|
using var context = new Database();
|
||||||
return context.Clients.FirstOrDefault(x =>
|
if (model.ID.HasValue) {
|
||||||
(!string.IsNullOrEmpty(model.Email) && x.Email == model.Email ||
|
return context.Clients
|
||||||
(model.ID.HasValue && x.ID == model.ID)))?.GetViewModel;
|
.Include(x => x.Orders)
|
||||||
|
.FirstOrDefault(x => model.ID.HasValue &&
|
||||||
|
x.ID == model.ID)
|
||||||
|
?.GetViewModel;
|
||||||
|
}
|
||||||
|
else if (!string.IsNullOrEmpty(model.Email) && !string.IsNullOrEmpty(model.Passwrod)) {
|
||||||
|
return context.Clients
|
||||||
|
.Include (x => x.Orders)
|
||||||
|
.FirstOrDefault(x => (x.Email == model.Email && x.Password == model.Passwrod))
|
||||||
|
?.GetViewModel;
|
||||||
|
}
|
||||||
|
return new();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ClientViewModel> GetFilteredList(ClientSearchModel model)
|
public List<ClientViewModel> GetFilteredList(ClientSearchModel model)
|
||||||
@ -45,39 +76,20 @@ namespace ElectronicsShopDataBaseImplement.Implements
|
|||||||
return new();
|
return new();
|
||||||
}
|
}
|
||||||
using var context = new Database();
|
using var context = new Database();
|
||||||
return context.Clients.Where(x => x.Email.Contains(model.Email)).Select(x => x.GetViewModel).ToList();
|
return context.Clients
|
||||||
|
.Include(x => x.Orders)
|
||||||
|
.Where(x => x.Email
|
||||||
|
.Contains(model.Email))
|
||||||
|
.Select(x => x.GetViewModel).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ClientViewModel> GetFullList()
|
public List<ClientViewModel> GetFullList()
|
||||||
{
|
{
|
||||||
using var context = new Database();
|
using var context = new Database();
|
||||||
return context.Clients.Select(x => x.GetViewModel).ToList();
|
return context.Clients
|
||||||
}
|
.Include(x => x.Orders)
|
||||||
|
.Select(x => x.GetViewModel)
|
||||||
public ClientViewModel? Insert(ClientBindingModel model)
|
.ToList();
|
||||||
{
|
|
||||||
var newComponent = Client.Create(model);
|
|
||||||
if (newComponent == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
using var context = new Database();
|
|
||||||
context.Clients.Add(newComponent);
|
|
||||||
context.SaveChanges();
|
|
||||||
return newComponent.GetViewModel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ClientViewModel? Update(ClientBindingModel model)
|
|
||||||
{
|
|
||||||
using var context = new Database();
|
|
||||||
var component = context.Clients.FirstOrDefault(x => x.ID == model.ID);
|
|
||||||
if (component == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
component.Update(model);
|
|
||||||
context.SaveChanges();
|
|
||||||
return component.GetViewModel;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,28 @@ namespace ElectronicsShopDataBaseImplement.Implements
|
|||||||
{
|
{
|
||||||
public class CostItemStorage : ICostItemStorage
|
public class CostItemStorage : ICostItemStorage
|
||||||
{
|
{
|
||||||
|
public CostItemViewModel? Insert(CostItemBindingModel model) {
|
||||||
|
var newComponent = CostItem.Create(model);
|
||||||
|
if (newComponent == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
using var context = new Database();
|
||||||
|
context.CostItems.Add(newComponent);
|
||||||
|
context.SaveChanges();
|
||||||
|
return newComponent.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CostItemViewModel? Update(CostItemBindingModel model) {
|
||||||
|
using var context = new Database();
|
||||||
|
var component = context.CostItems.FirstOrDefault(x => x.ID == model.ID);
|
||||||
|
if (component == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
component.Update(model);
|
||||||
|
context.SaveChanges();
|
||||||
|
return component.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
public CostItemViewModel? Delete(CostItemBindingModel model)
|
public CostItemViewModel? Delete(CostItemBindingModel model)
|
||||||
{
|
{
|
||||||
using var context = new Database();
|
using var context = new Database();
|
||||||
@ -26,16 +48,17 @@ namespace ElectronicsShopDataBaseImplement.Implements
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CostItemViewModel GetElement(CostItemSearchModel model)
|
public CostItemViewModel? GetElement(CostItemSearchModel model)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(model.Name) && !model.ID.HasValue)
|
if (string.IsNullOrEmpty(model.Name) && !model.ID.HasValue)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
using var context = new Database();
|
using var context = new Database();
|
||||||
return context.CostItems.FirstOrDefault(x =>
|
return context.CostItems
|
||||||
(!string.IsNullOrEmpty(model.Name) && x.Name == model.Name ||
|
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.Name)
|
||||||
(model.ID.HasValue && x.ID == model.ID)))?.GetViewModel;
|
&& x.Name == model.Name) ||
|
||||||
|
(model.ID.HasValue && x.ID == model.ID))?.GetViewModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<CostItemViewModel> GetFillteredList(CostItemSearchModel model)
|
public List<CostItemViewModel> GetFillteredList(CostItemSearchModel model)
|
||||||
@ -45,7 +68,8 @@ namespace ElectronicsShopDataBaseImplement.Implements
|
|||||||
return new();
|
return new();
|
||||||
}
|
}
|
||||||
using var context = new Database();
|
using var context = new Database();
|
||||||
return context.CostItems.Where(x => x.Name.Contains(model.Name)).Select(x => x.GetViewModel).ToList();
|
return context.CostItems.Where(x => x.Name.Contains(model.Name))
|
||||||
|
.Select(x => x.GetViewModel).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<CostItemViewModel> GetFullList()
|
public List<CostItemViewModel> GetFullList()
|
||||||
@ -53,31 +77,5 @@ namespace ElectronicsShopDataBaseImplement.Implements
|
|||||||
using var context = new Database();
|
using var context = new Database();
|
||||||
return context.CostItems.Select(x => x.GetViewModel).ToList();
|
return context.CostItems.Select(x => x.GetViewModel).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public CostItemViewModel? Insert(CostItemBindingModel model)
|
|
||||||
{
|
|
||||||
var newComponent = CostItem.Create(model);
|
|
||||||
if (newComponent == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
using var context = new Database();
|
|
||||||
context.CostItems.Add(newComponent);
|
|
||||||
context.SaveChanges();
|
|
||||||
return newComponent.GetViewModel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public CostItemViewModel? Update(CostItemBindingModel model)
|
|
||||||
{
|
|
||||||
using var context = new Database();
|
|
||||||
var component = context.CostItems.FirstOrDefault(x => x.ID == model.ID);
|
|
||||||
if (component == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
component.Update(model);
|
|
||||||
context.SaveChanges();
|
|
||||||
return component.GetViewModel;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,28 @@ namespace ElectronicsShopDataBaseImplement.Implements
|
|||||||
{
|
{
|
||||||
public class EmployeeStorage : IEmployeeStorage
|
public class EmployeeStorage : IEmployeeStorage
|
||||||
{
|
{
|
||||||
|
public EmployeeViewModel? Insert(EmployeeBindingModel model) {
|
||||||
|
var newComponent = Employee.Create(model);
|
||||||
|
if (newComponent == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
using var context = new Database();
|
||||||
|
context.Employees.Add(newComponent);
|
||||||
|
context.SaveChanges();
|
||||||
|
return newComponent.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EmployeeViewModel? Update(EmployeeBindingModel model) {
|
||||||
|
using var context = new Database();
|
||||||
|
var component = context.Employees.FirstOrDefault(x => x.ID == model.ID);
|
||||||
|
if (component == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
component.Update(model);
|
||||||
|
context.SaveChanges();
|
||||||
|
return component.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
public EmployeeViewModel? Delete(EmployeeBindingModel model)
|
public EmployeeViewModel? Delete(EmployeeBindingModel model)
|
||||||
{
|
{
|
||||||
using var context = new Database();
|
using var context = new Database();
|
||||||
@ -29,15 +51,12 @@ namespace ElectronicsShopDataBaseImplement.Implements
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
using var context = new Database();
|
using var context = new Database();
|
||||||
return context.Employees.FirstOrDefault(x =>
|
return context.Employees
|
||||||
(!string.IsNullOrEmpty(model.Login) && x.EmployeeFIO == model.EmployeFIO ||
|
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.Login) &&
|
||||||
|
x.EmployeeFIO == model.EmployeFIO ||
|
||||||
(model.ID.HasValue && x.ID == model.ID)))?.GetViewModel;
|
(model.ID.HasValue && x.ID == model.ID)))?.GetViewModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public object GetElement(CostItemSearchModel costItemSearchModel) {
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<EmployeeViewModel> GetFilteredList(EmployeeSearchModel model)
|
public List<EmployeeViewModel> GetFilteredList(EmployeeSearchModel model)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(model.Login))
|
if (string.IsNullOrEmpty(model.Login))
|
||||||
@ -45,7 +64,9 @@ namespace ElectronicsShopDataBaseImplement.Implements
|
|||||||
return new();
|
return new();
|
||||||
}
|
}
|
||||||
using var context = new Database();
|
using var context = new Database();
|
||||||
return context.Employees.Where(x => x.Login.Contains(model.Login)).Select(x => x.GetViewModel).ToList();
|
return context.Employees.Where(x => x.Login
|
||||||
|
.Contains(model.Login))
|
||||||
|
.Select(x => x.GetViewModel).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<EmployeeViewModel> GetFullList()
|
public List<EmployeeViewModel> GetFullList()
|
||||||
@ -53,31 +74,5 @@ namespace ElectronicsShopDataBaseImplement.Implements
|
|||||||
using var context = new Database();
|
using var context = new Database();
|
||||||
return context.Employees.Select(x => x.GetViewModel).ToList();
|
return context.Employees.Select(x => x.GetViewModel).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public EmployeeViewModel? Insert(EmployeeBindingModel model)
|
|
||||||
{
|
|
||||||
var newComponent = Employee.Create(model);
|
|
||||||
if (newComponent == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
using var context = new Database();
|
|
||||||
context.Employees.Add(newComponent);
|
|
||||||
context.SaveChanges();
|
|
||||||
return newComponent.GetViewModel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EmployeeViewModel? Update(EmployeeBindingModel model)
|
|
||||||
{
|
|
||||||
using var context = new Database();
|
|
||||||
var component = context.Employees.FirstOrDefault(x => x.ID == model.ID);
|
|
||||||
if (component == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
component.Update(model);
|
|
||||||
context.SaveChanges();
|
|
||||||
return component.GetViewModel;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,37 @@ namespace ElectronicsShopDataBaseImplement.Implements
|
|||||||
{
|
{
|
||||||
public class OrderStorage : IOrderStorage
|
public class OrderStorage : IOrderStorage
|
||||||
{
|
{
|
||||||
|
public OrderViewModel? Insert(OrderBindingModel model)
|
||||||
|
{
|
||||||
|
using var context = new Database();
|
||||||
|
var newComponent = Order.Create(context,model);
|
||||||
|
if (newComponent == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
context.Orders.Add(newComponent);
|
||||||
|
context.SaveChanges();
|
||||||
|
return newComponent.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OrderViewModel? Update(OrderBindingModel model) {
|
||||||
|
using var context = new Database();
|
||||||
|
using var transcation = context.Database.BeginTransaction();
|
||||||
|
try {
|
||||||
|
var product = context.Orders.FirstOrDefault(rec => rec.ID == model.ID);
|
||||||
|
if (product == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
product.UpdateProducts(context, model);
|
||||||
|
transcation.Commit();
|
||||||
|
return product.GetViewModel;
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
transcation.Rollback();
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public OrderViewModel? Delete(OrderBindingModel model)
|
public OrderViewModel? Delete(OrderBindingModel model)
|
||||||
{
|
{
|
||||||
using var context = new Database();
|
using var context = new Database();
|
||||||
@ -29,8 +60,11 @@ namespace ElectronicsShopDataBaseImplement.Implements
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
using var context = new Database();
|
using var context = new Database();
|
||||||
return context.Orders.FirstOrDefault(x =>
|
return context.Orders
|
||||||
(model.ID.HasValue && x.ID == model.ID))?.GetViewModel;
|
.Include(x => x.Payments)
|
||||||
|
.Include(x => x.Products)
|
||||||
|
.ThenInclude(x => x._product)
|
||||||
|
.FirstOrDefault(x => (model.ID.HasValue && x.ID == model.ID))?.GetViewModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<OrderViewModel> GetFilteredList(OrderSearchModel model)
|
public List<OrderViewModel> GetFilteredList(OrderSearchModel model)
|
||||||
@ -51,33 +85,11 @@ namespace ElectronicsShopDataBaseImplement.Implements
|
|||||||
public List<OrderViewModel> GetFullList()
|
public List<OrderViewModel> GetFullList()
|
||||||
{
|
{
|
||||||
using var context = new Database();
|
using var context = new Database();
|
||||||
return context.Orders.Select(x => x.GetViewModel).ToList();
|
return context.Orders
|
||||||
|
.Include(x => x.Products)
|
||||||
|
.ThenInclude(x => x._product).ToList()
|
||||||
|
.Select(x => x.GetViewModel).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public OrderViewModel? Insert(OrderBindingModel model)
|
|
||||||
{
|
|
||||||
using var context = new Database();
|
|
||||||
var newComponent = Order.Create(context,model);
|
|
||||||
if (newComponent == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
context.Orders.Add(newComponent);
|
|
||||||
context.SaveChanges();
|
|
||||||
return newComponent.GetViewModel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public OrderViewModel? Update(OrderBindingModel model)
|
|
||||||
{
|
|
||||||
using var context = new Database();
|
|
||||||
var component = context.Orders.FirstOrDefault(x => x.ID == model.ID);
|
|
||||||
if (component == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
component.Update(context ,model);
|
|
||||||
context.SaveChanges();
|
|
||||||
return component.GetViewModel;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,49 @@
|
|||||||
|
using ElectronicsShopContracts.BindingModels;
|
||||||
|
using ElectronicsShopContracts.SearchModels;
|
||||||
|
using ElectronicsShopContracts.StorageContracts;
|
||||||
|
using ElectronicsShopContracts.ViewModels;
|
||||||
|
using ElectronicsShopDataBaseImplement.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net.Security;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ElectronicsShopDataBaseImplement.Implements {
|
||||||
|
public class PaymentStorage : IPaymentStorage {
|
||||||
|
public PaymentViewModel? Insert(PaymentBindingModel model) {
|
||||||
|
var newPayment = Payment.Create(model);
|
||||||
|
if (newPayment == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
using var context = new Database();
|
||||||
|
context.Payments.Add(newPayment);
|
||||||
|
context.SaveChanges();
|
||||||
|
return newPayment.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PaymentViewModel? GetElement(PaymentSearchModel model) {
|
||||||
|
if (model.ProductID.HasValue || model.OrderID.HasValue) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
using var context = new Database();
|
||||||
|
return context.Payments.FirstOrDefault(x => (model.ID.HasValue && x.ID == model.ID))?.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<PaymentViewModel>? GetFillteredList(PaymentSearchModel model) {
|
||||||
|
if (model.ProductID.HasValue || model.OrderID.HasValue) {
|
||||||
|
return new();
|
||||||
|
}
|
||||||
|
using var context = new Database();
|
||||||
|
return context.Payments
|
||||||
|
.Where(x => x.ID == model.ID)
|
||||||
|
.Select(x => x.GetViewModel).ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<PaymentViewModel>? GetFullList() {
|
||||||
|
using var context = new Database();
|
||||||
|
return context.Payments.Select(x => x.GetViewModel).ToList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -13,6 +13,28 @@ namespace ElectronicsShopDataBaseImplement.Implements
|
|||||||
{
|
{
|
||||||
public class ProductStorage : IProductStorage
|
public class ProductStorage : IProductStorage
|
||||||
{
|
{
|
||||||
|
public ProductViewModel? Insert(ProductBindingModel model) {
|
||||||
|
var newComponent = Product.Create(model);
|
||||||
|
if (newComponent == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
using var context = new Database();
|
||||||
|
context.Products.Add(newComponent);
|
||||||
|
context.SaveChanges();
|
||||||
|
return newComponent.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProductViewModel? Update(ProductBindingModel model) {
|
||||||
|
using var context = new Database();
|
||||||
|
var component = context.Products.FirstOrDefault(x => x.ID == model.ID);
|
||||||
|
if (component == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
component.Update(model);
|
||||||
|
context.SaveChanges();
|
||||||
|
return component.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
public ProductViewModel? Delete(ProductBindingModel model)
|
public ProductViewModel? Delete(ProductBindingModel model)
|
||||||
{
|
{
|
||||||
using var context = new Database();
|
using var context = new Database();
|
||||||
@ -33,8 +55,8 @@ namespace ElectronicsShopDataBaseImplement.Implements
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
using var context = new Database();
|
using var context = new Database();
|
||||||
return context.Products.FirstOrDefault(x =>
|
return context.Products.FirstOrDefault(x => (!string.IsNullOrEmpty(model.ProductName) &&
|
||||||
(!string.IsNullOrEmpty(model.ProductName) && (model.ID.HasValue && x.ID == model.ID)))?.GetViewModel;
|
(model.ID.HasValue && x.ID == model.ID)))?.GetViewModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<ProductViewModel> GetFilteredList(ProductSearchModel model)
|
public List<ProductViewModel> GetFilteredList(ProductSearchModel model)
|
||||||
@ -47,38 +69,10 @@ namespace ElectronicsShopDataBaseImplement.Implements
|
|||||||
return context.Products.Where(x => x.ProductName.Contains(model.ProductName)).Select(x => x.GetViewModel).ToList();
|
return context.Products.Where(x => x.ProductName.Contains(model.ProductName)).Select(x => x.GetViewModel).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public List<ProductViewModel> GetFullList()
|
public List<ProductViewModel> GetFullList()
|
||||||
{
|
{
|
||||||
using var context = new Database();
|
using var context = new Database();
|
||||||
return context.Products.Select(x => x.GetViewModel).ToList();
|
return context.Products.Select(x => x.GetViewModel).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ProductViewModel? Insert(ProductBindingModel model)
|
|
||||||
{
|
|
||||||
var newComponent = Product.Create(model);
|
|
||||||
if (newComponent == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
using var context = new Database();
|
|
||||||
context.Products.Add(newComponent);
|
|
||||||
context.SaveChanges();
|
|
||||||
return newComponent.GetViewModel;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public ProductViewModel? Update(ProductBindingModel model)
|
|
||||||
{
|
|
||||||
using var context = new Database();
|
|
||||||
var component = context.Products.FirstOrDefault(x => x.ID == model.ID);
|
|
||||||
if (component == null)
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
component.Update(model);
|
|
||||||
context.SaveChanges();
|
|
||||||
return component.GetViewModel;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user