ajout route creation d'un invité

Springboot
Victor SOULIER 1 year ago
parent b8982b3e8e
commit da14da0115

@ -1,9 +1,14 @@
package fr.iut.sciencequest.sae.controllers;
import fr.iut.sciencequest.sae.dto.invite.InviteDTO;
import fr.iut.sciencequest.sae.dto.invite.InviteSimpleDTO;
import fr.iut.sciencequest.sae.dto.invite.InviteWithPseudoOnlyDTO;
import fr.iut.sciencequest.sae.entities.Invite;
import fr.iut.sciencequest.sae.services.InviteService;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import org.modelmapper.ModelMapper;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
@ -14,4 +19,12 @@ import java.util.HashMap;
@RequestMapping("/api/v1/invite")
public class InviteController {
private final InviteService inviteService;
private final ModelMapper modelMapper;
@PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.CREATED)
public InviteSimpleDTO createInvite(@RequestBody @Valid InviteWithPseudoOnlyDTO inviteRequest){
Invite invite = this.modelMapper.map(inviteRequest, Invite.class);
return this.modelMapper.map(this.inviteService.create(invite), InviteSimpleDTO.class);
}
}

@ -0,0 +1,23 @@
package fr.iut.sciencequest.sae.dto.invite;
import com.fasterxml.jackson.annotation.JsonInclude;
import fr.iut.sciencequest.sae.dto.partie.PartieDTO;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.*;
import org.springframework.hateoas.RepresentationModel;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class InviteSimpleDTO extends RepresentationModel<InviteSimpleDTO> {
@NotNull
private Integer id;
@NotBlank
private String pseudo;
}

@ -5,7 +5,7 @@ import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(HttpStatus.NOT_FOUND)
public class InviteNotFoundException extends EntityNotFoundException{
public InviteNotFoundException(String id) {
public InviteNotFoundException(int id) {
super("Invite", id);
}
}

@ -5,4 +5,6 @@ import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface JoueurRepository extends CrudRepository<Joueur, Integer> {}
public interface JoueurRepository extends CrudRepository<Joueur, Integer> {
boolean existsByPseudo(String pseudo);
}

@ -1,20 +1,43 @@
package fr.iut.sciencequest.sae.services;
import fr.iut.sciencequest.sae.entities.Joueur;
import fr.iut.sciencequest.sae.entities.Partie;
import fr.iut.sciencequest.sae.exceptions.partie.PartyAlreadyStartedException;
import fr.iut.sciencequest.sae.entities.Invite;
import fr.iut.sciencequest.sae.entities.Thematique;
import fr.iut.sciencequest.sae.exceptions.DuplicatedFieldException;
import fr.iut.sciencequest.sae.exceptions.DuplicatedIdException;
import fr.iut.sciencequest.sae.exceptions.notFound.InviteNotFoundException;
import fr.iut.sciencequest.sae.exceptions.notFound.ThematiqueNotFoundException;
import fr.iut.sciencequest.sae.repositories.InviteRepository;
import fr.iut.sciencequest.sae.repositories.JoueurRepository;
import fr.iut.sciencequest.sae.repositories.PartieRepository;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import fr.iut.sciencequest.sae.repositories.ThematiqueRepository;
import lombok.AllArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
@AllArgsConstructor
@Service
public class InviteService {
private final InviteRepository inviteRepository;
private final JoueurRepository joueurRepository;
private void checkFieldsConstraints(Invite invite){
if(this.joueurRepository.existsByPseudo(invite.getPseudo())){
throw new DuplicatedFieldException("pseudo");
}
}
public Invite update(Invite invite){
if(!this.joueurRepository.existsById(invite.getId())){
throw new InviteNotFoundException(invite.getId());
}
this.checkFieldsConstraints(invite);
return this.inviteRepository.save(invite);
}
public Invite create(Invite invite){
if(invite.getId() != null && this.joueurRepository.existsById(invite.getId())){
throw new DuplicatedIdException();
}
this.checkFieldsConstraints(invite);
return this.inviteRepository.save(invite);
}
}

Loading…
Cancel
Save