PIbd-21 Potapov N.S. LabWork07 #8
@ -3,6 +3,7 @@ using SecurirySystemClientApp.Models;
|
||||
using SecuritySystemContracts.BindingModels;
|
||||
using SecuritySystemContracts.ViewModels;
|
||||
using System.Diagnostics;
|
||||
using System.Text;
|
||||
|
||||
namespace SecurirySystemClientApp.Controllers
|
||||
{
|
||||
|
@ -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">
|
||||
|
@ -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));
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user