262 lines
6.6 KiB
Go
262 lines
6.6 KiB
Go
package controllers
|
|
|
|
import (
|
|
"net/http"
|
|
"strconv"
|
|
|
|
"nearle/models"
|
|
"nearle/services"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
type DeliveriesController struct {
|
|
deliveriesService services.DeliveriesService
|
|
}
|
|
|
|
func NewDeliveriesController(deliveriesService services.DeliveriesService) *DeliveriesController {
|
|
return &DeliveriesController{deliveriesService: deliveriesService}
|
|
}
|
|
|
|
func (ctl *DeliveriesController) CreateDeliveries(c *fiber.Ctx) error {
|
|
var deliveries []models.Deliveries
|
|
|
|
if err := c.BodyParser(&deliveries); err != nil {
|
|
return c.Status(http.StatusBadRequest).JSON(fiber.Map{
|
|
"code": 400,
|
|
"status": false,
|
|
"message": "Invalid request body",
|
|
})
|
|
}
|
|
|
|
err := ctl.deliveriesService.CreateDeliveriesService(deliveries)
|
|
if err != nil {
|
|
return c.Status(http.StatusInternalServerError).JSON(fiber.Map{
|
|
"code": 500,
|
|
"status": false,
|
|
"message": err.Error(),
|
|
})
|
|
}
|
|
|
|
return c.Status(http.StatusOK).JSON(fiber.Map{
|
|
"code": 200,
|
|
"status": true,
|
|
"message": "Deliveries created successfully",
|
|
})
|
|
}
|
|
|
|
func (ctl *DeliveriesController) UpdateDelivery(c *fiber.Ctx) error {
|
|
var data models.UpdateDeliveryStatus
|
|
|
|
if err := c.BodyParser(&data); err != nil {
|
|
return c.Status(http.StatusBadRequest).JSON(fiber.Map{
|
|
"code": http.StatusBadRequest,
|
|
"message": "Invalid request body",
|
|
"status": false,
|
|
})
|
|
}
|
|
|
|
err := ctl.deliveriesService.UpdateDeliveryService(data)
|
|
if err != nil {
|
|
return c.Status(http.StatusConflict).JSON(fiber.Map{
|
|
"code": http.StatusConflict,
|
|
"message": err.Error(),
|
|
"status": false,
|
|
})
|
|
}
|
|
|
|
return c.Status(http.StatusCreated).JSON(fiber.Map{
|
|
"code": http.StatusCreated,
|
|
"message": "Success",
|
|
"status": true,
|
|
})
|
|
}
|
|
|
|
func (ctl *DeliveriesController) GetDeliverySummary(c *fiber.Ctx) error {
|
|
tid, _ := strconv.Atoi(c.Query("tenantid"))
|
|
pid, _ := strconv.Atoi(c.Query("partnerid"))
|
|
uid, _ := strconv.Atoi(c.Query("userid"))
|
|
aid, _ := strconv.Atoi(c.Query("applocationid"))
|
|
lid, _ := strconv.Atoi(c.Query("locationid"))
|
|
fdate := c.Query("fromdate")
|
|
tdate := c.Query("todate")
|
|
|
|
data, err := ctl.deliveriesService.GetDeliverySummary(tid, pid, uid, aid, lid, fdate, tdate)
|
|
if err != nil {
|
|
return c.Status(http.StatusInternalServerError).JSON(fiber.Map{
|
|
"code": http.StatusInternalServerError,
|
|
"message": err.Error(),
|
|
"status": false,
|
|
})
|
|
}
|
|
|
|
return c.Status(http.StatusOK).JSON(fiber.Map{
|
|
"code": http.StatusOK,
|
|
"message": "Success",
|
|
"status": true,
|
|
"details": data,
|
|
})
|
|
}
|
|
|
|
func (ctl *DeliveriesController) GetDeliveryInsight(c *fiber.Ctx) error {
|
|
// Get tenantid from query param
|
|
tenantIDStr := c.Query("tenantid")
|
|
tenantID, _ := strconv.Atoi(tenantIDStr)
|
|
|
|
// Call service with tenantID
|
|
locations, err := ctl.deliveriesService.GetDeliveryInsightService(tenantID)
|
|
if err != nil {
|
|
return c.Status(http.StatusConflict).JSON(fiber.Map{
|
|
"code": http.StatusConflict,
|
|
"message": err.Error(),
|
|
"status": false,
|
|
})
|
|
}
|
|
|
|
return c.Status(http.StatusOK).JSON(fiber.Map{
|
|
"code": http.StatusOK,
|
|
"message": "Success",
|
|
"status": true,
|
|
"details": locations,
|
|
})
|
|
}
|
|
|
|
func (ctl *DeliveriesController) GetLocationDeliverySummary(c *fiber.Ctx) error {
|
|
tenantIDStr := c.Query("tenantid")
|
|
tenantID, _ := strconv.Atoi(tenantIDStr)
|
|
|
|
data, err := ctl.deliveriesService.GetLocationDeliverySummary(tenantID)
|
|
if err != nil {
|
|
return c.Status(http.StatusInternalServerError).JSON(fiber.Map{
|
|
"status": false,
|
|
"code": http.StatusInternalServerError,
|
|
"message": err.Error(),
|
|
})
|
|
}
|
|
|
|
return c.JSON(fiber.Map{
|
|
"code": http.StatusOK,
|
|
"message": "Success",
|
|
"status": true,
|
|
"details": data,
|
|
})
|
|
}
|
|
|
|
func (ctl *DeliveriesController) GetReportSummary(c *fiber.Ctx) error {
|
|
tid, _ := strconv.Atoi(c.Query("tenantid"))
|
|
pid, _ := strconv.Atoi(c.Query("partnerid"))
|
|
uid, _ := strconv.Atoi(c.Query("userid"))
|
|
aid, _ := strconv.Atoi(c.Query("applocationid"))
|
|
fdate := c.Query("fromdate")
|
|
tdate := c.Query("todate")
|
|
|
|
data, err := ctl.deliveriesService.GetReportSummary(tid, pid, uid, aid, fdate, tdate)
|
|
if err != nil {
|
|
return c.JSON(fiber.Map{
|
|
"code": http.StatusInternalServerError,
|
|
"message": err.Error(),
|
|
"status": false,
|
|
})
|
|
}
|
|
|
|
return c.JSON(fiber.Map{
|
|
"code": http.StatusOK,
|
|
"message": "Success",
|
|
"status": true,
|
|
"details": data,
|
|
})
|
|
}
|
|
|
|
func (ctl *DeliveriesController) GetRiderSummary(c *fiber.Ctx) error {
|
|
aid, _ := strconv.Atoi(c.Query("applocationid"))
|
|
pid, _ := strconv.Atoi(c.Query("partnerid"))
|
|
tid, _ := strconv.Atoi(c.Query("tenantid"))
|
|
fdate := c.Query("fromdate")
|
|
tdate := c.Query("todate")
|
|
|
|
data, err := ctl.deliveriesService.GetRiderSummary(aid, pid, tid, fdate, tdate)
|
|
if err != nil {
|
|
return c.JSON(fiber.Map{
|
|
"code": http.StatusInternalServerError,
|
|
"message": err.Error(),
|
|
"status": false,
|
|
})
|
|
}
|
|
|
|
return c.JSON(fiber.Map{
|
|
"code": http.StatusOK,
|
|
"message": "Success",
|
|
"status": true,
|
|
"details": data,
|
|
})
|
|
}
|
|
|
|
func (ctl *DeliveriesController) GetDeliveries(c *fiber.Ctx) error {
|
|
|
|
pid, _ := strconv.Atoi(c.Query("partnerid"))
|
|
tid, _ := strconv.Atoi(c.Query("tenantid"))
|
|
uid, _ := strconv.Atoi(c.Query("userid"))
|
|
cid, _ := strconv.Atoi(c.Query("customerid"))
|
|
aid, _ := strconv.Atoi(c.Query("applocationid"))
|
|
aud, _ := strconv.Atoi(c.Query("appuserid"))
|
|
lid, _ := strconv.Atoi(c.Query("locationid")) // 👈 NEW
|
|
|
|
pageno, _ := strconv.Atoi(c.Query("pageno", "1"))
|
|
pagesize, _ := strconv.Atoi(c.Query("pagesize", ""))
|
|
|
|
fdate := c.Query("fromdate")
|
|
tdate := c.Query("todate")
|
|
stat := c.Query("status")
|
|
keyword := c.Query("keyword")
|
|
|
|
info := models.DeliveryQuery{
|
|
Partnerid: pid,
|
|
Tenantid: tid,
|
|
UserID: uid,
|
|
Customerid: cid,
|
|
Appuserid: aud,
|
|
Applocationid: aid,
|
|
Locationid: lid, // 👈 NEW
|
|
Fromdate: fdate,
|
|
ToDate: tdate,
|
|
Status: stat,
|
|
Pageno: pageno,
|
|
Pagesize: pagesize,
|
|
Keyword: keyword,
|
|
}
|
|
|
|
result := ctl.deliveriesService.GetDeliveries(info)
|
|
if result == nil {
|
|
result = []models.Deliveryinfo{}
|
|
}
|
|
|
|
return c.JSON(fiber.Map{
|
|
"code": http.StatusOK,
|
|
"message": "Success",
|
|
"status": true,
|
|
"details": result,
|
|
})
|
|
}
|
|
|
|
func (ctl *DeliveriesController) GetDeliveryQueues(c *fiber.Ctx) error {
|
|
fdate := c.Query("fromdate")
|
|
tdate := c.Query("todate")
|
|
uid, _ := strconv.Atoi(c.Query("userid"))
|
|
|
|
result, err := ctl.deliveriesService.GetDeliveryQueues(uid, fdate, tdate)
|
|
if err != nil {
|
|
return c.Status(http.StatusInternalServerError).JSON(fiber.Map{
|
|
"code": http.StatusInternalServerError,
|
|
"message": err.Error(),
|
|
"status": false,
|
|
})
|
|
}
|
|
|
|
return c.JSON(fiber.Map{
|
|
"code": http.StatusOK,
|
|
"message": "Success",
|
|
"status": true,
|
|
"details": result,
|
|
})
|
|
}
|