Skip to content
Snippets Groups Projects
Commit c95689d9 authored by Marcus Eibrink-Lunzenauer's avatar Marcus Eibrink-Lunzenauer
Browse files

Steigere Performance von `loadTeacherStatus`.

parent 90b5caaa
No related branches found
No related tags found
No related merge requests found
...@@ -30,7 +30,6 @@ class CourseMember extends SchemaProvider ...@@ -30,7 +30,6 @@ class CourseMember extends SchemaProvider
if ($this->currentUser) { if ($this->currentUser) {
if (MembershipAuthority::canIndexMembershipsOfUser($this->currentUser, $membership->user)) { if (MembershipAuthority::canIndexMembershipsOfUser($this->currentUser, $membership->user)) {
# TODO: $attributes['notification'] = (int) $membership->notification;
$attributes['visible'] = $membership->visible; $attributes['visible'] = $membership->visible;
} }
if (CourseAuthority::canEditCourse($this->currentUser, $membership->course)) { if (CourseAuthority::canEditCourse($this->currentUser, $membership->course)) {
...@@ -49,16 +48,18 @@ class CourseMember extends SchemaProvider ...@@ -49,16 +48,18 @@ class CourseMember extends SchemaProvider
$relationships = []; $relationships = [];
if ($isPrimary) { if ($isPrimary) {
$course = \Course::build(['id' => $membership['seminar_id']], false);
$relationships[self::REL_COURSE] = [ $relationships[self::REL_COURSE] = [
self::RELATIONSHIP_LINKS => [ self::RELATIONSHIP_LINKS => [
Link::RELATED => $this->createLinkToResource($membership->course) Link::RELATED => $this->createLinkToResource($course)
], ],
self::RELATIONSHIP_DATA => $membership->course, self::RELATIONSHIP_DATA => $membership->course,
]; ];
$user = \User::build(['id' => $membership['user_id']], false);
$relationships[self::REL_USER] = [ $relationships[self::REL_USER] = [
self::RELATIONSHIP_LINKS => [ self::RELATIONSHIP_LINKS => [
Link::RELATED => $this->createLinkToResource($membership->user) Link::RELATED => $this->createLinkToResource($user)
], ],
self::RELATIONSHIP_DATA => $membership->user, self::RELATIONSHIP_DATA => $membership->user,
]; ];
......
...@@ -886,48 +886,28 @@ export const actions = { ...@@ -886,48 +886,28 @@ export const actions = {
); );
}, },
async loadTeacherStatus({ dispatch, rootGetters, state, commit, getters }, userId) { loadTeacherStatus({ dispatch, rootGetters, state, commit, getters }, userId) {
const parent = { const membershipId = `${state.context.id}_${userId}`;
type: 'users',
id: userId, return dispatch('course-memberships/loadById', { id: membershipId })
}; .then(() => {
const relationship = 'course-memberships'; const membership = rootGetters['course-memberships/byId']({ id: membershipId });
const options = { const editingLevel = getters.courseware.attributes['editing-permission-level'];
include: 'course', const membershipPermission = membership.attributes.permission;
};
await dispatch('loadRelatedPaginated', { let isTeacher = false;
type: 'course-memberships', if (editingLevel === 'dozent') {
parent, isTeacher = membershipPermission === 'dozent';
relationship, } else if (editingLevel === 'tutor') {
options isTeacher = membershipPermission === 'dozent' || membershipPermission === 'tutor';
});
const memberships = rootGetters['course-memberships/related']({
parent,
relationship,
});
let isTeacher = false;
memberships.forEach((membership) => {
if (getters.courseware.attributes['editing-permission-level'] === 'dozent') {
if (
membership.attributes.permission === 'dozent' &&
state.context.id === membership.relationships.course.data.id
) {
isTeacher = true;
}
}
if (getters.courseware.attributes['editing-permission-level'] === 'tutor') {
if (
(membership.attributes.permission === 'dozent' ||
membership.attributes.permission === 'tutor') &&
state.context.id === membership.relationships.course.data.id
) {
isTeacher = true;
} }
}
});
return commit('setUserIsTeacher', isTeacher); commit('setUserIsTeacher', isTeacher);
})
.catch((error) => {
console.error(`Could not find course membership for ${membershipId}.`);
commit('setUserIsTeacher', false);
});
}, },
loadFeedback({ dispatch }, blockId) { loadFeedback({ dispatch }, blockId) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment