denyAccessUnlessGranted('ROLE_GESTIONNAIRE'); $machine = $this->machineRepository->find($id); if (!$machine instanceof Machine) { return $this->json(['success' => false, 'error' => 'Machine not found.'], 404); } $typeMachine = $machine->getTypeMachine(); if (!$typeMachine) { return $this->json(['success' => true, 'machineId' => $machine->getId(), 'customFieldValues' => []]); } foreach ($typeMachine->getCustomFields() as $customField) { if (!$customField instanceof CustomField) { continue; } $existing = $this->customFieldValueRepository->findOneBy([ 'machine' => $machine, 'customField' => $customField, ]); if ($existing instanceof CustomFieldValue) { continue; } $value = new CustomFieldValue(); $value->setMachine($machine); $value->setCustomField($customField); $value->setValue($customField->getDefaultValue() ?? ''); $this->entityManager->persist($value); } $this->entityManager->flush(); $values = $this->customFieldValueRepository->findBy(['machine' => $machine]); return $this->json([ 'success' => true, 'machineId' => $machine->getId(), 'customFieldValues' => array_map( static fn (CustomFieldValue $value) => [ 'id' => $value->getId(), 'value' => $value->getValue(), 'customFieldId' => $value->getCustomField()->getId(), ], $values ), ]); } }