feat(user): implementado changeRole en el repositorio, servicio y controlador de UpdateUser

parent 40c6ed73
package com.example.apprecetas.user.application; package com.example.apprecetas.user.application;
import com.example.apprecetas.user.domain.entity.Role;
import com.example.apprecetas.user.domain.entity.User; import com.example.apprecetas.user.domain.entity.User;
public interface UpdateUserUseCase { public interface UpdateUserUseCase {
...@@ -11,4 +12,7 @@ public interface UpdateUserUseCase { ...@@ -11,4 +12,7 @@ public interface UpdateUserUseCase {
void deactivateById(String id); void deactivateById(String id);
void activateById(String id); void activateById(String id);
void changeRole(String id, Role role);
} }
package com.example.apprecetas.user.application.impl; package com.example.apprecetas.user.application.impl;
import com.example.apprecetas.user.application.UpdateUserUseCase; import com.example.apprecetas.user.application.UpdateUserUseCase;
import com.example.apprecetas.user.domain.entity.Role;
import com.example.apprecetas.user.domain.entity.User; import com.example.apprecetas.user.domain.entity.User;
import com.example.apprecetas.user.domain.repository.UpdateUserRepository; import com.example.apprecetas.user.domain.repository.UpdateUserRepository;
import com.example.apprecetas.user.infrastructure.mapper.UserMapper; import com.example.apprecetas.user.infrastructure.mapper.UserMapper;
...@@ -38,4 +39,9 @@ public class UpdateUserUseCaseImpl implements UpdateUserUseCase { ...@@ -38,4 +39,9 @@ public class UpdateUserUseCaseImpl implements UpdateUserUseCase {
public void activateById(String id) { public void activateById(String id) {
updateUserRepository.activateById(id); updateUserRepository.activateById(id);
} }
@Override
public void changeRole(String id, Role role) {
updateUserRepository.changeRole(id, role);
}
} }
package com.example.apprecetas.user.domain.repository; package com.example.apprecetas.user.domain.repository;
import com.example.apprecetas.user.domain.entity.Role;
import com.example.apprecetas.user.infrastructure.repository.mongodb.UserDocument; import com.example.apprecetas.user.infrastructure.repository.mongodb.UserDocument;
public interface UpdateUserRepository { public interface UpdateUserRepository {
...@@ -11,4 +12,6 @@ public interface UpdateUserRepository { ...@@ -11,4 +12,6 @@ public interface UpdateUserRepository {
void deactivateById(String id); void deactivateById(String id);
void activateById(String id); void activateById(String id);
void changeRole(String id, Role role);
} }
...@@ -2,6 +2,7 @@ package com.example.apprecetas.user.infrastructure.controller; ...@@ -2,6 +2,7 @@ package com.example.apprecetas.user.infrastructure.controller;
import com.example.apprecetas.exception.UnprocessableEntityException; import com.example.apprecetas.exception.UnprocessableEntityException;
import com.example.apprecetas.user.application.UpdateUserUseCase; import com.example.apprecetas.user.application.UpdateUserUseCase;
import com.example.apprecetas.user.domain.entity.Role;
import com.example.apprecetas.user.infrastructure.controller.dto.input.UserInputDto; import com.example.apprecetas.user.infrastructure.controller.dto.input.UserInputDto;
import com.example.apprecetas.user.infrastructure.controller.dto.input.UserUpdateInputDto; import com.example.apprecetas.user.infrastructure.controller.dto.input.UserUpdateInputDto;
import com.example.apprecetas.user.infrastructure.controller.dto.output.UserOutputDto; import com.example.apprecetas.user.infrastructure.controller.dto.output.UserOutputDto;
...@@ -58,7 +59,6 @@ public class UpdateUserController { ...@@ -58,7 +59,6 @@ public class UpdateUserController {
@PatchMapping("/{id}/deactivate") @PatchMapping("/{id}/deactivate")
public ResponseEntity<String> deactivate(@PathVariable String id) { public ResponseEntity<String> deactivate(@PathVariable String id) {
// Añadir autorización
service.deactivateById(id); service.deactivateById(id);
return ResponseEntity.ok().body("Usuario con id " + id + " desactivado"); return ResponseEntity.ok().body("Usuario con id " + id + " desactivado");
} }
...@@ -69,4 +69,10 @@ public class UpdateUserController { ...@@ -69,4 +69,10 @@ public class UpdateUserController {
return ResponseEntity.ok().body("Usuario con id " + id + " activado"); return ResponseEntity.ok().body("Usuario con id " + id + " activado");
} }
@PatchMapping("/{id}/role")
public ResponseEntity<String> changeRole(@PathVariable String id, @RequestBody Role role) {
service.changeRole(id, role);
return ResponseEntity.ok().body("Usuario con id " + id + " con rol: " + role);
}
} }
package com.example.apprecetas.user.infrastructure.repository.impl; package com.example.apprecetas.user.infrastructure.repository.impl;
import com.example.apprecetas.exception.EntityNotFoundException; import com.example.apprecetas.exception.EntityNotFoundException;
import com.example.apprecetas.user.domain.entity.Role;
import com.example.apprecetas.user.domain.repository.UpdateUserRepository; import com.example.apprecetas.user.domain.repository.UpdateUserRepository;
import com.example.apprecetas.user.infrastructure.repository.mongodb.UserDocument; import com.example.apprecetas.user.infrastructure.repository.mongodb.UserDocument;
import com.example.apprecetas.user.infrastructure.repository.mongodb.UserRepository; import com.example.apprecetas.user.infrastructure.repository.mongodb.UserRepository;
...@@ -60,4 +61,13 @@ public class UpdateUserRepositoryImpl implements UpdateUserRepository { ...@@ -60,4 +61,13 @@ public class UpdateUserRepositoryImpl implements UpdateUserRepository {
userDocument.setDeletedAt(null); userDocument.setDeletedAt(null);
userRepository.save(userDocument); userRepository.save(userDocument);
} }
@Override
public void changeRole(String id, Role role) {
UserDocument userDocument = userRepository.findById(id)
.orElseThrow(() -> new EntityNotFoundException("Usuario con id " + id + " no encontrado"));
userDocument.setRole(role);
userRepository.save(userDocument);
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment