PIbd-21 Potapov N.S. LabWork07 #8

Closed
ns.potapov wants to merge 26 commits from LabWork07 into LabWork06
6 changed files with 27 additions and 7 deletions
Showing only changes of commit f73d555c0e - Show all commits

View File

@ -3,6 +3,7 @@ using SecurirySystemClientApp.Models;
using SecuritySystemContracts.BindingModels;
using SecuritySystemContracts.ViewModels;
using System.Diagnostics;
using System.Text;
namespace SecurirySystemClientApp.Controllers
{

View File

@ -6,7 +6,7 @@
</div>
<form method="post">
<div class="row">
<div class="col-4">Логин:</div>
<div class="col-4">Email:</div>
<div class="col-8"><input type="text" name="login" /></div>
</div>
<div class="row">

View File

@ -4,6 +4,7 @@ using SecuritySystemContracts.BusinessLogicsContracts;
using SecuritySystemContracts.SearchModels;
using SecuritySystemContracts.StoragesContracts;
using SecuritySystemContracts.ViewModels;
using System.Text.RegularExpressions;
namespace SecuritySystemBusinessLogic.BusinessLogics
{
@ -93,6 +94,12 @@ namespace SecuritySystemBusinessLogic.BusinessLogics
{
throw new ArgumentNullException("Нет email клиента", nameof(model.Email));
}
string regexepEmailPattern = "^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$";
Regex regexpEmail = new Regex(regexepEmailPattern);
if (!regexpEmail.IsMatch(model.Email))
{
throw new ArgumentException("Email не валидный");
}
if (string.IsNullOrEmpty(model.Password))
{
throw new ArgumentNullException("Нет пароля клиента", nameof(model.Password));

View File

@ -42,13 +42,17 @@ namespace SecuritySystemBusinessLogic.BusinessLogics
{
CheckModel(model);
if (model.Status != OrderStatus.Неизвестен) return false;
model.Status = OrderStatus.Принят;
if (_orderStorage.Insert(model) == null)
var inserted = _orderStorage.Insert(model);
if (inserted == null)
{
_logger.LogWarning("Insert operation failed");
return false;
}
return true;
model.Id = inserted.Id;
return ChangeStatus(model, OrderStatus.Принят);
}
public bool ChangeStatus(OrderBindingModel model, OrderStatus status)
@ -73,16 +77,19 @@ namespace SecuritySystemBusinessLogic.BusinessLogics
model.Status = status;
if (model.Status == OrderStatus.Выдан)
model.DateImplement = DateTime.Now;
if (_orderStorage.Update(model) == null)
var updatedOrder = _orderStorage.Update(model);
if (updatedOrder == null)
{
model.Status = oldStatus;
_logger.LogWarning("Update operation failed");
return false;
}
var orderClient = _clientStorage.GetElement(new ClientSearchModel { Id = order.ClientId });
var orderClient = _clientStorage.GetElement(new ClientSearchModel { Id = updatedOrder.ClientId });
if (orderClient != null)
{
SendMail(orderClient, order);
SendMail(orderClient, updatedOrder);
}
return true;
}

View File

@ -15,6 +15,7 @@ namespace SecuritySystemBusinessLogic.MailWorker
public MailKitWorker(ILogger<MailKitWorker> logger, IMessageInfoLogic messageInfoLogic) : base(logger, messageInfoLogic) { }
protected override async Task SendMailAsync(MailSendInfoBindingModel info)
{
if (info.MailAddress == null) return;
using var objMailMessage = new MailMessage();
using var objSmtpClient = new SmtpClient(_smtpClientHost, _smtpClientPort);
try

View File

@ -3,6 +3,7 @@ using SecuritySystemContracts.BusinessLogicsContracts;
using SecuritySystemContracts.StoragesContracts;
using SecuritySystemDatabaseImplement.Implements;
using Microsoft.OpenApi.Models;
using SecuritySystemBusinessLogic.MailWorker;
var builder = WebApplication.CreateBuilder(args);
builder.Logging.SetMinimumLevel(LogLevel.Trace);
@ -12,9 +13,12 @@ builder.Logging.AddLog4Net("log4net.config");
builder.Services.AddTransient<IClientStorage, ClientStorage>();
builder.Services.AddTransient<IOrderStorage, OrderStorage>();
builder.Services.AddTransient<ISecureStorage, SecureStorage>();
builder.Services.AddTransient<IMessageInfoStorage, MessageInfoStorage>();
builder.Services.AddTransient<IOrderLogic, OrderLogic>();
builder.Services.AddTransient<IClientLogic, ClientLogic>();
builder.Services.AddTransient<ISecureLogic, SecureLogic>();
builder.Services.AddTransient<IMessageInfoLogic, MessageInfoLogic>();
builder.Services.AddSingleton<AbstractMailWorker, MailKitWorker>();
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle