2024-03-15 21:27:45 +03:00
package endpoints
import (
2024-03-28 18:20:57 +03:00
"context"
2024-03-15 21:27:45 +03:00
"fmt"
"relynolli-server/models"
2024-03-28 18:20:57 +03:00
"relynolli-server/status"
"relynolli-server/storage"
"time"
2024-03-23 23:25:54 +03:00
"github.com/gin-gonic/gin"
"github.com/go-playground/validator/v10"
2024-03-15 21:27:45 +03:00
)
type handlers struct { }
type getTotalRequest struct {
FuserId int ` json:"fuserId" `
}
type getTotalResponse struct {
TotalProductPrice float64 ` json:"total_product_price" `
}
type makeOrderRequest struct {
FuserId int ` json:"fuserId" validate:"required" `
PhoneNumber string ` json:"phoneNumber" validate:"required" `
FullName string ` json:"fullName" validate:"required" `
Email string ` json:"email" validate:"required,email" `
DeliveryType string ` json:"deliveryType,omitempty" `
Address string ` json:"address,omitempty" `
}
func ( h handlers ) GetTotal ( c * gin . Context ) {
req := getTotalRequest { }
err := c . ShouldBindJSON ( & req )
2024-03-28 18:20:57 +03:00
meta := models . Meta {
RequestStarted : time . Now ( ) . Unix ( ) ,
}
ctx := context . Background ( )
s := storage . NewStorageOrder ( )
resp := models . Response {
Status : status . STATUS_OK ,
Meta : & meta ,
}
2024-03-15 21:27:45 +03:00
if err != nil {
2024-03-28 18:20:57 +03:00
meta . RequestFinished = time . Now ( ) . Unix ( )
resp . Status = status . STATUS_BAD_REQUEST
resp . Info = fmt . Sprintf ( "Error: %s" , err . Error ( ) )
c . JSON ( 400 , resp )
2024-03-15 21:27:45 +03:00
return
}
2024-03-28 18:20:57 +03:00
data , err := s . GetTotal ( ctx , int64 ( req . FuserId ) )
resp . Data = data
c . JSON ( 200 , resp )
2024-03-15 21:27:45 +03:00
}
func ( h handlers ) MakeOrder ( c * gin . Context ) {
// VALIDATION
validate := validator . New ( validator . WithRequiredStructEnabled ( ) )
req := makeOrderRequest { }
err := c . ShouldBindJSON ( & req )
if err != nil {
2024-03-28 18:20:57 +03:00
//c.JSON(400, models.Response{Status: http.StatusBadRequest, Info: fmt.Sprintf("ERROR: %s", err.Error())})
2024-03-15 21:27:45 +03:00
return
}
validationErr := validate . Struct ( req )
if validationErr != nil {
2024-03-28 18:20:57 +03:00
//responseErr := validationErr.(validator.ValidationErrors)[0]
//c.JSON(http.StatusBadRequest, models.Response{Status: http.StatusBadRequest, Info: fmt.Sprintf("Validation Error: Field %s should be %s", responseErr.Field(), responseErr.Tag())})
2024-03-15 21:27:45 +03:00
return
}
2024-03-28 18:20:57 +03:00
//kassaResult, serviceErr := services.MakeOrder(req.FuserId, req.Email, req.FullName, req.PhoneNumber)
2024-03-15 21:27:45 +03:00
2024-03-28 18:20:57 +03:00
//if serviceErr != nil {
// c.JSON(http.StatusInternalServerError, models.Response{Status: http.StatusInternalServerError, Info: fmt.Sprintf("Error: %s", serviceErr.Error())})
// return
//}
2024-03-15 21:27:45 +03:00
2024-03-28 18:20:57 +03:00
//c.JSON(http.StatusOK, kassaResult)
2024-03-15 21:27:45 +03:00
}
type Handlers interface {
GetTotal ( c * gin . Context )
MakeOrder ( c * gin . Context )
}
func GetHandlers ( ) Handlers {
return & handlers { }
}