Class EventoController

java.lang.Object
com.modulink.Controller.ModuloController
com.modulink.Controller.UserModules.GDE.EventoController

@Controller @RequestMapping("/dashboard/calendar/api") public class EventoController extends ModuloController
Controller REST per la gestione avanzata degli eventi e dell'integrazione calendario nel modulo GDE.

Fornisce un set completo di API per la manipolazione degli eventi aziendali, la gestione dei partecipanti e l'esposizione sincronizzata dei task assegnati. Implementa logiche di validazione stringenti sui periodi temporali e garantisce l'integrità dei dati tra Utenti, Aziende ed Eventi.

Since:
1.2.0
Version:
2.1.5
Author:
Modulink Team
  • Field Details

  • Constructor Details

    • EventoController

      public EventoController(EventoService eventoService, EventoRepository eventoRepository, PartecipazioneService partecipazioneService, CustomUserDetailsService customUserDetailsService, UserRepository userRepository, ModuloService moduloService, AssegnazioneService assegnazioneService)
      Inizializza il controller iniettando i servizi necessari per l'interazione con eventi, task e utenze.
      Parameters:
      eventoService - Servizio eventi.
      eventoRepository - Repository eventi.
      partecipazioneService - Servizio per la gestione degli inviti.
      customUserDetailsService - Servizio utenti.
      userRepository - Repository utenti.
      moduloService - Servizio moduli.
      assegnazioneService - Servizio assegnazioni task.
      Since:
      1.2.0
  • Method Details

    • getEventi

      @GetMapping("/get") @ResponseBody public org.springframework.http.ResponseEntity<?> getEventi(Principal principal)
      Recupera l'elenco di tutti gli eventi a cui partecipa l'utente corrente.
      Parameters:
      principal - Identità dell'utente autenticato.
      Returns:
      ResponseEntity contenente una lista di EventoController.EventoDTO o stato FORBIDDEN.
      Since:
      1.2.0
    • getEventiAndTask

      @GetMapping("/getet") public org.springframework.http.ResponseEntity<?> getEventiAndTask(Principal principal)
      Recupera i task assegnati all'utente corrente, mappandoli come eventi di calendario.

      Questo endpoint permette di visualizzare i task operativi direttamente nel calendario, impostando come orario l'intera giornata della scadenza.

      Parameters:
      principal - Identità dell'utente.
      Returns:
      ResponseEntity con la lista di task trasformati in DTO.
      Since:
      1.3.0
    • createEvento

      @PostMapping("/create") @ResponseBody public org.springframework.http.ResponseEntity<?> createEvento(@RequestBody EventoController.CreateEventoRequest request, Principal principal)
      Gestisce la creazione di un nuovo evento aziendale.

      Implementa validazioni sulla lunghezza dei campi, sull'obbligatorietà della data di inizio e impedisce la creazione di eventi in date passate. Associa automaticamente il creatore come partecipante e processa la lista degli invitati.

      Parameters:
      request - DTO contenente i dati dell'evento e i partecipanti.
      principal - Identità dell'utente creatore.
      Returns:
      JSON con lo stato dell'operazione e l'ID dell'evento creato.
      Since:
      1.2.0
    • updateEvento

      @PostMapping("/update") @ResponseBody public org.springframework.http.ResponseEntity<?> updateEvento(@RequestBody EventoController.UpdateEventoRequest request, Principal principal)
      Aggiorna un evento esistente.

      Oltre ai dati base, gestisce la sincronizzazione dei partecipanti aggiungendo i nuovi e rimuovendo quelli deselezionati. Garantisce che il creatore non possa essere rimosso.

      Parameters:
      request - DTO con i dati aggiornati dell'evento.
      principal - Identità dell'utente loggato.
      Returns:
      JSON di conferma aggiornamento.
      Since:
      1.2.0
    • deleteEvento

      @PostMapping("/delete") @ResponseBody public org.springframework.http.ResponseEntity<?> deleteEvento(@RequestBody EventoController.DeleteEventoRequest request, Principal principal)
      Rimuove un evento dal database.
      Parameters:
      request - DTO contenente l'ID dell'evento da eliminare.
      principal - Identità dell'utente loggato.
      Returns:
      JSON di conferma cancellazione.
      Since:
      1.2.0
    • getUsers

      @GetMapping("/users") public org.springframework.http.ResponseEntity<?> getUsers(@RequestParam(required=false) Integer id, Principal principal)
      Recupera la lista degli utenti aziendali o dei partecipanti a un evento.

      Se il parametro 'id' è nullo, restituisce tutti i colleghi dell'azienda per popolare componenti di autocomplete. Se valorizzato, restituisce i soli partecipanti a quell'evento.

      Parameters:
      id - ID opzionale di un evento specifico.
      principal - Identità utente.
      Returns:
      Lista di UserRestApi.UserDTO.
      Since:
      1.4.0
    • getEventiAzienda

      @GetMapping("/all") public org.springframework.http.ResponseEntity<?> getEventiAzienda(Principal principal)
      Recupera tutti gli eventi associati all'azienda del richiedente.
      Parameters:
      principal - Identità utente.
      Returns:
      Lista di tutti gli eventi aziendali in formato DTO.
      Since:
      1.5.0
    • parse

      public static List<EventoController.EventoDTO> parse(List<EventoEntity> eventi)
      Utility per la conversione massiva di entità Evento in DTO.
      Parameters:
      eventi - Lista di entità.
      Returns:
      Lista di DTO.
    • parseTask

      public static List<EventoController.EventoDTO> parseTask(List<TaskEntity> tasks)
      Utility per la conversione di Task in oggetti compatibili con il calendario. Filtra i task già completati.
      Parameters:
      tasks - Lista di entità Task.
      Returns:
      Lista di DTO eventi.
    • disinstallaModulo

      public void disinstallaModulo(AziendaEntity azienda)
      Description copied from class: ModuloController
      Metodo astratto che deve essere implementato per gestire la logica di pulizia dei dati.

      Viene invocato dal sistema durante la disattivazione o disinstallazione del modulo per una specifica azienda. Deve contenere la logica per rimuovere o archiviare in modo sicuro tutte le entità create dal modulo nel contesto dell'azienda indicata.

      Specified by:
      disinstallaModulo in class ModuloController
      Parameters:
      azienda - L'entità AziendaEntity per cui il modulo viene rimosso.