Dev #15
@@ -1,6 +1,51 @@
|
||||
using Imprink.Application.Dtos;
|
||||
using MediatR;
|
||||
|
||||
namespace Imprink.Application.Commands.Products;
|
||||
|
||||
public class GetProductById
|
||||
public class GetProductByIdQuery : IRequest<ProductDto?>
|
||||
{
|
||||
|
||||
public Guid ProductId { get; set; }
|
||||
}
|
||||
|
||||
public class GetProductById(
|
||||
IUnitOfWork unitOfWork)
|
||||
: IRequestHandler<GetProductByIdQuery, ProductDto?>
|
||||
{
|
||||
public async Task<ProductDto?> Handle(
|
||||
GetProductByIdQuery request,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
var product = await unitOfWork.ProductRepository
|
||||
.GetByIdAsync(request.ProductId, cancellationToken);
|
||||
|
||||
if (product == null)
|
||||
return null;
|
||||
|
||||
return new ProductDto
|
||||
{
|
||||
Id = product.Id,
|
||||
Name = product.Name,
|
||||
Description = product.Description,
|
||||
BasePrice = product.BasePrice,
|
||||
IsCustomizable = product.IsCustomizable,
|
||||
IsActive = product.IsActive,
|
||||
ImageUrl = product.ImageUrl,
|
||||
CategoryId = product.CategoryId,
|
||||
Category = new CategoryDto
|
||||
{
|
||||
Id = product.Category.Id,
|
||||
Name = product.Category.Name,
|
||||
Description = product.Category.Description,
|
||||
ImageUrl = product.Category.ImageUrl,
|
||||
SortOrder = product.Category.SortOrder,
|
||||
IsActive = product.Category.IsActive,
|
||||
ParentCategoryId = product.Category.ParentCategoryId,
|
||||
CreatedAt = product.Category.CreatedAt,
|
||||
ModifiedAt = product.Category.ModifiedAt
|
||||
},
|
||||
CreatedAt = product.CreatedAt,
|
||||
ModifiedAt = product.ModifiedAt
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
namespace Imprink.Infrastructure.Migrations
|
||||
{
|
||||
[DbContext(typeof(ApplicationDbContext))]
|
||||
[Migration("20250625211612_InitialSetup")]
|
||||
[Migration("20250625223159_InitialSetup")]
|
||||
partial class InitialSetup
|
||||
{
|
||||
/// <inheritdoc />
|
||||
@@ -21,6 +21,18 @@ public class ProductsController(IMediator mediator) : ControllerBase
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
[HttpGet("{id:guid}")]
|
||||
[AllowAnonymous]
|
||||
public async Task<ActionResult<PagedResultDto<ProductDto>>> GetProductById(
|
||||
Guid id,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
var result = await mediator
|
||||
.Send(new GetProductByIdQuery { ProductId = id}, cancellationToken);
|
||||
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[Authorize(Roles = "Admin")]
|
||||
public async Task<ActionResult<PagedResultDto<ProductDto>>> CreateProduct(
|
||||
|
||||
Reference in New Issue
Block a user