91 lines
2.4 KiB
C#
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;
|
|
}
|
|
}
|