поправочки

This commit is contained in:
AnnZhimol 2023-05-18 23:11:30 +04:00
parent b15327efd0
commit 105f89548f
3 changed files with 73 additions and 9 deletions

View File

@ -1,4 +1,5 @@
using HotelContracts.BindingModels; using HotelBusinessLogic.MailWorker;
using HotelContracts.BindingModels;
using HotelContracts.BusinessLogicsContracts; using HotelContracts.BusinessLogicsContracts;
using HotelContracts.SearchModels; using HotelContracts.SearchModels;
using HotelContracts.StoragesContracts; using HotelContracts.StoragesContracts;
@ -13,23 +14,31 @@ namespace HotelBusinessLogic.BusinessLogics
{ {
private readonly ILogger _logger; private readonly ILogger _logger;
private readonly IConferenceStorage _conferenceStorage; private readonly IConferenceStorage _conferenceStorage;
private readonly AbstractMailWorker _mailWorker;
private readonly IOrganiserLogic _organiserLogic;
public ConferenceLogic(ILogger<ConferenceLogic> logger, IConferenceStorage conferenceStorage) public ConferenceLogic(ILogger<ConferenceLogic> logger, IConferenceStorage conferenceStorage, IOrganiserLogic organiserLogic, AbstractMailWorker mailWorker)
{ {
_logger = logger; _logger = logger;
_conferenceStorage = conferenceStorage; _conferenceStorage = conferenceStorage;
_organiserLogic = organiserLogic;
_mailWorker = mailWorker;
} }
public bool Create(ConferenceBindingModel model) public bool Create(ConferenceBindingModel model)
{ {
CheckModel(model); CheckModel(model);
model.ConferenceMembers = new(); model.ConferenceMembers = new();
if (_conferenceStorage.Insert(model) == null) var result = _conferenceStorage.Insert(model);
if (result == null)
{ {
_logger.LogWarning("Insert operation failed"); _logger.LogWarning("Insert operation failed");
return false; return false;
} }
SendConferenceMessage(result.OrganiserId, $"Гостиница \"Развитие\", Конференция №{result.Id}", $"Конференция №{result.Id} под названием {result.ConferenceName} и датой начала {result.StartDate} добавлена");
return true; return true;
} }
@ -39,12 +48,16 @@ namespace HotelBusinessLogic.BusinessLogics
_logger.LogInformation("Delete. Id:{Id}", model.Id); _logger.LogInformation("Delete. Id:{Id}", model.Id);
if (_conferenceStorage.Delete(model) == null) var result = _conferenceStorage.Delete(model);
if (result == null)
{ {
_logger.LogWarning("Delete operation failed"); _logger.LogWarning("Delete operation failed");
return false; return false;
} }
SendConferenceMessage(result.OrganiserId, $"Гостиница \"Развитие\", Конференция №{result.Id}", $"Конференция №{result.Id} под названием {result.ConferenceName} и датой начала {result.StartDate} удалена");
return true; return true;
} }
@ -152,5 +165,24 @@ namespace HotelBusinessLogic.BusinessLogics
_logger.LogInformation("Conference. ConferenceName:{ConferenceName}.StartDate:{ StartDate}. Id: { Id}", model.ConferenceName, model.StartDate, model.Id); _logger.LogInformation("Conference. ConferenceName:{ConferenceName}.StartDate:{ StartDate}. Id: { Id}", model.ConferenceName, model.StartDate, model.Id);
} }
private bool SendConferenceMessage(int organiserId, string subject, string text)
{
var organiser = _organiserLogic.ReadElement(new() { Id = organiserId });
if (organiser == null)
{
return false;
}
_mailWorker.MailSendAsync(new()
{
MailAddress = organiser.OrganiserEmail,
Subject = subject,
Text = text
});
return true;
}
} }
} }

View File

