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 {
SessionID string `form:"session_id" validate:"required"`
OrganizationID string `form:"organisasi_id" validate:"required"`
OutletID string `form:"outlet_id" validate:"required"`
}
type SelfOrderCategoryItem struct {

View File

@ -382,29 +382,53 @@ func (h *SelfOrderHandler) ListCategories(c *gin.Context) {
return
}
if req.SessionID == "" {
if req.OrganizationID == "" {
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")
return
}
session, table, _, err := h.resolveSession(ctx, req.SessionID)
if err != nil {
if req.OutletID == "" {
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")
return
}
if session == nil {
orgID, err := uuid.Parse(req.OrganizationID)
if err != nil {
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")
return
}
catResp := h.categoryService.ListCategories(ctx, &contract.ListCategoriesRequest{
OrganizationID: &table.OrganizationID,
OrganizationID: &orgID,
Page: 1,
Limit: 100,
})