From bc6972bcfbfba5f2f156be53689f9a366afe3265 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Fri, 17 May 2024 13:59:40 +0200 Subject: [PATCH] =?UTF-8?q?ReadByName=20in=20EmailTemplate=20Repositroy=20?= =?UTF-8?q?und=20Dienst=20hinzugef=C3=BCgt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Contracts/IEmailTemplateService.cs | 3 +++ EnvelopeGenerator.Application/Key.cs | 23 ++++++++++--------- .../Services/EmailTemplateService.cs | 13 +++++++++++ .../Contracts/IEmailTemplateRepository.cs | 2 ++ .../Repositories/EmailTemplateRepository.cs | 4 ++++ .../Test/TestEmailTemplateController.cs | 22 +++++++++++++++++- 6 files changed, 55 insertions(+), 12 deletions(-) diff --git a/EnvelopeGenerator.Application/Contracts/IEmailTemplateService.cs b/EnvelopeGenerator.Application/Contracts/IEmailTemplateService.cs index 8151916e..eb497f44 100644 --- a/EnvelopeGenerator.Application/Contracts/IEmailTemplateService.cs +++ b/EnvelopeGenerator.Application/Contracts/IEmailTemplateService.cs @@ -1,11 +1,14 @@ using DigitalData.Core.Contracts.Application; +using DigitalData.Core.DTO; using EnvelopeGenerator.Application.DTOs; using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Infrastructure.Contracts; +using static EnvelopeGenerator.Common.Constants; namespace EnvelopeGenerator.Application.Contracts { public interface IEmailTemplateService : IBasicCRUDService { + Task> ReadByNameAsync(EmailTemplateType type); } } \ No newline at end of file diff --git a/EnvelopeGenerator.Application/Key.cs b/EnvelopeGenerator.Application/Key.cs index c1cd165d..768c2720 100644 --- a/EnvelopeGenerator.Application/Key.cs +++ b/EnvelopeGenerator.Application/Key.cs @@ -2,16 +2,17 @@ { public static class Key { - public static readonly string EnvelopeNotFound = "EnvelopeNotFound"; - public static readonly string EnvelopeReceiverNotFound = "EnvelopeReceiverNotFound"; - public static readonly string AccessCodeNull = "AccessCodeNull"; - public static readonly string WrongAccessCode = "WrongAccessCode"; - public static readonly string DataIntegrityIssue = "DataIntegrityIssue"; - public static readonly string SecurityBreachOrDataIntegrity = "SecurityBreachOrDataIntegrity"; - public static readonly string PossibleDataIntegrityIssue = "PossibleDataIntegrityIssue"; - public static readonly string SecurityBreach = "SecurityBreach"; - public static readonly string PossibleSecurityBreach = "PossibleSecurityBreach"; - public static readonly string WrongEnvelopeReceiverId = "WrongEnvelopeReceiverId"; - public static readonly string EnvelopeOrReceiverNonexists = "EnvelopeOrReceiverNonexists"; + public static readonly string InnerServiceError = nameof(InnerServiceError); + public static readonly string EnvelopeNotFound = nameof(EnvelopeNotFound); + public static readonly string EnvelopeReceiverNotFound = nameof(EnvelopeReceiverNotFound); + public static readonly string AccessCodeNull = nameof(AccessCodeNull); + public static readonly string WrongAccessCode = nameof(WrongAccessCode); + public static readonly string DataIntegrityIssue = nameof(DataIntegrityIssue); + public static readonly string SecurityBreachOrDataIntegrity = nameof(SecurityBreachOrDataIntegrity); + public static readonly string PossibleDataIntegrityIssue = nameof(PossibleDataIntegrityIssue); + public static readonly string SecurityBreach = nameof(SecurityBreach); + public static readonly string PossibleSecurityBreach = nameof(PossibleSecurityBreach); + public static readonly string WrongEnvelopeReceiverId = nameof(WrongEnvelopeReceiverId); + public static readonly string EnvelopeOrReceiverNonexists = nameof(EnvelopeOrReceiverNonexists); } } \ No newline at end of file diff --git a/EnvelopeGenerator.Application/Services/EmailTemplateService.cs b/EnvelopeGenerator.Application/Services/EmailTemplateService.cs index 34f133f4..4ca4ee2e 100644 --- a/EnvelopeGenerator.Application/Services/EmailTemplateService.cs +++ b/EnvelopeGenerator.Application/Services/EmailTemplateService.cs @@ -6,6 +6,9 @@ using EnvelopeGenerator.Application.DTOs; using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Infrastructure.Contracts; using EnvelopeGenerator.Application.Resources; +using static EnvelopeGenerator.Common.Constants; +using DigitalData.Core.DTO; +using Microsoft.Extensions.Logging; namespace EnvelopeGenerator.Application.Services { @@ -15,5 +18,15 @@ namespace EnvelopeGenerator.Application.Services : base(repository, localizer, mapper) { } + + public async Task> ReadByNameAsync(EmailTemplateType type) + { + var temp = await _repository.ReadByNameAsync(type); + return temp is null + ? Result.Fail() + .Message(Key.InnerServiceError) + .Notice(LogLevel.Error, Flag.DataIntegrityIssue, $"EmailTemplateType '{type}' is not found in DB. Please, define required e-mail template.") + : Result.Success(_mapper.MapOrThrow(temp)); + } } } \ No newline at end of file diff --git a/EnvelopeGenerator.Infrastructure/Contracts/IEmailTemplateRepository.cs b/EnvelopeGenerator.Infrastructure/Contracts/IEmailTemplateRepository.cs index b45c9eb3..91c7802d 100644 --- a/EnvelopeGenerator.Infrastructure/Contracts/IEmailTemplateRepository.cs +++ b/EnvelopeGenerator.Infrastructure/Contracts/IEmailTemplateRepository.cs @@ -1,9 +1,11 @@ using DigitalData.Core.Contracts.Infrastructure; using EnvelopeGenerator.Domain.Entities; +using static EnvelopeGenerator.Common.Constants; namespace EnvelopeGenerator.Infrastructure.Contracts { public interface IEmailTemplateRepository : ICRUDRepository { + Task ReadByNameAsync(EmailTemplateType type); } } \ No newline at end of file diff --git a/EnvelopeGenerator.Infrastructure/Repositories/EmailTemplateRepository.cs b/EnvelopeGenerator.Infrastructure/Repositories/EmailTemplateRepository.cs index 9b8f29fb..1735311d 100644 --- a/EnvelopeGenerator.Infrastructure/Repositories/EmailTemplateRepository.cs +++ b/EnvelopeGenerator.Infrastructure/Repositories/EmailTemplateRepository.cs @@ -2,6 +2,8 @@ using DigitalData.UserManager.Infrastructure.Repositories; using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Infrastructure.Contracts; +using Microsoft.EntityFrameworkCore; +using static EnvelopeGenerator.Common.Constants; namespace EnvelopeGenerator.Infrastructure.Repositories { @@ -10,5 +12,7 @@ namespace EnvelopeGenerator.Infrastructure.Repositories public EmailTemplateRepository(EGDbContext dbContext) : base(dbContext) { } + + public async Task ReadByNameAsync(EmailTemplateType type) => await _dbSet.Where(t => t.Name == type.ToString()).FirstOrDefaultAsync(); } } \ No newline at end of file diff --git a/EnvelopeGenerator.Web/Controllers/Test/TestEmailTemplateController.cs b/EnvelopeGenerator.Web/Controllers/Test/TestEmailTemplateController.cs index e216f6b4..50504002 100644 --- a/EnvelopeGenerator.Web/Controllers/Test/TestEmailTemplateController.cs +++ b/EnvelopeGenerator.Web/Controllers/Test/TestEmailTemplateController.cs @@ -1,7 +1,11 @@ -using EnvelopeGenerator.Application.Contracts; +using DigitalData.Core.DTO; +using EnvelopeGenerator.Application.Contracts; using EnvelopeGenerator.Application.DTOs; using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Infrastructure.Contracts; +using Microsoft.AspNetCore.Mvc; +using System.Security.Cryptography; +using static EnvelopeGenerator.Common.Constants; namespace EnvelopeGenerator.Web.Controllers.Test { @@ -9,7 +13,23 @@ namespace EnvelopeGenerator.Web.Controllers.Test { public TestEmailTemplateController(ILogger logger, IEmailTemplateService service) : base(logger, service) { + } + [HttpGet] + public virtual async Task GetAll([FromQuery] string? tempType = null) + { + return tempType is null + ? await base.GetAll() + : await _service.ReadByNameAsync((EmailTemplateType)Enum.Parse(typeof(EmailTemplateType), tempType)).ThenAsync( + Success: Ok, + Fail: IActionResult (messages, notices) => + { + _logger.LogNotice(notices); + return NotFound(messages); + }); } + + [NonAction] + public override Task GetAll() => base.GetAll(); } } \ No newline at end of file