Overview
Custom Select/Update/Insert/Delete
Personalizzazione pipeline CRUD con query e azioni custom.
Hook C# dal progetto host
Da questa versione puoi iniettare logica C# dal progetto host (es. WuicTest) nei punti:
beforeInsert,beforeUpdate,beforeDelete,beforeRestorecustomizeInsert,customizeUpdate,customizeDelete,customizeRestorecustomizeSelect,customizeCountSelectcustomizeExcelField,customizeRowImport
Il contesto runtime hook e disponibile in modo uniforme per tutti i metodi IUtilityHost tramite helper statico:
WEB_UI_CRAFTER.ProjectData.Servizi.Utility.GetCurrentCrudHookContext()
Il framework cerca automaticamente una classe host:
WEB_UI_CRAFTER.ProjectData.Servizi.UtilityHost- oppure
WEB_UI_CRAFTER.ProjectData.Servizi.CustomCrudHooks
In alternativa puoi configurare un nome classe esplicito con appsetting:
AppSettings.customCrudHookClass
Firma metodi (host)
Esempio minimo:
namespace WEB_UI_CRAFTER.ProjectData.Servizi
{
public class UtilityHost
{
public void beforeInsert(string route, Dictionary<string, object> entity, string userId) { }
public void customizeInsert(ref string query, string route, Dictionary<string, object> entity, string userId)Per customizeSelect/customizeCountSelect usa la stessa firma del framework (parametri ref inclusi), così puoi alterare where, join, orderBy, customSelectClause, customCount.
Context helper (valido in tutti gli hook)
Puoi leggere in qualsiasi metodo hook il contesto corrente (route/action/schermata/workflow + debug + metodo in esecuzione):
using WEB_UI_CRAFTER.ProjectData.Servizi;
public void beforeUpdate(string route, Dictionary<string, object> entity, string userId)
{
var ctx = Utility.GetCurrentCrudHookContext();
// Esempi:
// ctx.routeIl payload routeContext dal client e opzionale: se non presente il backend applica fallback unknown senza bloccare la pipeline CRUD.
Note operative
- Se la classe/metodo host non esiste, il framework mantiene comportamento default (no-op).
- Se il metodo host lancia eccezione, la chiamata CRUD fallisce e l'errore risale al client.