Files
backend_fiesta/controllers/deliveriesController.go
2026-05-25 11:52:26 +05:30

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,
})
}