Forráskód Böngészése

feat: user routes correction & cpr CRUD

Fernando 1 hónapja
szülő
commit
5b03f671a4

+ 3 - 0
src/main/java/com/platform2easy/genesis/domain/repository/AppUserRepository.java

@@ -4,7 +4,10 @@ import com.platform2easy.genesis.domain.model.AppUser;
 import org.springframework.data.jpa.repository.JpaRepository;
 
 import java.util.Optional;
+import java.util.List;
 
 public interface AppUserRepository extends JpaRepository<AppUser, Long> {
     Optional<AppUser> findByUserEmail(String userEmail);
+
+    List<AppUser> findByCompanyId(Integer companyId);
 }

+ 2 - 2
src/main/java/com/platform2easy/genesis/domain/repository/CprRepository.java

@@ -3,5 +3,5 @@ package com.platform2easy.genesis.domain.repository;
 import com.platform2easy.genesis.domain.model.Cpr;
 import org.springframework.data.jpa.repository.JpaRepository;
 
-public interface CprRepository extends JpaRepository<Commoditiy, Long> {
-}
+public interface CprRepository extends JpaRepository<Cpr, Long> {
+}

+ 4 - 1
src/main/java/com/platform2easy/genesis/domain/repository/WalletRepository.java

@@ -3,5 +3,8 @@ package com.platform2easy.genesis.domain.repository;
 import com.platform2easy.genesis.domain.model.Wallet;
 import org.springframework.data.jpa.repository.JpaRepository;
 
+import java.util.Optional;
+
 public interface WalletRepository extends JpaRepository<Wallet, Long> {
-}
+    Optional<Wallet> findByCompanyId(Integer companyId);
+}

+ 35 - 0
src/main/java/com/platform2easy/genesis/domain/service/CprService.java

@@ -0,0 +1,35 @@
+package com.platform2easy.genesis.domain.service;
+
+import com.platform2easy.genesis.domain.model.Cpr;
+import com.platform2easy.genesis.domain.repository.CprRepository;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Service
+@AllArgsConstructor
+public class CprService {
+
+    private final CprRepository repository;
+
+    @Transactional
+    public Cpr salvar(Cpr cpr) {
+        repository.save(cpr);
+        return cpr;
+    }
+
+    public List<Cpr> listarTodos() {
+        return repository.findAll();
+    }
+
+    public Cpr buscarPorId(Long id) {
+        return repository.findById(id).orElseThrow();
+    }
+
+    @Transactional
+    public void deletarPorId(Long id) {
+        repository.deleteById(id);
+    }
+}

+ 5 - 4
src/main/java/com/platform2easy/genesis/domain/service/UserService.java

@@ -7,11 +7,12 @@ import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.security.core.userdetails.User;
 
 import java.util.List;
 import java.util.Collections;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.core.userdetails.User;
 
 @Service
 @AllArgsConstructor
@@ -34,8 +35,8 @@ public class UserService implements UserDetailsService {
         return user;
     }
 