@ -1,4 +1,5 @@
using HotelContracts.BindingModels; using HotelBusinessLogic.MailWorker;
using HotelContracts.BindingModels;
using HotelContracts.BusinessLogicsContracts; using HotelContracts.BusinessLogicsContracts;
using HotelContracts.SearchModels; using HotelContracts.SearchModels;
using HotelContracts.StoragesContracts; using HotelContracts.StoragesContracts;
@ -12,11 +13,15 @@ namespace HotelBusinessLogic.BusinessLogics
{ {
private readonly ILogger _logger; private readonly ILogger _logger;
private readonly IMealPlanStorage _mealPlanStorage; private readonly IMealPlanStorage _mealPlanStorage;
private readonly AbstractMailWorker _mailWorker;
private readonly IOrganiserLogic _organiserLogic;
public MealPlanLogic(ILogger<MealPlanLogic> logger, IMealPlanStorage mealPlanStorage) public MealPlanLogic(ILogger<MealPlanLogic> logger, IMealPlanStorage mealPlanStorage, IOrganiserLogic organiserLogic, AbstractMailWorker mailWorker)
{ {
_logger = logger; _logger = logger;
_mealPlanStorage = mealPlanStorage; _mealPlanStorage = mealPlanStorage;
_organiserLogic = organiserLogic;
_mailWorker= mailWorker;
} }
public bool AddMemberToMealPlan(MealPlanSearchModel model, IMemberModel member) public bool AddMemberToMealPlan(MealPlanSearchModel model, IMemberModel member)
@ -56,12 +61,16 @@ namespace HotelBusinessLogic.BusinessLogics
CheckModel(model); CheckModel(model);
model.MealPlanMembers = new(); model.MealPlanMembers = new();
if (_mealPlanStorage.Insert(model) == null) var result = _mealPlanStorage.Insert(model);
if (result == null)
{ {
_logger.LogWarning("Insert operation failed"); _logger.LogWarning("Insert operation failed");
return false; return false;
} }
SendMealPlanMessage(result.OrganiserId, $"Гостиница \"Развитие\", План питания №{result.Id}", $"План питания №{result.Id} под названием {result.MealPlanName} и стоимостью {result.MealPlanPrice} добавлен");
return true; return true;
} }
@ -71,12 +80,16 @@ namespace HotelBusinessLogic.BusinessLogics
_logger.LogInformation("Delete. Id:{Id}", model.Id); _logger.LogInformation("Delete. Id:{Id}", model.Id);
if (_mealPlanStorage.Delete(model) == null) var result = _mealPlanStorage.Delete(model);
if (result== null)
{ {
_logger.LogWarning("Delete operation failed"); _logger.LogWarning("Delete operation failed");
return false; return false;
} }
SendMealPlanMessage(result.OrganiserId, $"Гостиница \"Развитие\", План питания №{result.Id}", $"План питания №{result.Id} под названием {result.MealPlanName} и стоимостью {result.MealPlanPrice} удален");
return true; return true;
} }
@ -166,5 +179,24 @@ namespace HotelBusinessLogic.BusinessLogics
throw new InvalidOperationException("План питания с таким названием уже есть"); throw new InvalidOperationException("План питания с таким названием уже есть");
} }
} }
private bool SendMealPlanMessage(int organiserId, string subject, string text)
{
var organiser = _organiserLogic.ReadElement(new() { Id = organiserId });
if (organiser == null)
{
return false;
}
_mailWorker.MailSendAsync(new()
{
MailAddress = organiser.OrganiserEmail,
Subject = subject,
Text = text
});
return true;
}
} }
} }

View File

@ -65,7 +65,7 @@ namespace HotelDataBaseImplement.Implemets
.ThenInclude(x => x.MealPlan) .ThenInclude(x => x.MealPlan)
.Include(x => x.ConferenceBookings) .Include(x => x.ConferenceBookings)
.Include(x => x.Organiser) .Include(x => x.Organiser)
.Where(x => x.StartDate >= model.DateFrom && x.StartDate <= model.DateTo) .Where(x => x.StartDate >= model.DateFrom && x.StartDate <= model.DateTo && x.OrganiserId == model.OrganiserId)
.Select(x => x.GetViewModel) .Select(x => x.GetViewModel)
.ToList(); .ToList();
} }