self-order+notification #5
@ -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 {
|
||||||
|
|||||||
@ -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,
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user