Skip to content

Commit

Permalink
deletePersonButton added
Browse files Browse the repository at this point in the history
  • Loading branch information
Krisssssssssssssssssssssss committed Oct 25, 2024
1 parent 9fc7aff commit 132b2f3
Show file tree
Hide file tree
Showing 7 changed files with 50 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
}
4 changes: 2 additions & 2 deletions frontend/src/Component/App/EditMovieForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,9 @@ export default function EditMovieForm({
/>
</div>

{<EditablePersonList legend={"Directed by"} autocompletionUrl={"/api/director/autocompletion"}
{<EditablePersonList legend={"Directed by"} autocompletionUrl={"/api/director/autocompletion"} deleteUrl={"/api/movie-director"} movieId={movieData.id}
staff={directorsData} setStaff={setDirectorsData}/>}
{<EditablePersonList legend={"Starring"} autocompletionUrl={"/api/actor/autocompletion"}
{<EditablePersonList legend={"Starring"} autocompletionUrl={"/api/actor/autocompletion"} deleteUrl={"/api/movie-actor"} movieId={movieData.id}
staff={actorsData} setStaff={setActorsData}/>}
</form>
</div>
Expand Down
19 changes: 14 additions & 5 deletions frontend/src/Component/App/EditMovieForm/EditablePersonList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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<PersonType>({id: "", name: ""});
Expand All @@ -28,10 +31,16 @@ export default function EditablePersonList({legend, staff, setStaff, autocomplet
<AutoCompleteInput autocompletionUrl={autocompletionUrl} person={person} setPerson={setPerson}/>
<button onClick={addPerson}>Add</button>
{Array.isArray(staff) && staff.length > 0 ? (
staff.map((person) => <Person key={person.id} person={person}/>)
) : (
staff.map((person) => (
<div>
<Person key={person.id} person={person} />
<DeletePersonButton person={person} setStaff={setStaff} staff={staff} deleteUrl={deleteUrl} movieId={movieId}/>
</div>
))
)
: (
<div>No people available</div>
)}
</fieldset>
);
}
}
28 changes: 28 additions & 0 deletions frontend/src/Component/App/EditMovieForm/deletePersonButton.tsx
Original file line number Diff line number Diff line change
@@ -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 <button onClick={handleDelete}>delete</button>
}

0 comments on commit 132b2f3

Please sign in to comment.