Add outlet_id to self-order/categories

This commit is contained in:
ryan 2026-05-08 23:56:06 +07:00
parent f957b07d23
commit e7c4681102
2 changed files with 34 additions and 9 deletions

View File

@ -60,7 +60,8 @@ type SelfOrderCreateOrderItem struct {
} }
type SelfOrderListCategoriesRequest struct { type SelfOrderListCategoriesRequest struct {
SessionID string `form:"session_id" validate:"required"` OrganizationID string `form:"organisasi_id" validate:"required"`
OutletID string `form:"outlet_id" validate:"required"`
} }
type SelfOrderCategoryItem struct { type SelfOrderCategoryItem struct {

View File

@ -382,29 +382,53 @@ func (h *SelfOrderHandler) ListCategories(c *gin.Context) {
return return
} }
if req.SessionID == "" { if req.OrganizationID == "" {
util.HandleResponse(c.Writer, c.Request, contract.BuildErrorResponse([]*contract.ResponseError{ util.HandleResponse(c.Writer, c.Request, contract.BuildErrorResponse([]*contract.ResponseError{
contract.NewResponseError(constants.MissingFieldErrorCode, constants.RequestEntity, "session_id is required"), contract.NewResponseError(constants.MissingFieldErrorCode, constants.RequestEntity, "organisasi_id is required"),
}), "SelfOrderHandler::ListCategories") }), "SelfOrderHandler::ListCategories")
return return
} }
session, table, _, err := h.resolveSession(ctx, req.SessionID) if req.OutletID == "" {
if err != nil {
util.HandleResponse(c.Writer, c.Request, contract.BuildErrorResponse([]*contract.ResponseError{ util.HandleResponse(c.Writer, c.Request, contract.BuildErrorResponse([]*contract.ResponseError{
contract.NewResponseError(constants.ValidationErrorCode, constants.RequestEntity, err.Error()), contract.NewResponseError(constants.MissingFieldErrorCode, constants.RequestEntity, "outlet_id is required"),
}), "SelfOrderHandler::ListCategories") }), "SelfOrderHandler::ListCategories")
return return
} }
if session == nil {
orgID, err := uuid.Parse(req.OrganizationID)
if err != nil {
util.HandleResponse(c.Writer, c.Request, contract.BuildErrorResponse([]*contract.ResponseError{ util.HandleResponse(c.Writer, c.Request, contract.BuildErrorResponse([]*contract.ResponseError{
contract.NewResponseError(constants.NotFoundErrorCode, constants.RequestEntity, "session not found or expired"), contract.NewResponseError(constants.ValidationErrorCode, constants.RequestEntity, "invalid organisasi_id format"),
}), "SelfOrderHandler::ListCategories")
return
}
outletID, err := uuid.Parse(req.OutletID)
if err != nil {
util.HandleResponse(c.Writer, c.Request, contract.BuildErrorResponse([]*contract.ResponseError{
contract.NewResponseError(constants.ValidationErrorCode, constants.RequestEntity, "invalid outlet_id format"),
}), "SelfOrderHandler::ListCategories")
return
}
outlet, err := h.outletRepo.GetByID(ctx, outletID)
if err != nil || outlet == nil {
util.HandleResponse(c.Writer, c.Request, contract.BuildErrorResponse([]*contract.ResponseError{
contract.NewResponseError(constants.NotFoundErrorCode, constants.RequestEntity, "outlet not found"),
}), "SelfOrderHandler::ListCategories")
return
}
if outlet.OrganizationID != orgID {
util.HandleResponse(c.Writer, c.Request, contract.BuildErrorResponse([]*contract.ResponseError{
contract.NewResponseError(constants.ValidationErrorCode, constants.RequestEntity, "outlet does not belong to the specified organization"),
}), "SelfOrderHandler::ListCategories") }), "SelfOrderHandler::ListCategories")
return return
} }
catResp := h.categoryService.ListCategories(ctx, &contract.ListCategoriesRequest{ catResp := h.categoryService.ListCategories(ctx, &contract.ListCategoriesRequest{
OrganizationID: &table.OrganizationID, OrganizationID: &orgID,
Page: 1, Page: 1,
Limit: 100, Limit: 100,
}) })