update order status
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
"apskel-pos-be/internal/constants"
|
||||
"apskel-pos-be/internal/contract"
|
||||
"apskel-pos-be/internal/logger"
|
||||
"apskel-pos-be/internal/models"
|
||||
"apskel-pos-be/internal/service"
|
||||
"apskel-pos-be/internal/util"
|
||||
"apskel-pos-be/internal/validator"
|
||||
@@ -277,3 +278,111 @@ func (h *InventoryHandler) GetZeroStockItems(c *gin.Context) {
|
||||
|
||||
util.HandleResponse(c.Writer, c.Request, inventoryResponse, "InventoryHandler::GetZeroStockItems")
|
||||
}
|
||||
|
||||
// GetInventoryReportSummary returns summary statistics for inventory report
|
||||
func (h *InventoryHandler) GetInventoryReportSummary(c *gin.Context) {
|
||||
ctx := c.Request.Context()
|
||||
contextInfo := appcontext.FromGinContext(ctx)
|
||||
|
||||
outletIDStr := c.Param("outlet_id")
|
||||
outletID, err := uuid.Parse(outletIDStr)
|
||||
if err != nil {
|
||||
logger.FromContext(ctx).WithError(err).Error("InventoryHandler::GetInventoryReportSummary -> Invalid outlet ID")
|
||||
validationResponseError := contract.NewResponseError(constants.MalformedFieldErrorCode, constants.RequestEntity, "Invalid outlet ID")
|
||||
util.HandleResponse(c.Writer, c.Request, contract.BuildErrorResponse([]*contract.ResponseError{validationResponseError}), "InventoryHandler::GetInventoryReportSummary")
|
||||
return
|
||||
}
|
||||
|
||||
summary, err := h.inventoryService.GetInventoryReportSummary(ctx, outletID, contextInfo.OrganizationID)
|
||||
if err != nil {
|
||||
logger.FromContext(ctx).WithError(err).Error("InventoryHandler::GetInventoryReportSummary -> Failed to get inventory report summary from service")
|
||||
responseError := contract.NewResponseError(constants.InternalServerErrorCode, constants.RequestEntity, err.Error())
|
||||
util.HandleResponse(c.Writer, c.Request, contract.BuildErrorResponse([]*contract.ResponseError{responseError}), "InventoryHandler::GetInventoryReportSummary")
|
||||
return
|
||||
}
|
||||
|
||||
response := contract.BuildSuccessResponse(summary)
|
||||
util.HandleResponse(c.Writer, c.Request, response, "InventoryHandler::GetInventoryReportSummary")
|
||||
}
|
||||
|
||||
// GetInventoryReportDetails returns detailed inventory report with products and ingredients
|
||||
func (h *InventoryHandler) GetInventoryReportDetails(c *gin.Context) {
|
||||
ctx := c.Request.Context()
|
||||
contextInfo := appcontext.FromGinContext(ctx)
|
||||
|
||||
// Parse query parameters
|
||||
filter := &models.InventoryReportFilter{}
|
||||
|
||||
// Parse outlet_id (required)
|
||||
if outletIDStr := c.Query("outlet_id"); outletIDStr != "" {
|
||||
outletID, err := uuid.Parse(outletIDStr)
|
||||
if err != nil {
|
||||
logger.FromContext(ctx).WithError(err).Error("InventoryHandler::GetInventoryReportDetails -> Invalid outlet ID")
|
||||
validationResponseError := contract.NewResponseError(constants.MalformedFieldErrorCode, constants.RequestEntity, "Invalid outlet ID")
|
||||
util.HandleResponse(c.Writer, c.Request, contract.BuildErrorResponse([]*contract.ResponseError{validationResponseError}), "InventoryHandler::GetInventoryReportDetails")
|
||||
return
|
||||
}
|
||||
filter.OutletID = &outletID
|
||||
} else {
|
||||
logger.FromContext(ctx).Error("InventoryHandler::GetInventoryReportDetails -> Missing outlet_id parameter")
|
||||
validationResponseError := contract.NewResponseError(constants.MissingFieldErrorCode, constants.RequestEntity, "outlet_id is required")
|
||||
util.HandleResponse(c.Writer, c.Request, contract.BuildErrorResponse([]*contract.ResponseError{validationResponseError}), "InventoryHandler::GetInventoryReportDetails")
|
||||
return
|
||||
}
|
||||
|
||||
// Parse category_id (optional)
|
||||
if categoryIDStr := c.Query("category_id"); categoryIDStr != "" {
|
||||
categoryID, err := uuid.Parse(categoryIDStr)
|
||||
if err != nil {
|
||||
logger.FromContext(ctx).WithError(err).Error("InventoryHandler::GetInventoryReportDetails -> Invalid category ID")
|
||||
validationResponseError := contract.NewResponseError(constants.MalformedFieldErrorCode, constants.RequestEntity, "Invalid category ID")
|
||||
util.HandleResponse(c.Writer, c.Request, contract.BuildErrorResponse([]*contract.ResponseError{validationResponseError}), "InventoryHandler::GetInventoryReportDetails")
|
||||
return
|
||||
}
|
||||
filter.CategoryID = &categoryID
|
||||
}
|
||||
|
||||
// Parse show_low_stock (optional)
|
||||
if showLowStockStr := c.Query("show_low_stock"); showLowStockStr != "" {
|
||||
if showLowStock, err := strconv.ParseBool(showLowStockStr); err == nil {
|
||||
filter.ShowLowStock = &showLowStock
|
||||
}
|
||||
}
|
||||
|
||||
// Parse show_zero_stock (optional)
|
||||
if showZeroStockStr := c.Query("show_zero_stock"); showZeroStockStr != "" {
|
||||
if showZeroStock, err := strconv.ParseBool(showZeroStockStr); err == nil {
|
||||
filter.ShowZeroStock = &showZeroStock
|
||||
}
|
||||
}
|
||||
|
||||
// Parse search (optional)
|
||||
if search := c.Query("search"); search != "" {
|
||||
filter.Search = &search
|
||||
}
|
||||
|
||||
// Parse limit (optional)
|
||||
if limitStr := c.Query("limit"); limitStr != "" {
|
||||
if limit, err := strconv.Atoi(limitStr); err == nil && limit > 0 {
|
||||
filter.Limit = &limit
|
||||
}
|
||||
}
|
||||
|
||||
// Parse offset (optional)
|
||||
if offsetStr := c.Query("offset"); offsetStr != "" {
|
||||
if offset, err := strconv.Atoi(offsetStr); err == nil && offset >= 0 {
|
||||
filter.Offset = &offset
|
||||
}
|
||||
}
|
||||
|
||||
report, err := h.inventoryService.GetInventoryReportDetails(ctx, filter, contextInfo.OrganizationID)
|
||||
if err != nil {
|
||||
logger.FromContext(ctx).WithError(err).Error("InventoryHandler::GetInventoryReportDetails -> Failed to get inventory report details from service")
|
||||
responseError := contract.NewResponseError(constants.InternalServerErrorCode, constants.RequestEntity, err.Error())
|
||||
util.HandleResponse(c.Writer, c.Request, contract.BuildErrorResponse([]*contract.ResponseError{responseError}), "InventoryHandler::GetInventoryReportDetails")
|
||||
return
|
||||
}
|
||||
|
||||
response := contract.BuildSuccessResponse(report)
|
||||
util.HandleResponse(c.Writer, c.Request, response, "InventoryHandler::GetInventoryReportDetails")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user