security->isGranted('ROLE_ADMIN')) { throw new AccessDeniedException('Access denied: ROLE_ADMIN required.'); } $address = $this->addressRepository->findById($id); if (null === $address) { throw new InvalidArgumentException(sprintf('Address with ID %d not found.', $id)); } if (null !== $label) { $address->setLabel($label); } if (null !== $street) { $address->setStreet($street); } if (null !== $streetComplement) { $address->setStreetComplement($streetComplement); } if (null !== $postalCode) { $address->setPostalCode($postalCode); } if (null !== $city) { $address->setCity($city); } if (null !== $country) { if (2 !== strlen($country)) { throw new InvalidArgumentException('country must be a 2-letter ISO 3166 alpha-2 code (e.g., FR, BE).'); } $address->setCountry(strtoupper($country)); } $this->entityManager->flush(); return json_encode(Serializer::address($address)); } }