Skip to content

VSN-1990/ Add Kafka consumer for circuit activation & method to activate/desactivate tripCircuit and tripPlanning

ilyas makhloul a demandé de fusionner feature/vsn-1990 vers develop

Add Kafka consumer for circuit activation & Enhance activation/deactivation logic for TripCircuit and TripPlanning


Summary

This MR introduces a Kafka consumer to process circuit activation events and updates the business logic to activate or deactivate both TripCircuit and related TripPlanning entities accordingly.

It provides a full end-to-end flow: Kafka Event → Consumer → Service (activation/deactivation of circuits and associated trips).


Key Changes

🔹 1. Added Kafka Consumer for circuit activation

  • Implemented CircuitTripConsumerServiceImpl.consumeActiveCircuit.

  • Listens on topic circuit-activation using the listener container factory circuitActivationKafkaListenerContainerFactory.

  • Validates received CircuitStatusEvent:

    • Checks for null event
    • Validates circuitId
  • Delegates the activation or deactivation process to the PlanningService.

🔹 2. Added unified activation/deactivation method in PlanningService

  • New method:

    activationCircuit(String circuitId, boolean isActive)
  • Retrieves all TripCircuit entries linked to the given circuitId.

  • Throws a FunctionalException if no circuits exist.

🔹 3. Improved filtering of affected circuits

  • Considers only TripCircuit where isAssigned = true.
  • Extracts distinct idTripCircuit values.
  • Automatically ignores null or duplicate IDs.

🔹 4. Activation/Deactivation of related TripPlanning

  • All TripPlanning entries tied to the retained idTripCircuit list are fetched.
  • Their isActive flag is updated to match the received event status.
  • Bulk persistence via saveAll().

🔹 5. Activation/Deactivation of TripCircuit

  • All retrieved TripCircuit entities are updated with the new isActive state.
  • Persisted using saveAll().

Why this change?

  • Enables remote activation/deactivation of circuits via Kafka events.
  • Ensures consistency between TripCircuit and TripPlanning statuses.
  • Improves system reactivity and data integrity.
  • Simplifies logic by using one unified method for both activation & deactivation.
Modification effectuée par ilyas makhloul

Rapports de requête de fusion