From 132b2f36afa163741f90d54e2634ba6f41fea7cd Mon Sep 17 00:00:00 2001 From: kristijanjakimov Date: Fri, 25 Oct 2024 16:59:33 +0200 Subject: [PATCH] deletePersonButton added --- .../controller/MovieActorController.java | 4 +-- .../controller/MovieDirectorController.java | 4 +-- .../backend/dto/MovieActorRequest.java | 2 +- .../backend/dto/MovieDirectorRequest.java | 2 +- frontend/src/Component/App/EditMovieForm.tsx | 4 +-- .../App/EditMovieForm/EditablePersonList.tsx | 19 +++++++++---- .../App/EditMovieForm/deletePersonButton.tsx | 28 +++++++++++++++++++ 7 files changed, 50 insertions(+), 13 deletions(-) create mode 100644 frontend/src/Component/App/EditMovieForm/deletePersonButton.tsx diff --git a/backend/src/main/java/com/example/backend/controller/MovieActorController.java b/backend/src/main/java/com/example/backend/controller/MovieActorController.java index 7e722fa..0925465 100644 --- a/backend/src/main/java/com/example/backend/controller/MovieActorController.java +++ b/backend/src/main/java/com/example/backend/controller/MovieActorController.java @@ -22,14 +22,14 @@ public class MovieActorController { @PostMapping() public MovieActorResponse addRelation(@RequestBody @NonNull MovieActorRequest movieActorRequest) { - MovieActorRelation relation = movieActorService.addActor(movieActorRequest.movieId(), movieActorRequest.actorId()); + MovieActorRelation relation = movieActorService.addActor(movieActorRequest.movieId(), movieActorRequest.personId()); return MovieActorResponse.from(relation); } @DeleteMapping() public void deleteRelation(@RequestBody @NonNull MovieActorRequest movieActorRequest) { - movieActorService.removeActor(movieActorRequest.movieId(), movieActorRequest.actorId()); + movieActorService.removeActor(movieActorRequest.movieId(), movieActorRequest.personId()); } @DeleteMapping("/{movieId}") diff --git a/backend/src/main/java/com/example/backend/controller/MovieDirectorController.java b/backend/src/main/java/com/example/backend/controller/MovieDirectorController.java index 8fec324..0c6118a 100644 --- a/backend/src/main/java/com/example/backend/controller/MovieDirectorController.java +++ b/backend/src/main/java/com/example/backend/controller/MovieDirectorController.java @@ -22,14 +22,14 @@ public class MovieDirectorController { @PostMapping() public MovieDirectorResponse addRelation(@RequestBody @NonNull MovieDirectorRequest movieDirectorRequest) { - MovieDirectorRelation relation = movieDirectorService.addRelation(movieDirectorRequest.movieId(), movieDirectorRequest.directorId()); + MovieDirectorRelation relation = movieDirectorService.addRelation(movieDirectorRequest.movieId(), movieDirectorRequest.personId()); return MovieDirectorResponse.from(relation); } @DeleteMapping() public void deleteRelation(@RequestBody @NonNull MovieDirectorRequest movieDirectorRequest) { - movieDirectorService.removeRelation(movieDirectorRequest.movieId(), movieDirectorRequest.directorId()); + movieDirectorService.removeRelation(movieDirectorRequest.movieId(), movieDirectorRequest.personId()); } @DeleteMapping("/{movieId}") diff --git a/backend/src/main/java/com/example/backend/dto/MovieActorRequest.java b/backend/src/main/java/com/example/backend/dto/MovieActorRequest.java index cccd40a..dd36455 100644 --- a/backend/src/main/java/com/example/backend/dto/MovieActorRequest.java +++ b/backend/src/main/java/com/example/backend/dto/MovieActorRequest.java @@ -2,5 +2,5 @@ import lombok.NonNull; -public record MovieActorRequest(@NonNull String movieId, @NonNull String actorId) { +public record MovieActorRequest(@NonNull String movieId, @NonNull String personId) { } diff --git a/backend/src/main/java/com/example/backend/dto/MovieDirectorRequest.java b/backend/src/main/java/com/example/backend/dto/MovieDirectorRequest.java index 4bf9beb..5d54974 100644 --- a/backend/src/main/java/com/example/backend/dto/MovieDirectorRequest.java +++ b/backend/src/main/java/com/example/backend/dto/MovieDirectorRequest.java @@ -2,5 +2,5 @@ import lombok.NonNull; -public record MovieDirectorRequest(@NonNull String movieId, @NonNull String directorId) { +public record MovieDirectorRequest(@NonNull String movieId, @NonNull String personId) { } diff --git a/frontend/src/Component/App/EditMovieForm.tsx b/frontend/src/Component/App/EditMovieForm.tsx index f346cf4..73a2c0b 100644 --- a/frontend/src/Component/App/EditMovieForm.tsx +++ b/frontend/src/Component/App/EditMovieForm.tsx @@ -96,9 +96,9 @@ export default function EditMovieForm({ /> - {} - {} diff --git a/frontend/src/Component/App/EditMovieForm/EditablePersonList.tsx b/frontend/src/Component/App/EditMovieForm/EditablePersonList.tsx index f3ee214..c17806f 100644 --- a/frontend/src/Component/App/EditMovieForm/EditablePersonList.tsx +++ b/frontend/src/Component/App/EditMovieForm/EditablePersonList.tsx @@ -2,12 +2,15 @@ import PersonType from "../../../Type/PersonType.tsx"; import Person from "../Details/MovieDetails/PersonList/Person.tsx"; import AutoCompleteInput from "./AutoCompleteInput.tsx"; import {FormEvent, useState} from "react"; +import DeletePersonButton from "./deletePersonButton.tsx"; -export default function EditablePersonList({legend, staff, setStaff, autocompletionUrl}: { +export default function EditablePersonList({legend, staff, setStaff, autocompletionUrl, deleteUrl, movieId}: { legend: string, staff: PersonType[], setStaff: (staffList: PersonType[]) => void, - autocompletionUrl: string + autocompletionUrl: string, + deleteUrl: string, + movieId: string }) { const [person, setPerson] = useState({id: "", name: ""}); @@ -28,10 +31,16 @@ export default function EditablePersonList({legend, staff, setStaff, autocomplet {Array.isArray(staff) && staff.length > 0 ? ( - staff.map((person) => ) - ) : ( + staff.map((person) => ( +
+ + +
+ )) + ) + : (
No people available
)} ); -} +} \ No newline at end of file diff --git a/frontend/src/Component/App/EditMovieForm/deletePersonButton.tsx b/frontend/src/Component/App/EditMovieForm/deletePersonButton.tsx new file mode 100644 index 0000000..f47aff4 --- /dev/null +++ b/frontend/src/Component/App/EditMovieForm/deletePersonButton.tsx @@ -0,0 +1,28 @@ +import PersonType from "../../../Type/PersonType.tsx"; +import axios from "axios"; +type RelationType = { + personId: string; + movieId: string; +} +export default function DeletePersonButton({person, setStaff, staff, deleteUrl, movieId}: { + person: PersonType, + setStaff: (staffList: PersonType[]) => void, + staff: PersonType[], + deleteUrl: string, + movieId: string +}) { + + const handleDelete = function (){ + setStaff(staff.filter((filteredPerson) => filteredPerson !== person)); + + if (!movieId) return; + const relation : RelationType = { + personId: person.id, + movieId: movieId + } + axios.delete(`${deleteUrl}`, { + data: relation + }); + } + return +} \ No newline at end of file