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.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<IEmailTemplateRepository, EmailTemplateDto, EmailTemplate, int>
{
Task<DataResult<EmailTemplateDto>> ReadByNameAsync(EmailTemplateType type);
}
}

View File

@ -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);
}
}

View File

@ -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<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 EnvelopeGenerator.Domain.Entities;
using static EnvelopeGenerator.Common.Constants;
namespace EnvelopeGenerator.Infrastructure.Contracts
{
public interface IEmailTemplateRepository : ICRUDRepository<EmailTemplate, int>
{
Task<EmailTemplate?> ReadByNameAsync(EmailTemplateType type);
}
}

View File

@ -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<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.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<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();
}
}