Inject personPerTicket parameter into EditTicketController and expose it to the frontend via edit.html.twig. Refactor related type definitions.

This commit is contained in:
Julien Fastré 2025-07-04 15:32:31 +02:00
parent 42d6c9e672
commit afa5edc1d8
Signed by: julienfastre
GPG Key ID: BDE2190974723FCB
4 changed files with 14 additions and 6 deletions

View File

@ -12,15 +12,21 @@ declare(strict_types=1);
namespace Chill\TicketBundle\Controller; namespace Chill\TicketBundle\Controller;
use Chill\TicketBundle\Entity\Ticket; use Chill\TicketBundle\Entity\Ticket;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Routing\Annotation\Route;
use Twig\Environment; use Twig\Environment;
class EditTicketController class EditTicketController
{ {
private string $personPerTicket;
public function __construct( public function __construct(
private readonly Environment $templating, private readonly Environment $templating,
) {} ParameterBagInterface $parameterBag,
) {
$this->personPerTicket = $parameterBag->get('chill_ticket')['ticket']['person_per_ticket'];
}
#[Route('/{_locale}/ticket/ticket/{id}/edit', name: 'chill_ticket_ticket_edit')] #[Route('/{_locale}/ticket/ticket/{id}/edit', name: 'chill_ticket_ticket_edit')]
public function __invoke( public function __invoke(
@ -31,6 +37,7 @@ class EditTicketController
'@ChillTicket/Ticket/edit.html.twig', '@ChillTicket/Ticket/edit.html.twig',
[ [
'ticket' => $ticket, 'ticket' => $ticket,
'personPerTicket' => $this->personPerTicket,
] ]
) )
); );

View File

@ -111,7 +111,6 @@ export type EmergencyStateEvent = TicketHistory<
>; >;
export type CallerStateEvent = TicketHistory<"set_caller", CallerState>; export type CallerStateEvent = TicketHistory<"set_caller", CallerState>;
// TODO : Remove add_person event from TicketHistoryLine
export type TicketHistoryLine = export type TicketHistoryLine =
| AddPersonEvent | AddPersonEvent
| CreateTicketEvent | CreateTicketEvent
@ -125,11 +124,7 @@ export type TicketHistoryLine =
interface BaseTicket<T extends "ticket_ticket:simple"|"ticket_ticket:extended" = "ticket_ticket:simple"> { interface BaseTicket<T extends "ticket_ticket:simple"|"ticket_ticket:extended" = "ticket_ticket:simple"> {
type_extended: T; type_extended: T;
}
export interface TicketSimple extends BaseTicket<"ticket_ticket:simple"> {
type: "ticket_ticket"; type: "ticket_ticket";
type_extended: "ticket_ticket:simple";
id: number; id: number;
externalRef: string; externalRef: string;
currentAddressees: UserGroupOrUser[]; currentAddressees: UserGroupOrUser[];
@ -140,6 +135,10 @@ export interface TicketSimple extends BaseTicket<"ticket_ticket:simple"> {
caller: Person | Thirdparty | null; caller: Person | Thirdparty | null;
} }
export interface TicketSimple extends BaseTicket<"ticket_ticket:simple"> {
type_extended: "ticket_ticket:simple";
}
export interface Ticket extends BaseTicket<"ticket_ticket:extended"> { export interface Ticket extends BaseTicket<"ticket_ticket:extended"> {
type_extended: "ticket_ticket:extended"; type_extended: "ticket_ticket:extended";
createdAt: DateTime | null; createdAt: DateTime | null;

View File

@ -9,6 +9,7 @@ import { store } from "./store";
declare global { declare global {
interface Window { interface Window {
initialTicket: string; initialTicket: string;
ticketPersonPerTicket: 'one'|'multi';
} }
} }

View File

@ -9,6 +9,7 @@
{{ parent() }} {{ parent() }}
<script type="text/javascript"> <script type="text/javascript">
window.initialTicket = "{{ ticket|serialize('json', {'groups': 'read'})|escape('js') }}"; window.initialTicket = "{{ ticket|serialize('json', {'groups': 'read'})|escape('js') }}";
window.ticketPersonPerTicket = "{{ personPerTicket|escape('js') }}";
</script> </script>
{{ encore_entry_script_tags('vue_ticket_app') }} {{ encore_entry_script_tags('vue_ticket_app') }}
{% endblock %} {% endblock %}