fix: fixing response api request_pickups
This commit is contained in:
parent
8d4eac7f44
commit
acc496ed46
|
@ -13,6 +13,8 @@ type RequestPickupResponse struct {
|
|||
RequestTime string `json:"requestTimePickup"`
|
||||
UserAddress UserAddressDTO `json:"userAddress"`
|
||||
StatusRequest string `json:"status"`
|
||||
CreatedAt string `json:"createdAt"`
|
||||
UpdatedAt string `json:"updatedAt"`
|
||||
}
|
||||
|
||||
type RequestItemDTO struct {
|
||||
|
@ -30,7 +32,7 @@ type UserAddressDTO struct {
|
|||
Geography string `json:"geography"`
|
||||
}
|
||||
|
||||
func NewRequestPickupResponse(id, userID, requestTime, statusRequest string, request []RequestItemDTO, userAddress UserAddressDTO) RequestPickupResponse {
|
||||
func NewRequestPickupResponse(id, userID, requestTime, statusRequest string, request []RequestItemDTO, userAddress UserAddressDTO, createdAt, updatedAt string) RequestPickupResponse {
|
||||
return RequestPickupResponse{
|
||||
ID: id,
|
||||
UserID: userID,
|
||||
|
@ -38,5 +40,7 @@ func NewRequestPickupResponse(id, userID, requestTime, statusRequest string, req
|
|||
RequestTime: requestTime,
|
||||
UserAddress: userAddress,
|
||||
StatusRequest: statusRequest,
|
||||
CreatedAt: createdAt,
|
||||
UpdatedAt: updatedAt,
|
||||
}
|
||||
}
|
|
@ -57,6 +57,8 @@ func GetRequestPickupsByUser(c *fiber.Ctx) error {
|
|||
requestPickup.StatusRequest,
|
||||
requestItems,
|
||||
userAddress,
|
||||
utils.FormatDateToIndonesianFormat(requestPickup.CreatedAt),
|
||||
utils.FormatDateToIndonesianFormat(requestPickup.UpdatedAt),
|
||||
))
|
||||
}
|
||||
|
||||
|
@ -68,6 +70,14 @@ func GetRequestPickupsByUser(c *fiber.Ctx) error {
|
|||
}
|
||||
|
||||
func CreateRequestPickup(c *fiber.Ctx) error {
|
||||
var req dto.RequestPickupRequest
|
||||
if err := c.BodyParser(&req); err != nil {
|
||||
return c.Status(fiber.StatusBadRequest).JSON(utils.FormatResponse(
|
||||
fiber.StatusBadRequest,
|
||||
"Invalid request body",
|
||||
nil,
|
||||
))
|
||||
}
|
||||
|
||||
userID, ok := c.Locals("userID").(string)
|
||||
if !ok || userID == "" {
|
||||
|
@ -78,15 +88,6 @@ func CreateRequestPickup(c *fiber.Ctx) error {
|
|||
))
|
||||
}
|
||||
|
||||
var req dto.RequestPickupRequest
|
||||
if err := c.BodyParser(&req); err != nil {
|
||||
return c.Status(fiber.StatusBadRequest).JSON(utils.FormatResponse(
|
||||
fiber.StatusBadRequest,
|
||||
"Invalid request body",
|
||||
nil,
|
||||
))
|
||||
}
|
||||
|
||||
if req.UserAddressID == "" || len(req.RequestItems) == 0 {
|
||||
return c.Status(fiber.StatusBadRequest).JSON(utils.FormatResponse(
|
||||
fiber.StatusBadRequest,
|
||||
|
@ -108,10 +109,11 @@ func CreateRequestPickup(c *fiber.Ctx) error {
|
|||
Request: requestItems,
|
||||
RequestTime: req.RequestTime,
|
||||
UserAddressID: req.UserAddressID,
|
||||
StatusRequest: "waiting driver",
|
||||
StatusRequest: "Pending",
|
||||
}
|
||||
|
||||
service := services.NewRequestPickupService(repositories.NewRequestPickupRepository())
|
||||
|
||||
if err := service.CreateRequestPickup(requestPickup); err != nil {
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(utils.FormatResponse(
|
||||
fiber.StatusInternalServerError,
|
||||
|
@ -120,9 +122,47 @@ func CreateRequestPickup(c *fiber.Ctx) error {
|
|||
))
|
||||
}
|
||||
|
||||
return c.Status(fiber.StatusCreated).JSON(utils.FormatResponse(
|
||||
fiber.StatusCreated,
|
||||
"Request pickup created successfully",
|
||||
detail, err := service.GetRequestPickupByID(requestPickup.ID)
|
||||
if err != nil {
|
||||
return c.Status(fiber.StatusInternalServerError).JSON(utils.FormatResponse(
|
||||
fiber.StatusInternalServerError,
|
||||
"Failed to fetch created request pickup",
|
||||
nil,
|
||||
))
|
||||
}
|
||||
|
||||
var requestItemsDTO []dto.RequestItemDTO
|
||||
for _, item := range detail.Request {
|
||||
requestItemsDTO = append(requestItemsDTO, dto.RequestItemDTO{
|
||||
TrashCategory: item.TrashCategory.Name,
|
||||
EstimatedAmount: item.EstimatedAmount,
|
||||
})
|
||||
}
|
||||
|
||||
userAddressDTO := dto.UserAddressDTO{
|
||||
Province: detail.UserAddress.Province,
|
||||
District: detail.UserAddress.District,
|
||||
Subdistrict: detail.UserAddress.Subdistrict,
|
||||
PostalCode: detail.UserAddress.PostalCode,
|
||||
Village: detail.UserAddress.Village,
|
||||
Detail: detail.UserAddress.Detail,
|
||||
Geography: detail.UserAddress.Geography,
|
||||
}
|
||||
|
||||
response := dto.NewRequestPickupResponse(
|
||||
detail.ID,
|
||||
detail.UserID,
|
||||
detail.RequestTime,
|
||||
detail.StatusRequest,
|
||||
requestItemsDTO,
|
||||
userAddressDTO,
|
||||
utils.FormatDateToIndonesianFormat(detail.CreatedAt),
|
||||
utils.FormatDateToIndonesianFormat(detail.UpdatedAt),
|
||||
)
|
||||
|
||||
return c.Status(fiber.StatusCreated).JSON(utils.FormatResponse(
|
||||
fiber.StatusCreated,
|
||||
"Request pickup created successfully",
|
||||
response,
|
||||
))
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import (
|
|||
|
||||
type RequestPickupRepository interface {
|
||||
Create(request *domain.RequestPickup) error
|
||||
GetByID(id string) (*domain.RequestPickup, error)
|
||||
GetByUserID(userID string) ([]domain.RequestPickup, error)
|
||||
}
|
||||
|
||||
|
@ -20,6 +21,18 @@ func (r *requestPickupRepository) Create(request *domain.RequestPickup) error {
|
|||
return config.DB.Create(request).Error
|
||||
}
|
||||
|
||||
func (r *requestPickupRepository) GetByID(id string) (*domain.RequestPickup, error) {
|
||||
var requestPickup domain.RequestPickup
|
||||
if err := config.DB.Preload("Request").
|
||||
Preload("Request.TrashCategory").
|
||||
Preload("UserAddress").
|
||||
Where("id = ?", id).
|
||||
First(&requestPickup).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &requestPickup, nil
|
||||
}
|
||||
|
||||
func (r *requestPickupRepository) GetByUserID(userID string) ([]domain.RequestPickup, error) {
|
||||
var requestPickups []domain.RequestPickup
|
||||
err := config.DB.Preload("Request").
|
||||
|
@ -34,4 +47,3 @@ func (r *requestPickupRepository) GetByUserID(userID string) ([]domain.RequestPi
|
|||
|
||||
return requestPickups, nil
|
||||
}
|
||||
|
||||
|
|
|
@ -17,6 +17,10 @@ func (s *RequestPickupService) CreateRequestPickup(request *domain.RequestPickup
|
|||
return s.repository.Create(request)
|
||||
}
|
||||
|
||||
func (s *RequestPickupService) GetRequestPickupByID(id string) (*domain.RequestPickup, error) {
|
||||
return s.repository.GetByID(id)
|
||||
}
|
||||
|
||||
func (s *RequestPickupService) GetRequestPickupsByUser(userID string) ([]domain.RequestPickup, error) {
|
||||
return s.repository.GetByUserID(userID)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue