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;
use Chill\TicketBundle\Entity\Ticket;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Twig\Environment;
class EditTicketController
{
private string $personPerTicket;
public function __construct(
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')]
public function __invoke(
@ -31,6 +37,7 @@ class EditTicketController
'@ChillTicket/Ticket/edit.html.twig',
[
'ticket' => $ticket,
'personPerTicket' => $this->personPerTicket,
]
)
);

View File

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

View File

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

View File

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