Class GTMController

java.lang.Object
com.modulink.Controller.ModuloController
com.modulink.Controller.UserModules.GTM.GTMController

@Controller public class GTMController extends ModuloController
Controller per il modulo GTM (Gestione Task Manager).

Questo controller gestisce l'intero ciclo di vita delle attività operative (Task): creazione, assegnazione a singoli utenti o interi ruoli, modifica, completamento e cancellazione. Integra un sistema di assegnazione flessibile basato su GTMMessage che permette di indirizzare i task in modo polimorfico.

Estende ModuloController (ID Modulo: 5) per la verifica dei permessi.

Since:
1.3.0
Version:
3.2.1
Author:
Modulink Team
  • Field Details

  • Constructor Details

    • GTMController

      public GTMController(ModuloService moduloService, TaskService taskService, AssegnazioneService assegnazioneService, CustomUserDetailsService customUserDetailsService, RuoloService ruoloService, AssociazioneService associazioneService)
      Costruttore per l'iniezione delle dipendenze.
      Parameters:
      moduloService - Servizio moduli.
      taskService - Servizio gestione task.
      assegnazioneService - Servizio assegnazione task.
      customUserDetailsService - Servizio utenti.
      ruoloService - Servizio ruoli.
      associazioneService - Servizio associazione utente-ruolo.
      Since:
      1.3.0
  • Method Details

    • getGTM

      @GetMapping({"/dashboard/gtm","/dashboard/gtm/"}) public String getGTM(Principal principal, org.springframework.ui.Model model)
      Visualizza la dashboard di gestione Task.

      Recupera e mostra sia i task creati dall'utente corrente (per monitoraggio), sia i task assegnati all'utente (da completare).

      Parameters:
      principal - Identità utente.
      model - Modello UI.
      Returns:
      Vista "moduli/gtm/GestioneTask" o redirect.
      Since:
      1.3.0
    • getUsers

      @PostMapping("/dashboard/gtm/getusers") public Object getUsers(Principal principal)
      API per recuperare la lista di possibili assegnatari (Utenti e Ruoli).

      Utilizzato dal frontend per popolare il selettore di assegnazione. Restituisce una lista eterogenea di oggetti GTMMessage normalizzati.

      Parameters:
      principal - Identità utente.
      Returns:
      JSON List di GTMMessage o BadRequest.
      Since:
      1.3.5
    • createNewTask

      @PostMapping({"/dashboard/gtm","/dashboard/gtm/"}) public String createNewTask(Principal principal, org.springframework.ui.Model model, @Valid @ModelAttribute("form") @Valid GTMForm form, org.springframework.validation.BindingResult bindingResult)
      Crea un nuovo Task.

      Implementa la logica di esplosione delle assegnazioni: se un task è assegnato a un Ruolo, il sistema risolve tutti gli utenti appartenenti a quel ruolo e crea un'assegnazione per ciascuno. Esegue validazioni sulle date (scadenza futura).

      Parameters:
      principal - Identità creatore.
      model - Modello UI.
      form - DTO dati task.
      bindingResult - Esito validazione.
      Returns:
      Redirect alla dashboard GTM con esito.
      Since:
      1.3.0
    • removeTask

      @PostMapping({"/dashboard/gtm/delete-task","/dashboard/gtm/delete-task/"}) public String removeTask(Principal principal, org.springframework.ui.Model model, @RequestParam int idTask)
      Cancella un Task esistente.

      Permesso solo all'utente che ha creato il task (Owner).

      Parameters:
      principal - Identità utente.
      model - Modello UI.
      idTask - ID del task.
      Returns:
      Redirect con esito.
      Since:
      1.3.0
    • setAsCompletato

      @PostMapping({"/dashboard/gtm/set-as-completato","/dashboard/gtm/set-as-completato/"}) public String setAsCompletato(Principal principal, org.springframework.ui.Model model, @RequestParam int idTask)
      Marca un task come completato.

      Imposta la data di completamento al momento attuale.

      Parameters:
      principal - Identità utente.
      model - Modello UI.
      idTask - ID del task.
      Returns:
      Redirect con esito.
      Since:
      1.3.0
    • editTask

      @PostMapping({"/dashboard/gtm/edit-task","/dashboard/gtm/edit-task/"}) public String editTask(Principal principal, org.springframework.ui.Model model, @Valid @ModelAttribute("editForm") @Valid GTMEditForm form, org.springframework.validation.BindingResult bindingResult)
      Modifica i dettagli di un Task esistente.

      Permette di cambiare titolo, priorità, scadenza, stato di completamento e assegnatari. Aggiorna le relazioni di assegnazione nel database.

      Parameters:
      principal - Identità creatore.
      model - Modello UI.
      form - DTO modifiche.
      bindingResult - Esito validazione.
      Returns:
      Redirect con esito.
      Since:
      1.3.0
    • disinstallaModulo

      public void disinstallaModulo(AziendaEntity azienda)
      Disinstalla il modulo GTM rimuovendo tutti i task associati all'azienda.
      Specified by:
      disinstallaModulo in class ModuloController
      Parameters:
      azienda - Azienda target.
      Since:
      1.3.0