Skip to content

Commit c6545bd

Browse files
Merge pull request #5589 from christianbeeznest/ofaj-21784
Internal: Improve loading time in courseHome page - refs BT#21784
2 parents 52fc9ab + 1da244f commit c6545bd

File tree

3 files changed

+29
-13
lines changed

3 files changed

+29
-13
lines changed

assets/vue/services/sessionService.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,17 @@ async function findUserSubscriptions(userIri, listType) {
1313
export default {
1414
/**
1515
* @param {string} iri
16+
* @param useBasic
1617
* @returns {Promise<Object>}
1718
*/
18-
async find(iri) {
19-
const { data } = await api.get(iri)
19+
async find(iri, useBasic = false) {
20+
const endpoint = iri
21+
const groups = useBasic ? ['session:basic'] : ['session:read']
22+
const { data } = await api.get(endpoint, {
23+
params: {
24+
'groups[]': groups
25+
}
26+
})
2027

2128
return data
2229
},

assets/vue/store/cidReq.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,21 +78,21 @@ export const useCidReqStore = defineStore("cidReq", () => {
7878
}
7979
}
8080

81-
const setSessionByIri = async (sId) => {
81+
const setSessionByIri = async (sId, useBasic = true) => {
8282
const sessionIri = `/api/sessions/${sId}`
8383

8484
if (session.value && sessionIri === session.value["@id"]) {
8585
return
8686
}
8787

8888
try {
89-
session.value = await sessionService.find(sessionIri)
89+
session.value = await sessionService.find(sessionIri, useBasic)
9090
} catch (error) {
9191
console.error(error)
9292
}
9393
}
9494

95-
const setCourseAndSessionById = (cId, sId = undefined) => {
95+
const setCourseAndSessionById = (cId, sId = undefined, useBasic = true) => {
9696
if (!cId) {
9797
return Promise.resolve()
9898
}
@@ -103,7 +103,7 @@ export const useCidReqStore = defineStore("cidReq", () => {
103103
return coursePromise
104104
}
105105

106-
const sessionPromise = setSessionByIri(sId)
106+
const sessionPromise = setSessionByIri(sId, useBasic)
107107

108108
return Promise.all([coursePromise, sessionPromise])
109109
}

src/CoreBundle/Entity/Session.php

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
namespace Chamilo\CoreBundle\Entity;
88

9+
use ApiPlatform\Core\Serializer\Filter\GroupFilter;
910
use ApiPlatform\Doctrine\Orm\Filter\OrderFilter;
1011
use ApiPlatform\Doctrine\Orm\Filter\SearchFilter;
1112
use ApiPlatform\Metadata\ApiFilter;
@@ -35,8 +36,9 @@
3536
#[ApiResource(
3637
operations: [
3738
new Get(
39+
uriTemplate: '/sessions/{id}',
3840
normalizationContext: [
39-
'groups' => ['session:read', 'session:item:read'],
41+
'groups' => ['session:basic'],
4042
],
4143
security: "is_granted('ROLE_ADMIN') or is_granted('VIEW', object)"
4244
),
@@ -96,7 +98,7 @@
9698
new Post(security: "is_granted('ROLE_ADMIN')"),
9799
new Delete(security: "is_granted('DELETE', object)"),
98100
],
99-
normalizationContext: ['groups' => ['session:read']],
101+
normalizationContext: ['groups' => ['session:basic']],
100102
denormalizationContext: ['groups' => ['session:write']],
101103
security: "is_granted('ROLE_ADMIN')"
102104
)]
@@ -105,9 +107,10 @@
105107
#[ORM\EntityListeners([SessionListener::class])]
106108
#[ORM\Entity(repositoryClass: SessionRepository::class)]
107109
#[UniqueEntity('title')]
108-
#[ApiFilter(filterClass: SearchFilter::class, properties: ['title' => 'partial'])]
109-
#[ApiFilter(filterClass: PropertyFilter::class)]
110-
#[ApiFilter(filterClass: OrderFilter::class, properties: ['id', 'title'])]
110+
#[ApiFilter(SearchFilter::class, properties: ['title' => 'partial'])]
111+
#[ApiFilter(PropertyFilter::class)]
112+
#[ApiFilter(OrderFilter::class, properties: ['id', 'title'])]
113+
#[ApiFilter(GroupFilter::class, arguments: ['parameterName' => 'groups'])]
111114
class Session implements ResourceWithAccessUrlInterface, Stringable
112115
{
113116
public const READ_ONLY = 1;
@@ -123,6 +126,7 @@ class Session implements ResourceWithAccessUrlInterface, Stringable
123126
public const SESSION_ADMIN = 4;
124127

125128
#[Groups([
129+
'session:basic',
126130
'session:read',
127131
'session_rel_user:read',
128132
'session_rel_course_rel_user:read',
@@ -149,6 +153,7 @@ class Session implements ResourceWithAccessUrlInterface, Stringable
149153
mappedBy: 'session',
150154
targetEntity: SessionRelCourse::class,
151155
cascade: ['persist'],
156+
fetch: 'EXTRA_LAZY',
152157
orphanRemoval: true
153158
)]
154159
protected Collection $courses;
@@ -163,6 +168,7 @@ class Session implements ResourceWithAccessUrlInterface, Stringable
163168
mappedBy: 'session',
164169
targetEntity: SessionRelUser::class,
165170
cascade: ['persist', 'remove'],
171+
fetch: 'EXTRA_LAZY',
166172
orphanRemoval: true
167173
)]
168174
protected Collection $users;
@@ -221,6 +227,7 @@ class Session implements ResourceWithAccessUrlInterface, Stringable
221227

222228
#[Assert\NotBlank]
223229
#[Groups([
230+
'session:basic',
224231
'session:read',
225232
'session:write',
226233
'session_rel_course_rel_user:read',
@@ -235,6 +242,7 @@ class Session implements ResourceWithAccessUrlInterface, Stringable
235242
protected string $title;
236243

237244
#[Groups([
245+
'session:basic',
238246
'session:read',
239247
'session:write',
240248
])]
@@ -252,11 +260,11 @@ class Session implements ResourceWithAccessUrlInterface, Stringable
252260
#[ORM\Column(name: 'duration', type: 'integer', nullable: true)]
253261
protected ?int $duration = null;
254262

255-
#[Groups(['session:read'])]
263+
#[Groups(['session:basic', 'session:read'])]
256264
#[ORM\Column(name: 'nbr_courses', type: 'integer', unique: false, nullable: false)]
257265
protected int $nbrCourses;
258266

259-
#[Groups(['session:read'])]
267+
#[Groups(['session:basic', 'session:read'])]
260268
#[ORM\Column(name: 'nbr_users', type: 'integer', unique: false, nullable: false)]
261269
protected int $nbrUsers;
262270

@@ -265,6 +273,7 @@ class Session implements ResourceWithAccessUrlInterface, Stringable
265273
protected int $nbrClasses;
266274

267275
#[Groups([
276+
'session:basic',
268277
'session:read',
269278
'session:write',
270279
])]

0 commit comments

Comments
 (0)