self-order+notification #5
@ -8,6 +8,7 @@ import (
|
||||
"apskel-pos-be/internal/util"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type AnalyticsHandler struct {
|
||||
@ -25,6 +26,18 @@ func NewAnalyticsHandler(
|
||||
}
|
||||
}
|
||||
|
||||
func (h *AnalyticsHandler) resolveOutletID(c *gin.Context, contextOutletID uuid.UUID) *uuid.UUID {
|
||||
if outletIDStr := c.Query("outlet_id"); outletIDStr != "" {
|
||||
if parsedID, err := uuid.Parse(outletIDStr); err == nil {
|
||||
return &parsedID
|
||||
}
|
||||
}
|
||||
if contextOutletID != uuid.Nil {
|
||||
return &contextOutletID
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *AnalyticsHandler) GetPaymentMethodAnalytics(c *gin.Context) {
|
||||
ctx := c.Request.Context()
|
||||
contextInfo := appcontext.FromGinContext(ctx)
|
||||
@ -36,7 +49,7 @@ func (h *AnalyticsHandler) GetPaymentMethodAnalytics(c *gin.Context) {
|
||||
}
|
||||
|
||||
req.OrganizationID = contextInfo.OrganizationID
|
||||
req.OutletID = &contextInfo.OutletID
|
||||
req.OutletID = h.resolveOutletID(c, contextInfo.OutletID)
|
||||
modelReq := transformer.PaymentMethodAnalyticsContractToModel(&req)
|
||||
|
||||
response, err := h.analyticsService.GetPaymentMethodAnalytics(ctx, modelReq)
|
||||
@ -60,7 +73,7 @@ func (h *AnalyticsHandler) GetSalesAnalytics(c *gin.Context) {
|
||||
}
|
||||
|
||||
req.OrganizationID = contextInfo.OrganizationID
|
||||
req.OutletID = &contextInfo.OutletID
|
||||
req.OutletID = h.resolveOutletID(c, contextInfo.OutletID)
|
||||
modelReq := transformer.SalesAnalyticsContractToModel(&req)
|
||||
|
||||
response, err := h.analyticsService.GetSalesAnalytics(ctx, modelReq)
|
||||
@ -84,7 +97,7 @@ func (h *AnalyticsHandler) GetProductAnalytics(c *gin.Context) {
|
||||
}
|
||||
|
||||
req.OrganizationID = contextInfo.OrganizationID
|
||||
req.OutletID = &contextInfo.OutletID
|
||||
req.OutletID = h.resolveOutletID(c, contextInfo.OutletID)
|
||||
modelReq := transformer.ProductAnalyticsContractToModel(&req)
|
||||
|
||||
response, err := h.analyticsService.GetProductAnalytics(ctx, modelReq)
|
||||
@ -108,7 +121,7 @@ func (h *AnalyticsHandler) GetProductAnalyticsPerCategory(c *gin.Context) {
|
||||
}
|
||||
|
||||
req.OrganizationID = contextInfo.OrganizationID
|
||||
req.OutletID = &contextInfo.OutletID
|
||||
req.OutletID = h.resolveOutletID(c, contextInfo.OutletID)
|
||||
modelReq := transformer.ProductAnalyticsPerCategoryContractToModel(&req)
|
||||
|
||||
response, err := h.analyticsService.GetProductAnalyticsPerCategory(ctx, modelReq)
|
||||
@ -132,7 +145,7 @@ func (h *AnalyticsHandler) GetDashboardAnalytics(c *gin.Context) {
|
||||
}
|
||||
|
||||
req.OrganizationID = contextInfo.OrganizationID
|
||||
req.OutletID = &contextInfo.OutletID
|
||||
req.OutletID = h.resolveOutletID(c, contextInfo.OutletID)
|
||||
modelReq := transformer.DashboardAnalyticsContractToModel(&req)
|
||||
|
||||
response, err := h.analyticsService.GetDashboardAnalytics(ctx, modelReq)
|
||||
@ -156,6 +169,7 @@ func (h *AnalyticsHandler) GetProfitLossAnalytics(c *gin.Context) {
|
||||
}
|
||||
|
||||
req.OrganizationID = contextInfo.OrganizationID
|
||||
req.OutletID = h.resolveOutletID(c, contextInfo.OutletID)
|
||||
modelReq, err := transformer.ProfitLossAnalyticsContractToModel(&req)
|
||||
if err != nil {
|
||||
util.HandleResponse(c.Writer, c.Request, contract.BuildErrorResponse([]*contract.ResponseError{contract.NewResponseError("invalid_request", "AnalyticsHandler::GetProfitLossAnalytics", err.Error())}), "AnalyticsHandler::GetProfitLossAnalytics")
|
||||
|
||||
@ -8,6 +8,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type ReportHandler struct {
|
||||
@ -19,11 +20,26 @@ func NewReportHandler(reportService service.ReportService, userService UserServi
|
||||
return &ReportHandler{reportService: reportService, userService: userService}
|
||||
}
|
||||
|
||||
func (h *ReportHandler) resolveOutletID(c *gin.Context, contextOutletID uuid.UUID) string {
|
||||
if outletIDStr := c.Query("outlet_id"); outletIDStr != "" {
|
||||
if _, err := uuid.Parse(outletIDStr); err == nil {
|
||||
return outletIDStr
|
||||
}
|
||||
}
|
||||
if pathOutletID := c.Param("outlet_id"); pathOutletID != "" {
|
||||
return pathOutletID
|
||||
}
|
||||
if contextOutletID != uuid.Nil {
|
||||
return contextOutletID.String()
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (h *ReportHandler) GetDailyTransactionReportPDF(c *gin.Context) {
|
||||
ctx := c.Request.Context()
|
||||
ci := appcontext.FromGinContext(ctx)
|
||||
|
||||
outletID := c.Param("outlet_id")
|
||||
outletID := h.resolveOutletID(c, ci.OutletID)
|
||||
var dayPtr *time.Time
|
||||
if d := c.Query("date"); d != "" {
|
||||
if t, err := time.Parse("2006-01-02", d); err == nil {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user