ReadByName in EmailTemplate Repositroy und Dienst hinzugefügt.

This commit is contained in:
Developer 02 2024-05-17 13:59:40 +02:00
parent 2e66129485
commit bc6972bcfb
6 changed files with 56 additions and 13 deletions

View File

@ -1,11 +1,14 @@
using DigitalData.Core.Contracts.Application; using DigitalData.Core.Contracts.Application;
using DigitalData.Core.DTO;
using EnvelopeGenerator.Application.DTOs; using EnvelopeGenerator.Application.DTOs;
using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Domain.Entities;
using EnvelopeGenerator.Infrastructure.Contracts; using EnvelopeGenerator.Infrastructure.Contracts;
using static EnvelopeGenerator.Common.Constants;
namespace EnvelopeGenerator.Application.Contracts namespace EnvelopeGenerator.Application.Contracts
{ {
public interface IEmailTemplateService : IBasicCRUDService<IEmailTemplateRepository, EmailTemplateDto, EmailTemplate, int> public interface IEmailTemplateService : IBasicCRUDService<IEmailTemplateRepository, EmailTemplateDto, EmailTemplate, int>
{ {
Task<DataResult<EmailTemplateDto>> ReadByNameAsync(EmailTemplateType type);
} }
} }

View File

@ -2,16 +2,17 @@
{ {
public static class Key public static class Key
{ {
public static readonly string EnvelopeNotFound = "EnvelopeNotFound"; public static readonly string InnerServiceError = nameof(InnerServiceError);
public static readonly string EnvelopeReceiverNotFound = "EnvelopeReceiverNotFound"; public static readonly string EnvelopeNotFound = nameof(EnvelopeNotFound);
public static readonly string AccessCodeNull = "AccessCodeNull"; public static readonly string EnvelopeReceiverNotFound = nameof(EnvelopeReceiverNotFound);
public static readonly string WrongAccessCode = "WrongAccessCode"; public static readonly string AccessCodeNull = nameof(AccessCodeNull);
public static readonly string DataIntegrityIssue = "DataIntegrityIssue"; public static readonly string WrongAccessCode = nameof(WrongAccessCode);
public static readonly string SecurityBreachOrDataIntegrity = "SecurityBreachOrDataIntegrity"; public static readonly string DataIntegrityIssue = nameof(DataIntegrityIssue);
public static readonly string PossibleDataIntegrityIssue = "PossibleDataIntegrityIssue"; public static readonly string SecurityBreachOrDataIntegrity = nameof(SecurityBreachOrDataIntegrity);
public static readonly string SecurityBreach = "SecurityBreach"; public static readonly string PossibleDataIntegrityIssue = nameof(PossibleDataIntegrityIssue);
public static readonly string PossibleSecurityBreach = "PossibleSecurityBreach"; public static readonly string SecurityBreach = nameof(SecurityBreach);
public static readonly string WrongEnvelopeReceiverId = "WrongEnvelopeReceiverId"; public static readonly string PossibleSecurityBreach = nameof(PossibleSecurityBreach);
public static readonly string EnvelopeOrReceiverNonexists = "EnvelopeOrReceiverNonexists"; public static readonly string WrongEnvelopeReceiverId = nameof(WrongEnvelopeReceiverId);
public static readonly string EnvelopeOrReceiverNonexists = nameof(EnvelopeOrReceiverNonexists);
} }
} }

View File

@ -6,6 +6,9 @@ using EnvelopeGenerator.Application.DTOs;
using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Domain.Entities;
using EnvelopeGenerator.Infrastructure.Contracts; using EnvelopeGenerator.Infrastructure.Contracts;
using EnvelopeGenerator.Application.Resources; using EnvelopeGenerator.Application.Resources;
using static EnvelopeGenerator.Common.Constants;
using DigitalData.Core.DTO;
using Microsoft.Extensions.Logging;
namespace EnvelopeGenerator.Application.Services namespace EnvelopeGenerator.Application.Services
{ {
@ -15,5 +18,15 @@ namespace EnvelopeGenerator.Application.Services
: base(repository, localizer, mapper) : base(repository, localizer, mapper)
{ {
} }
public async Task<DataResult<EmailTemplateDto>> ReadByNameAsync(EmailTemplateType type)
{
var temp = await _repository.ReadByNameAsync(type);
return temp is null
? Result.Fail<EmailTemplateDto>()
.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<EmailTemplateDto>(temp));
}
} }
} }

View File

@ -1,9 +1,11 @@
using DigitalData.Core.Contracts.Infrastructure; using DigitalData.Core.Contracts.Infrastructure;
using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Domain.Entities;
using static EnvelopeGenerator.Common.Constants;
namespace EnvelopeGenerator.Infrastructure.Contracts namespace EnvelopeGenerator.Infrastructure.Contracts
{ {
public interface IEmailTemplateRepository : ICRUDRepository<EmailTemplate, int> public interface IEmailTemplateRepository : ICRUDRepository<EmailTemplate, int>
{ {
Task<EmailTemplate?> ReadByNameAsync(EmailTemplateType type);
} }
} }

View File

@ -2,6 +2,8 @@
using DigitalData.UserManager.Infrastructure.Repositories; using DigitalData.UserManager.Infrastructure.Repositories;
using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Domain.Entities;
using EnvelopeGenerator.Infrastructure.Contracts; using EnvelopeGenerator.Infrastructure.Contracts;
using Microsoft.EntityFrameworkCore;
using static EnvelopeGenerator.Common.Constants;
namespace EnvelopeGenerator.Infrastructure.Repositories namespace EnvelopeGenerator.Infrastructure.Repositories
{ {
@ -10,5 +12,7 @@ namespace EnvelopeGenerator.Infrastructure.Repositories
public EmailTemplateRepository(EGDbContext dbContext) : base(dbContext) public EmailTemplateRepository(EGDbContext dbContext) : base(dbContext)
{ {
} }
public async Task<EmailTemplate?> ReadByNameAsync(EmailTemplateType type) => await _dbSet.Where(t => t.Name == type.ToString()).FirstOrDefaultAsync();
} }
} }

View File

@ -1,7 +1,11 @@
using EnvelopeGenerator.Application.Contracts; using DigitalData.Core.DTO;
using EnvelopeGenerator.Application.Contracts;
using EnvelopeGenerator.Application.DTOs; using EnvelopeGenerator.Application.DTOs;
using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Domain.Entities;
using EnvelopeGenerator.Infrastructure.Contracts; using EnvelopeGenerator.Infrastructure.Contracts;
using Microsoft.AspNetCore.Mvc;
using System.Security.Cryptography;
using static EnvelopeGenerator.Common.Constants;
namespace EnvelopeGenerator.Web.Controllers.Test namespace EnvelopeGenerator.Web.Controllers.Test
{ {
@ -9,7 +13,23 @@ namespace EnvelopeGenerator.Web.Controllers.Test
{ {
public TestEmailTemplateController(ILogger<TestEmailTemplateController> logger, IEmailTemplateService service) : base(logger, service) public TestEmailTemplateController(ILogger<TestEmailTemplateController> logger, IEmailTemplateService service) : base(logger, service)
{ {
}
} [HttpGet]
public virtual async Task<IActionResult> 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<IActionResult> GetAll() => base.GetAll();
} }
} }