diff --git a/CleanArchitecture/CleanArchitecture.Application/CleanArchitecture.Application.csproj b/CleanArchitecture/CleanArchitecture.Application/CleanArchitecture.Application.csproj index 00f94ca..91ccfb2 100644 --- a/CleanArchitecture/CleanArchitecture.Application/CleanArchitecture.Application.csproj +++ b/CleanArchitecture/CleanArchitecture.Application/CleanArchitecture.Application.csproj @@ -11,6 +11,9 @@ + + + diff --git a/CleanArchitecture/CleanArchitecture.Application/Features/Directors/Commands/CreateDirector/CreateDirectorCommand.cs b/CleanArchitecture/CleanArchitecture.Application/Features/Directors/Commands/CreateDirector/CreateDirectorCommand.cs new file mode 100644 index 0000000..b0dd592 --- /dev/null +++ b/CleanArchitecture/CleanArchitecture.Application/Features/Directors/Commands/CreateDirector/CreateDirectorCommand.cs @@ -0,0 +1,11 @@ +using MediatR; + +namespace CleanArchitecture.Application.Features.Directors.Commands.CreateDirector +{ + public class CreateDirectorCommand: IRequest + { + public string Nombre { get; set; } = string.Empty; + public string Apellido { get; set; } = string.Empty; + public int VideoId { get; set; } + } +} diff --git a/CleanArchitecture/CleanArchitecture.Application/Features/Directors/Commands/CreateDirector/CreateDirectorCommandHandler.cs b/CleanArchitecture/CleanArchitecture.Application/Features/Directors/Commands/CreateDirector/CreateDirectorCommandHandler.cs new file mode 100644 index 0000000..b6d3f0c --- /dev/null +++ b/CleanArchitecture/CleanArchitecture.Application/Features/Directors/Commands/CreateDirector/CreateDirectorCommandHandler.cs @@ -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 + { + private readonly ILogger logger; + private readonly IMapper mapper; + private readonly IUnitOfWork unitOfWork; + + public CreateDirectorCommandHandler(ILogger logger, IMapper mapper, IUnitOfWork unitOfWork) + { + this.logger = logger; + this.mapper = mapper; + this.unitOfWork = unitOfWork; + } + + public Task Handle(CreateDirectorCommand request, CancellationToken cancellationToken) + { + var directorEntity = mapper.Map(request); + } + } +} diff --git a/CleanArchitecture/CleanArchitecture.Application/Features/Directors/Commands/CreateDirector/CreateDirectorCommandValidator.cs b/CleanArchitecture/CleanArchitecture.Application/Features/Directors/Commands/CreateDirector/CreateDirectorCommandValidator.cs new file mode 100644 index 0000000..68a3175 --- /dev/null +++ b/CleanArchitecture/CleanArchitecture.Application/Features/Directors/Commands/CreateDirector/CreateDirectorCommandValidator.cs @@ -0,0 +1,21 @@ +using CleanArchitecture.Application.Features.Streamers.Commands.CreateStreamer; +using FluentValidation; + +namespace CleanArchitecture.Application.Features.Directors.Commands.CreateDirector +{ + public class CreateDirectorCommandValidator : AbstractValidator + { + + 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."); + } + } +} diff --git a/CleanArchitecture/CleanArchitecture.Application/Mappings/MappingProfile.cs b/CleanArchitecture/CleanArchitecture.Application/Mappings/MappingProfile.cs index 5092811..92119a5 100644 --- a/CleanArchitecture/CleanArchitecture.Application/Mappings/MappingProfile.cs +++ b/CleanArchitecture/CleanArchitecture.Application/Mappings/MappingProfile.cs @@ -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(); - CreateMap(); - CreateMap(); - CreateMap(); - CreateMap(); - CreateMap(); + #region Video + CreateMap(); + CreateMap(); + #endregion Video + + #region Streamer + CreateMap(); + CreateMap(); + + CreateMap(); + CreateMap(); + #endregion Streamer + + #region Director + CreateMap(); + CreateMap(); + + #endregion Director } } }