From 7c04cf2244a6a7db056ebf9678111b836acd6be0 Mon Sep 17 00:00:00 2001 From: Kaveesha529 Date: Tue, 22 Jul 2025 16:47:04 +0530 Subject: [PATCH 1/4] feat(delivery management): created REST Api for delivery management table --- .../controller/DeliveryController.java | 27 +++++++++++++++ .../dto/DeliveryRecordsDto.java | 15 +++++++++ .../repository/DeliveryRepo.java | 33 +++++++++++++++++++ .../service/DeliveryService.java | 20 +++++++++++ 4 files changed, 95 insertions(+) create mode 100644 src/main/java/com/pentagon/Quicky_Backend/controller/DeliveryController.java create mode 100644 src/main/java/com/pentagon/Quicky_Backend/dto/DeliveryRecordsDto.java create mode 100644 src/main/java/com/pentagon/Quicky_Backend/repository/DeliveryRepo.java create mode 100644 src/main/java/com/pentagon/Quicky_Backend/service/DeliveryService.java diff --git a/src/main/java/com/pentagon/Quicky_Backend/controller/DeliveryController.java b/src/main/java/com/pentagon/Quicky_Backend/controller/DeliveryController.java new file mode 100644 index 0000000..b698500 --- /dev/null +++ b/src/main/java/com/pentagon/Quicky_Backend/controller/DeliveryController.java @@ -0,0 +1,27 @@ +package com.pentagon.Quicky_Backend.controller; + +import com.pentagon.Quicky_Backend.dto.DeliveryRecordsDto; +import com.pentagon.Quicky_Backend.dto.DriverProfilesDto; +import com.pentagon.Quicky_Backend.service.DeliveryService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@CrossOrigin(origins = "http://localhost:5173") +public class DeliveryController { + + @Autowired + private DeliveryService deliveryService; + + @GetMapping("/delivery_records") + public ResponseEntity> getDeliveryRecords() { + List deliveries = deliveryService.getDeliveryRecords(); + return new ResponseEntity<>(deliveries, HttpStatus.OK); + } +} diff --git a/src/main/java/com/pentagon/Quicky_Backend/dto/DeliveryRecordsDto.java b/src/main/java/com/pentagon/Quicky_Backend/dto/DeliveryRecordsDto.java new file mode 100644 index 0000000..67d4629 --- /dev/null +++ b/src/main/java/com/pentagon/Quicky_Backend/dto/DeliveryRecordsDto.java @@ -0,0 +1,15 @@ +package com.pentagon.Quicky_Backend.dto; + +import java.time.LocalDate; + +public interface DeliveryRecordsDto { + Long getDeliveryId(); + Double getDeliveryFee(); + String getPickupLocation(); + String getDropOffLocation(); + String getDeliveryStatus(); + LocalDate getDeliveryDate(); + String getFirstName(); + String getLastName(); + Double getRating(); +} diff --git a/src/main/java/com/pentagon/Quicky_Backend/repository/DeliveryRepo.java b/src/main/java/com/pentagon/Quicky_Backend/repository/DeliveryRepo.java new file mode 100644 index 0000000..1ab91e7 --- /dev/null +++ b/src/main/java/com/pentagon/Quicky_Backend/repository/DeliveryRepo.java @@ -0,0 +1,33 @@ +package com.pentagon.Quicky_Backend.repository; + +import com.pentagon.Quicky_Backend.dto.DeliveryRecordsDto; +import com.pentagon.Quicky_Backend.entity.DeliveryOrder; +import com.pentagon.Quicky_Backend.entity.DriverDetails; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface DeliveryRepo extends JpaRepository { + + @Query(value = """ + SELECT + d.delivery_id AS deliveryId, + d.delivery_fee AS deliveryFee, + d.pick_up_location AS pickupLocation, + d.drop_off_location AS dropOffLocation, + d.delivery_status AS deliveryStatus, + CAST(d.start_time AS DATE) AS deliveryDate, + dd.first_name AS firstName, + dd.last_name AS lastName, + r.rating_count AS rating + FROM delivery_order d + LEFT JOIN driver_details dd ON d.user_details_id = dd.user_details_id + LEFT JOIN rating r ON d.delivery_id = r.delivery_id + ORDER BY d.delivery_id DESC +""", nativeQuery = true) + List getDeliveryRecords(); + +} diff --git a/src/main/java/com/pentagon/Quicky_Backend/service/DeliveryService.java b/src/main/java/com/pentagon/Quicky_Backend/service/DeliveryService.java new file mode 100644 index 0000000..caaf7ac --- /dev/null +++ b/src/main/java/com/pentagon/Quicky_Backend/service/DeliveryService.java @@ -0,0 +1,20 @@ +package com.pentagon.Quicky_Backend.service; + +import com.pentagon.Quicky_Backend.dto.DeliveryRecordsDto; +import com.pentagon.Quicky_Backend.repository.DeliveryRepo; +import com.pentagon.Quicky_Backend.repository.DriverDetailsRepo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class DeliveryService { + + @Autowired + private DeliveryRepo deliveryRepo; + + public List getDeliveryRecords() { + return deliveryRepo.getDeliveryRecords(); + } +} From 7608539e4d05b5cd5d67c9e31f794f4764e046c2 Mon Sep 17 00:00:00 2001 From: Kaveesha529 Date: Tue, 22 Jul 2025 20:44:26 +0530 Subject: [PATCH 2/4] feat(delivery distribution): created REST Api for delivery distribution area chart --- .../controller/DeliveryController.java | 7 +++++++ .../Quicky_Backend/dto/DeliveriesCountDto.java | 8 ++++++++ .../Quicky_Backend/repository/DeliveryRepo.java | 14 ++++++++++++++ .../Quicky_Backend/service/DeliveryService.java | 5 +++++ 4 files changed, 34 insertions(+) create mode 100644 src/main/java/com/pentagon/Quicky_Backend/dto/DeliveriesCountDto.java diff --git a/src/main/java/com/pentagon/Quicky_Backend/controller/DeliveryController.java b/src/main/java/com/pentagon/Quicky_Backend/controller/DeliveryController.java index b698500..066b8c1 100644 --- a/src/main/java/com/pentagon/Quicky_Backend/controller/DeliveryController.java +++ b/src/main/java/com/pentagon/Quicky_Backend/controller/DeliveryController.java @@ -1,5 +1,6 @@ package com.pentagon.Quicky_Backend.controller; +import com.pentagon.Quicky_Backend.dto.DeliveriesCountDto; import com.pentagon.Quicky_Backend.dto.DeliveryRecordsDto; import com.pentagon.Quicky_Backend.dto.DriverProfilesDto; import com.pentagon.Quicky_Backend.service.DeliveryService; @@ -24,4 +25,10 @@ public ResponseEntity> getDeliveryRecords() { List deliveries = deliveryService.getDeliveryRecords(); return new ResponseEntity<>(deliveries, HttpStatus.OK); } + + @GetMapping("/deliveries_count") + public ResponseEntity> getDeliveriesCount() { + List deliveries = deliveryService.getDeliveriesCount(); + return new ResponseEntity<>(deliveries, HttpStatus.OK); + } } diff --git a/src/main/java/com/pentagon/Quicky_Backend/dto/DeliveriesCountDto.java b/src/main/java/com/pentagon/Quicky_Backend/dto/DeliveriesCountDto.java new file mode 100644 index 0000000..4443493 --- /dev/null +++ b/src/main/java/com/pentagon/Quicky_Backend/dto/DeliveriesCountDto.java @@ -0,0 +1,8 @@ +package com.pentagon.Quicky_Backend.dto; + +import java.time.LocalDate; + +public interface DeliveriesCountDto { + LocalDate getDeliveryDate(); + Long getDeliveriesCount(); +} diff --git a/src/main/java/com/pentagon/Quicky_Backend/repository/DeliveryRepo.java b/src/main/java/com/pentagon/Quicky_Backend/repository/DeliveryRepo.java index 1ab91e7..7afd6c4 100644 --- a/src/main/java/com/pentagon/Quicky_Backend/repository/DeliveryRepo.java +++ b/src/main/java/com/pentagon/Quicky_Backend/repository/DeliveryRepo.java @@ -1,5 +1,6 @@ package com.pentagon.Quicky_Backend.repository; +import com.pentagon.Quicky_Backend.dto.DeliveriesCountDto; import com.pentagon.Quicky_Backend.dto.DeliveryRecordsDto; import com.pentagon.Quicky_Backend.entity.DeliveryOrder; import com.pentagon.Quicky_Backend.entity.DriverDetails; @@ -30,4 +31,17 @@ public interface DeliveryRepo extends JpaRepository { """, nativeQuery = true) List getDeliveryRecords(); + @Query(value = """ + SELECT + CAST(d.start_time AS DATE) AS deliveryDate, + COUNT(d.delivery_id) AS deliveriesCount + FROM + delivery_order d + GROUP BY + CAST(d.start_time AS DATE) + ORDER BY + deliveryDate + """, nativeQuery = true) + List getDeliveriesCount(); + } diff --git a/src/main/java/com/pentagon/Quicky_Backend/service/DeliveryService.java b/src/main/java/com/pentagon/Quicky_Backend/service/DeliveryService.java index caaf7ac..d604f3e 100644 --- a/src/main/java/com/pentagon/Quicky_Backend/service/DeliveryService.java +++ b/src/main/java/com/pentagon/Quicky_Backend/service/DeliveryService.java @@ -1,5 +1,6 @@ package com.pentagon.Quicky_Backend.service; +import com.pentagon.Quicky_Backend.dto.DeliveriesCountDto; import com.pentagon.Quicky_Backend.dto.DeliveryRecordsDto; import com.pentagon.Quicky_Backend.repository.DeliveryRepo; import com.pentagon.Quicky_Backend.repository.DriverDetailsRepo; @@ -17,4 +18,8 @@ public class DeliveryService { public List getDeliveryRecords() { return deliveryRepo.getDeliveryRecords(); } + + public List getDeliveriesCount() { + return deliveryRepo.getDeliveriesCount(); + } } From 27957772ceaa148896e8610e9cff2704b855cbd6 Mon Sep 17 00:00:00 2001 From: Kaveesha529 Date: Tue, 22 Jul 2025 21:21:20 +0530 Subject: [PATCH 3/4] feat(delivery distribution): created REST Api for today delivery distribution table --- .../controller/DeliveryController.java | 6 ++++++ .../repository/DeliveryRepo.java | 19 +++++++++++++++++++ .../service/DeliveryService.java | 4 ++++ 3 files changed, 29 insertions(+) diff --git a/src/main/java/com/pentagon/Quicky_Backend/controller/DeliveryController.java b/src/main/java/com/pentagon/Quicky_Backend/controller/DeliveryController.java index 066b8c1..50f1023 100644 --- a/src/main/java/com/pentagon/Quicky_Backend/controller/DeliveryController.java +++ b/src/main/java/com/pentagon/Quicky_Backend/controller/DeliveryController.java @@ -31,4 +31,10 @@ public ResponseEntity> getDeliveriesCount() { List deliveries = deliveryService.getDeliveriesCount(); return new ResponseEntity<>(deliveries, HttpStatus.OK); } + + @GetMapping("/delivery_records/today") + public ResponseEntity> getDeliveryRecordsToday() { + List deliveries = deliveryService.getDeliveryRecordsToday(); + return new ResponseEntity<>(deliveries, HttpStatus.OK); + } } diff --git a/src/main/java/com/pentagon/Quicky_Backend/repository/DeliveryRepo.java b/src/main/java/com/pentagon/Quicky_Backend/repository/DeliveryRepo.java index 7afd6c4..7e50a9f 100644 --- a/src/main/java/com/pentagon/Quicky_Backend/repository/DeliveryRepo.java +++ b/src/main/java/com/pentagon/Quicky_Backend/repository/DeliveryRepo.java @@ -44,4 +44,23 @@ public interface DeliveryRepo extends JpaRepository { """, nativeQuery = true) List getDeliveriesCount(); + @Query(value = """ + SELECT + d.delivery_id AS deliveryId, + d.delivery_fee AS deliveryFee, + d.pick_up_location AS pickupLocation, + d.drop_off_location AS dropOffLocation, + d.delivery_status AS deliveryStatus, + CAST(d.start_time AS DATE) AS deliveryDate, + dd.first_name AS firstName, + dd.last_name AS lastName, + r.rating_count AS rating + FROM delivery_order d + LEFT JOIN driver_details dd ON d.user_details_id = dd.user_details_id + LEFT JOIN rating r ON d.delivery_id = r.delivery_id + WHERE CAST(d.start_time AS DATE) = CURRENT_DATE + ORDER BY d.delivery_id DESC +""", nativeQuery = true) + List getDeliveryRecordsToday(); + } diff --git a/src/main/java/com/pentagon/Quicky_Backend/service/DeliveryService.java b/src/main/java/com/pentagon/Quicky_Backend/service/DeliveryService.java index d604f3e..4ceb74a 100644 --- a/src/main/java/com/pentagon/Quicky_Backend/service/DeliveryService.java +++ b/src/main/java/com/pentagon/Quicky_Backend/service/DeliveryService.java @@ -22,4 +22,8 @@ public List getDeliveryRecords() { public List getDeliveriesCount() { return deliveryRepo.getDeliveriesCount(); } + + public List getDeliveryRecordsToday() { + return deliveryRepo.getDeliveryRecordsToday(); + } } From 7cca737af4408d9ead5b73afa1c79db0f4427db8 Mon Sep 17 00:00:00 2001 From: Kaveesha529 Date: Wed, 23 Jul 2025 00:55:49 +0530 Subject: [PATCH 4/4] feat(realTimeDriverLocation): created REST Api for realTimeDriverLocation --- .../controller/DriverLocationController.java | 25 +++++++++++++++++++ .../Quicky_Backend/dto/DriverLocationDto.java | 6 +++++ .../repository/DriverLocationRepo.java | 25 +++++++++++++++++++ .../service/DriverLocationService.java | 19 ++++++++++++++ 4 files changed, 75 insertions(+) create mode 100644 src/main/java/com/pentagon/Quicky_Backend/controller/DriverLocationController.java create mode 100644 src/main/java/com/pentagon/Quicky_Backend/dto/DriverLocationDto.java create mode 100644 src/main/java/com/pentagon/Quicky_Backend/repository/DriverLocationRepo.java create mode 100644 src/main/java/com/pentagon/Quicky_Backend/service/DriverLocationService.java diff --git a/src/main/java/com/pentagon/Quicky_Backend/controller/DriverLocationController.java b/src/main/java/com/pentagon/Quicky_Backend/controller/DriverLocationController.java new file mode 100644 index 0000000..78a01a6 --- /dev/null +++ b/src/main/java/com/pentagon/Quicky_Backend/controller/DriverLocationController.java @@ -0,0 +1,25 @@ +package com.pentagon.Quicky_Backend.controller; + +import com.pentagon.Quicky_Backend.dto.DriverLocationDto; +import com.pentagon.Quicky_Backend.service.DriverLocationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@CrossOrigin(origins = "http://localhost:5173") +public class DriverLocationController { + + @Autowired + private DriverLocationService driverLocationService; + + @GetMapping("/search-driver-location/{userId}") + public ResponseEntity> getDriverLocation(@PathVariable Integer userId) { + List drivers = driverLocationService.getDriverLocation(userId); + return new ResponseEntity<>(drivers, HttpStatus.OK); + } + +} \ No newline at end of file diff --git a/src/main/java/com/pentagon/Quicky_Backend/dto/DriverLocationDto.java b/src/main/java/com/pentagon/Quicky_Backend/dto/DriverLocationDto.java new file mode 100644 index 0000000..fdeb499 --- /dev/null +++ b/src/main/java/com/pentagon/Quicky_Backend/dto/DriverLocationDto.java @@ -0,0 +1,6 @@ +package com.pentagon.Quicky_Backend.dto; + +public interface DriverLocationDto { + Double getCurrentLatitude(); + Double getCurrentLongitude(); +} diff --git a/src/main/java/com/pentagon/Quicky_Backend/repository/DriverLocationRepo.java b/src/main/java/com/pentagon/Quicky_Backend/repository/DriverLocationRepo.java new file mode 100644 index 0000000..4bcb827 --- /dev/null +++ b/src/main/java/com/pentagon/Quicky_Backend/repository/DriverLocationRepo.java @@ -0,0 +1,25 @@ +package com.pentagon.Quicky_Backend.repository; + +import com.pentagon.Quicky_Backend.entity.DriverLocation; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; +import org.springframework.data.jpa.repository.Query; +import com.pentagon.Quicky_Backend.dto.*; + +import java.util.List; + +@Repository +public interface DriverLocationRepo extends JpaRepository { + + @Query(value = """ + SELECT + dl.current_latitude AS currentLatitude, + dl.current_longitude AS currentLongitude + FROM driver_location dl + WHERE dl.user_id = :userId + ORDER BY dl.driver_location_id + """, nativeQuery = true) + List getDriverLocation(@Param("userId") Integer userId); + +} diff --git a/src/main/java/com/pentagon/Quicky_Backend/service/DriverLocationService.java b/src/main/java/com/pentagon/Quicky_Backend/service/DriverLocationService.java new file mode 100644 index 0000000..1198f9a --- /dev/null +++ b/src/main/java/com/pentagon/Quicky_Backend/service/DriverLocationService.java @@ -0,0 +1,19 @@ +package com.pentagon.Quicky_Backend.service; + +import com.pentagon.Quicky_Backend.dto.DriverLocationDto; +import com.pentagon.Quicky_Backend.repository.DriverLocationRepo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class DriverLocationService { + + @Autowired + private DriverLocationRepo driverLocationRepo; + + public List getDriverLocation(Integer userId) { + return driverLocationRepo.getDriverLocation(userId); + } +}