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

91 lines
2.4 KiB
C#

using Commerce.Contracts.DTOs;
using Commerce.Core.Services;
using Commerce.Domain.Entities;
using Generic.Contracts.Generics;
using Microsoft.AspNetCore.Mvc;
namespace Commerce.Endpoints.v1;
public static class CategoryMap
{
public static RouteGroupBuilder CategoryEndpoints(this RouteGroupBuilder group)
{
// No Fetch
group.MapGet(
"categories",
async (
[AsParameters] CategoryFilter categoryFilter,
[AsParameters] Pagination pagination,
CategoryService categoryService,
HttpContext httpContext
) =>
{
var result = await categoryService.FetchCategory(categoryFilter, pagination);
httpContext.Response.Headers["X-Pagination"] = result.Item2.ToString();
return result.Item1;
}
);
group.MapGet(
"categories/tree",
async (string? name, CategoryService categoryService) =>
{
var result = await categoryService.GetAllCategories_Tree(name ?? "");
return result.Select(x => Category.ToVM(x)).ToList();
}
);
// No Get
group.MapGet(
"category/{id}",
async (Guid id, CategoryService categoryService) =>
{
return await categoryService.GetCategory(id);
}
);
// No Delete
group
.MapDelete(
"category/{id}",
async (Guid id, HttpContext httpContext, CategoryService categoryService) =>
{
var userId = httpContext.User.Claims.First(x => x.Type == "uid").Value;
await categoryService.RemoveCategory(id);
}
)
.RequireAuthorization();
// No Put
group.MapPut(
"category",
async ([FromBody] CategoryVM category, CategoryService categoryService) =>
{
await categoryService.UpdateCategory(category);
}
);
// No Post
group.MapPost(
"category",
async ([FromBody] CategoryVM category, CategoryService categoryService) =>
{
await categoryService.CreateCategory(category);
}
);
return group;
}
}