Merge branch 'Sec_16_UnitOfWork/68_UOW_En_Diferentes_Capas' into dev

This commit is contained in:
Alejandro Sarmiento
2024-02-20 11:48:23 +01:00
5 changed files with 81 additions and 6 deletions

View File

@@ -11,6 +11,9 @@
</ItemGroup>
<ItemGroup>
<Folder Include="Features\Directors\Commands\DeleteDirector\" />
<Folder Include="Features\Directors\Commands\UpdateDirector\" />
<Folder Include="Features\Directors\Queries\" />
<Folder Include="Features\Streamers\Queries\" />
<Folder Include="Features\Videos\Commands\" />
</ItemGroup>

View File

@@ -0,0 +1,11 @@
using MediatR;
namespace CleanArchitecture.Application.Features.Directors.Commands.CreateDirector
{
public class CreateDirectorCommand: IRequest<int>
{
public string Nombre { get; set; } = string.Empty;
public string Apellido { get; set; } = string.Empty;
public int VideoId { get; set; }
}
}

View File

@@ -0,0 +1,27 @@
using AutoMapper;
using CleanArchitecture.Application.Contracts.Persistence;
using CleanArchitecture.Domain;
using MediatR;
using Microsoft.Extensions.Logging;
namespace CleanArchitecture.Application.Features.Directors.Commands.CreateDirector
{
public class CreateDirectorCommandHandler : IRequestHandler<CreateDirectorCommand, int>
{
private readonly ILogger<CreateDirectorCommandHandler> logger;
private readonly IMapper mapper;
private readonly IUnitOfWork unitOfWork;
public CreateDirectorCommandHandler(ILogger<CreateDirectorCommandHandler> logger, IMapper mapper, IUnitOfWork unitOfWork)
{
this.logger = logger;
this.mapper = mapper;
this.unitOfWork = unitOfWork;
}
public Task<int> Handle(CreateDirectorCommand request, CancellationToken cancellationToken)
{
var directorEntity = mapper.Map<Director>(request);
}
}
}

View File

@@ -0,0 +1,21 @@
using CleanArchitecture.Application.Features.Streamers.Commands.CreateStreamer;
using FluentValidation;
namespace CleanArchitecture.Application.Features.Directors.Commands.CreateDirector
{
public class CreateDirectorCommandValidator : AbstractValidator<CreateDirectorCommand>
{
public CreateDirectorCommandValidator()
{
RuleFor(p=>p.Nombre).NotEmpty().WithMessage("{Nombre} is required.")
.NotNull()
.MaximumLength(50).WithMessage("{Nombre} must not exceed 50 characters.");
RuleFor(p => p.Apellido)
.NotEmpty().WithMessage("{Apellido} is required.")
.NotNull()
.MaximumLength(100).WithMessage("{Apellido} must not exceed 50 characters.");
}
}
}

View File

@@ -1,4 +1,5 @@
using AutoMapper;
using CleanArchitecture.Application.Features.Directors.Commands.CreateDirector;
using CleanArchitecture.Application.Features.Streamers.Commands.CreateStreamer;
using CleanArchitecture.Application.Features.Streamers.Commands.UpdateStreamer;
using CleanArchitecture.Application.Features.Videos.Queries.GetVideosList;
@@ -11,12 +12,24 @@ namespace CleanArchitecture.Application.Mappings
{
public MappingProfile()
{
CreateMap<Video, VideosVm>();
CreateMap<VideosVm, Video>();
CreateMap<CreateStreamerCommand, Streamer>();
CreateMap<Streamer, CreateStreamerCommand>();
CreateMap<UpdateStreamerCommand, Streamer>();
CreateMap<Streamer, UpdateStreamerCommand>();
#region Video
CreateMap<Video, VideosVm>();
CreateMap<VideosVm, Video>();
#endregion Video
#region Streamer
CreateMap<CreateStreamerCommand, Streamer>();
CreateMap<Streamer, CreateStreamerCommand>();
CreateMap<UpdateStreamerCommand, Streamer>();
CreateMap<Streamer, UpdateStreamerCommand>();
#endregion Streamer
#region Director
CreateMap<CreateDirectorCommand, Director>();
CreateMap<Director, CreateDirectorCommand>();
#endregion Director
}
}
}