Fix Analytics
This commit is contained in:
parent
5741243425
commit
073681d4d5
@ -36,6 +36,7 @@ func (h *AnalyticsHandler) GetPaymentMethodAnalytics(c *gin.Context) {
|
||||
}
|
||||
|
||||
req.OrganizationID = contextInfo.OrganizationID
|
||||
req.OutletID = &contextInfo.OutletID
|
||||
modelReq := transformer.PaymentMethodAnalyticsContractToModel(&req)
|
||||
|
||||
response, err := h.analyticsService.GetPaymentMethodAnalytics(ctx, modelReq)
|
||||
@ -44,12 +45,10 @@ func (h *AnalyticsHandler) GetPaymentMethodAnalytics(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
// Transform model to contract
|
||||
contractResp := transformer.PaymentMethodAnalyticsModelToContract(response)
|
||||
util.HandleResponse(c.Writer, c.Request, contract.BuildSuccessResponse(contractResp), "AnalyticsHandler::GetPaymentMethodAnalytics")
|
||||
}
|
||||
|
||||
// GetSalesAnalytics handles the request to get sales analytics
|
||||
func (h *AnalyticsHandler) GetSalesAnalytics(c *gin.Context) {
|
||||
ctx := c.Request.Context()
|
||||
contextInfo := appcontext.FromGinContext(ctx)
|
||||
@ -61,21 +60,19 @@ func (h *AnalyticsHandler) GetSalesAnalytics(c *gin.Context) {
|
||||
}
|
||||
|
||||
req.OrganizationID = contextInfo.OrganizationID
|
||||
req.OutletID = &contextInfo.OutletID
|
||||
modelReq := transformer.SalesAnalyticsContractToModel(&req)
|
||||
|
||||
// Call service
|
||||
response, err := h.analyticsService.GetSalesAnalytics(ctx, modelReq)
|
||||
if err != nil {
|
||||
util.HandleResponse(c.Writer, c.Request, contract.BuildErrorResponse([]*contract.ResponseError{contract.NewResponseError("internal_error", "AnalyticsHandler::GetSalesAnalytics", err.Error())}), "AnalyticsHandler::GetSalesAnalytics")
|
||||
return
|
||||
}
|
||||
|
||||
// Transform model to contract
|
||||
contractResp := transformer.SalesAnalyticsModelToContract(response)
|
||||
util.HandleResponse(c.Writer, c.Request, contract.BuildSuccessResponse(contractResp), "AnalyticsHandler::GetSalesAnalytics")
|
||||
}
|
||||
|
||||
// GetProductAnalytics handles the request to get product analytics
|
||||
func (h *AnalyticsHandler) GetProductAnalytics(c *gin.Context) {
|
||||
ctx := c.Request.Context()
|
||||
contextInfo := appcontext.FromGinContext(ctx)
|
||||
@ -87,22 +84,19 @@ func (h *AnalyticsHandler) GetProductAnalytics(c *gin.Context) {
|
||||
}
|
||||
|
||||
req.OrganizationID = contextInfo.OrganizationID
|
||||
// Transform contract to model
|
||||
req.OutletID = &contextInfo.OutletID
|
||||
modelReq := transformer.ProductAnalyticsContractToModel(&req)
|
||||
|
||||
// Call service
|
||||
response, err := h.analyticsService.GetProductAnalytics(ctx, modelReq)
|
||||
if err != nil {
|
||||
util.HandleResponse(c.Writer, c.Request, contract.BuildErrorResponse([]*contract.ResponseError{contract.NewResponseError("internal_error", "AnalyticsHandler::GetProductAnalytics", err.Error())}), "AnalyticsHandler::GetProductAnalytics")
|
||||
return
|
||||
}
|
||||
|
||||
// Transform model to contract
|
||||
contractResp := transformer.ProductAnalyticsModelToContract(response)
|
||||
util.HandleResponse(c.Writer, c.Request, contract.BuildSuccessResponse(contractResp), "AnalyticsHandler::GetProductAnalytics")
|
||||
}
|
||||
|
||||
// GetDashboardAnalytics handles the request to get dashboard analytics
|
||||
func (h *AnalyticsHandler) GetDashboardAnalytics(c *gin.Context) {
|
||||
ctx := c.Request.Context()
|
||||
contextInfo := appcontext.FromGinContext(ctx)
|
||||
@ -114,6 +108,7 @@ func (h *AnalyticsHandler) GetDashboardAnalytics(c *gin.Context) {
|
||||
}
|
||||
|
||||
req.OrganizationID = contextInfo.OrganizationID
|
||||
req.OutletID = &contextInfo.OutletID
|
||||
modelReq := transformer.DashboardAnalyticsContractToModel(&req)
|
||||
|
||||
response, err := h.analyticsService.GetDashboardAnalytics(ctx, modelReq)
|
||||
@ -122,7 +117,6 @@ func (h *AnalyticsHandler) GetDashboardAnalytics(c *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
// Transform model to contract
|
||||
contractResp := transformer.DashboardAnalyticsModelToContract(response)
|
||||
util.HandleResponse(c.Writer, c.Request, contract.BuildSuccessResponse(contractResp), "AnalyticsHandler::GetDashboardAnalytics")
|
||||
}
|
||||
|
||||
@ -44,6 +44,7 @@ func (m *AuthMiddleware) RequireAuth() gin.HandlerFunc {
|
||||
setKeyInContext(c, appcontext.UserRoleKey, userResponse.Role)
|
||||
setKeyInContext(c, appcontext.OrganizationIDKey, userResponse.OrganizationID.String())
|
||||
setKeyInContext(c, appcontext.UserIDKey, userResponse.ID.String())
|
||||
setKeyInContext(c, appcontext.OutletIDKey, userResponse.OutletID.String())
|
||||
|
||||
logger.FromContext(c.Request.Context()).Infof("AuthMiddleware::RequireAuth -> User authenticated: %s", userResponse.Email)
|
||||
c.Next()
|
||||
|
||||
@ -37,7 +37,6 @@ func (p *AnalyticsProcessorImpl) GetPaymentMethodAnalytics(ctx context.Context,
|
||||
return nil, fmt.Errorf("failed to get payment method analytics: %w", err)
|
||||
}
|
||||
|
||||
// Calculate summary
|
||||
var totalAmount float64
|
||||
var totalOrders int64
|
||||
var totalPayments int64
|
||||
|
||||
@ -23,13 +23,11 @@ func NewIngredientProcessor(ingredientRepo IngredientRepository, unitRepo UnitRe
|
||||
}
|
||||
|
||||
func (p *IngredientProcessorImpl) CreateIngredient(ctx context.Context, req *models.CreateIngredientRequest) (*models.IngredientResponse, error) {
|
||||
// Validate unit exists
|
||||
_, err := p.unitRepo.GetByID(ctx, req.UnitID, req.OrganizationID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Create ingredient entity
|
||||
ingredient := &entities.Ingredient{
|
||||
ID: uuid.New(),
|
||||
OrganizationID: req.OrganizationID,
|
||||
|
||||
@ -29,12 +29,10 @@ func NewAnalyticsServiceImpl(analyticsProcessor processor.AnalyticsProcessor) *A
|
||||
}
|
||||
|
||||
func (s *AnalyticsServiceImpl) GetPaymentMethodAnalytics(ctx context.Context, req *models.PaymentMethodAnalyticsRequest) (*models.PaymentMethodAnalyticsResponse, error) {
|
||||
// Validate request
|
||||
if err := s.validatePaymentMethodAnalyticsRequest(req); err != nil {
|
||||
return nil, fmt.Errorf("validation error: %w", err)
|
||||
}
|
||||
|
||||
// Process analytics request
|
||||
response, err := s.analyticsProcessor.GetPaymentMethodAnalytics(ctx, req)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to get payment method analytics: %w", err)
|
||||
@ -106,7 +104,6 @@ func (s *AnalyticsServiceImpl) validatePaymentMethodAnalyticsRequest(req *models
|
||||
return fmt.Errorf("date_from cannot be after date_to")
|
||||
}
|
||||
|
||||
// Validate groupBy if provided
|
||||
if req.GroupBy != "" {
|
||||
validGroupBy := map[string]bool{
|
||||
"day": true,
|
||||
|
||||
@ -26,7 +26,7 @@ func PaymentMethodAnalyticsContractToModel(req *contract.PaymentMethodAnalyticsR
|
||||
}
|
||||
|
||||
if req.DateFrom == req.DateTo {
|
||||
dateTo.AddDate(0, 0, 1)
|
||||
dateTo = dateTo.AddDate(0, 0, 1)
|
||||
}
|
||||
|
||||
return &models.PaymentMethodAnalyticsRequest{
|
||||
@ -89,7 +89,7 @@ func SalesAnalyticsContractToModel(req *contract.SalesAnalyticsRequest) *models.
|
||||
}
|
||||
|
||||
if req.DateFrom == req.DateTo {
|
||||
dateTo.AddDate(0, 0, 1)
|
||||
dateTo = dateTo.AddDate(0, 0, 1)
|
||||
}
|
||||
|
||||
return &models.SalesAnalyticsRequest{
|
||||
@ -156,7 +156,7 @@ func ProductAnalyticsContractToModel(req *contract.ProductAnalyticsRequest) *mod
|
||||
}
|
||||
|
||||
if req.DateFrom == req.DateTo {
|
||||
dateTo.AddDate(0, 0, 1)
|
||||
dateTo = dateTo.AddDate(0, 0, 1)
|
||||
}
|
||||
|
||||
return &models.ProductAnalyticsRequest{
|
||||
@ -212,6 +212,11 @@ func DashboardAnalyticsContractToModel(req *contract.DashboardAnalyticsRequest)
|
||||
dateTo = dt
|
||||
}
|
||||
}
|
||||
|
||||
if req.DateFrom == req.DateTo {
|
||||
dateTo = dateTo.AddDate(0, 0, 1)
|
||||
}
|
||||
|
||||
return &models.DashboardAnalyticsRequest{
|
||||
OrganizationID: req.OrganizationID,
|
||||
OutletID: req.OutletID,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user