diff --git a/docs/source/development/pagination.rst b/docs/source/development/pagination.rst index c0cec9639..1a2c91ff0 100644 --- a/docs/source/development/pagination.rst +++ b/docs/source/development/pagination.rst @@ -28,7 +28,7 @@ Then, render the pagination using the dedicated twig function. .. code-block:: html+twig - {% extends "ChillPersonBundle::layout.html.twig" %} + {% extends "@ChillPerson/Person/layout.html.twig" %} {% block title 'Item list'|trans %} diff --git a/docs/source/development/user-interface/layout-template-usage.rst b/docs/source/development/user-interface/layout-template-usage.rst index 2b7a7764c..69848c650 100644 --- a/docs/source/development/user-interface/layout-template-usage.rst +++ b/docs/source/development/user-interface/layout-template-usage.rst @@ -149,7 +149,7 @@ It proposes a new block : * where to display the admin content -ChillPersonBundle::layout.html.twig +@ChillPersonBundle/Person/layout.html.twig ----------------------------------- This layout extend `ChillMainBundle::layoutWithVerticalMenu.html.twig` add the person details in the block `top_banner`, set the menu `person` as the vertical menu. diff --git a/src/Bundle/ChillMainBundle/Controller/SearchController.php b/src/Bundle/ChillMainBundle/Controller/SearchController.php index 7c88d24fe..4ecc215f7 100644 --- a/src/Bundle/ChillMainBundle/Controller/SearchController.php +++ b/src/Bundle/ChillMainBundle/Controller/SearchController.php @@ -22,7 +22,9 @@ namespace Chill\MainBundle\Controller; +use Chill\MainBundle\Search\SearchApiNoQueryException; use Chill\MainBundle\Serializer\Model\Collection; +use GuzzleHttp\Psr7\Response; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Chill\MainBundle\Search\UnknowSearchDomainException; @@ -33,6 +35,7 @@ use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\Extension\Core\Type\FormType; use Symfony\Component\HttpFoundation\JsonResponse; use Chill\MainBundle\Search\SearchProvider; +use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Contracts\Translation\TranslatorInterface; use Chill\MainBundle\Pagination\PaginatorFactory; use Chill\MainBundle\Search\SearchApi; @@ -46,15 +49,15 @@ use Symfony\Component\HttpFoundation\Exception\BadRequestException; class SearchController extends AbstractController { protected SearchProvider $searchProvider; - + protected TranslatorInterface $translator; - + protected PaginatorFactory $paginatorFactory; protected SearchApi $searchApi; - + function __construct( - SearchProvider $searchProvider, + SearchProvider $searchProvider, TranslatorInterface $translator, PaginatorFactory $paginatorFactory, SearchApi $searchApi @@ -65,14 +68,14 @@ class SearchController extends AbstractController $this->searchApi = $searchApi; } - + public function searchAction(Request $request, $_format) { $pattern = $request->query->get('q', ''); - + if ($pattern === ''){ switch($_format) { - case 'html': + case 'html': return $this->render('@ChillMain/Search/error.html.twig', array( 'message' => $this->translator->trans("Your search is empty. " @@ -86,16 +89,16 @@ class SearchController extends AbstractController ]); } } - + $name = $request->query->get('name', NULL); - + try { if ($name === NULL) { if ($_format === 'json') { return new JsonResponse('Currently, we still do not aggregate results ' . 'from different providers', JsonResponse::HTTP_BAD_REQUEST); } - + // no specific search selected. Rendering result in "preview" mode $results = $this->searchProvider ->getSearchResults( @@ -119,7 +122,7 @@ class SearchController extends AbstractController ), $_format )]; - + if ($_format === 'json') { return new JsonResponse(\reset($results)); } @@ -141,8 +144,8 @@ class SearchController extends AbstractController 'pattern' => $pattern )); } - - + + return $this->render('@ChillMain/Search/list.html.twig', array('results' => $results, 'pattern' => $pattern) ); @@ -159,29 +162,33 @@ class SearchController extends AbstractController ." one type"); } - $collection = $this->searchApi->getResults($query, $types, []); + try { + $collection = $this->searchApi->getResults($query, $types, []); + } catch (SearchApiNoQueryException $e) { + throw new BadRequestHttpException($e->getMessage(), $e); + } - return $this->json($collection); + return $this->json($collection, \Symfony\Component\HttpFoundation\Response::HTTP_OK, [], [ "groups" => ["read"]]); } - + public function advancedSearchListAction(Request $request) { /* @var $variable Chill\MainBundle\Search\SearchProvider */ $searchProvider = $this->searchProvider; $advancedSearchProviders = $searchProvider ->getHasAdvancedFormSearchServices(); - + if(\count($advancedSearchProviders) === 1) { \reset($advancedSearchProviders); - + return $this->redirectToRoute('chill_main_advanced_search', [ 'name' => \key($advancedSearchProviders) ]); } - + return $this->render('@ChillMain/Search/choose_list.html.twig'); } - + public function advancedSearchAction($name, Request $request) { try { @@ -190,22 +197,22 @@ class SearchController extends AbstractController /* @var $variable Chill\MainBundle\Search\HasAdvancedSearchFormInterface */ $search = $this->searchProvider ->getHasAdvancedFormByName($name); - + } catch (\Chill\MainBundle\Search\UnknowSearchNameException $e) { throw $this->createNotFoundException("no advanced search for " . "$name"); } - + if ($request->query->has('q')) { $data = $search->convertTermsToFormData($searchProvider->parse( $request->query->get('q'))); } - + $form = $this->createAdvancedSearchForm($name, $data ?? []); - + if ($request->isMethod(Request::METHOD_POST)) { $form->handleRequest($request); - + if ($form->isValid()) { $pattern = $this->searchProvider ->getHasAdvancedFormByName($name) @@ -215,8 +222,8 @@ class SearchController extends AbstractController 'q' => $pattern, 'name' => $name ]); } - } - + } + return $this->render('@ChillMain/Search/advanced_search.html.twig', [ 'form' => $form->createView(), @@ -224,15 +231,15 @@ class SearchController extends AbstractController 'title' => $search->getAdvancedSearchTitle() ]); } - + protected function createAdvancedSearchForm($name, array $data = []) { $builder = $this ->get('form.factory') ->createNamedBuilder( null, - FormType::class, - $data, + FormType::class, + $data, [ 'method' => Request::METHOD_POST ] ); @@ -240,12 +247,12 @@ class SearchController extends AbstractController ->getHasAdvancedFormByName($name) ->buildForm($builder) ; - + $builder->add('submit', SubmitType::class, [ 'label' => 'Search' ]); - + return $builder->getForm(); } - + } diff --git a/src/Bundle/ChillMainBundle/Resources/public/chill/chillmain.scss b/src/Bundle/ChillMainBundle/Resources/public/chill/chillmain.scss index 20ce571ac..1d7cd5db8 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/chill/chillmain.scss +++ b/src/Bundle/ChillMainBundle/Resources/public/chill/chillmain.scss @@ -265,6 +265,17 @@ table.table-bordered { } } +div.metadata { + font-size: smaller; + color: $gray-600; + span.user, span.date { + text-decoration: underline dotted; + &:hover { + color: $gray-700; + } + } +} + /// display definition list // with dt and dd on same line @@ -283,7 +294,6 @@ dl.definition-inline { } } - /// when there is no data .custom_field_no_data, .chill-no-data-statement { diff --git a/src/Bundle/ChillMainBundle/Resources/public/chill/scss/record_actions.scss b/src/Bundle/ChillMainBundle/Resources/public/chill/scss/record_actions.scss index efedac51d..bdb3c60a6 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/chill/scss/record_actions.scss +++ b/src/Bundle/ChillMainBundle/Resources/public/chill/scss/record_actions.scss @@ -43,6 +43,7 @@ ul.record_actions { display: flex; padding: 0.8em 1.6em; border-radius: 0; + z-index: 1000; } /// EXCEPTIONS diff --git a/src/Bundle/ChillMainBundle/Resources/public/chill/scss/render_box.scss b/src/Bundle/ChillMainBundle/Resources/public/chill/scss/render_box.scss index 68bbe2afc..31d2c8d09 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/chill/scss/render_box.scss +++ b/src/Bundle/ChillMainBundle/Resources/public/chill/scss/render_box.scss @@ -93,9 +93,10 @@ section.chill-entity { font-style: italic; } - span.address-valid { - &.address-since {} - &.address-until {} + .address-valid { + margin-top: 2em; + &.date-since {} + &.date-until {} } } diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/App.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/App.vue index 72b46c3ab..0ae6fc578 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/App.vue +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/App.vue @@ -1,147 +1,86 @@ diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/api.js b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/api.js index 0f078a2d9..e4ed78f35 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/api.js +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/api.js @@ -4,7 +4,7 @@ * @returns {Promise} a promise containing all Country object */ const fetchCountries = () => { - console.log('<<< fetching countries'); + //console.log('<<< fetching countries'); const url = `/api/1.0/main/country.json?item_per_page=1000`; return fetch(url) @@ -20,7 +20,7 @@ const fetchCountries = () => { * @returns {Promise} a promise containing all Postal Code objects filtered with country */ const fetchCities = (country) => { - console.log('<<< fetching cities for', country); + //console.log('<<< fetching cities for', country); const url = `/api/1.0/main/postal-code.json?item_per_page=1000&country=${country.id}`; return fetch(url) .then(response => { @@ -35,7 +35,7 @@ const fetchCities = (country) => { * @returns {Promise} a promise containing all AddressReference objects filtered with postal code */ const fetchReferenceAddresses = (postalCode) => { - console.log('<<< fetching references addresses for', postalCode); + //console.log('<<< fetching references addresses for', postalCode); const url = `/api/1.0/main/address-reference.json?item_per_page=1000&postal_code=${postalCode.id}`; return fetch(url) .then(response => { @@ -50,7 +50,7 @@ const fetchReferenceAddresses = (postalCode) => { * @returns {Promise} a promise containing all AddressReference objects filtered with postal code */ const fetchAddresses = () => { - console.log('<<< fetching addresses'); + //console.log('<<< fetching addresses'); //TODO deal with huge number of addresses... we should do suggestion... const url = `/api/1.0/main/address.json?item_per_page=1000`; return fetch(url) @@ -125,31 +125,6 @@ const postPostalCode = (postalCode) => { }); }; -/* -* Endpoint chill_api_single_person_address -* method POST, post Person instance -* -* @id integer - id of Person -* @body Object - dictionary with changes to post -*/ -const postAddressToPerson = (personId, addressId) => { - console.log(personId); - console.log(addressId); - const body = { - 'id': addressId - }; - const url = `/api/1.0/person/person/${personId}/address.json` - return fetch(url, { - method: 'POST', - headers: {'Content-Type': 'application/json;charset=utf-8'}, - body: JSON.stringify(body) - }) - .then(response => { - if (response.ok) { return response.json(); } - throw Error('Error with request resource response'); - }); -}; - /* * Endpoint chill_api_single_address__index * method GET, get Address Object @@ -157,7 +132,7 @@ const postAddressToPerson = (personId, addressId) => { * @returns {Promise} a promise containing a Address object */ const getAddress = (id) => { - console.log('<<< get address'); + //console.log('<< get address'); const url = `/api/1.0/main/address/${id}.json`; return fetch(url) .then(response => { @@ -174,6 +149,5 @@ export { postAddress, patchAddress, postPostalCode, - postAddressToPerson, getAddress }; diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress.vue index ead092802..fa4ff4773 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress.vue +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress.vue @@ -1,273 +1,618 @@ diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressMap.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressMap.vue index 978862d82..c6abd92d5 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressMap.vue +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressMap.vue @@ -13,16 +13,18 @@ let marker; export default { name: 'AddressMap', - props: ['address'], + props: ['entity'], computed: { center() { - return this.address.addressMap.center; + return this.entity.selected.addressMap.center; }, }, methods:{ init() { map = L.map('address_map').setView([46.67059, -1.42683], 12); + map.scrollWheelZoom.disable(); + L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© OpenStreetMap contributors' }).addTo(map); @@ -36,9 +38,9 @@ export default { }, update() { - console.log('update map with : ', this.address.addressMap.center) - marker.setLatLng(this.address.addressMap.center); - map.setView(this.address.addressMap.center, 15); + //console.log('update map with : ', this.address.addressMap.center) + marker.setLatLng(this.entity.addressMap.center); + map.setView(this.entity.addressMap.center, 15); } }, mounted(){ diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressMore.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressMore.vue index 11c25b318..1216871ab 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressMore.vue +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/AddressMore.vue @@ -74,69 +74,62 @@ diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/HouseholdAddress/components/SelectHouseholdAddress.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/SelectHouseholdAddress.vue similarity index 100% rename from src/Bundle/ChillPersonBundle/Resources/public/vuejs/HouseholdAddress/components/SelectHouseholdAddress.vue rename to src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/AddAddress/SelectHouseholdAddress.vue diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/EditAddressPane.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/EditAddressPane.vue new file mode 100644 index 000000000..017e6fd24 --- /dev/null +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/EditAddressPane.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/ShowAddress.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/ShowAddress.vue index 786f0dce6..056d1044f 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/ShowAddress.vue +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/ShowAddress.vue @@ -1,64 +1,62 @@ diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/ShowAddressPane.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/ShowAddressPane.vue new file mode 100644 index 000000000..14ca059c0 --- /dev/null +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/components/ShowAddressPane.vue @@ -0,0 +1,101 @@ + + + diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/i18n.js b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/i18n.js new file mode 100644 index 000000000..9cfd05a3e --- /dev/null +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/i18n.js @@ -0,0 +1,55 @@ +const addressMessages = { + fr: { + add_an_address_title: 'Créer une adresse', + edit_an_address_title: 'Modifier une adresse', + create_a_new_address: 'Créer une nouvelle adresse', + edit_address: 'Modifier l\'adresse', + select_an_address_title: 'Sélectionner une adresse', + fill_an_address: 'Compléter l\'adresse', + select_country: 'Choisir le pays', + country: 'Pays', + select_city: 'Choisir une localité', + city: 'Localité', + other_city: 'Autre localité', + select_address: 'Choisir une adresse', + address: 'Adresse', + other_address: 'Autre adresse', + create_address: 'Adresse inconnue. Cliquez ici pour créer une nouvelle adresse', + isNoAddress: 'Pas d\'adresse complète', + street: 'Nom de rue', + streetNumber: 'Numéro', + floor: 'Étage', + corridor: 'Couloir', + steps: 'Escalier', + flat: 'Appartement', + buildingName: 'Nom du bâtiment', + extra: 'Complément d\'adresse', + distribution: 'Service particulier de distribution', + create_postal_code: 'Localité inconnue. Cliquez ici pour créer une nouvelle localité', + postalCode_name: 'Nom', + postalCode_code: 'Code postal', + date: 'Date de la nouvelle adresse', + validFrom: 'Date de la nouvelle adresse', + back_to_the_list: 'Retour à la liste', + loading: 'chargement en cours...', + address_new_success: 'La nouvelle adresse est enregistrée', + address_edit_success: 'L\'adresse a été mise à jour', + + // person specific + add_an_address_to_person: 'Ajouter l\'adresse à la personne', + person_address_creation_success: 'La nouvelle adresse de la personne est enregistrée', + person_address_edit_success: 'L\'adresse de la personne a été mise à jour', + + // household specific + move_date: 'Date du déménagement', + select_a_existing_address: 'Sélectionner une adresse existante', + add_an_address_to_household: 'Enregistrer', + household_address_move_success: 'La nouvelle adresse du ménage est enregistrée', + household_address_edit_success: 'L\'adresse du ménage a été mise à jour', + + } +}; + +export { + addressMessages +}; diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/index.js b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/index.js index 27676369e..bb2dd6543 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/index.js +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/index.js @@ -1,16 +1,13 @@ -import { createApp } from 'vue' -import { _createI18n } from 'ChillMainAssets/vuejs/_js/i18n' -import { addressMessages } from './js/i18n' -import { store } from './store' - +import { createApp } from 'vue'; import App from './App.vue'; +import { _createI18n } from 'ChillMainAssets/vuejs/_js/i18n'; +import { addressMessages } from './i18n'; -const i18n = _createI18n(addressMessages); +const i18n = _createI18n( addressMessages ); const app = createApp({ - template: ``, + template: ``, }) -.use(store) .use(i18n) .component('app', App) .mount('#address'); diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/js/i18n.js b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/js/i18n.js deleted file mode 100644 index f8a7ea4d2..000000000 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/js/i18n.js +++ /dev/null @@ -1,42 +0,0 @@ -const addressMessages = { - fr: { - add_an_address_title: 'Créer une adresse', - edit_an_address_title: 'Modifier une adresse', - create_a_new_address: 'Créer une nouvelle adresse', - edit_address: 'Modifier l\'adresse', - select_an_address_title: 'Sélectionner une adresse', - fill_an_address: 'Compléter l\'adresse', - select_country: 'Choisir le pays', - country: 'Pays', - select_city: 'Choisir une localité', - city: 'Localité', - other_city: 'Autre localité', - select_address: 'Choisir une adresse', - address: 'Adresse', - other_address: 'Autre adresse', - create_address: 'Adresse inconnue. Cliquez ici pour créer une nouvelle adresse', - isNoAddress: 'Pas d\'adresse complète', - street: 'Nom de rue', - streetNumber: 'Numéro', - floor: 'Étage', - corridor: 'Couloir', - steps: 'Escalier', - flat: 'Appartement', - buildingName: 'Nom du bâtiment', - extra: 'Complément d\'adresse', - distribution: 'Service particulier de distribution', - create_postal_code: 'Localité inconnue. Cliquez ici pour créer une nouvelle localité', - postalCode_name: 'Nom', - postalCode_code: 'Code postal', - date: 'Date de la nouvelle adresse', - add_an_address_to_person: 'Ajouter l\'adresse à la personne', - validFrom: 'Date de la nouvelle adresse', - back_to_the_list: 'Retour à la liste', - person_address_creation_success: 'La nouvelle adresse de la personne est enregistrée', - loading: 'chargement en cours...' - } -}; - -export { - addressMessages -}; diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/store.js b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/store.js new file mode 100644 index 000000000..392d033f5 --- /dev/null +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/store.js @@ -0,0 +1,14 @@ +import 'es6-promise/auto'; +import { createStore } from 'vuex'; + +const debug = process.env.NODE_ENV !== 'production'; + +const store = createStore({ + strict: debug, + state: {}, + getters: {}, + mutations: {}, + actions: {}, +}); + +export { store }; diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/store/index.js b/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/store/index.js deleted file mode 100644 index 967675c8f..000000000 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/Address/store/index.js +++ /dev/null @@ -1,158 +0,0 @@ -import 'es6-promise/auto'; -import { createStore } from 'vuex'; - -import { patchAddress, postAddress, postPostalCode, postAddressToPerson, getAddress } from '../api' - -const debug = process.env.NODE_ENV !== 'production'; - -const store = createStore({ - strict: debug, - state: { - address: {}, - editAddress: {}, //TODO or should be address? - person: {}, - errorMsg: [], - loading: false, - success: false - }, - getters: { - }, - mutations: { - catchError(state, error) { - state.errorMsg.push(error); - }, - addAddress(state, address) { - console.log('@M addAddress address', address); - state.address = address; - }, - updateAddress(state, address) { - console.log('@M updateAddress address', address); - state.address = address; - }, - addAddressToPerson(state, person) { - console.log('@M addAddressToPerson person', person); - state.person = person; - }, - addDateToAddress(state, validFrom) { - console.log('@M addDateToAddress address.validFrom', validFrom); - state.validFrom = validFrom; - }, - getEditAddress(state, address) { - console.log('@M getEditAddress address', address); - state.editAddress = address; - }, - setLoading(state, b) { - state.loading = b; - }, - setSuccess(state, b) { - state.success = b; - } - }, - actions: { - addAddress({ commit }, payload) { - console.log('@A addAddress payload', payload); - commit('setLoading', true); - if('newPostalCode' in payload){ - let postalCodeBody = payload.newPostalCode; - postalCodeBody = Object.assign(postalCodeBody, {'origin': 3}); - postPostalCode(postalCodeBody) - .then(postalCode => { - let body = payload; - body.postcode = {'id': postalCode.id}, - postAddress(body) - .then(address => new Promise((resolve, reject) => { - commit('addAddress', address); - resolve(); - commit('setLoading', false); - })) - .catch((error) => { - commit('catchError', error); - commit('setLoading', false); - }); - }) - - } else { - postAddress(payload) - .then(address => new Promise((resolve, reject) => { - commit('addAddress', address); - resolve(); - commit('setLoading', false); - })) - .catch((error) => { - commit('catchError', error); - commit('setLoading', false); - }); - } - }, - addDateToAddressAndAddressToPerson({ commit }, payload) { - console.log('@A addDateToAddressAndAddressToPerson payload', payload); - commit('setLoading', true); - patchAddress(payload.addressId, payload.body) - .then(address => new Promise((resolve, reject) => { - commit('addDateToAddress', address.validFrom); - resolve(); - }).then( - postAddressToPerson(payload.personId, payload.addressId) - .then(person => new Promise((resolve, reject) => { - commit('addAddressToPerson', person); - commit('setLoading', false); - commit('setSuccess', true); - window.location.assign(payload.backUrl); - resolve(); - })) - .catch((error) => { - commit('catchError', error); - commit('setLoading', false); - }) - )) - .catch((error) => { - commit('catchError', error); - commit('setLoading', false); - }); - }, - updateAddress({ commit }, payload) { - 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 - let postalCodeBody = payload.newAddress.newPostalCode; - postalCodeBody = Object.assign(postalCodeBody, {'origin': 3}); - postPostalCode(postalCodeBody) - .then(postalCode => { - let body = payload.newAddress; - body.postcode = {'id': postalCode.id }, - patchAddress(payload.addressId, body) - .then(address => new Promise((resolve, reject) => { - commit('updateAddress', address); - resolve(); - })) - .catch((error) => { - commit('catchError', error); - }); - }) - - } else { - patchAddress(payload.addressId, payload.newAddress) - .then(address => new Promise((resolve, reject) => { - commit('updateAddress', address); - resolve(); - })) - .catch((error) => { - commit('catchError', error); - }); - } - }, - getEditAddress({ commit }, payload) { - console.log('@A getEditAddress payload', payload); - - getAddress(payload).then(address => new Promise((resolve, reject) => { - commit('getEditAddress', address); - resolve(); - })) - .catch((error) => { - commit('catchError', error); - }); - }, - } -}); - -export { store }; diff --git a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/Modal.vue b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/Modal.vue index 44d444247..b806c4b3e 100644 --- a/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/Modal.vue +++ b/src/Bundle/ChillMainBundle/Resources/public/vuejs/_components/Modal.vue @@ -24,16 +24,16 @@ - + diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/api.js b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/api.js index d315a3db7..676bbf7b7 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/api.js +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/api.js @@ -4,12 +4,12 @@ * * @id integer - id of accompanyingCourse */ -const getAccompanyingCourse = (id) => { +const getAccompanyingCourse = (id) => { const url = `/api/1.0/person/accompanying-course/${id}.json`; return fetch(url) .then(response => { if (response.ok) { return response.json(); } - throw Error('Error with request resource response'); + throw Error('Error with request resource response'); }); }; @@ -20,8 +20,8 @@ const getAccompanyingCourse = (id) => { * @id integer - id of accompanyingCourse * @body Object - dictionary with changes to post */ -const patchAccompanyingCourse = (id, body) => { - console.log('body', body); +const patchAccompanyingCourse = (id, body) => { + //console.log('body', body); const url = `/api/1.0/person/accompanying-course/${id}.json`; return fetch(url, { method: 'PATCH', @@ -32,7 +32,7 @@ const patchAccompanyingCourse = (id, body) => { }) .then(response => { if (response.ok) { return response.json(); } - throw Error('Error with request resource response'); + throw Error('Error with request resource response'); }); }; @@ -47,24 +47,24 @@ const confirmAccompanyingCourse = (id) => { }) .then(response => { if (response.ok) { return response.json(); } - throw Error('Error with request resource response'); + throw Error('Error with request resource response'); }); }; /* -* Endpoint +* Endpoint */ const getSocialIssues = () => { const url = `/api/1.0/person/social-work/social-issue.json`; return fetch(url) .then(response => { if (response.ok) { return response.json(); } - throw Error('Error with request resource response'); + throw Error('Error with request resource response'); }); }; /* -* Endpoint v.2 chill_api_single_accompanying_course_participation, +* Endpoint v.2 chill_api_single_accompanying_course_participation, * method POST/DELETE, add/close a participation to the accompanyingCourse * * @id integer - id of accompanyingCourse @@ -83,12 +83,12 @@ const postParticipation = (id, payload, method) => { }) .then(response => { if (response.ok) { return response.json(); } - throw Error('Error with request resource response'); + throw Error('Error with request resource response'); }); }; /* -* Endpoint v.2 chill_api_single_accompanying_course_requestor, +* Endpoint v.2 chill_api_single_accompanying_course_requestor, * method POST/DELETE, add/close a requestor to the accompanyingCourse * * @id integer - id of accompanyingCourse @@ -109,12 +109,12 @@ const postRequestor = (id, payload, method) => { }) .then(response => { if (response.ok) { return response.json(); } - throw Error('Error with request resource response'); + throw Error('Error with request resource response'); }); }; /* -* Endpoint v.2 chill_api_single_accompanying_course_resource, +* Endpoint v.2 chill_api_single_accompanying_course_resource, * method POST/DELETE, add/remove a resource to the accompanyingCourse * * @id integer - id of accompanyingCourse @@ -126,11 +126,11 @@ const postResource = (id, payload, method) => { const body = { type: "accompanying_period_resource" }; switch (method) { case 'DELETE': - body['id'] = payload.id; + body['id'] = payload.id; break; default: body['resource'] = { type: payload.type, id: payload.id }; - } + } //console.log('body', body); const url = `/api/1.0/person/accompanying-course/${id}/resource.json`; return fetch(url, { @@ -142,7 +142,7 @@ const postResource = (id, payload, method) => { }) .then(response => { if (response.ok) { return response.json(); } - throw Error('Error with request resource response'); + throw Error('Error with request resource response'); }); }; @@ -150,7 +150,7 @@ const postResource = (id, payload, method) => { * Endpoint to Add/remove SocialIssue */ const postSocialIssue = (id, body, method) => { - //console.log('api body and method', body, method); + //console.log('api body and method', body, method); const url = `/api/1.0/person/accompanying-course/${id}/socialissue.json`; return fetch(url, { method: method, @@ -161,7 +161,7 @@ const postSocialIssue = (id, body, method) => { }) .then(response => { if (response.ok) { return response.json(); } - throw Error('Error with request resource response'); + throw Error('Error with request resource response'); }); }; @@ -170,7 +170,7 @@ const getUsers = () => { return fetch(url) .then(response => { if (response.ok) { return response.json(); } - throw Error('Error with request resource response'); + throw Error('Error with request resource response'); }); }; @@ -179,7 +179,7 @@ const whoami = () => { return fetch(url) .then(response => { if (response.ok) { return response.json(); } - throw Error('Error with request resource response'); + throw Error('Error with request resource response'); }); }; @@ -188,11 +188,11 @@ const getListOrigins = () => { return fetch(url) .then(response => { if (response.ok) { return response.json(); } - throw Error('Error with request resource response'); + throw Error('Error with request resource response'); }); } -export { +export { getAccompanyingCourse, patchAccompanyingCourse, confirmAccompanyingCourse, diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Banner.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Banner.vue index eda06b285..9fe6fe87c 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Banner.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Banner.vue @@ -5,7 +5,8 @@ - + {{ $t('course.step.draft') }} diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/ButtonLocation.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/ButtonLocation.vue new file mode 100644 index 000000000..c2f50c489 --- /dev/null +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/ButtonLocation.vue @@ -0,0 +1,68 @@ + + + diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Comment.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Comment.vue index 90c52ceb0..b42fe8453 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Comment.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Comment.vue @@ -1,57 +1,63 @@ - diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Confirm.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Confirm.vue index 7beb7b029..13752f383 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Confirm.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Confirm.vue @@ -1,6 +1,6 @@