From 54b4c4a42a969e1629627d7cdcd67a85ac175ae1 Mon Sep 17 00:00:00 2001 From: Petr Rudichev <petrrudichev@gmail.com> Date: Wed, 19 Feb 2025 17:37:27 +0300 Subject: [PATCH] feat: added controller --- .../controller/AuthorizationController.java | 27 ++++++++ .../nto/controller/EmployeeController.java | 69 +++++++++++++++++++ .../nto/controller/OfficeController.java | 50 ++++++++++++++ .../nto/controller/TerminalController.java | 47 +++++++++++++ 4 files changed, 193 insertions(+) create mode 100644 src/main/java/com/example/nto/controller/AuthorizationController.java create mode 100644 src/main/java/com/example/nto/controller/EmployeeController.java create mode 100644 src/main/java/com/example/nto/controller/OfficeController.java create mode 100644 src/main/java/com/example/nto/controller/TerminalController.java diff --git a/src/main/java/com/example/nto/controller/AuthorizationController.java b/src/main/java/com/example/nto/controller/AuthorizationController.java new file mode 100644 index 0000000..54aa07b --- /dev/null +++ b/src/main/java/com/example/nto/controller/AuthorizationController.java @@ -0,0 +1,27 @@ +package com.example.nto.controller; + +import com.example.nto.dto.entity.employee.EmployeeCreateDTO; +import com.example.nto.dto.entity.employee.EmployeeDTO; +import com.example.nto.service.EmployeeService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.core.Authentication; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequiredArgsConstructor +@RequestMapping("api/v1/authorization") +public class AuthorizationController { + private final EmployeeService employeeService; + + @GetMapping("/login") + public ResponseEntity<EmployeeDTO> login(Authentication authentication) { + return ResponseEntity.ok(employeeService.getByEmail(authentication.getName())); + } + + @PostMapping("/register") + public ResponseEntity<EmployeeDTO> registerEmployee(@RequestBody EmployeeCreateDTO employeeCreateDTO) { + return ResponseEntity.status(HttpStatus.CREATED).body(employeeService.create(employeeCreateDTO)); + } +} diff --git a/src/main/java/com/example/nto/controller/EmployeeController.java b/src/main/java/com/example/nto/controller/EmployeeController.java new file mode 100644 index 0000000..14535b4 --- /dev/null +++ b/src/main/java/com/example/nto/controller/EmployeeController.java @@ -0,0 +1,69 @@ +package com.example.nto.controller; + +import com.example.nto.dto.entity.employee.EmployeeDTO; +import com.example.nto.dto.entity.employee.EmployeeItemDTO; +import com.example.nto.service.EmployeeService; +import com.example.nto.service.PhotoService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequiredArgsConstructor +@RequestMapping("api/v1/employees") +public class EmployeeController { + private final EmployeeService employeeService; + private final PhotoService photoService; + + @GetMapping + public ResponseEntity<List<EmployeeItemDTO>> getAll() { + return ResponseEntity.ok(employeeService.getAll()); + } + + @GetMapping("/working/{isWorking}") + public ResponseEntity<List<EmployeeItemDTO>> getAllWorking(@PathVariable boolean isWorking) { + return ResponseEntity.ok(employeeService.getWorkingEmployee(isWorking)); + } + + @GetMapping("/{employeeId}") + public ResponseEntity<EmployeeDTO> getEmployeeById(@PathVariable long employeeId) { + return ResponseEntity.ok(employeeService.getById(employeeId)); + } + + @GetMapping("/email/{email}") + public ResponseEntity<EmployeeDTO> getEmployeeByEmail(@PathVariable String email) { + return ResponseEntity.ok(employeeService.getByEmail(email)); + } + + @GetMapping("/telephone/{telephone}") + public ResponseEntity<EmployeeDTO> getEmployeeByTelephone(@PathVariable String telephone) { + return ResponseEntity.ok(employeeService.getByTelephone(telephone)); + } + + @PutMapping("/{id}") + public ResponseEntity<EmployeeDTO> updateEmployee(@PathVariable long employeeId, @RequestBody EmployeeDTO employeeDTO) { + return ResponseEntity.ok(employeeService.update(employeeId, employeeDTO)); + } + + @DeleteMapping("/{id}") + public ResponseEntity<EmployeeDTO> deleteEmployeeById(@PathVariable long employeeId) { + employeeService.delete(employeeId); + return ResponseEntity.noContent().build(); + } + + @PatchMapping("/image/profile/{id}") + public ResponseEntity<Void> patchImageProfile(@PathVariable long employeeId, @RequestBody byte[] photo) { + String imageUrl = photoService.uploadProfilePhoto(employeeId, photo); + employeeService.patchProfileImage(employeeId, imageUrl); + return ResponseEntity.noContent().build(); + } + + @PatchMapping("/block/{id}/{blockStatus}") + public ResponseEntity<Void> patchImageProfile(@PathVariable long employeeId, @PathVariable boolean blockStatus) { + employeeService.patchBlockEmployee(employeeId, blockStatus); + return ResponseEntity.noContent().build(); + } + +} diff --git a/src/main/java/com/example/nto/controller/OfficeController.java b/src/main/java/com/example/nto/controller/OfficeController.java new file mode 100644 index 0000000..276935b --- /dev/null +++ b/src/main/java/com/example/nto/controller/OfficeController.java @@ -0,0 +1,50 @@ +package com.example.nto.controller; + +import com.example.nto.dto.entity.OfficeDTO; +import com.example.nto.service.OfficeService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequiredArgsConstructor +@RequestMapping("api/v1/offices") +public class OfficeController { + private final OfficeService officeService; + + @GetMapping + public ResponseEntity<List<OfficeDTO>> getAll() { + return ResponseEntity.ok(officeService.getAllOffice()); + } + + @GetMapping("/sorted/distance") + public ResponseEntity<List<OfficeDTO>> getAllSortedByDistance( + @RequestParam(name = "latitude") double latitude, + @RequestParam(name = "longitude") double longitude + ) { + return ResponseEntity.ok(officeService.getAllSortedDistance(latitude, longitude)); + } + + @GetMapping("/{officeId}") + public ResponseEntity<OfficeDTO> getById(@PathVariable long officeId) { + return ResponseEntity.ok(officeService.getById(officeId)); + } + + @PostMapping + public ResponseEntity<OfficeDTO> createOffice(@RequestBody OfficeDTO officeDTO) { + return ResponseEntity.ok(officeService.create(officeDTO)); + } + + @PutMapping("/{officeId}") + public ResponseEntity<OfficeDTO> updateOffice(@PathVariable long officeId, @RequestBody OfficeDTO officeDTO) { + return ResponseEntity.ok(officeService.update(officeId, officeDTO)); + } + + @DeleteMapping("/{officeId}") + public ResponseEntity<Void> deleteOffice(@PathVariable long officeId) { + officeService.delete(officeId); + return ResponseEntity.noContent().build(); + } +} diff --git a/src/main/java/com/example/nto/controller/TerminalController.java b/src/main/java/com/example/nto/controller/TerminalController.java new file mode 100644 index 0000000..5e3fa20 --- /dev/null +++ b/src/main/java/com/example/nto/controller/TerminalController.java @@ -0,0 +1,47 @@ +package com.example.nto.controller; + +import com.example.nto.dto.entity.TerminalDTO; +import com.example.nto.service.TerminalService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequiredArgsConstructor +@RequestMapping("api/v1/terminals") +public class TerminalController { + private final TerminalService terminalService; + + @GetMapping + public ResponseEntity<List<TerminalDTO>> getAll() { + return ResponseEntity.ok(terminalService.getAllTerminal()); + } + + @GetMapping("/{terminalId}") + public ResponseEntity<TerminalDTO> getTerminalById(@PathVariable long terminalId) { + return ResponseEntity.ok(terminalService.getById(terminalId)); + } + + @GetMapping("/check/{code}") + public ResponseEntity<TerminalDTO> checkCode(@PathVariable String code) { + return ResponseEntity.ok(terminalService.checkCode(code)); + } + + @PostMapping + public ResponseEntity<TerminalDTO> createTerminal(@RequestBody TerminalDTO terminalDTO) { + return ResponseEntity.ok(terminalService.create(terminalDTO)); + } + + @PutMapping("/{terminalId}") + public ResponseEntity<TerminalDTO> updateTerminal(@PathVariable long terminalId, @RequestBody TerminalDTO terminalDTO) { + return ResponseEntity.ok(terminalService.update(terminalId, terminalDTO)); + } + + @DeleteMapping("/{terminalId}") + public ResponseEntity<Void> deleteTerminal(@PathVariable long terminalId) { + terminalService.delete(terminalId); + return ResponseEntity.noContent().build(); + } +}