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