diff --git a/buisnesslogic/src/main/java/com/plannaplan/repositories/ExchangeRepository.java b/buisnesslogic/src/main/java/com/plannaplan/repositories/ExchangeRepository.java index 5c6be33..796625a 100644 --- a/buisnesslogic/src/main/java/com/plannaplan/repositories/ExchangeRepository.java +++ b/buisnesslogic/src/main/java/com/plannaplan/repositories/ExchangeRepository.java @@ -1,11 +1,20 @@ package com.plannaplan.repositories; +import java.util.Optional; + +import com.plannaplan.entities.Assignment; import com.plannaplan.entities.Exchange; +import com.plannaplan.entities.Groups; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; @Repository public interface ExchangeRepository extends JpaRepository{ + + @Query("FROM Exchange WHERE owned_id = ?1 AND desired_id = ?2") + Optional checkForExchange(@Param("owned_id") Assignment assignment, @Param("desired_id") Groups group); } diff --git a/buisnesslogic/src/main/java/com/plannaplan/services/ExchangeService.java b/buisnesslogic/src/main/java/com/plannaplan/services/ExchangeService.java index 8cd7bb0..a2f6556 100644 --- a/buisnesslogic/src/main/java/com/plannaplan/services/ExchangeService.java +++ b/buisnesslogic/src/main/java/com/plannaplan/services/ExchangeService.java @@ -1,6 +1,10 @@ package com.plannaplan.services; +import java.util.Optional; + +import com.plannaplan.entities.Assignment; import com.plannaplan.entities.Exchange; +import com.plannaplan.entities.Groups; import com.plannaplan.repositories.ExchangeRepository; import org.springframework.beans.factory.annotation.Autowired; @@ -19,4 +23,8 @@ public class ExchangeService { public Exchange save(Exchange exchange){ return this.repo.save(exchange); } + + public Optional checkForExchange(Assignment assignment, Groups group){ + return this.repo.checkForExchange(assignment, group); + } } diff --git a/restservice/src/main/java/com/plannaplan/controllers/ExchangeController.java b/restservice/src/main/java/com/plannaplan/controllers/ExchangeController.java index 719f33c..e9a032c 100644 --- a/restservice/src/main/java/com/plannaplan/controllers/ExchangeController.java +++ b/restservice/src/main/java/com/plannaplan/controllers/ExchangeController.java @@ -68,13 +68,17 @@ public class ExchangeController extends TokenBasedController{ } final Assignment assignmentInstance = assignment.get(); + final Groups groupInstance = group.get(); + final Optional exchangeInstance = this.exchangeService.checkForExchange(assignmentInstance, groupInstance); - if(!(assignmentInstance.getCommision().getCommisionOwner().getId() == asker.getId() && assignmentInstance.isAccepted())){ - return new ResponseEntity<>("Some of problems appeared. Check if you have access to given assignment and if it is accepted", HttpStatus.BAD_REQUEST); + if(!(assignmentInstance.getCommision().getCommisionOwner().getId() == asker.getId() && assignmentInstance.isAccepted() && exchangeInstance.isEmpty())){ + return new ResponseEntity<>("Some of problems appeared. Check if you have access to given assignment and if it is accepted or the exchange has not been already added.", HttpStatus.BAD_REQUEST); } - this.exchangeService.save(new Exchange(assignment.get(), group.get())); + this.exchangeService.save(new Exchange(assignmentInstance, groupInstance)); return new ResponseEntity<>("Success", HttpStatus.OK); } + + }