Loading module/Oscar/src/Oscar/Entity/ActivityDateFlow.php +1 −1 Original line number Diff line number Diff line Loading @@ -41,7 +41,7 @@ class ActivityDateFlow * @var boolean * @ORM\Column(type="boolean", options={"default": "true"}) */ private string $public; private bool $public = true; /** Loading module/Oscar/src/Oscar/Entity/Repository/ActivityDateFlowRepository.php +19 −0 Original line number Diff line number Diff line Loading @@ -12,4 +12,23 @@ class ActivityDateFlowRepository extends EntityRepository ->getQuery(); return $query->getArrayResult(); } /** * Retourne les flux de jalons publiques et ceux de l'utilisateur si renseigné. * * @param int|null $authId * @return float|int|mixed[]|string */ public function getAuthFlow( ?int $authId = null ) { $query = $this->createQueryBuilder('f'); $query->where('f.public = TRUE'); if( $authId ){ $query->orWhere('f.createdBy = :authId'); $query->setParameter('authId', $authId); } return $query->getQuery()->getArrayResult(); } } module/Oscar/src/Oscar/Service/ActivityDateFlowService.php +3 −1 Original line number Diff line number Diff line Loading @@ -149,10 +149,12 @@ class ActivityDateFlowService $this->entityManager->persist($dateflow); } $isPublic = boolval($jsonDatas['public']) == true; $dateflow->setLabel($jsonDatas['label']); $dateflow->setDescription($jsonDatas['description']); $dateflow->setCreatedBy($creatorId); $dateflow->setPublic(boolval($jsonDatas['public'])); $dateflow->setPublic($isPublic); // Trier les données par ORDER* usort($jsonDatas['datetypes'], function ($a, $b) { Loading module/Oscar/src/Oscar/Service/ProjectGrantApiService.php +18 −4 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ use Oscar\Entity\Activity; use Oscar\Entity\ActivityAvenant; use Oscar\Entity\ActivityAvenantModification; use Oscar\Entity\ActivityDate; use Oscar\Entity\ActivityDateFlow; use Oscar\Entity\ActivityDateRepository; use Oscar\Entity\ActivityNote; use Oscar\Entity\ActivityNoteRepository; Loading Loading @@ -148,8 +149,13 @@ class ProjectGrantApiService implements $credentials = $this->getActivityJsonCredentials($activity, $oscarUserContext, $perimeters); $authId = $oscarUserContext->getAuthentification()->getId(); $personId = $oscarUserContext->getCurrentPersonId(); $out = [ 'date' => date('Y-m-d H:i:s'), 'auth' => $authId, 'person' => $personId, 'error' => null, 'warnings' => null, 'perimeter' => $perimeters, Loading @@ -162,7 +168,7 @@ class ProjectGrantApiService implements return $out; } else { $out['credentials'] = $credentials; $out['datas'] = $this->getActivityJsonDatas($activity, $urlPlugin, $perimeters); $out['datas'] = $this->getActivityJsonDatas($activity, $urlPlugin, $perimeters, $authId, $personId); foreach ($out['datas'] as $key => $content) { if (!array_key_exists($key, $credentials)) { unset($out['datas'][$key]); Loading Loading @@ -431,7 +437,9 @@ class ProjectGrantApiService implements public function getActivityJsonDatas( Activity $activity, ?Url $urlPlugin = null, ?array $perimeters = null ?array $perimeters = null, ?int $authId, ?int $personId ): array { $datas = [ Loading Loading @@ -461,7 +469,7 @@ class ProjectGrantApiService implements break; case self::PERIMETER_MILESTONES: $datas[self::PERIMETER_MILESTONES] = $this->getMilestonesActivity($activity, $urlPlugin); $datas[self::PERIMETER_MILESTONES] = $this->getMilestonesActivity($activity, $urlPlugin, $authId); break; case self::PERIMETER_NOTES: Loading Loading @@ -815,7 +823,7 @@ class ProjectGrantApiService implements * @return array * @throws NotSupported */ public function getMilestonesActivity(Activity $activity, ?Url $urlPlugin = null): array public function getMilestonesActivity(Activity $activity, ?Url $urlPlugin = null, ?int $authId): array { /** @var ActivityDateRepository $activityDateRepository */ $activityDateRepository = $this->getEntityManager()->getRepository(ActivityDate::class); Loading @@ -824,6 +832,7 @@ class ProjectGrantApiService implements 'url' => $urlPlugin->fromRoute('activitydate', ['idactivity' => $activity->getId()]), 'urlNotifications' => $urlPlugin->fromRoute('contract/notifications', ['id' => $activity->getId()]), 'entities' => [], 'flow' => [] ]; // Jalons Loading @@ -832,6 +841,11 @@ class ProjectGrantApiService implements // Types $types = $this->getEntityManager()->getRepository(DateType::class)->findAll(); // Flux $out['flow'] = $this->getEntityManager() ->getRepository(ActivityDateFlow::class) ->getAuthFlow($authId); $typesArr = []; /** @var DateType $type */ Loading ui/src/views/Activity.vue +6 −2 Original line number Diff line number Diff line Loading @@ -570,11 +570,12 @@ <aside class="col-md-4"> <section id="milestones" class="section-infos" v-if="credentials.milestones.read"> <span><h2><i class="icon-calendar"></i>Jalons</h2></span> {{ milestonesFlow }} <Milestones :url="milestonesUrl" :manage="credentials.milestones.edit" :progression="credentials.milestones.progression" :payments="payments" :flow="milestonesFlow" :items="milestones" :types="milestonesTypes" :debug-enabled="debugEnabled" Loading Loading @@ -719,6 +720,7 @@ export default { documents: [], milestones: [], milestonesFlow: [], milestonesTypes: [], milestonesUrl: null, milestonesUrlNotifications: null, Loading Loading @@ -866,8 +868,9 @@ export default { this.currencies = p.currencies; this.paymentsUrl = p.url; }, handlerUpdateMilestones(milestones) { handlerUpdateMilestones(milestones, milestonesFlow) { this.milestones = milestones; this.milestonesFlow = milestonesFlow; }, handlerUpdatePersons(d) { Loading Loading @@ -965,6 +968,7 @@ export default { this.milestonesTypes = response.data.activity.datas.milestones.types; this.milestonesUrl = response.data.activity.datas.milestones.url; this.milestonesUrlNotifications = response.data.activity.datas.milestones.urlNotifications; this.milestonesFlow = response.data.activity.datas.milestones.flow; } if (response.data.activity.datas.organizations) { Loading Loading
module/Oscar/src/Oscar/Entity/ActivityDateFlow.php +1 −1 Original line number Diff line number Diff line Loading @@ -41,7 +41,7 @@ class ActivityDateFlow * @var boolean * @ORM\Column(type="boolean", options={"default": "true"}) */ private string $public; private bool $public = true; /** Loading
module/Oscar/src/Oscar/Entity/Repository/ActivityDateFlowRepository.php +19 −0 Original line number Diff line number Diff line Loading @@ -12,4 +12,23 @@ class ActivityDateFlowRepository extends EntityRepository ->getQuery(); return $query->getArrayResult(); } /** * Retourne les flux de jalons publiques et ceux de l'utilisateur si renseigné. * * @param int|null $authId * @return float|int|mixed[]|string */ public function getAuthFlow( ?int $authId = null ) { $query = $this->createQueryBuilder('f'); $query->where('f.public = TRUE'); if( $authId ){ $query->orWhere('f.createdBy = :authId'); $query->setParameter('authId', $authId); } return $query->getQuery()->getArrayResult(); } }
module/Oscar/src/Oscar/Service/ActivityDateFlowService.php +3 −1 Original line number Diff line number Diff line Loading @@ -149,10 +149,12 @@ class ActivityDateFlowService $this->entityManager->persist($dateflow); } $isPublic = boolval($jsonDatas['public']) == true; $dateflow->setLabel($jsonDatas['label']); $dateflow->setDescription($jsonDatas['description']); $dateflow->setCreatedBy($creatorId); $dateflow->setPublic(boolval($jsonDatas['public'])); $dateflow->setPublic($isPublic); // Trier les données par ORDER* usort($jsonDatas['datetypes'], function ($a, $b) { Loading
module/Oscar/src/Oscar/Service/ProjectGrantApiService.php +18 −4 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ use Oscar\Entity\Activity; use Oscar\Entity\ActivityAvenant; use Oscar\Entity\ActivityAvenantModification; use Oscar\Entity\ActivityDate; use Oscar\Entity\ActivityDateFlow; use Oscar\Entity\ActivityDateRepository; use Oscar\Entity\ActivityNote; use Oscar\Entity\ActivityNoteRepository; Loading Loading @@ -148,8 +149,13 @@ class ProjectGrantApiService implements $credentials = $this->getActivityJsonCredentials($activity, $oscarUserContext, $perimeters); $authId = $oscarUserContext->getAuthentification()->getId(); $personId = $oscarUserContext->getCurrentPersonId(); $out = [ 'date' => date('Y-m-d H:i:s'), 'auth' => $authId, 'person' => $personId, 'error' => null, 'warnings' => null, 'perimeter' => $perimeters, Loading @@ -162,7 +168,7 @@ class ProjectGrantApiService implements return $out; } else { $out['credentials'] = $credentials; $out['datas'] = $this->getActivityJsonDatas($activity, $urlPlugin, $perimeters); $out['datas'] = $this->getActivityJsonDatas($activity, $urlPlugin, $perimeters, $authId, $personId); foreach ($out['datas'] as $key => $content) { if (!array_key_exists($key, $credentials)) { unset($out['datas'][$key]); Loading Loading @@ -431,7 +437,9 @@ class ProjectGrantApiService implements public function getActivityJsonDatas( Activity $activity, ?Url $urlPlugin = null, ?array $perimeters = null ?array $perimeters = null, ?int $authId, ?int $personId ): array { $datas = [ Loading Loading @@ -461,7 +469,7 @@ class ProjectGrantApiService implements break; case self::PERIMETER_MILESTONES: $datas[self::PERIMETER_MILESTONES] = $this->getMilestonesActivity($activity, $urlPlugin); $datas[self::PERIMETER_MILESTONES] = $this->getMilestonesActivity($activity, $urlPlugin, $authId); break; case self::PERIMETER_NOTES: Loading Loading @@ -815,7 +823,7 @@ class ProjectGrantApiService implements * @return array * @throws NotSupported */ public function getMilestonesActivity(Activity $activity, ?Url $urlPlugin = null): array public function getMilestonesActivity(Activity $activity, ?Url $urlPlugin = null, ?int $authId): array { /** @var ActivityDateRepository $activityDateRepository */ $activityDateRepository = $this->getEntityManager()->getRepository(ActivityDate::class); Loading @@ -824,6 +832,7 @@ class ProjectGrantApiService implements 'url' => $urlPlugin->fromRoute('activitydate', ['idactivity' => $activity->getId()]), 'urlNotifications' => $urlPlugin->fromRoute('contract/notifications', ['id' => $activity->getId()]), 'entities' => [], 'flow' => [] ]; // Jalons Loading @@ -832,6 +841,11 @@ class ProjectGrantApiService implements // Types $types = $this->getEntityManager()->getRepository(DateType::class)->findAll(); // Flux $out['flow'] = $this->getEntityManager() ->getRepository(ActivityDateFlow::class) ->getAuthFlow($authId); $typesArr = []; /** @var DateType $type */ Loading
ui/src/views/Activity.vue +6 −2 Original line number Diff line number Diff line Loading @@ -570,11 +570,12 @@ <aside class="col-md-4"> <section id="milestones" class="section-infos" v-if="credentials.milestones.read"> <span><h2><i class="icon-calendar"></i>Jalons</h2></span> {{ milestonesFlow }} <Milestones :url="milestonesUrl" :manage="credentials.milestones.edit" :progression="credentials.milestones.progression" :payments="payments" :flow="milestonesFlow" :items="milestones" :types="milestonesTypes" :debug-enabled="debugEnabled" Loading Loading @@ -719,6 +720,7 @@ export default { documents: [], milestones: [], milestonesFlow: [], milestonesTypes: [], milestonesUrl: null, milestonesUrlNotifications: null, Loading Loading @@ -866,8 +868,9 @@ export default { this.currencies = p.currencies; this.paymentsUrl = p.url; }, handlerUpdateMilestones(milestones) { handlerUpdateMilestones(milestones, milestonesFlow) { this.milestones = milestones; this.milestonesFlow = milestonesFlow; }, handlerUpdatePersons(d) { Loading Loading @@ -965,6 +968,7 @@ export default { this.milestonesTypes = response.data.activity.datas.milestones.types; this.milestonesUrl = response.data.activity.datas.milestones.url; this.milestonesUrlNotifications = response.data.activity.datas.milestones.urlNotifications; this.milestonesFlow = response.data.activity.datas.milestones.flow; } if (response.data.activity.datas.organizations) { Loading