package com.plannaplan.controllers; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import io.swagger.annotations.Api; import java.util.List; import com.plannaplan.App; import com.plannaplan.entities.Assignment; import com.plannaplan.entities.Commision; import com.plannaplan.entities.Groups; import com.plannaplan.entities.User; import com.plannaplan.exceptions.UserNotFoundException; import com.plannaplan.responses.mappers.CommisionResponseMappers; import com.plannaplan.responses.models.CommisionResponse; import com.plannaplan.services.AssignmentService; import com.plannaplan.services.CommisionService; import com.plannaplan.services.GroupService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @RestController @CrossOrigin @RequestMapping("/api/" + App.API_VERSION + "/commisions") @Api(tags = { "Commisions" }, value = "Commisions", description = "Commision is representation of student selected assignments at time. All assignments are attached to some commision so we can see current assignments and also browse histroy of changes for given user") public class CommisionController extends TokenBasedController { @Autowired private CommisionService commisionService; @Autowired private GroupService groupServcicxe; @Autowired private AssignmentService assignmentService; public CommisionController() { } @PostMapping("/user") public ResponseEntity addCommision(@RequestBody List groups) throws UserNotFoundException { User user = this.getCurrentUser().orElseThrow(() -> new NullPointerException()); Commision com = new Commision(user); this.commisionService.save(com); groups.stream().forEach((groupId) -> { Groups group = this.groupServcicxe.getGroupById(groupId).orElseThrow(() -> new NullPointerException()); Assignment a = new Assignment(group, com); this.assignmentService.save(a); }); return new ResponseEntity<>("Succes", HttpStatus.OK); } @GetMapping("/user") public ResponseEntity> getAlCommisions() throws UserNotFoundException { User user = this.getCurrentUser().orElseThrow(() -> new NullPointerException()); List result = CommisionResponseMappers .mapToResponse(this.commisionService.getUsersCommisions(user)); return new ResponseEntity<>(result, HttpStatus.OK); } }