From f419be09cd2394f9183b02e114516f8abb6f89d7 Mon Sep 17 00:00:00 2001 From: hutchpro1 Date: Wed, 14 Dec 2022 17:48:22 -0500 Subject: [PATCH 1/2] BL-1089 Created Profile Controller and ProfileService class and updated Profiles Repository --- .../controllers/ProfilesController.java | 64 +++++++++++++++++++ .../repositories/ProfilesRepository.java | 4 ++ .../services/ProfilesService.java | 44 +++++++++++++ 3 files changed, 112 insertions(+) create mode 100644 src/main/java/com/bloomtechlabs/coderheroesbea/controllers/ProfilesController.java create mode 100644 src/main/java/com/bloomtechlabs/coderheroesbea/services/ProfilesService.java diff --git a/src/main/java/com/bloomtechlabs/coderheroesbea/controllers/ProfilesController.java b/src/main/java/com/bloomtechlabs/coderheroesbea/controllers/ProfilesController.java new file mode 100644 index 0000000..85ee576 --- /dev/null +++ b/src/main/java/com/bloomtechlabs/coderheroesbea/controllers/ProfilesController.java @@ -0,0 +1,64 @@ +package com.bloomtechlabs.coderheroesbea.controllers; + +import com.bloomtechlabs.coderheroesbea.entities.Profiles; +import com.bloomtechlabs.coderheroesbea.services.ProfilesService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.support.ServletUriComponentsBuilder; + +import javax.validation.Valid; +import java.net.URI; +import java.util.List; +import java.util.Optional; + +@RestController +@RequestMapping("/profile/") +public class ProfilesController { + + private ProfilesService service; + + public void ProfilesController(ProfilesService service) { + this.service = service; + } + + + + @GetMapping + public ResponseEntity> getAllProfiles() { + List profiles = service.findAll(); + return ResponseEntity.ok().body(profiles); + } + + @GetMapping(value = "/{profiles_id}") + public ResponseEntity getProfileByID(@PathVariable("profiles_id") Long profile_id) { + Optional profile = service.find(profile_id); + return ResponseEntity.of(profile); + } + + @GetMapping(value = "/role/{role_id}") + public ResponseEntity> getProfilesByRoleId(@PathVariable("role_id") Long role_id) { + List profiles = service.findProfilesByRoleId(role_id); + return ResponseEntity.ok().body(profiles); + } + + @PostMapping + public ResponseEntity createProfile(@Valid @RequestBody Profiles profile) { + Profiles newProfile = service.createProfile(profile); + URI location = ServletUriComponentsBuilder.fromCurrentRequest() + .path("/{id}") + .buildAndExpand(newProfile.getProfile_id()) + .toUri(); + return ResponseEntity.ok().build(); + + } + + @PutMapping(value = "/{profile_id}") + public ResponseEntity updateProfile(@PathVariable("profile_id") Long profile_id, + @Valid @RequestBody Profiles updateProfile) { + Optional updated = service.updateProfile(profile_id, updateProfile); + return ResponseEntity.of(updated); + } + + +} diff --git a/src/main/java/com/bloomtechlabs/coderheroesbea/repositories/ProfilesRepository.java b/src/main/java/com/bloomtechlabs/coderheroesbea/repositories/ProfilesRepository.java index 011ca9a..9f8f114 100644 --- a/src/main/java/com/bloomtechlabs/coderheroesbea/repositories/ProfilesRepository.java +++ b/src/main/java/com/bloomtechlabs/coderheroesbea/repositories/ProfilesRepository.java @@ -3,10 +3,14 @@ import com.bloomtechlabs.coderheroesbea.entities.Profiles; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; + +import java.util.List; + /** * Provides data exchange with the table 'profiles' */ @Repository public interface ProfilesRepository extends JpaRepository { + List findProfilesByRoleId(Long roleId); } diff --git a/src/main/java/com/bloomtechlabs/coderheroesbea/services/ProfilesService.java b/src/main/java/com/bloomtechlabs/coderheroesbea/services/ProfilesService.java new file mode 100644 index 0000000..9d4e608 --- /dev/null +++ b/src/main/java/com/bloomtechlabs/coderheroesbea/services/ProfilesService.java @@ -0,0 +1,44 @@ +package com.bloomtechlabs.coderheroesbea.services; + +import com.bloomtechlabs.coderheroesbea.entities.Profiles; +import com.bloomtechlabs.coderheroesbea.repositories.ProfilesRepository; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +@Service +public class ProfilesService { + + private ProfilesRepository repository; + + public ProfilesService(ProfilesRepository repository) { + this.repository = repository; + } + + + public Profiles createProfile(Profiles profile) { + return repository.save(profile); + } + + public List findAll() { + return repository.findAll(); + } + + public Optional find(Long profileId) { + return repository.findById(profileId); + } + + public List findProfilesByRoleId(Long roleID) { + return repository.findProfilesByRoleId(roleID); + } + + public Optional updateProfile(Long profileId,Profiles updateProfile) { + Optional profile = repository.findById(profileId); + if (profile.isPresent()) { + updateProfile.setProfile_id(Math.toIntExact(profileId)); + repository.save(updateProfile); + } + return profile; + } + +} From 6152b255033ce884f284edfd2cc8707e945b2079 Mon Sep 17 00:00:00 2001 From: hutchpro1 Date: Thu, 15 Dec 2022 16:20:04 -0500 Subject: [PATCH 2/2] BL-1089-bd-implement-a-profiles-controller --- .../controllers/ProfilesController.java | 12 +++++++----- .../coderheroesbea/services/ProfilesService.java | 11 ++++++++++- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/bloomtechlabs/coderheroesbea/controllers/ProfilesController.java b/src/main/java/com/bloomtechlabs/coderheroesbea/controllers/ProfilesController.java index 85ee576..3e6d3bb 100644 --- a/src/main/java/com/bloomtechlabs/coderheroesbea/controllers/ProfilesController.java +++ b/src/main/java/com/bloomtechlabs/coderheroesbea/controllers/ProfilesController.java @@ -2,7 +2,10 @@ import com.bloomtechlabs.coderheroesbea.entities.Profiles; import com.bloomtechlabs.coderheroesbea.services.ProfilesService; +import net.bytebuddy.implementation.bytecode.Throw; +import org.apache.coyote.Response; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.support.ServletUriComponentsBuilder; @@ -13,7 +16,7 @@ import java.util.Optional; @RestController -@RequestMapping("/profile/") +@RequestMapping("/profile") public class ProfilesController { private ProfilesService service; @@ -22,8 +25,6 @@ public void ProfilesController(ProfilesService service) { this.service = service; } - - @GetMapping public ResponseEntity> getAllProfiles() { List profiles = service.findAll(); @@ -31,9 +32,10 @@ public ResponseEntity> getAllProfiles() { } @GetMapping(value = "/{profiles_id}") - public ResponseEntity getProfileByID(@PathVariable("profiles_id") Long profile_id) { + public ResponseEntity getProfileByID(@PathVariable("profiles_id") Long profile_id) { Optional profile = service.find(profile_id); - return ResponseEntity.of(profile); + return ResponseEntity.of(Optional.ofNullable(profile)); + } @GetMapping(value = "/role/{role_id}") diff --git a/src/main/java/com/bloomtechlabs/coderheroesbea/services/ProfilesService.java b/src/main/java/com/bloomtechlabs/coderheroesbea/services/ProfilesService.java index 9d4e608..4121cf9 100644 --- a/src/main/java/com/bloomtechlabs/coderheroesbea/services/ProfilesService.java +++ b/src/main/java/com/bloomtechlabs/coderheroesbea/services/ProfilesService.java @@ -2,6 +2,9 @@ import com.bloomtechlabs.coderheroesbea.entities.Profiles; import com.bloomtechlabs.coderheroesbea.repositories.ProfilesRepository; +import net.bytebuddy.implementation.bytecode.Throw; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import java.util.List; @@ -24,11 +27,17 @@ public List findAll() { return repository.findAll(); } - public Optional find(Long profileId) { + public Optional find(Long profileId) { + if (profileId == null) { + throw new RuntimeException(" Invalid Profile Id Cannot Be Null "); + } return repository.findById(profileId); } public List findProfilesByRoleId(Long roleID) { + if (roleID == null) { + throw new RuntimeException(" Invalid Role Id Cannot Be Null "); + } return repository.findProfilesByRoleId(roleID); }