Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.pointtils.pointtils.src.application.clients;

import com.pointtils.pointtils.src.application.dto.CityIbgeResponseDTO;
import com.pointtils.pointtils.src.application.dto.responses.CityIbgeResponseDTO;
import com.pointtils.pointtils.src.application.dto.StateDataDTO;
import com.pointtils.pointtils.src.application.dto.StateIbgeResponseDTO;
import com.pointtils.pointtils.src.application.dto.responses.StateIbgeResponseDTO;
import com.pointtils.pointtils.src.core.domain.exceptions.ClientTimeoutException;
import jakarta.persistence.EntityNotFoundException;
import lombok.extern.slf4j.Slf4j;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.pointtils.pointtils.src.application.dto.LoginRequestDTO;
import com.pointtils.pointtils.src.application.dto.LoginResponseDTO;
import com.pointtils.pointtils.src.application.dto.RefreshTokenRequestDTO;
import com.pointtils.pointtils.src.application.dto.RefreshTokenResponseDTO;
import com.pointtils.pointtils.src.application.dto.requests.LoginRequestDTO;
import com.pointtils.pointtils.src.application.dto.responses.LoginResponseDTO;
import com.pointtils.pointtils.src.application.dto.requests.RefreshTokenRequestDTO;
import com.pointtils.pointtils.src.application.dto.responses.RefreshTokenResponseDTO;
import com.pointtils.pointtils.src.application.services.AuthService;
import com.pointtils.pointtils.src.core.domain.exceptions.AuthenticationException;
import com.pointtils.pointtils.src.infrastructure.configs.LoginAttemptService;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import java.util.UUID;

@RestController
@RequestMapping("/v1/enterprise-users")
@RequestMapping("/v1/enterprises")
@AllArgsConstructor
@Tag(name = "Enterprise Controller", description = "Endpoints para gerenciamento de usuários empresa")
public class EnterpriseController {
Expand Down Expand Up @@ -58,10 +58,10 @@ public ResponseEntity<ApiResponse<EnterpriseResponseDTO>> findById(@PathVariable
@PatchMapping("/{id}")
@SecurityRequirement(name = "bearerAuth")
@Operation(summary = "Atualiza um usuário empresa por ID")
public ResponseEntity<EnterpriseResponseDTO> updateUser(@PathVariable UUID id,
@RequestBody @Valid EnterprisePatchRequestDTO dto) {
public ResponseEntity<ApiResponse<EnterpriseResponseDTO>> updateUser(@PathVariable UUID id,
@RequestBody @Valid EnterprisePatchRequestDTO dto) {
EnterpriseResponseDTO updated = service.patchEnterprise(id, dto);
return ResponseEntity.ok(updated);
return ResponseEntity.ok(ApiResponse.success("Empresa atualizada com sucesso", updated));
}

@DeleteMapping("/{id}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import com.pointtils.pointtils.src.application.dto.requests.InterpreterPatchRequestDTO;
import com.pointtils.pointtils.src.application.dto.responses.ApiResponse;
import com.pointtils.pointtils.src.application.dto.responses.InterpreterResponseDTO;
import com.pointtils.pointtils.src.application.services.InterpreterRegisterService;
import com.pointtils.pointtils.src.application.services.InterpreterService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
Expand All @@ -30,7 +30,7 @@
@Tag(name = "Interpreter Controller", description = "Endpoints para gerenciamento de usuários intérprete")
public class InterpreterController {

private final InterpreterRegisterService service;
private final InterpreterService service;

@PostMapping("/register")
@Operation(summary = "Cadastra um usuário intérprete")
Expand Down Expand Up @@ -67,7 +67,6 @@ public ResponseEntity<ApiResponse<InterpreterResponseDTO>> updateUser(@PathVaria
return ResponseEntity.ok(ApiResponse.success("Intérprete atualizado com sucesso", updated));
}


@DeleteMapping("/{id}")
@SecurityRequirement(name = "bearerAuth")
@Operation(summary = "Deleta um usuário intérprete por ID")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
package com.pointtils.pointtils.src.application.controllers;

import org.springframework.beans.factory.annotation.Autowired;
import com.pointtils.pointtils.src.application.dto.TokensDTO;
import com.pointtils.pointtils.src.application.dto.requests.RefreshTokenRequestDTO;
import com.pointtils.pointtils.src.application.dto.responses.RefreshTokenResponseDTO;
import com.pointtils.pointtils.src.infrastructure.configs.JwtService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
Expand All @@ -9,21 +15,12 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import com.pointtils.pointtils.src.application.dto.RefreshTokenRequestDTO;
import com.pointtils.pointtils.src.application.dto.RefreshTokenResponseDTO;
import com.pointtils.pointtils.src.application.dto.TokensDTO;
import com.pointtils.pointtils.src.infrastructure.configs.JwtService;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api/jwt")
@Tag(name = "JWT Controller", description = "Endpoints para geração e teste de tokens JWT")
public class JwtController {

@Autowired
private JwtService jwtService;
private final JwtService jwtService;

@GetMapping("/public")
@Operation(summary = "Gera um token de acesso público")
Expand Down Expand Up @@ -57,11 +54,11 @@ public ResponseEntity<RefreshTokenResponseDTO> refreshToken(@RequestBody Refresh
if (request.getRefreshToken() == null || request.getRefreshToken().isBlank()) {
throw new com.pointtils.pointtils.src.core.domain.exceptions.AuthenticationException("Refresh token não fornecido");
}

if (!jwtService.isTokenValid(request.getRefreshToken())) {
throw new com.pointtils.pointtils.src.core.domain.exceptions.AuthenticationException("Refresh token inválido ou expirado");
}

String username = jwtService.getEmailFromToken(request.getRefreshToken());
String newAccessToken = jwtService.generateToken(username);
String newRefreshToken = jwtService.generateRefreshToken(username);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.pointtils.pointtils.src.application.controllers;

import com.pointtils.pointtils.src.application.dto.PersonCreationDTO;
import com.pointtils.pointtils.src.application.dto.requests.PersonCreationRequestDTO;
import com.pointtils.pointtils.src.application.dto.PersonDTO;
import com.pointtils.pointtils.src.application.dto.requests.PersonPatchRequestDTO;
import com.pointtils.pointtils.src.application.dto.responses.ApiResponse;
Expand Down Expand Up @@ -34,7 +34,7 @@ public class PersonController {

@PostMapping("/register")
@Operation(summary = "Cadastra um usuário surdo")
public ResponseEntity<ApiResponse<PersonDTO>> createUser(@Valid @RequestBody PersonCreationDTO dto) {
public ResponseEntity<ApiResponse<PersonDTO>> createUser(@Valid @RequestBody PersonCreationRequestDTO dto) {
PersonDTO created = service.registerPerson(dto);
ApiResponse<PersonDTO> response = ApiResponse.success("Usuário surdo cadastrado com sucesso", created);
return ResponseEntity.status(HttpStatus.CREATED).body(response);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package com.pointtils.pointtils.src.application.controllers;

import java.util.List;
import java.util.UUID;
import com.pointtils.pointtils.src.application.dto.requests.UpdateSpecialtyRequestDTO;
import com.pointtils.pointtils.src.application.services.SpecialtyService;
import com.pointtils.pointtils.src.core.domain.entities.Specialty;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
Expand All @@ -16,69 +19,63 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.pointtils.pointtils.src.application.dto.UpdateSpecialtyRequestDTO;
import com.pointtils.pointtils.src.application.services.SpecialtyService;
import com.pointtils.pointtils.src.core.domain.entities.Specialty;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import lombok.RequiredArgsConstructor;

import java.util.List;
import java.util.UUID;

@RestController
@RequestMapping("/v1/specialties")
@RequiredArgsConstructor
@SecurityRequirement(name = "bearerAuth")
@Tag(name = "Specialty Controller", description = "Endpoints para gerenciamento de especialidades")
public class SpecialtyController {

private final SpecialtyService specialtyService;

@GetMapping
@Operation(summary = "Obtém todas as especialidades")
public ResponseEntity<List<Specialty>> getAllSpecialties() {
try {
List<Specialty> specialties = specialtyService.getAllSpecialties();
return ResponseEntity.ok(specialties);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
}
List<Specialty> specialties = specialtyService.getAllSpecialties();
return ResponseEntity.ok(specialties);
}

@GetMapping("/{id}")
@Operation(summary = "Busca uma especialidades por ID")
public ResponseEntity<Specialty> getSpecialtyById(@PathVariable UUID id) {
Specialty specialty = specialtyService.getSpecialtyById(id);
return ResponseEntity.ok(specialty);
}

@GetMapping("/search")
@Operation(summary = "Busca especialidades por nome")
public ResponseEntity<List<Specialty>> searchSpecialtiesByName(@RequestParam String name) {
List<Specialty> specialties = specialtyService.searchSpecialtiesByName(name);
return ResponseEntity.ok(specialties);
}

@PostMapping
@Operation(summary = "Cria uma especialidade")
public ResponseEntity<Specialty> createSpecialty(@RequestParam String name) {
Specialty specialty = specialtyService.createSpecialty(name);
return ResponseEntity.status(HttpStatus.CREATED).body(specialty);
}

@PutMapping("/{id}")
@Operation(summary = "Atualiza uma especialidade por ID")
public ResponseEntity<Specialty> updateSpecialty(@PathVariable UUID id, @RequestParam String name) {
Specialty specialty = specialtyService.updateSpecialty(id, name);
return ResponseEntity.ok(specialty);
}

@PatchMapping("/{id}")
@Operation(summary = "Atualiza parcialmente uma especialidade por ID")
public ResponseEntity<Specialty> partialUpdateSpecialty(
@PathVariable UUID id,
@PathVariable UUID id,
@RequestBody UpdateSpecialtyRequestDTO request) {
Specialty specialty = specialtyService.partialUpdateSpecialty(id, request.getName());
return ResponseEntity.ok(specialty);
}

@DeleteMapping("/{id}")
@Operation(summary = "Deleta uma especialidade por ID")
public ResponseEntity<Void> deleteSpecialty(@PathVariable UUID id) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.pointtils.pointtils.src.application.controllers;

import com.pointtils.pointtils.src.application.dto.StateResponseDTO;
import com.pointtils.pointtils.src.application.dto.responses.StateResponseDTO;
import com.pointtils.pointtils.src.application.services.StateService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import java.util.List;
import java.util.UUID;

import com.pointtils.pointtils.src.application.dto.AddUserSpecialtiesRequestDTO;
import com.pointtils.pointtils.src.application.dto.UserSpecialtiesResponseDTO;
import com.pointtils.pointtils.src.application.dto.requests.AddUserSpecialtiesRequestDTO;
import com.pointtils.pointtils.src.application.dto.responses.UserSpecialtiesResponseDTO;
import com.pointtils.pointtils.src.application.dto.UserSpecialtyDTO;
import com.pointtils.pointtils.src.application.services.UserSpecialtyService;
import com.pointtils.pointtils.src.core.domain.entities.UserSpecialty;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.pointtils.pointtils.src.application.dto;

import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
Expand All @@ -21,15 +20,7 @@
public class LocationDTO {

private UUID id;

@NotBlank(message = "UF deve ser preenchida")
private String uf;

@NotBlank(message = "Cidade deve ser preenchida")
private String city;

public LocationDTO(String uf, String city) {
this.uf = uf;
this.city = city;
}
private String neighborhood;
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
Expand All @@ -18,11 +19,12 @@ public class UserDTO {

private UUID id;

@Email(message = "Formato de e-mail inválido")
@Email(message = "Email inválido")
@NotBlank(message = "O e-mail é obrigatório")
private String email;

@Size(max = 11, message = "O telefone deve ter no máximo 11 dígitos")
@Pattern(regexp = "^\\d+$", message = "Número de telefone inválido")
private String phone;

private String picture;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.pointtils.pointtils.src.application.dto;
package com.pointtils.pointtils.src.application.dto.requests;

import java.util.List;
import java.util.UUID;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package com.pointtils.pointtils.src.application.dto.requests;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.pointtils.pointtils.src.application.dto.LocationDTO;
import jakarta.validation.Valid;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
Expand All @@ -15,26 +14,20 @@
@NoArgsConstructor
@AllArgsConstructor
public class EnterprisePatchRequestDTO {
@JsonProperty("corporate_reason")
private String corporateReason;

@Pattern(regexp = "^\\d{14}$", message = "CNPJ precisa ter 14 dígitos")
private String cnpj;

@Email(message = "Email inválido")
private String email;
@JsonProperty("corporate_reason")
private String corporateReason;

private String password;
@Pattern(regexp = "^\\d{14}$", message = "CNPJ precisa ter 14 dígitos")
@Size(min = 14, max = 14, message = "CNPJ deve ter exatamente 14 digitos")
private String cnpj;

@Pattern(regexp = "^\\d+$", message = "Número de telefone inválido")
private String phone;
@Email(message = "Email inválido")
private String email;

private String picture;
@Size(max = 11, message = "O telefone deve ter no máximo 11 dígitos")
@Pattern(regexp = "^\\d+$", message = "Número de telefone inválido")
private String phone;

private String status;

private String type;

@Valid
private LocationDTO location;
private String picture;
}
Loading