diff --git a/src/plugins/events/components/overview/slots/JobSlot.vue b/src/plugins/events/components/overview/slots/JobSlot.vue
index da81a34..a592e69 100644
--- a/src/plugins/events/components/overview/slots/JobSlot.vue
+++ b/src/plugins/events/components/overview/slots/JobSlot.vue
@@ -15,7 +15,7 @@
Uhr
-
+
@@ -74,7 +74,7 @@
color="white"
:text-color="scope.opt.is_backup ? 'primary' : 'secondary'"
class="q-ma-none"
- @remove="remove(scope.opt.userid, scope.removeAtIndex, scope.index)"
+ @remove="remove(scope.opt, scope.removeAtIndex, scope.index)"
>
service.value).value;
const job = await store.updateJob(props.eventId, props.modelValue.id, {
user: service.value,
});
@@ -161,11 +168,28 @@ export default defineComponent({
}
}
- async function remove(userid: string, rem: (i: number) => void, index: number) {
- if (userid === mainStore.currentUser.userid || hasPermission(PERMISSIONS.ASSIGN_OTHER)) {
- console.log('YES REM');
+ async function remove(service: FG.Service, rem: (i: number) => void, index: number) {
+ if (
+ service.userid === mainStore.currentUser.userid ||
+ hasPermission(PERMISSIONS.ASSIGN_OTHER)
+ ) {
rem(index);
- await signOutFromJob();
+ try {
+ const job = await store.updateJob(props.eventId, props.modelValue.id, {
+ user: Object.assign({}, service, { value: -service.value }),
+ });
+ emit('update:modelValue', job);
+ } catch (error) {
+ console.warn(error);
+ Notify.create({
+ group: false,
+ type: 'negative',
+ message: 'Fehler beim Austragen als Dienst',
+ timeout: 10000,
+ progress: true,
+ actions: [{ icon: 'mdi-close', color: 'white' }],
+ });
+ }
}
}
@@ -193,37 +217,12 @@ export default defineComponent({
return sum < props.modelValue.required_services && !is;
});
- async function signOutFromJob() {
- const newService: FG.Service = {
- userid: mainStore.currentUser.userid,
- is_backup: false,
- value: -1,
- };
- try {
- const job = await store.updateJob(props.eventId, props.modelValue.id, {
- user: newService,
- });
- emit('update:modelValue', job);
- } catch (error) {
- console.warn(error);
- Notify.create({
- group: false,
- type: 'negative',
- message: 'Fehler beim Austragen als Dienst',
- timeout: 10000,
- progress: true,
- actions: [{ icon: 'mdi-close', color: 'white' }],
- });
- }
- }
-
return {
enroll,
availableUsers,
canEdit,
isEnrolled,
enrolled,
- signOutFromJob,
enrollDialog,
canEnroll,
remove,
diff --git a/src/plugins/events/plugin.ts b/src/plugins/events/plugin.ts
index 70ec71d..1e6dce2 100644
--- a/src/plugins/events/plugin.ts
+++ b/src/plugins/events/plugin.ts
@@ -2,13 +2,35 @@ import { defineAsyncComponent } from 'vue';
import { innerRoutes, privateRoutes } from './routes';
import { FG_Plugin } from 'src/plugins';
+interface EventNotification extends FG_Plugin.Notification {
+ data: { type: NotificationType };
+}
+
+enum NotificationType {
+ REQUEST = 0x10,
+ ACCEPTED = 0x11,
+ REJECTED = 0x12,
+}
+
+function transpile(n: FG.Notification) {
+ const notification = Object.assign({}, n);
+ if (notification.data.type === NotificationType.REQUEST)
+ notification.accept = () =>
+ new Promise((r) => {
+ console.log('REQUEST ACCEPTED');
+ r();
+ });
+ return notification;
+}
+
const plugin: FG_Plugin.Plugin = {
- name: 'Events',
+ name: 'events',
innerRoutes,
internalRoutes: privateRoutes,
requiredModules: ['User'],
requiredBackendModules: ['events'],
version: '0.0.2',
+ notification: transpile,
widgets: [
{
priority: 0,
diff --git a/src/plugins/events/store/index.ts b/src/plugins/events/store/index.ts
index 08a66b2..5645581 100644
--- a/src/plugins/events/store/index.ts
+++ b/src/plugins/events/store/index.ts
@@ -148,7 +148,7 @@ export const useScheduleStore = defineStore({
async updateJob(eventId: number, jobId: number, service: FG.Service | UserService) {
try {
- const { data } = await api.put(`/events/${eventId}/jobs/${jobId}`, service);
+ const { data } = await api.put(`/events/${eventId}/${jobId}`, service);
fixJob(data);
return data;
} catch (error) {