using detect.gui.Models.Entities;
using detect.gui.Services.Detect;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Routing;
using Splat;
using detect.gui.Services;

namespace detect.gui.Api.System;

public class DetectTaskApi
{
    public DetectTaskApi(IEndpointRouteBuilder? webApp)
    {
        // all
        webApp?.MapGet("/v1/data/task/all", () => Locator.Current.GetService<DetectTaskService>()!.ListAll());

        // search
        webApp?.MapGet("/v1/data/task/search",
            ([FromQuery] string? name, [FromQuery] int pageNum = 1, [FromQuery] int pageSize = 10) =>
                Locator.Current.GetService<DetectTaskService>()!.Search(name, pageNum, pageSize));

        // id
        webApp?.MapGet("/v1/data/task/{id:long}", ([FromRoute] long id) =>
        Locator.Current.GetService<DetectTaskService>()!.ListById(id));

        // add
        webApp?.MapPost("/v1/data/task/", ([FromBody] DetectTaskEntity entity) =>
        Locator.Current.GetService<DetectTaskService>()!.AddData(entity));

        // update
        webApp?.MapPut("/v1/data/task/", ([FromBody] DetectTaskEntity entity) =>
        Locator.Current.GetService<DetectTaskService>()!.UpdateData(entity));

        // delete
        webApp?.MapDelete("/v1/data/task/{id:long}", ([FromRoute] long id) =>
        Locator.Current.GetService<DetectTaskService>()!.DeleteById(id));

        // ocr
        // webApp?.MapPost("/v1/data/task/ocr/",
        //     ([FromBody] string base64ImageString) =>
        //         Locator.Current.GetService<OCRService>()!.ImportByOCR(base64ImageString));
    }
}