Skip to content

Instantly share code, notes, and snippets.

@DavidRogersDev
DavidRogersDev / clean.bat
Created September 13, 2018 03:25
Bat file to clean out a Visual Studio Project on the File System
del /s /ah /f *.suo
del /s /f *.user
del /s /f *.cache
del /s /f *.keep
del /s /ah StyleCop.Cache
rd /s /q bin obj .vs ClientBin _Resharper.* _Upgrade* TestResults
del dirs.txt
dir /s /b /ad bin > dirs.txt
@DavidRogersDev
DavidRogersDev / ValidateableResponse.cs
Last active April 4, 2020 10:13
Gist for Medium Article - ValidateableResponse
public class ValidateableResponse
{
private readonly IList<string> _errorMessages;
public ValidateableResponse(IList<string> errors = null)
{
_errorMessages = errors ?? new List<string>();
}
public bool IsValidResponse => !_errorMessages.Any();
@DavidRogersDev
DavidRogersDev / CreateUserValidator.cs
Created April 4, 2020 10:13
Gist for Medium Article - CreateUserValidator
public class CreateUserValidator: AbstractValidator<CreateUserDto>
{
public CreateUserValidator()
{
RuleFor(m => m.Password).NotEmpty();
RuleFor(m => m.UserName).NotEmpty();
}
}
@DavidRogersDev
DavidRogersDev / CreateNewUserCommandHandler.cs
Last active June 27, 2022 22:23
Gist for Medium Article - CreateNewUserCommandHandler
public class CreateNewUserCommandHandler : IRequestHandler<CreateNewUserCommand, ValidateableResponse<ApiResponse<int>>>
{
private readonly ILogger _logger;
public CreateNewUserCommandHandler(ILogger logger)
{
_logger = logger;
}
public async Task<ValidateableResponse<ApiResponse<int>>> Handle(CreateNewUserCommand request,
@DavidRogersDev
DavidRogersDev / CreateNewUserCommand.cs
Created April 4, 2020 10:17
Gist for Medium Article - CreateNewUserCommand
public class CreateNewUserCommand : IRequest<ValidateableResponse<ApiResponse<int>>>, IValidateable
{
public CreateUserDto CreateUserDto { get; set; }
}
@DavidRogersDev
DavidRogersDev / CreateUser.cs
Last active April 4, 2020 10:21
Gist for Medium Article - CreateUser
[HttpPost]
[Route("[action]")]
public async Task<IActionResult> CreateUser([FromBody]CreateUserDto userDto)
{
var result = await _mediator.Send(new CreateNewUserCommand {CreateUserDto = userDto});
return result.IsValidResponse
? CreatedAtRoute(routeValues: new
{
controller = "User",
@DavidRogersDev
DavidRogersDev / BusinessValidationPipeline.cs
Last active June 27, 2022 22:28
Gists for Medium Article - BusinessValidationPipeline
public class BusinessValidationPipeline<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse>
where TResponse : class
where TRequest : IValidateable
{
private readonly IValidator<TRequest> _compositeValidator;
private readonly ILogger<TRequest> _logger;
private readonly ICurrentUser _currentUser;
private readonly IActionContextAccessor _actionContextAccessor;
public BusinessValidationPipeline(
@DavidRogersDev
DavidRogersDev / RegisterNewUserValidator.cs
Last active April 6, 2020 05:43
Gits for Medium Article - RegisterNewUserValidator
public class RegisterNewUserValidator : AbstractValidator<RegisterNewUserCommand>
{
public RegisterNewUserValidator()
{
RuleFor(u => u.Dto.UserName)
.MustAsync(NotContainUserAlready)
.WithMessage((u,userName) => $"{userName} {Constants.Validation.PartMessages.UserAlreadyExists}");
}
async Task<bool> NotContainUserAlready(RegisterNewUserCommand dto, string userName, CancellationToken cancellation = new CancellationToken())
@DavidRogersDev
DavidRogersDev / ColorCollectionValidator.cs
Last active April 18, 2020 05:55
Gist for Medium Article - ColorCollectionValidator
public class ColorCollectionValidator : AbstractValidator<IEnumerable<ColorPayloadDto>>
{
public ColorCollectionValidator()
{
// This is a bit of a silly validator.
// Normally a collection would be a property on a DTO.
// But it interesting to see that you can do this with FluentValidation at all.
RuleFor(c => c)
.Must(c => c.Any())
.WithMessage("The color collection must contain at least one colour.");
@DavidRogersDev
DavidRogersDev / ColorsService.cs
Last active April 18, 2020 23:19
Gist for Medium Article - ColorsService
public class ColorsService : ApplicationService, IColorsService
{
private readonly IValidator<IEnumerable<ColorPayloadDto>> _colorValidator;
public ColorsService(IValidator<IEnumerable<ColorPayloadDto>> colorValidator, IMapper mapper)
: base(mapper)
{
_colorValidator = colorValidator;
}