-    public AppUser buscarPorEmpresa(Integer companyId) {
-        return appUserRepository.findByCompanyId(companyId).orElseThrow();
+    public List<AppUser> buscarPorEmpresa(Integer companyId) {
+    return appUserRepository.findByCompanyId(companyId);
     }
 
     public List<AppUser> listAll(){

+ 1 - 0
src/main/java/com/platform2easy/genesis/domain/service/WalletService.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.Optional;
 
 @Service
 @AllArgsConstructor

+ 28 - 19
src/main/java/com/platform2easy/genesis/web/controller/AuthenticationController.java

@@ -11,11 +11,9 @@ import jakarta.validation.Valid;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
 import java.util.Optional;
 
 @RestController("webAuthenticationController")
@@ -27,19 +25,13 @@ public class AuthenticationController {
     private final PasswordEncoder passwordEncoder;
     private final TokenService tokenService;
 
-    public AuthenticationController(AppUserRepository appUserRepository, PasswordEncoder passwordEncoder, TokenService tokenService) {
+    public AuthenticationController(UserService service, AppUserRepository appUserRepository, PasswordEncoder passwordEncoder, TokenService tokenService) {
+        this.service = service;
         this.appUserRepository = appUserRepository;
         this.passwordEncoder = passwordEncoder;
         this.tokenService = tokenService;
     }
 
-    // GET /api/auth/{companyId}: Busca por ID da Empresa
-    @GetMapping("/{companyId}")
-    @ResponseStatus(HttpStatus.OK)
-    public AppUser getByCompanyId(@PathVariable Integer companyId) {
-        return service.buscarPorEmpresa(companyId);
-    }
-
     @PostMapping("/register")
     public ResponseEntity<?> register(@Valid @RequestBody RegisterDTO dto) {
         Optional<AppUser> existing = appUserRepository.findByUserEmail(dto.getEmail());
@@ -116,18 +108,35 @@ public class AuthenticationController {
         return ResponseEntity.status(status).body(new TokenDTO(token));
     }
 
-    // PUT /api/auth/register/{id}: Atualiza um registro existente
-    @PutMapping("/{id}")
+    // GET /auth/company/{companyId}: Lista todos os usuários de uma empresa
+    @GetMapping("/company/{companyId}")
+        @ResponseStatus(HttpStatus.OK)
+        public List<AppUser> getUsersByCompanyId(@PathVariable Integer companyId) {
+            return service.buscarPorEmpresa(companyId);
+    }
+
+    // PUT /auth/email/{id}: Atualiza apenas o email
+    @PutMapping("/email/{id}")
+    @ResponseStatus(HttpStatus.OK)
+    public AppUser updateEmail(@PathVariable Long id, @RequestBody AppUser userRequest) {
+        AppUser user = appUserRepository.findById(id).orElseThrow();
+        user.setUserEmail(userRequest.getUserEmail());
+        return appUserRepository.save(user);
+    }
+
+    // PUT /auth/password/{id}: Atualiza apenas a senha (hash via passwordEncoder)
+    @PutMapping("/password/{id}")
     @ResponseStatus(HttpStatus.OK)
-    public AppUser update(@PathVariable Long id, @RequestBody AppUser user) {
-        user.setId(id);
-        return service.salvar(user);
+    public AppUser updatePassword(@PathVariable Long id, @RequestBody AppUser userRequest) {
+        AppUser user = appUserRepository.findById(id).orElseThrow();
+        user.setUserPassword(passwordEncoder.encode(userRequest.getUserPassword()));
+        return appUserRepository.save(user);
     }
 
-    // DELETE /api/auth/register/{id}: Deleta um registro
+    // DELETE /auth/{id}: Hard delete do usuário
     @DeleteMapping("/{id}")
     @ResponseStatus(HttpStatus.NO_CONTENT)
     public void delete(@PathVariable Long id) {
         service.deletarPorId(id);
     }
-}
+}

+ 53 - 2
src/main/java/com/platform2easy/genesis/web/controller/CprController.java

@@ -1,3 +1,54 @@
+package com.platform2easy.genesis.web.controller;
+
+import com.platform2easy.genesis.domain.model.Cpr;
+import com.platform2easy.genesis.domain.service.CprService;
+import lombok.AllArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/cpr")
+@AllArgsConstructor
 public class CprController {
-    
-}
+
+    private final CprService service;
+
+    // GET /api/cpr
+    @GetMapping
+    @ResponseStatus(HttpStatus.OK)
+    public List<Cpr> listAll() {
+        return service.listarTodos();
+    }
+
+    // GET /api/cpr/{id}
+    @GetMapping("/{id}")
+    @ResponseStatus(HttpStatus.OK)
+    public Cpr getById(@PathVariable Long id) {
+        return service.buscarPorId(id);
+    }
+
+    // POST /api/cpr
+    @PostMapping
+    @ResponseStatus(HttpStatus.CREATED)
+    public Cpr create(@RequestBody Cpr cpr) {
+        cpr.setId(null);
+        return service.salvar(cpr);
+    }
+
+    // PUT /api/cpr/{id}
+    @PutMapping("/{id}")
+    @ResponseStatus(HttpStatus.OK)
+    public Cpr update(@PathVariable Long id, @RequestBody Cpr cpr) {
+        cpr.setId(id);
+        return service.salvar(cpr);
+    }
+
+    // DELETE /api/cpr/{id}
+    @DeleteMapping("/{id}")
+    @ResponseStatus(HttpStatus.NO_CONTENT)
+    public void delete(@PathVariable Long id) {
+        service.deletarPorId(id);
+    }
+}

+ 3 - 2
src/main/java/com/platform2easy/genesis/web/controller/WalletController.java

@@ -7,6 +7,7 @@ import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Optional;
 
 @RestController
 @RequestMapping("/api/wallet")
@@ -27,9 +28,9 @@ public class WalletController {
         return service.buscarPorId(id);
     }
 
-    @GetMapping("/{companyId}")
+    @GetMapping("/company/{companyId}")
     @ResponseStatus(HttpStatus.OK)
-    public AppUser getByCompanyId(@PathVariable Integer companyId) {
+    public Wallet getWalletByCompanyId(@PathVariable Integer companyId) {
         return service.buscarPorEmpresa(companyId);
     }