package enseirb.myinpulse.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.security.oauth2.jwt.Jwt; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import enseirb.myinpulse.model.Project; import enseirb.myinpulse.model.SectionCell; import enseirb.myinpulse.service.EntrepreneurApiService; @SpringBootApplication @RestController public class EntrepreneurApi { private final EntrepreneurApiService entrepreneurApiService; @Autowired EntrepreneurApi(EntrepreneurApiService entrepreneurApiService) { this.entrepreneurApiService = entrepreneurApiService; } /** * TODO: check return type * *

Endpoint used to update a LC section. * * @return status code */ @PutMapping("/entrepreneur/sectionCells/{sectionCellId}") public void editSectionCell( @PathVariable Long sectionCellId, @RequestBody String content, @AuthenticationPrincipal Jwt principal) { entrepreneurApiService.editSectionCell( sectionCellId, content, principal.getClaimAsString("email")); } /** * Endpoint used to update a LC section. * * @return status code */ @GetMapping("/entrepreneur/projects") public Iterable getEntrepreneurProjectId( @PathVariable Long sectionCellId, @RequestBody String content, @AuthenticationPrincipal Jwt principal) { return entrepreneurApiService.getProjectIdViaClaim(principal.getClaimAsString("email")); } /** * TODO: checkReturn Type * *

Endpoint used to delete a LC section * * @return status code */ @DeleteMapping("/entrepreneur/sectionCells/{sectionCellId}") public void removeSectionCell( @PathVariable Long sectionCellId, @AuthenticationPrincipal Jwt principal) { entrepreneurApiService.removeSectionCell( sectionCellId, principal.getClaimAsString("email")); } /** * TODO: check return type * *

Endpoint used to create a new LC section * * @return status code */ @PostMapping("/entrepreneur/sectionCells") public void addLCSection( @RequestBody SectionCell sectionCell, @AuthenticationPrincipal Jwt principal) { entrepreneurApiService.addSectionCell(sectionCell, principal.getClaimAsString("email")); } /** * TODO: check return type * *

Endpoint used to request the creation of a new project * * @return status code */ @PostMapping("/entrepreneur/projects/request") public void requestNewProject( @RequestBody Project project, @AuthenticationPrincipal Jwt principal) { entrepreneurApiService.requestNewProject(project, principal.getClaimAsString("email")); } /* *

Endpoint to check if project is has already been validated by an admin */ @GetMapping("/entrepreneur/projects/project-is-active") public Boolean checkIfProjectValidated(@AuthenticationPrincipal Jwt principal) { return entrepreneurApiService.checkIfEntrepreneurProjectActive( principal.getClaimAsString("email")); } /* *

Endpoint to check if a user requested a project (used when project is pending) */ @GetMapping("/entrepreneur/projects/has-pending-request") public Boolean checkIfHasRequested(@AuthenticationPrincipal Jwt principal) { return entrepreneurApiService.entrepreneurHasPendingRequestedProject( principal.getClaimAsString("email")); } }