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 io.swagger.annotations.ApiOperation; 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") @ApiOperation("Create commision with assignents to given groups. If group doesn't exist error will be thrown") 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") @ApiOperation("Return list of user all commisions (history of schedules)") 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); } }