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