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
Expand Up @@ -6,11 +6,16 @@
import com.guildworkman.api.dto.responses.ConsultationResponse;
import com.guildworkman.api.services.ServiceUtils.ClientService;
import com.guildworkman.api.services.ServiceUtils.ConsultationService;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
Expand All @@ -22,6 +27,7 @@
@RestController
@RequestMapping("/api/v1/client")
@AllArgsConstructor
@Validated
public class ClientController {

private static final Logger log = LoggerFactory.getLogger(ClientController.class);
Expand All @@ -30,14 +36,14 @@ public class ClientController {


@PostMapping("/bookAppointment")
public ResponseEntity<?>bookAppointment(@RequestBody BookAppointmentRequest bookAppointmentRequest){
public ResponseEntity<?>bookAppointment(@Valid @RequestBody BookAppointmentRequest bookAppointmentRequest){
return ResponseEntity.status(CREATED)
.body(new ApiResponse
(clientService.bookAppointment(bookAppointmentRequest),true));
}

@PostMapping("/registerClient")
public ResponseEntity<?> registerClient(@RequestBody RegistrationRequest registrationRequest){
public ResponseEntity<?> registerClient(@Valid @RequestBody RegistrationRequest registrationRequest){
// log.info("Registering Client => {}", registrationRequest.toString());
return ResponseEntity.status(CREATED)
.body(new ApiResponse
Expand All @@ -50,41 +56,41 @@ public ResponseEntity<?> registerClient(@RequestBody RegistrationRequest registr
// `id` param (the *client* id) and failed with "The given id must not be
// null" for every caller that sent just appointmentId.
@PutMapping("/cancelAppointment")
public ResponseEntity<?> cancelAppointment(@RequestParam Long appointmentId){
public ResponseEntity<?> cancelAppointment(@RequestParam @NotNull Long appointmentId){
return ResponseEntity.status(HttpStatus.OK)
.body(new ApiResponse
(clientService.cancelAppointment(appointmentId),true));
}

@PutMapping("/updateAppointment")
public ResponseEntity<?> updateAppointment(@RequestParam Long appointmentId, @RequestBody UpdateAppointmentRequest request){
public ResponseEntity<?> updateAppointment(@RequestParam @NotNull Long appointmentId, @Valid @RequestBody UpdateAppointmentRequest request){
return ResponseEntity.status(HttpStatus.OK)
.body(new ApiResponse
(clientService.updateAppointment(appointmentId, request),true));
}
@DeleteMapping("/deleteAppointment")
public ResponseEntity<?> deleteAppointment(@RequestParam Long appointmentId){
public ResponseEntity<?> deleteAppointment(@RequestParam @NotNull Long appointmentId){
return ResponseEntity.status(HttpStatus.OK)
.body(new ApiResponse
(clientService.deleteAppointment(appointmentId),true));
}

@GetMapping("/viewAllAppointment")
public ResponseEntity<?> viewAllAppointment(@RequestParam Long clientId){
public ResponseEntity<?> viewAllAppointment(@RequestParam @NotNull Long clientId){
// A read returns 200 OK, not 201 CREATED.
return ResponseEntity.status(HttpStatus.OK)
.body(new ApiResponse
(clientService.viewAllAppointment(clientId),true));
}

@PutMapping("/updateClientProfile")
public ResponseEntity<?> updateClientProfile(@RequestBody UpdateClientRequest request) {
public ResponseEntity<?> updateClientProfile(@Valid @RequestBody UpdateClientRequest request) {
return ResponseEntity
.ok(new ApiResponse(clientService.updateClientProfile(request), true));
}

@PostMapping("/login")
public ResponseEntity<?> login(@RequestBody LoginRequest loginRequest){
public ResponseEntity<?> login(@Valid @RequestBody LoginRequest loginRequest){
return ResponseEntity.status(CREATED)
.body(new ApiResponse(clientService.login(loginRequest),true));
}
Expand All @@ -95,17 +101,17 @@ public ResponseEntity<?> handleOptions() {
}
@PostMapping("/consult")
public ResponseEntity<ConsultationResponse> bookConsultation(
@RequestParam Long clientId,
@RequestParam Long workerId,
@RequestParam String details) {
@RequestParam @NotNull Long clientId,
@RequestParam @NotNull Long workerId,
@RequestParam @NotBlank String details) {
ConsultationResponse response = consultationService.bookConsultation(clientId, workerId, details);
return new ResponseEntity<>(response, HttpStatus.CREATED);
}
@PostMapping("/{consultationId}/availability")
public ResponseEntity<ConsultationAvailability> scheduleAvailability(
@PathVariable Long consultationId,
@RequestParam LocalDateTime clientAvailability,
@RequestParam LocalDateTime workerAvailability) {
@PathVariable @NotNull Long consultationId,
@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime clientAvailability,
@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime workerAvailability) {
ConsultationAvailability availability = consultationService.scheduleAvailability(
consultationId, clientAvailability, workerAvailability);
return new ResponseEntity<>(availability, HttpStatus.CREATED);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.guildworkman.api.dto.requests.SendMailRequest;
import com.guildworkman.api.dto.responses.ApiResponse;
import com.guildworkman.api.services.ServiceUtils.MailService;
import jakarta.validation.Valid;
import lombok.AllArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
Expand All @@ -17,7 +18,7 @@ public class MailController {
private final MailService mailService;

@PostMapping("/sendMail")
public ResponseEntity<?>sendMail(@RequestBody SendMailRequest sendMailRequest) {
public ResponseEntity<?>sendMail(@Valid @RequestBody SendMailRequest sendMailRequest) {
return ResponseEntity.status(CREATED)
.body(new ApiResponse(mailService.sendMail(sendMailRequest),true));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,12 @@
import com.guildworkman.api.dto.requests.UpdateSkilledWorkerRequest;
import com.guildworkman.api.dto.responses.ApiResponse;
import com.guildworkman.api.services.ServiceUtils.SkilledWorkerService;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;
Expand All @@ -18,39 +22,40 @@
@RestController
@RequestMapping("/api/v1/skilledWorker")
@AllArgsConstructor
@Validated
public class SkilledWorkerController {

private final SkilledWorkerService skilledWorkerService;


@PostMapping("/registerSkilledWorker")
public ResponseEntity<?> registerSkilledWorker(@RequestBody RegistrationRequest registrationRequest) {
public ResponseEntity<?> registerSkilledWorker(@Valid @RequestBody RegistrationRequest registrationRequest) {
return ResponseEntity.status(CREATED)
.body(new ApiResponse
(skilledWorkerService.registerSkilledWorker(registrationRequest), true));
}
@PostMapping("/addSkill")
public ResponseEntity<?> addSkill(@RequestBody AddSkillRequest addSkillRequest) {
public ResponseEntity<?> addSkill(@Valid @RequestBody AddSkillRequest addSkillRequest) {
return ResponseEntity.status(CREATED)
.body(new ApiResponse
(skilledWorkerService.addSkill(addSkillRequest), true));
}
@GetMapping("/findById")
public ResponseEntity<?> findById(@RequestParam Long skilledWorkerId) {
public ResponseEntity<?> findById(@RequestParam @NotNull Long skilledWorkerId) {
return ResponseEntity.ok(skilledWorkerService.findById(skilledWorkerId));
}
@GetMapping("/findByFullName")
public ResponseEntity<?> findSkillByFullName(@RequestParam String skilledWorkerFullName) {
public ResponseEntity<?> findSkillByFullName(@RequestParam @NotBlank String skilledWorkerFullName) {
return ResponseEntity.ok(skilledWorkerService.findSkillByFullName(skilledWorkerFullName));
}
@PutMapping("/updateSkilledWorkerProfile")
public ResponseEntity<?> updateSkilledWorkerProfile(@RequestBody UpdateSkilledWorkerRequest request) {
public ResponseEntity<?> updateSkilledWorkerProfile(@Valid @RequestBody UpdateSkilledWorkerRequest request) {
return ResponseEntity
.ok(new ApiResponse(skilledWorkerService.updateSkilledWorkerProfile(request), true));
}

@PostMapping("/login")
public ResponseEntity<?> login(@RequestBody LoginRequest loginRequest) {
public ResponseEntity<?> login(@Valid @RequestBody LoginRequest loginRequest) {
return ResponseEntity.status(CREATED)
.body(new ApiResponse(skilledWorkerService.login(loginRequest), true));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,17 @@

import com.fasterxml.jackson.annotation.JsonProperty;
import com.guildworkman.api.data.constants.AppointmentStatus;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;

@Setter
@Getter
public class AcceptAppointmentRequest {
@NotNull
private Long appointmentId;
@JsonProperty("skilled_worker")
private Long Id;
@NotNull
private AppointmentStatus status;
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
package com.guildworkman.api.dto.requests;

import com.guildworkman.api.data.constants.Category;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;

@Setter
@Getter
public class AddSkillRequest {
private Long skillId;
@NotNull
private Long skilledWorkerId;
@NotBlank
private String skillName;
@NotNull
private Category category;

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.guildworkman.api.data.constants.AppointmentStatus;
import com.guildworkman.api.data.constants.Category;
import com.guildworkman.api.data.models.Client;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
Expand All @@ -14,10 +15,13 @@
@Getter
public class BookAppointmentRequest {

@NotNull
private Long clientId;
private AppointmentStatus status;
@NotNull
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
private LocalDateTime scheduleTime;
@NotNull
private Category category;

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
package com.guildworkman.api.dto.requests;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class ConsultationRequest {
@NotNull
private Long clientId;
@NotNull
private Long workerId;
@NotBlank
private String details;
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
package com.guildworkman.api.dto.requests;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;

@Setter
@Getter
public class EditReviewRequest {
@NotNull
private Long reviewId;
@NotNull
private Long clientId;
@NotBlank
private String review;
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
package com.guildworkman.api.dto.requests;

import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class LoginRequest {

@NotBlank
@Email
private String email;

@NotBlank
private String password;
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
package com.guildworkman.api.dto.requests;

import com.guildworkman.api.data.models.SkilledWorker;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;

@Setter
@Getter
public class PostReviewRequest {
@NotNull
private SkilledWorker skilledWorker;
@NotBlank
private String review;
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.guildworkman.api.dto.requests;

import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
Expand All @@ -8,8 +11,16 @@
@Getter
@ToString
public class RegistrationRequest {

@NotBlank
private String fullName;

@NotBlank
@Email
private String email;

@NotBlank
@Size(min = 8, message = "password must be at least 8 characters")
private String password;

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.guildworkman.api.dto.requests;

import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
Expand All @@ -8,8 +10,17 @@
@Getter
@NoArgsConstructor
public class SendMailRequest {

@NotBlank
@Email
private String recipientEmail;

@NotBlank
private String subject;

@NotBlank
private String recipientName;

@NotBlank
private String content;
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
package com.guildworkman.api.dto.requests;

import com.guildworkman.api.data.constants.AppointmentStatus;
import jakarta.validation.constraints.Positive;
import lombok.Getter;
import lombok.Setter;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/** Partial update: every field is an optional patch, so nothing here is {@code @NotNull}. */
@Setter
@Getter
public class UpdateAppointmentRequest {
private Long clientId;
@Positive
private BigDecimal amount;
private LocalDateTime startTime;
private AppointmentStatus status;
Expand Down
Loading
Loading