using System.Collections.Generic;
using System.Threading.Tasks;
using Sozsoft.Mcp.Dtos;
using Sozsoft.Platform.DeveloperKit;
using Sozsoft.Platform.ListForms;
using Volo.Abp.Application.Services;
namespace Sozsoft.Mcp;
///
/// MCP gelistirme yuzeyi: tablo, ekran (wizard) ve custom component uretimi. Her islem uygulamadaki
/// Wizard ve Custom Components servislerinden gecer; MCP yalnizca kapidir, ekranin
/// kendi yetkilerini, seed dosyasi yazimini ve bagimlilik kurallarini atlamaz.
///
public interface IMcpDevelopAppService : IApplicationService
{
Task> GetDevGuideAsync(string? document, string? section);
Task> CreateTableAsync(McpCreateTableRequestDto input);
/// View/procedure/function scriptini iki saglayicinin seed klasorune yazar; veritabaninda calistirmaz.
Task> SaveSqlObjectAsync(string sqlServerScript, string postgreSqlScript);
/// Tablo ya da view icin CRUD endpoint'lerini crud/{Entity}.json seed dosyasina yazar; kaydi DB Migrate ekler.
Task> GenerateCrudEndpointsAsync(string entityName, string? operationTypes, string? objectType);
Task>> GetWizardsAsync(string? search);
Task> GetWizardAsync(string fileName);
/// Deploy edilen wizard'in ozeti.
Task> DeployWizardAsync(McpWizardDeployRequestDto input);
/// Wizard'i siler; acikken ekranin secilebilir tablosunu da dusurur.
Task> DeleteWizardAsync(string fileName, bool dropTables);
/// Deploy edilmis ekrani veri yazmadan dogrular.
Task> VerifyWizardAsync(string fileName);
/// Id ya da basliga gore bulunan talebi, yalnizca Ready to Start durumundaysa In Progress'e alir.
Task> StartDevRequestAsync(string request);
/// Talebi durumuna dokunmadan okur; yarim kalan bir talebe donmek icindir.
Task> GetDevRequestAsync(string request);
///
/// Talebin analizini yazar (var olani degistirir); analiz kosulsuz uretime hazirsa talebi
/// Ready to Start'a, degilse Analysis durumuna alir. Yalnizca Backlog ya da Analysis durumundaki
/// talep analiz edilir.
///
Task> SaveDevRequestAnalysisAsync(string request, string html, bool productionReady);
///
/// Analizin sonuna HTML ekler. Aciklama talebin yazildigi haliyle kalir; uretim notlari
/// analize yazilir.
///
Task AppendDevRequestNoteAsync(string request, string html);
///
/// Talebin SubTasks listesine tamamlanmis satirlar ekler; atanan kisi cagiran kullanici,
/// bitis tarihi bugundur.
///
Task AddDevRequestSubTasksAsync(string request, List titles);
/// Modul dokumanini adiyla ya da ait oldugu ekranin kodu/wizard dosyasiyla okur.
Task> GetModuleDocAsync(string name);
///
/// Modul dokumaninin elle yazilan bolumlerini kaydeder; otomatik envanter sunucuda yeniden
/// uretilir.
///
Task> SaveModuleDocAsync(string name, string content);
Task>> GetComponentsAsync(string? search);
Task> GetComponentAsync(string name);
Task> SaveComponentAsync(McpComponentSaveRequestDto input);
Task DeleteComponentAsync(string name);
}