129 lines
4.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using LawFirmContracts.BindingModels;
using LawFirmContracts.BusinessLogicsContracts;
using LawFirmContracts.SearchModels;
using LawFirmContracts.StorageContracts;
using LawFirmContracts.ViewModels;
using Microsoft.Extensions.Logging;
namespace LawFirmBusinessLogic.BusinessLogics
{
public class CustomerLogic : ICustomerLogic
{
private readonly ILogger _logger;
private readonly ICustomerStorage _customerStorage;
public CustomerLogic(ILogger<CustomerLogic> logger, ICustomerStorage customerStorage)
{
_logger = logger;
_customerStorage = customerStorage;
}
public bool Create(CustomerBindingModel model)
{
CheckModel(model);
if (_customerStorage.Insert(model) == null)
{
_logger.LogWarning("Insert operation failed");
return false;
}
return true;
}
public bool Delete(CustomerBindingModel model)
{
CheckModel(model, false);
_logger.LogInformation("Delete. Id: {Id}", model.Id);
if (_customerStorage.Delete(model) == null)
{
_logger.LogWarning("Delete operation failed");
return false;
}
return true;
}
public CustomerViewModel ReadElement(CustomerSearchModel model)
{
if (model == null)
{
throw new ArgumentNullException(nameof(model));
}
_logger.LogInformation("ReadElement. Id: {Id}", model.Id);
var element = _customerStorage.GetElement(model);
if (element == null)
{
_logger.LogWarning("ReadElement element not found");
return null;
}
_logger.LogInformation("ReadElement found. Id: {Id}", element.Id);
return element;
}
public bool Update(CustomerBindingModel model)
{
CheckModel(model);
if (_customerStorage.Update(model) == null)
{
_logger.LogWarning("Update operation failed");
return false;
}
return true;
}
public List<CustomerViewModel>? ReadList(CustomerSearchModel? model)
{
_logger.LogInformation("ReadList. Id: {Id}", model?.Id);
var list = model == null ? _customerStorage.GetFullList() : _customerStorage.GetFilteredList(model);
if (list == null)
{
_logger.LogWarning("ReadList return null list");
return null;
}
_logger.LogInformation("ReadList. Count: {Count}", list.Count);
return list;
}
private void CheckModel(CustomerBindingModel model, bool withParams = true)
{
if (model == null)
{
throw new ArgumentException(nameof(model));
}
if (!withParams)
{
return;
}
if (string.IsNullOrEmpty(model.Login))
{
_logger.LogWarning("Login is empty");
throw new ArgumentNullException("Не заполнен логин");
}
if (string.IsNullOrEmpty(model.Name))
{
_logger.LogWarning("Name is empty");
throw new ArgumentNullException("Не заполнено имя");
}
if (string.IsNullOrEmpty(model.Surname))
{
_logger.LogWarning("Surname is empty");
throw new ArgumentNullException("Не заполнена фамилия");
}
if (string.IsNullOrEmpty(model.Password))
{
_logger.LogWarning("Password is empty");
throw new ArgumentNullException("Не заполнен пароль");
}
var ExistingCustomer = _customerStorage.GetElement
(new CustomerSearchModel() { Login = model.Login });
if (ExistingCustomer != null)
{
_logger.LogWarning("There is already a user with this login");
throw new ArgumentException("Пользователь с таким логином уже есть");
}
_logger.LogInformation("Customer. Id: {Id}", model.Id);
}
}
}