add the current location of the user as API point + add it in the activity location list

This commit is contained in:
nobohan 2021-12-13 11:04:10 +01:00
parent 1e99ca2ca5
commit 82c027fe2a
5 changed files with 90 additions and 36 deletions

View File

@ -17,6 +17,14 @@ const getLocations = () => fetchResults('/api/1.0/main/location.json');
const getLocationTypes = () => fetchResults('/api/1.0/main/location-type.json');
const getUserCurrentLocation =
() => fetch('/api/1.0/main/user-current-location.json')
.then(response => {
if (response.ok) { return response.json(); }
throw Error('Error with request resource response');
});
/*
* Load Location Type by defaultFor
* @param {string} entity - can be "person" or "thirdparty"
@ -48,5 +56,6 @@ export {
getLocations,
getLocationTypes,
getLocationTypeByDefaultFor,
postLocation
postLocation,
getUserCurrentLocation
};

View File

@ -32,7 +32,7 @@
import { mapState, mapGetters } from "vuex";
import VueMultiselect from "vue-multiselect";
import NewLocation from "./Location/NewLocation.vue";
import { getLocations, getLocationTypeByDefaultFor } from "../api.js";
import { getLocations, getLocationTypeByDefaultFor, getUserCurrentLocation } from "../api.js";
export default {
name: "Location",
@ -60,6 +60,8 @@ export default {
mounted() {
getLocations().then(
(results) => {
getUserCurrentLocation().then(
userCurrentLocation => {
getLocationTypeByDefaultFor('person').then(
(personLocationType) => {
if (personLocationType) {
@ -71,6 +73,10 @@ export default {
const concernedThirdPartiesLocation =
this.makeConcernedThirdPartiesLocation(thirdpartyLocationType);
this.locations = [
{
locationGroup: 'Ma localisation',
locations: [userCurrentLocation]
},
{
locationGroup: 'Localisation du parcours',
locations: [personLocation]
@ -102,6 +108,8 @@ export default {
}
}
)
}
)
})
},
methods: {

View File

@ -37,4 +37,25 @@ class UserApiController extends ApiController
['groups' => ['read']]
);
}
/**
* @Route(
* "/api/1.0/main/user-current-location.{_format}",
* name="chill_main_user_current_location",
* requirements={
* "_format": "json"
* }
* )
*
* @param mixed $_format
*/
public function currentLocation($_format): JsonResponse
{
return $this->json(
$this->getUser()->getCurrentLocation(),
JsonResponse::HTTP_OK,
[],
['groups' => ['read']]
);
}
}

View File

@ -61,6 +61,14 @@ final class UserApiControllerTest extends WebTestCase
$client->request(Request::METHOD_GET, '/api/1.0/main/whoami.json');
$this->assertResponseIsSuccessful();
}
public function testUserCurrentLocation()
{
$client = $this->getClientAuthenticated();
$client->request(Request::METHOD_GET, '/api/1.0/main/user-current-location.json');
$this->assertResponseIsSuccessful();
}
}

View File

@ -546,6 +546,14 @@ paths:
responses:
200:
description: "ok"
/1.0/main/user-current-location.json:
get:
tags:
- user
summary: Return the current location of the currently authenticated user
responses:
200:
description: "ok"
/1.0/main/user/{id}.json:
get:
tags: