Skip to content

Instantly share code, notes, and snippets.

View ntakouris's full-sized avatar
🤖
Building robots

Theodoros Ntakouris ntakouris

🤖
Building robots
View GitHub Profile
public class PostResponse
{
public Guid Id { get; set; }
public string Name { get; set; }
public string UserId { get; set; }
public IEnumerable<TagResponse> Tags { get; set; }
}
public class TagResponse
{
public string Name { get; set; }
}
var response = new XResponse {
Name = XDomain.Name;
Id = XDomain.Id
};
public DomainToResponseProfile()
{
CreateMap<Post, PostResponse>()
.ForMember(dest => dest.Tags, opt =>
opt.MapFrom(src => src.Tags.Select(x => new TagResponse{Name = x.TagName})));
CreateMap<Tag, TagResponse>();
}
if(string.IsNullOrEmpty(request.TagName)
{
return BadRequest(new {error = "Tag name should not be empty"});
}
public CreateTagRequestValidator()
{
RuleFor(x => x.TagName)
.NotEmpty()
.Matches("^[a-zA-Z0-9 ]*$"); // alphanumerics and space
}
public class ErrorModel
{
public string FieldName { get; set; } // actual name of the field
public string Message { get; set; } // user friendly error message
}
public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
{
if (!context.ModelState.IsValid)
{
var errorsInModelState = context.ModelState
.Where(x => x.Value.Errors.Count > 0)
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value.Errors.Select(x => x.ErrorMessage)).ToArray();
var errorResponse = new ErrorResponse();
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
x.IncludeXmlComments(xmlPath);
<PropertyGroup>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>$(NoWarn);1591</NoWarn>
</PropertyGroup>