Sto lavorando a un prodotto software che prevede che gli utenti aprano un caso e intraprendano azioni per elaborare il caso, cambiando lo stato, creando attività, ecc. Vorrei fornire una cronologia delle azioni intraprese per elaborare il caso sotto forma di voci di cronologia. Sto cercando di evitare che i miei controller diventino troppo grassi e stia cercando di utilizzare un approccio in cui utilizzo i filtri di azione e decorare le azioni che richiedono una voce di cronologia, tuttavia stavo cercando di riportare le voci di cronologia a Case / CaseID .
Attualmente non ho un ID maiuscolo memorizzato da nessuna parte che i filtri azione possano utilizzare, il caseID è in genere un parametro dell'azione MVC insieme a qualsiasi altro dato di elaborazione necessario. Quindi le mie domande sono:
-
Devo usare anche filtri di azione per questo, o dovrei semplicemente creare una classe di servizio che gestisca la scrittura di voci di cronologia nel database ed effettuare chiamate alla fine di ogni metodo di azione dopo che l'azione è stata completata con successo ?
-
Se i filtri di azione sono l'approccio giusto qual è la migliore pratica per rendere disponibile CaseID al filtro azione?
[ChronologyActionFilterFactory(ActionTitle = nameof(TaskChronologyActionsEnum.TaskCreated), ActionNotes = "")]
Non riesco a rendere CaseID disponibile nella decorazione perché in genere ha un ambito locale per il metodo di azione. Alcuni approaches ho pensato di compilare una variabile di sessione quando il caso è aperto, impostare una variabile a livello di controller o impostare una variabile a livello di controller di base.
Alla ricerca di alcune raccomandazioni, no quale sarebbe l'approccio migliore per implementare questo tipo di funzionalità.