100 lines
2.4 KiB
Go
100 lines
2.4 KiB
Go
package bill
|
|
|
|
import (
|
|
"context"
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
type BillHandler struct {
|
|
billService BillService
|
|
}
|
|
|
|
func NewBillHandler(billRoute fiber.Router, bs BillService) {
|
|
handler := &BillHandler{
|
|
billService: bs,
|
|
}
|
|
|
|
billRoute.Get("/:year?/:month?/:day?", handler.checkGetBillsParamsMiddleware, handler.getBills)
|
|
billRoute.Post("/", handler.createBill)
|
|
billRoute.Put("/", handler.updateBill)
|
|
billRoute.Delete("/", handler.deleteBill)
|
|
}
|
|
|
|
func (h *BillHandler) getBills(c *fiber.Ctx) error {
|
|
customContext, cancel := context.WithCancel(context.Background())
|
|
defer cancel()
|
|
|
|
bDate := c.Locals("bDate").(BDate)
|
|
|
|
bills, err := h.billService.GetBills(customContext, bDate)
|
|
if err != nil {
|
|
return c.Status(fiber.StatusInternalServerError).JSON(&fiber.Map{
|
|
"status": "fail",
|
|
"message": err.Error(),
|
|
})
|
|
}
|
|
return c.Status(fiber.StatusOK).JSON(&fiber.Map{
|
|
"status": "success",
|
|
"data": bills,
|
|
})
|
|
|
|
}
|
|
|
|
func (h *BillHandler) createBill(c *fiber.Ctx) error {
|
|
customContext, cancel := context.WithCancel(context.Background())
|
|
defer cancel()
|
|
|
|
bill := &Bill{}
|
|
if err := c.BodyParser(bill); err != nil {
|
|
return c.Status(fiber.StatusBadRequest).JSON(&fiber.Map{
|
|
"status": "fail",
|
|
"message": err.Error(),
|
|
})
|
|
}
|
|
|
|
err := h.billService.CreateBill(customContext, bill)
|
|
if err != nil {
|
|
return c.Status(fiber.StatusInternalServerError).JSON(&fiber.Map{
|
|
"status": "fail",
|
|
"message": err.Error(),
|
|
})
|
|
}
|
|
|
|
return c.Status(fiber.StatusOK).JSON(&fiber.Map{
|
|
"status": "success",
|
|
"message": "Bill has been created successfully!",
|
|
})
|
|
}
|
|
|
|
func (h *BillHandler) updateBill(c *fiber.Ctx) error {
|
|
customContext, cancel := context.WithCancel(context.Background())
|
|
defer cancel()
|
|
// TODO(): update data
|
|
err := h.billService.UpdateBill(customContext, &Bill{})
|
|
if err != nil {
|
|
return c.Status(fiber.StatusInternalServerError).JSON(&fiber.Map{
|
|
"status": "fail",
|
|
"message": err.Error(),
|
|
})
|
|
}
|
|
return c.Status(fiber.StatusOK).JSON(&fiber.Map{
|
|
"status": "success",
|
|
})
|
|
}
|
|
|
|
func (h *BillHandler) deleteBill(c *fiber.Ctx) error {
|
|
customContext, cancel := context.WithCancel(context.Background())
|
|
defer cancel()
|
|
// TODO(): delete data id
|
|
err := h.billService.DeleteBill(customContext, 0)
|
|
if err != nil {
|
|
return c.Status(fiber.StatusInternalServerError).JSON(&fiber.Map{
|
|
"status": "fail",
|
|
"message": err.Error(),
|
|
})
|
|
}
|
|
return c.Status(fiber.StatusOK).JSON(&fiber.Map{
|
|
"status": "success",
|
|
})
|
|
}
|