Files
ERP/Commerce/ECommerce/ECommerce.API/Endpoints/v1/ProductMap.cs
T
2026-08-05 21:15:15 +03:00

78 lines
2.0 KiB
C#

using Commerce.Contracts.DTOs;
using Commerce.Core.Services;
using Generic.Contracts.Generics;
using Microsoft.AspNetCore.Mvc;
namespace Commerce.Endpoints.v1;
public static class ProductMap
{
public static RouteGroupBuilder ProductEndpoints(this RouteGroupBuilder group)
{
// No Fetch
group.MapGet(
"products",
async (
[AsParameters] ProductFilter productFilter,
[AsParameters] Pagination pagination,
HttpContext httpContext,
ProductService productService
) =>
{
var result = await productService.FetchProduct(productFilter, pagination);
httpContext.Response.Headers["X-Pagination"] = result.Item2.ToString();
return result.Item1;
}
);
// No Get
group.MapGet(
"product/{id}",
async (Guid id, ProductService productService) =>
{
return await productService.GetProduct(id);
}
);
// No Delete
group.MapDelete(
"product/{id}",
async (Guid id, HttpContext httpContext, ProductService productService) =>
{
var userId = httpContext.User.Claims.First(x => x.Type == "uid").Value;
await productService.RemoveProduct(id);
}
)
.RequireAuthorization();
// No Put
group.MapPut(
"product",
async ([FromBody] ProductVM product, ProductService productService) =>
{
await productService.UpdateProduct(product);
}
);
// No Post
group.MapPost(
"product",
async ([FromBody] ProductVM product, ProductService productService) =>
{
await productService.CreateProduct(product);
}
);
return group;
}
}