From 06daf35e964dbd2f7ce5e146e21f507354a36c9c Mon Sep 17 00:00:00 2001 From: nobohan Date: Wed, 16 Jun 2021 14:39:02 +0200 Subject: [PATCH 1/3] addresses: edit address for person --- .../Resources/public/scss/chillmain.scss | 13 +++++- .../Resources/public/vuejs/Address/App.vue | 18 ++++---- .../Resources/public/vuejs/Address/js/i18n.js | 2 + .../public/vuejs/Address/store/index.js | 6 +-- .../public/vuejs/_components/AddAddress.vue | 31 +++++++------ .../_components/AddAddress/AddressMore.vue | 35 +++++++++++---- .../AddAddress/AddressSelection.vue | 2 +- .../_components/AddAddress/CitySelection.vue | 4 +- .../AddAddress/CountrySelection.vue | 7 ++- .../public/vuejs/_components/ShowAddress.vue | 44 +++++++++++++++++++ .../Normalizer/AddressNormalizer.php | 5 +++ .../Controller/PersonAddressController.php | 4 +- .../Resources/views/Address/edit.html.twig | 2 +- .../translations/messages.fr.yml | 1 + 14 files changed, 132 insertions(+), 42 deletions(-) create mode 100644 src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/ShowAddress.vue diff --git a/src/Bundle/ChillMainBundle/Resources/public/scss/chillmain.scss b/src/Bundle/ChillMainBundle/Resources/public/scss/chillmain.scss index f101b78ca..9f0ebd190 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/scss/chillmain.scss +++ b/src/Bundle/ChillMainBundle/Resources/public/scss/chillmain.scss @@ -244,6 +244,9 @@ div.address_form { display: flex; flex-direction: column; flex-grow: 1; + div.custom-address, div.custom-postcode { + padding: 12px; + } } div.address_form__select__map { @@ -251,11 +254,19 @@ div.address_form { div#address_map { height:400px; width:400px; + input { + border: 1px solid #999; + } } } } div.address_form__more { - + & > div { + display: flex; + & > label { + width: 30%; + } + } } } diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/App.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/App.vue index 37dd6aba4..c0d3271ef 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/App.vue +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/App.vue @@ -8,16 +8,12 @@ @addNewAddress="addNewAddress"> +
-
- {{ address.text }} -
-
- {{ address.postcode.name }} -
-
- {{ address.country.name }} -
+ +
@@ -49,11 +45,13 @@ diff --git a/src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php b/src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php index 9cebddfa0..362ed7b26 100644 --- a/src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php +++ b/src/Bundle/ChillMainBundle/Serializer/Normalizer/AddressNormalizer.php @@ -15,9 +15,14 @@ class AddressNormalizer implements NormalizerAwareInterface, NormalizerInterface { $data['address_id'] = $address->getId(); $data['text'] = $address->getStreet().', '.$address->getStreetNumber(); + $data['street'] = $address->getStreet(); + $data['streetNumber'] = $address->getStreetNumber(); $data['postcode']['name'] = $address->getPostCode()->getName(); + $data['postcode']['code'] = $address->getPostCode()->getCode(); $data['country']['name'] = $address->getPostCode()->getCountry()->getName(); + $data['country']['code'] = $address->getPostCode()->getCountry()->getCountryCode(); $data['floor'] = $address->getFloor(); + $data['corridor'] = $address->getCorridor(); $data['steps'] = $address->getSteps(); $data['flat'] = $address->getBuildingName(); $data['buildingName'] = $address->getFlat(); diff --git a/src/Bundle/ChillPersonBundle/Controller/PersonAddressController.php b/src/Bundle/ChillPersonBundle/Controller/PersonAddressController.php index f68e1ee9b..5dc6fea46 100644 --- a/src/Bundle/ChillPersonBundle/Controller/PersonAddressController.php +++ b/src/Bundle/ChillPersonBundle/Controller/PersonAddressController.php @@ -45,7 +45,7 @@ class PersonAddressController extends AbstractController * @var ValidatorInterface */ protected $validator; - + /** * PersonAddressController constructor. * @@ -55,7 +55,7 @@ class PersonAddressController extends AbstractController { $this->validator = $validator; } - + public function listAction($person_id) { $person = $this->getDoctrine()->getManager() diff --git a/src/Bundle/ChillPersonBundle/Resources/views/Address/edit.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/Address/edit.html.twig index 238afb473..ffdfaea86 100644 --- a/src/Bundle/ChillPersonBundle/Resources/views/Address/edit.html.twig +++ b/src/Bundle/ChillPersonBundle/Resources/views/Address/edit.html.twig @@ -18,7 +18,7 @@ {% set activeRouteKey = '' %} -{% block title 'Update address for %name%'|trans({ '%name%': person.firstName ~ ' ' ~ person.lastName } ) %} +{% block title 'Modify address for %name%'|trans({ '%name%': person.firstName ~ ' ' ~ person.lastName } ) %} {% block personcontent %} diff --git a/src/Bundle/ChillPersonBundle/translations/messages.fr.yml b/src/Bundle/ChillPersonBundle/translations/messages.fr.yml index 28ec07798..a1e353f89 100644 --- a/src/Bundle/ChillPersonBundle/translations/messages.fr.yml +++ b/src/Bundle/ChillPersonBundle/translations/messages.fr.yml @@ -185,6 +185,7 @@ Pick a person: Choisir une personne No address given: Pas d'adresse renseignée The address has been successfully updated: L'adresse a été mise à jour avec succès Update address for %name%: Mettre à jour une adresse pour %name% +Modify address for %name%: Modifier une adresse pour %name% Addresses'history for %name%: Historique des adresses de %name% Addresses'history: Historique des adresses New address for %name% : Nouvelle adresse pour %name% From 5b72eeb1474adb578a3043f2ca0cf4f8e5806700 Mon Sep 17 00:00:00 2001 From: nobohan Date: Wed, 16 Jun 2021 15:05:32 +0200 Subject: [PATCH 2/3] addresses: edit address for household (WIP) --- .../Controller/HouseholdController.php | 23 ++++++++++++++++ .../public/vuejs/HouseholdAddress/App.vue | 13 +++++----- .../views/Household/address_edit.html.twig | 26 +++++++++++++++++++ .../views/Household/addresses.html.twig | 2 ++ 4 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 src/Bundle/ChillPersonBundle/Resources/views/Household/address_edit.html.twig diff --git a/src/Bundle/ChillPersonBundle/Controller/HouseholdController.php b/src/Bundle/ChillPersonBundle/Controller/HouseholdController.php index d7e69439d..6a4a4be34 100644 --- a/src/Bundle/ChillPersonBundle/Controller/HouseholdController.php +++ b/src/Bundle/ChillPersonBundle/Controller/HouseholdController.php @@ -2,6 +2,7 @@ namespace Chill\PersonBundle\Controller; +use Chill\MainBundle\Entity\Address; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -97,4 +98,26 @@ class HouseholdController extends AbstractController ] ); } + + /** + * @Route( + * "/{household_id}/address/edit", + * name="chill_person_household_address_edit", + * methods={"GET", "HEAD", "POST"} + * ) + * @ParamConverter("household", options={"id" = "household_id"}) + */ + public function addressEdit(Request $request, Household $household) + { + // TODO ACL + //$address = $this->findAddressById($household, $address_id); //TODO + + + return $this->render('@ChillPerson/Household/address_edit.html.twig', + [ + 'household' => $household, + //'address' => $address, + ] + ); + } } diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/HouseholdAddress/App.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/HouseholdAddress/App.vue index 0c989c310..e42564738 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/HouseholdAddress/App.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/HouseholdAddress/App.vue @@ -8,12 +8,10 @@
-
- {{ newAddress.text }} -
-
- {{ newAddress.postcode.name }} -
+ +
@@ -45,14 +43,17 @@ + {{ encore_entry_script_tags('household_address') }} + {% endblock %} + +{% endblock %} diff --git a/src/Bundle/ChillPersonBundle/Resources/views/Household/addresses.html.twig b/src/Bundle/ChillPersonBundle/Resources/views/Household/addresses.html.twig index db682e6b1..fcc21765b 100644 --- a/src/Bundle/ChillPersonBundle/Resources/views/Household/addresses.html.twig +++ b/src/Bundle/ChillPersonBundle/Resources/views/Household/addresses.html.twig @@ -54,8 +54,10 @@ ({{ address.postCode.country.name|localize_translatable_string }})
{% endif %} + {% endif %} + From e2633a2a790569e1da68e7b8146cba3cfef11483 Mon Sep 17 00:00:00 2001 From: nobohan Date: Wed, 16 Jun 2021 16:20:37 +0200 Subject: [PATCH 3/3] addresses: filter out postal code introduced by user --- .../ChillMainBundle/Entity/PostalCode.php | 33 +++++++++++++++++++ .../public/vuejs/Address/store/index.js | 10 ++++-- .../public/vuejs/_components/AddAddress.vue | 4 +-- .../migrations/Version20210616134328.php | 29 ++++++++++++++++ 4 files changed, 71 insertions(+), 5 deletions(-) create mode 100644 src/Bundle/ChillMainBundle/migrations/Version20210616134328.php diff --git a/src/Bundle/ChillMainBundle/Entity/PostalCode.php b/src/Bundle/ChillMainBundle/Entity/PostalCode.php index 26d75a532..01d03ed52 100644 --- a/src/Bundle/ChillMainBundle/Entity/PostalCode.php +++ b/src/Bundle/ChillMainBundle/Entity/PostalCode.php @@ -54,6 +54,13 @@ class PostalCode */ private $country; + /** + * @var integer + * + * @ORM\Column(name="origin", type="integer", nullable=true) + * @groups({"write", "read"}) + */ + private $origin = 0; /** * Get id @@ -65,6 +72,32 @@ class PostalCode return $this->id; } + + /** + * Set origin + * + * @param int $origin + * + * @return PostalCode + */ + public function setOrigin($origin) + { + $this->origin = $origin; + + return $this; + } + + /** + * Get origin + * + * @return int + */ + public function getOrigin() + { + return $this->origin; + } + + /** * Set name * diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/store/index.js b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/store/index.js index 9aeea6f01..acbf4dcbb 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/store/index.js +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/store/index.js @@ -45,10 +45,12 @@ const store = createStore({ console.log('@A addAddress payload', payload); if('newPostalCode' in payload){ - postPostalCode(payload.newPostalCode) + let postalCodeBody = payload.newPostalCode; + postalCodeBody = Object.assign(postalCodeBody, {'origin': 3}); + postPostalCode(postalCodeBody) .then(postalCode => { let body = payload; - body.postcode = {'id': postalCode.id }, + body.postcode = {'id': postalCode.id}, postAddress(body) .then(address => new Promise((resolve, reject) => { commit('addAddress', address); @@ -95,7 +97,9 @@ const store = createStore({ console.log('@A updateAddress payload', payload); if('newPostalCode' in payload.newAddress){ // TODO change the condition because it writes new postal code in edit mode now: !writeNewPostalCode - postPostalCode(payload.newAddress.newPostalCode) + let postalCodeBody = payload.newAddress.newPostalCode; + postalCodeBody = Object.assign(postalCodeBody, {'origin': 3}); + postPostalCode(postalCodeBody) .then(postalCode => { let body = payload.newAddress; body.postcode = {'id': postalCode.id }, diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress.vue index 57422d044..3417a2d0d 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress.vue +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/AddAddress.vue @@ -181,8 +181,8 @@ export default { getCities(country) { console.log('getCities for', country.name); fetchCities(country).then(cities => new Promise((resolve, reject) => { - this.address.loaded.cities = cities.results; - resolve() + this.address.loaded.cities = cities.results.filter(c => c.origin !== 3); // filter out user-defined cities + resolve(); })) .catch((error) => { this.errorMsg.push(error.message); diff --git a/src/Bundle/ChillMainBundle/migrations/Version20210616134328.php b/src/Bundle/ChillMainBundle/migrations/Version20210616134328.php new file mode 100644 index 000000000..c54f0a183 --- /dev/null +++ b/src/Bundle/ChillMainBundle/migrations/Version20210616134328.php @@ -0,0 +1,29 @@ +addSql('ALTER TABLE chill_main_postal_code ADD origin INT DEFAULT NULL'); + } + + public function down(Schema $schema): void + { + $this->addSql('ALTER TABLE chill_main_postal_code DROP origin'); + } +}