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, beforeRestore
  • customizeInsert, customizeUpdate, customizeDelete, customizeRestore
  • customizeSelect, customizeCountSelect
  • customizeExcelField, 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:

Snippet 1C#
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):

Snippet 2C#
using WEB_UI_CRAFTER.ProjectData.Servizi;

public void beforeUpdate(string route, Dictionary<string, object> entity, string userId)
{
    var ctx = Utility.GetCurrentCrudHookContext();
    // Esempi:
    // ctx.route

Il 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.