Advertisement
erkayes935

transaction_controller

Dec 29th, 2024
1,493
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 2.20 KB | Source Code | 0 0
  1. package controller
  2.  
  3. import (
  4.     "challenge-goapi/model"
  5.     "challenge-goapi/usecase"
  6.     "net/http"
  7.  
  8.     "github.com/gin-gonic/gin"
  9. )
  10.  
  11. type TransactionController struct {
  12.     useCase usecase.TransactionUseCase
  13.     rg      *gin.RouterGroup
  14. }
  15.  
  16. func (t *TransactionController) createNewTransaction(g *gin.Context) {
  17.     var payloadBillDetail model.BillDetail
  18.     var payloadBillDetails model.BillDetails
  19.     if err := g.ShouldBindJSON(&payloadBillDetail); err != nil {
  20.         g.JSON(http.StatusBadRequest, gin.H{"err": err.Error()})
  21.         return
  22.     }
  23.     if err := g.ShouldBindJSON(&payloadBillDetails); err != nil {
  24.         g.JSON(http.StatusBadRequest, gin.H{"err": err.Error()})
  25.         return
  26.     }
  27.     transaction, _, err := t.useCase.CreateNewTransaction(payloadBillDetail, payloadBillDetails)
  28.     if err != nil {
  29.         g.JSON(http.StatusInternalServerError, gin.H{"err": "Failed to create new transaction"})
  30.         return
  31.     }
  32.  
  33.     g.JSON(http.StatusCreated, model.Transaction{Message: "New Transaction has been added to database successfully", Data: transaction})
  34. }
  35.  
  36. func (t *TransactionController) getAllTransaction(g *gin.Context) {
  37.     transactions, err := t.useCase.FindAllTransaction()
  38.     if err != nil {
  39.         g.JSON(http.StatusInternalServerError, gin.H{"err": "Failed to retrieve data transactions"})
  40.         return
  41.     }
  42.  
  43.     if len(transactions) > 0 {
  44.         g.JSON(http.StatusOK, model.AllTransaction{Message: "List of Transactions", Data: transactions})
  45.         return
  46.     }
  47.     g.JSON(http.StatusOK, gin.H{"message": "List transactions empty"})
  48. }
  49.  
  50. func (t *TransactionController) getTransactionById(g *gin.Context) {
  51.     id := g.Param("id")
  52.     transaction, err := t.useCase.FindTransactionById(id)
  53.     if err != nil {
  54.         g.JSON(http.StatusInternalServerError, gin.H{"err": "Failed to get transaction by ID"})
  55.         return
  56.     }
  57.  
  58.     g.JSON(http.StatusOK, model.Transaction{Message: "Detail of Transaction", Data: transaction})
  59. }
  60.  
  61. func (t *TransactionController) Route() {
  62.     t.rg.POST("/transactions", t.createNewTransaction)
  63.     t.rg.GET("/transactions", t.getAllTransaction)
  64.     t.rg.GET("/transactions/:id", t.getTransactionById)
  65. }
  66.  
  67. func NewTransactionController(useCase usecase.TransactionUseCase, rg *gin.RouterGroup) *TransactionController {
  68.     return &TransactionController{useCase: useCase, rg: rg}
  69. }
  70.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement