initial commit
This commit is contained in:
271
controllers/customerController.go
Normal file
271
controllers/customerController.go
Normal file
@@ -0,0 +1,271 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"nearle/models"
|
||||
"nearle/services"
|
||||
"net/http"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
)
|
||||
|
||||
type CustomerController struct {
|
||||
customerService services.CustomerService
|
||||
}
|
||||
|
||||
func NewCustomerController(customerService services.CustomerService) *CustomerController {
|
||||
return &CustomerController{customerService: customerService}
|
||||
}
|
||||
|
||||
func (ctl *CustomerController) GetCustomer(c *fiber.Ctx) error {
|
||||
cid, _ := strconv.Atoi(c.Query("customerid"))
|
||||
cno := c.Query("contactno")
|
||||
|
||||
result, err := ctl.customerService.GetCustomer(cid, cno)
|
||||
if err != nil {
|
||||
return c.Status(http.StatusInternalServerError).JSON(fiber.Map{
|
||||
"code": 500,
|
||||
"message": err.Error(),
|
||||
"status": false,
|
||||
"details": fiber.Map{},
|
||||
})
|
||||
}
|
||||
|
||||
return c.Status(http.StatusOK).JSON(fiber.Map{
|
||||
"code": http.StatusOK,
|
||||
"message": "Success",
|
||||
"status": true,
|
||||
"details": result,
|
||||
})
|
||||
}
|
||||
|
||||
func (ctl *CustomerController) UpdateCustomer(c *fiber.Ctx) error {
|
||||
var data models.Customers
|
||||
|
||||
if err := c.BodyParser(&data); err != nil {
|
||||
return c.Status(http.StatusBadRequest).JSON(fiber.Map{
|
||||
"status": false,
|
||||
"code": http.StatusBadRequest,
|
||||
"message": "Invalid request body",
|
||||
})
|
||||
}
|
||||
|
||||
result := ctl.customerService.UpdateCustomer(data)
|
||||
|
||||
if !result.Status {
|
||||
return c.Status(http.StatusConflict).JSON(fiber.Map{
|
||||
"status": false,
|
||||
"code": http.StatusConflict,
|
||||
"message": result.Message,
|
||||
})
|
||||
}
|
||||
|
||||
return c.Status(http.StatusAccepted).JSON(fiber.Map{
|
||||
"status": true,
|
||||
"code": http.StatusAccepted,
|
||||
"message": result.Message,
|
||||
})
|
||||
}
|
||||
|
||||
func (ctl *CustomerController) GetCustomerLocations(c *fiber.Ctx) error {
|
||||
cid, err := strconv.Atoi(c.Query("customerid"))
|
||||
if err != nil || cid == 0 {
|
||||
return c.Status(http.StatusBadRequest).JSON(fiber.Map{
|
||||
"code": http.StatusBadRequest,
|
||||
"status": false,
|
||||
"message": "Invalid customerid",
|
||||
"details": []interface{}{},
|
||||
})
|
||||
}
|
||||
|
||||
result := ctl.customerService.GetCustomerLocations(cid)
|
||||
return c.Status(result.Code).JSON(result)
|
||||
}
|
||||
|
||||
func (ctl *CustomerController) CreateCustomerLocation(c *fiber.Ctx) error {
|
||||
var data models.Customerlocations
|
||||
|
||||
if err := c.BodyParser(&data); err != nil {
|
||||
return c.Status(http.StatusBadRequest).JSON(fiber.Map{
|
||||
"status": false,
|
||||
"code": http.StatusBadRequest,
|
||||
"message": "Invalid request body",
|
||||
})
|
||||
}
|
||||
|
||||
id, err := ctl.customerService.CreateCustomerLocation(data)
|
||||
|
||||
if id == -1 {
|
||||
// Duplicate address
|
||||
return c.Status(http.StatusConflict).JSON(fiber.Map{
|
||||
"status": false,
|
||||
"code": http.StatusConflict,
|
||||
"message": "Address already exists",
|
||||
})
|
||||
}
|
||||
|
||||
if err != nil || id == 0 {
|
||||
return c.Status(http.StatusConflict).JSON(fiber.Map{
|
||||
"status": false,
|
||||
"code": http.StatusConflict,
|
||||
"message": "Failed",
|
||||
})
|
||||
}
|
||||
|
||||
result := ctl.customerService.GetCustomerLocations(id)
|
||||
return c.Status(result.Code).JSON(result)
|
||||
}
|
||||
|
||||
|
||||
func (ctl *CustomerController) CreateCustomerRequest(c *fiber.Ctx) error {
|
||||
var req models.CustomerRequest
|
||||
|
||||
if err := c.BodyParser(&req); err != nil {
|
||||
return c.Status(http.StatusBadRequest).JSON(fiber.Map{
|
||||
"code": http.StatusBadRequest,
|
||||
"message": "Invalid request body",
|
||||
"status": false,
|
||||
})
|
||||
}
|
||||
|
||||
now := time.Now()
|
||||
req.Created = now
|
||||
req.Updated = now
|
||||
|
||||
createdReq, err := ctl.customerService.CreateCustomerRequest(req)
|
||||
if err != nil {
|
||||
return c.Status(http.StatusInternalServerError).JSON(fiber.Map{
|
||||
"code": http.StatusInternalServerError,
|
||||
"message": "Failed to create customer request",
|
||||
"status": false,
|
||||
})
|
||||
}
|
||||
|
||||
return c.Status(http.StatusCreated).JSON(fiber.Map{
|
||||
"code": http.StatusCreated,
|
||||
"message": "Customer request created successfully",
|
||||
"status": true,
|
||||
"data": createdReq,
|
||||
})
|
||||
}
|
||||
|
||||
func (ctl *CustomerController) GetCustomerRequests(c *fiber.Ctx) error {
|
||||
customerIDStr := c.Query("customerid")
|
||||
pageNoStr := c.Query("pageno", "1")
|
||||
pageSizeStr := c.Query("pagesize", "10")
|
||||
|
||||
pageNo, _ := strconv.Atoi(pageNoStr)
|
||||
pageSize, _ := strconv.Atoi(pageSizeStr)
|
||||
|
||||
requests, total, err := ctl.customerService.GetCustomerRequests(customerIDStr, pageNo, pageSize)
|
||||
if err != nil {
|
||||
return c.Status(http.StatusInternalServerError).JSON(fiber.Map{
|
||||
"code": 500,
|
||||
"message": err.Error(),
|
||||
"status": false,
|
||||
})
|
||||
}
|
||||
|
||||
return c.Status(http.StatusOK).JSON(fiber.Map{
|
||||
"code": 200,
|
||||
"message": "Customer requests fetched successfully",
|
||||
"status": true,
|
||||
"data": requests,
|
||||
"total": total,
|
||||
})
|
||||
}
|
||||
|
||||
func (ctl *CustomerController) GetTenantCustomers(c *fiber.Ctx) error {
|
||||
tid, _ := strconv.Atoi(c.Query("tenantid"))
|
||||
lid, _ := strconv.Atoi(c.Query("locationid"))
|
||||
pageno, _ := strconv.Atoi(c.Query("pageno"))
|
||||
pagesize, _ := strconv.Atoi(c.Query("pagesize"))
|
||||
keyword := c.Query("keyword")
|
||||
|
||||
result := ctl.customerService.GetTenantCustomers(tid, lid, pageno, pagesize, keyword)
|
||||
|
||||
return c.JSON(fiber.Map{
|
||||
"code": http.StatusOK,
|
||||
"message": "Success",
|
||||
"status": true,
|
||||
"details": result,
|
||||
})
|
||||
}
|
||||
|
||||
func (ctl *CustomerController) SearchCustomer(c *fiber.Ctx) error {
|
||||
keyword := c.Query("keyword")
|
||||
tid, _ := strconv.Atoi(c.Query("tenantid"))
|
||||
|
||||
result := ctl.customerService.SearchCustomer(keyword, tid)
|
||||
|
||||
return c.JSON(fiber.Map{
|
||||
"code": http.StatusOK,
|
||||
"message": "Success",
|
||||
"status": true,
|
||||
"details": result,
|
||||
})
|
||||
}
|
||||
|
||||
func (ctl *CustomerController) CreateCustomer(c *fiber.Ctx) error {
|
||||
var data models.Customers
|
||||
|
||||
if err := c.BodyParser(&data); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
result, err := ctl.customerService.CreateCustomer(data)
|
||||
if err != nil {
|
||||
return c.JSON(fiber.Map{
|
||||
"status": false,
|
||||
"code": http.StatusConflict,
|
||||
"message": err.Error(),
|
||||
})
|
||||
}
|
||||
|
||||
return c.JSON(fiber.Map{
|
||||
"status": true,
|
||||
"code": http.StatusCreated,
|
||||
"message": "Successful",
|
||||
"details": result,
|
||||
})
|
||||
}
|
||||
|
||||
func (ctl *CustomerController) CustomerLogin(c *fiber.Ctx) error {
|
||||
var body struct {
|
||||
Contactno string `json:"contactno"`
|
||||
}
|
||||
|
||||
if err := c.BodyParser(&body); err != nil {
|
||||
return c.JSON(fiber.Map{
|
||||
"code": http.StatusBadRequest,
|
||||
"status": false,
|
||||
"message": "Invalid request",
|
||||
"error": err.Error(),
|
||||
})
|
||||
}
|
||||
|
||||
customer, err := ctl.customerService.LoginCustomer(body.Contactno)
|
||||
if err != nil {
|
||||
return c.Status(http.StatusInternalServerError).JSON(fiber.Map{
|
||||
"status": false,
|
||||
"message": "Failed to login",
|
||||
"error": err.Error(),
|
||||
})
|
||||
}
|
||||
|
||||
if customer == nil {
|
||||
return c.JSON(fiber.Map{
|
||||
"code": http.StatusConflict,
|
||||
"status": false,
|
||||
"message": "Account not found",
|
||||
})
|
||||
}
|
||||
|
||||
return c.JSON(fiber.Map{
|
||||
"code": http.StatusOK,
|
||||
"status": true,
|
||||
"message": "Success",
|
||||
"details": customer,
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user