From c5a98435b39c965df0c6cf23276fe72aaa0bcf9a Mon Sep 17 00:00:00 2001 From: Dennis Eckerskorn Date: Thu, 22 May 2025 21:59:53 +0200 Subject: [PATCH] Readjusting styles and adding more implementations and fixing bugs --- .../NotificationController.java | 5 +- memberflow-frontend.zip | Bin 240361 -> 240631 bytes memberflow-frontend/src/api/axiosConfig.js | 3 +- .../src/components/forms/IVATypeManager.jsx | 1 + .../forms/NotificationCreateForm.jsx | 4 +- .../src/components/forms/UserCreateForm.jsx | 7 +- .../src/components/lists/NotificationList.jsx | 159 ++++++++++++++++-- .../src/components/lists/UserList.jsx | 99 ++++++++--- .../src/components/styles/ContentArea.css | 56 +++++- 9 files changed, 288 insertions(+), 46 deletions(-) diff --git a/memberflow-api/src/main/java/com/denniseckerskorn/controllers/user_managment_controllers/NotificationController.java b/memberflow-api/src/main/java/com/denniseckerskorn/controllers/user_managment_controllers/NotificationController.java index ecbba8a..6468507 100644 --- a/memberflow-api/src/main/java/com/denniseckerskorn/controllers/user_managment_controllers/NotificationController.java +++ b/memberflow-api/src/main/java/com/denniseckerskorn/controllers/user_managment_controllers/NotificationController.java @@ -10,6 +10,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.stream.Collectors; @@ -70,7 +71,8 @@ public class NotificationController { Set existingUsers = updated.getUsers(); if (existingUsers != null) { - for (User user : existingUsers) { + List clonedUsers = new ArrayList<>(existingUsers); + for (User user : clonedUsers) { notificationService.removeNotificationFromUser(updated, user); } } @@ -85,6 +87,7 @@ public class NotificationController { return ResponseEntity.ok(toDTO(updated)); } + @Operation(summary = "Delete a notification by ID", description = "Delete a notification by its ID") @DeleteMapping("/delete/{id}") public ResponseEntity delete(@PathVariable Integer id) { diff --git a/memberflow-frontend.zip b/memberflow-frontend.zip index 101b8f4566f75072148e59014def6bce39328249..0a01b466cf0a0bc78f2eaed7a23455fe7c18a2ce 100644 GIT binary patch delta 6173 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 P(?>uK`!o*?7*l_>3{#2uy{DW*oK!X97eUs#P%H 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 ML0uY)R0 Promise.reject(error) ); -export default api; \ No newline at end of file +export default api; + diff --git a/memberflow-frontend/src/components/forms/IVATypeManager.jsx b/memberflow-frontend/src/components/forms/IVATypeManager.jsx index 1b213b0..fd06df9 100644 --- a/memberflow-frontend/src/components/forms/IVATypeManager.jsx +++ b/memberflow-frontend/src/components/forms/IVATypeManager.jsx @@ -1,6 +1,7 @@ import React, { useEffect, useState } from "react"; import api from "../../api/axiosConfig"; + const IVATypeManager = () => { const [ivaTypes, setIvaTypes] = useState([]); const [newIva, setNewIva] = useState({ percentage: "", description: "" }); diff --git a/memberflow-frontend/src/components/forms/NotificationCreateForm.jsx b/memberflow-frontend/src/components/forms/NotificationCreateForm.jsx index c893642..14db164 100644 --- a/memberflow-frontend/src/components/forms/NotificationCreateForm.jsx +++ b/memberflow-frontend/src/components/forms/NotificationCreateForm.jsx @@ -1,6 +1,6 @@ import React, { useState, useEffect } from 'react'; import api from '../../api/axiosConfig'; -import '../styles/FormStyles.css'; +import '../styles/ContentArea.css'; const NotificationCreateForm = () => { const today = new Date().toISOString().split('T')[0]; @@ -82,7 +82,7 @@ const NotificationCreateForm = () => {

Crear nueva notificación

-
+