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"`
|
RequestTime string `json:"requestTimePickup"`
|
||||||
UserAddress UserAddressDTO `json:"userAddress"`
|
UserAddress UserAddressDTO `json:"userAddress"`
|
||||||
StatusRequest string `json:"status"`
|
StatusRequest string `json:"status"`
|
||||||
|
CreatedAt string `json:"createdAt"`
|
||||||
|
UpdatedAt string `json:"updatedAt"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type RequestItemDTO struct {
|
type RequestItemDTO struct {
|
||||||
|
@ -30,7 +32,7 @@ type UserAddressDTO struct {
|
||||||
Geography string `json:"geography"`
|
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{
|
return RequestPickupResponse{
|
||||||
ID: id,
|
ID: id,
|
||||||
UserID: userID,
|
UserID: userID,
|
||||||
|
@ -38,5 +40,7 @@ func NewRequestPickupResponse(id, userID, requestTime, statusRequest string, req
|
||||||
RequestTime: requestTime,
|
RequestTime: requestTime,
|
||||||
UserAddress: userAddress,
|
UserAddress: userAddress,
|
||||||
StatusRequest: statusRequest,
|
StatusRequest: statusRequest,
|
||||||
|
CreatedAt: createdAt,
|
||||||
|
UpdatedAt: updatedAt,
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -57,6 +57,8 @@ func GetRequestPickupsByUser(c *fiber.Ctx) error {
|
||||||
requestPickup.StatusRequest,
|
requestPickup.StatusRequest,
|
||||||
requestItems,
|
requestItems,
|
||||||
userAddress,
|
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 {
|
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)
|
userID, ok := c.Locals("userID").(string)
|
||||||
if !ok || userID == "" {
|
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 {
|
if req.UserAddressID == "" || len(req.RequestItems) == 0 {
|
||||||
return c.Status(fiber.StatusBadRequest).JSON(utils.FormatResponse(
|
return c.Status(fiber.StatusBadRequest).JSON(utils.FormatResponse(
|
||||||
fiber.StatusBadRequest,
|
fiber.StatusBadRequest,
|
||||||
|
@ -108,10 +109,11 @@ func CreateRequestPickup(c *fiber.Ctx) error {
|
||||||
Request: requestItems,
|
Request: requestItems,
|
||||||
RequestTime: req.RequestTime,
|
RequestTime: req.RequestTime,
|
||||||
UserAddressID: req.UserAddressID,
|
UserAddressID: req.UserAddressID,
|
||||||
StatusRequest: "waiting driver",
|
StatusRequest: "Pending",
|
||||||
}
|
}
|
||||||
|
|
||||||
service := services.NewRequestPickupService(repositories.NewRequestPickupRepository())
|
service := services.NewRequestPickupService(repositories.NewRequestPickupRepository())
|
||||||
|
|
||||||
if err := service.CreateRequestPickup(requestPickup); err != nil {
|
if err := service.CreateRequestPickup(requestPickup); err != nil {
|
||||||
return c.Status(fiber.StatusInternalServerError).JSON(utils.FormatResponse(
|
return c.Status(fiber.StatusInternalServerError).JSON(utils.FormatResponse(
|
||||||
fiber.StatusInternalServerError,
|
fiber.StatusInternalServerError,
|
||||||
|
@ -120,9 +122,47 @@ func CreateRequestPickup(c *fiber.Ctx) error {
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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(
|
return c.Status(fiber.StatusCreated).JSON(utils.FormatResponse(
|
||||||
fiber.StatusCreated,
|
fiber.StatusCreated,
|
||||||
"Request pickup created successfully",
|
"Request pickup created successfully",
|
||||||
nil,
|
response,
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,10 +7,11 @@ import (
|
||||||
|
|
||||||
type RequestPickupRepository interface {
|
type RequestPickupRepository interface {
|
||||||
Create(request *domain.RequestPickup) error
|
Create(request *domain.RequestPickup) error
|
||||||
|
GetByID(id string) (*domain.RequestPickup, error)
|
||||||
GetByUserID(userID string) ([]domain.RequestPickup, error)
|
GetByUserID(userID string) ([]domain.RequestPickup, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type requestPickupRepository struct {}
|
type requestPickupRepository struct{}
|
||||||
|
|
||||||
func NewRequestPickupRepository() RequestPickupRepository {
|
func NewRequestPickupRepository() RequestPickupRepository {
|
||||||
return &requestPickupRepository{}
|
return &requestPickupRepository{}
|
||||||
|
@ -20,6 +21,18 @@ func (r *requestPickupRepository) Create(request *domain.RequestPickup) error {
|
||||||
return config.DB.Create(request).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) {
|
func (r *requestPickupRepository) GetByUserID(userID string) ([]domain.RequestPickup, error) {
|
||||||
var requestPickups []domain.RequestPickup
|
var requestPickups []domain.RequestPickup
|
||||||
err := config.DB.Preload("Request").
|
err := config.DB.Preload("Request").
|
||||||
|
@ -34,4 +47,3 @@ func (r *requestPickupRepository) GetByUserID(userID string) ([]domain.RequestPi
|
||||||
|
|
||||||
return requestPickups, nil
|
return requestPickups, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,10 @@ func (s *RequestPickupService) CreateRequestPickup(request *domain.RequestPickup
|
||||||
return s.repository.Create(request)
|
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) {
|
func (s *RequestPickupService) GetRequestPickupsByUser(userID string) ([]domain.RequestPickup, error) {
|
||||||
return s.repository.GetByUserID(userID)
|
return s.repository.GetByUserID(userID)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue