From 8b01b58e89e7c11c7119c8f8334ac5f0057adad1 Mon Sep 17 00:00:00 2001 From: Enis Mulic Date: Fri, 17 Nov 2023 13:11:42 +0100 Subject: [PATCH] fix(todos): add ids to response models and query filter --- src/Application/Features/Todos/CompleteTodoItem.cs | 12 +++++------- src/Application/Features/Todos/GetTodos.cs | 2 +- src/Application/Features/Todos/TodoListResponse.cs | 12 +++++++----- .../Configurations/TodoItemConfiguration.cs | 2 ++ 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/Application/Features/Todos/CompleteTodoItem.cs b/src/Application/Features/Todos/CompleteTodoItem.cs index b5b060a..33f9996 100644 --- a/src/Application/Features/Todos/CompleteTodoItem.cs +++ b/src/Application/Features/Todos/CompleteTodoItem.cs @@ -49,13 +49,11 @@ public async Task Handle(CompleteTodoCommand request, CancellationToken ca var item = await _context.TodoItems.FindAsync(new object?[] { request.Id }, cancellationToken: cancellationToken) ?? throw new NotFoundException(nameof(TodoItem), request.Id); - //if (!item.Done) - //{ - - //} - - item.Complete(); - await _context.SaveChangesAsync(cancellationToken); + if (!item.Done) + { + item.Complete(); + await _context.SaveChangesAsync(cancellationToken); + } return Unit.Value; } diff --git a/src/Application/Features/Todos/GetTodos.cs b/src/Application/Features/Todos/GetTodos.cs index 64add98..83b3033 100644 --- a/src/Application/Features/Todos/GetTodos.cs +++ b/src/Application/Features/Todos/GetTodos.cs @@ -25,7 +25,7 @@ public void AddRoutes(IEndpointRouteBuilder app) return response; }) .RequireAuthorization() - .Produces(StatusCodes.Status201Created) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest) .WithOpenApi(operation => new(operation) { diff --git a/src/Application/Features/Todos/TodoListResponse.cs b/src/Application/Features/Todos/TodoListResponse.cs index 1d0f7c8..db891e2 100644 --- a/src/Application/Features/Todos/TodoListResponse.cs +++ b/src/Application/Features/Todos/TodoListResponse.cs @@ -7,6 +7,7 @@ namespace Application.Features.Todos; #nullable disable public class TodoListResponse : IMapFrom { + public int Id { get; set; } public string Title { get; set; } public string Colour { get; set; } public IList Items { get; set; } @@ -14,9 +15,10 @@ public class TodoListResponse : IMapFrom public class TodoItemResponse : IMapFrom { - public string Title { get; private set; } - public string Note { get; private set; } - public PriorityLevel PriorityLevel { get; private set; } - public bool Done { get; private set; } - public DateTime? Reminder { get; private set; } + public int Id { get; set; } + public string Title { get; set; } + public string Note { get; set; } + public PriorityLevel PriorityLevel { get; set; } + public bool Done { get; set; } + public DateTime? Reminder { get; set; } } \ No newline at end of file diff --git a/src/Application/Infrastructure/Persistance/Configurations/TodoItemConfiguration.cs b/src/Application/Infrastructure/Persistance/Configurations/TodoItemConfiguration.cs index 64f44fb..d04d686 100644 --- a/src/Application/Infrastructure/Persistance/Configurations/TodoItemConfiguration.cs +++ b/src/Application/Infrastructure/Persistance/Configurations/TodoItemConfiguration.cs @@ -9,6 +9,8 @@ public class TodoItemConfiguration : IEntityTypeConfiguration { public void Configure(EntityTypeBuilder builder) { + builder.HasQueryFilter(i => !i.IsDeleted); + builder.Property(t => t.Title) .HasMaxLength(200) .IsRequired();