update:wip getReportFilters and getreportData is developing ...

This commit is contained in:
mosayyebnezhad 2026-04-08 07:27:54 +03:30
parent 6f2ddb409f
commit 6459adaff2
14 changed files with 257 additions and 6 deletions

View File

@ -0,0 +1,28 @@
package http
import (
"net/http"
"git.gocasts.ir/ebhomengo/niki/salesreportapp/param"
"github.com/labstack/echo/v4"
)
func (s *Server) GetReportData(c echo.Context) error {
var data param.GetReportDataRequest
err := c.Bind(&data)
if err != nil {
return err
}
reportsData, err := s.SalesReportSvc.GetReportData(data.Filters)
if err != nil {
return c.JSON(http.StatusInternalServerError, err)
}
return c.JSON(http.StatusOK, echo.Map{
"status": 200,
"message": "success",
"headers": reportsData.Header,
"data": reportsData.Data,
})
}

View File

@ -0,0 +1,28 @@
package http
import (
"net/http"
"git.gocasts.ir/ebhomengo/niki/salesreportapp/param"
"github.com/labstack/echo/v4"
)
func (s *Server) getReportFilters(c echo.Context) error {
var data param.GetReportFiltersRequest
err := c.Bind(&data)
if err != nil {
return err
}
reports, err := s.SalesReportSvc.GetReportFilters(data.ReportId)
if err != nil {
return err
}
return c.JSON(http.StatusOK, echo.Map{
"statusCode": 200,
"Message": "success",
"filterable_fields": reports,
})
}

View File

@ -1,16 +1,21 @@
package http package http
import httpserver "git.gocasts.ir/ebhomengo/niki/delivery/http_server" import (
httpserver "git.gocasts.ir/ebhomengo/niki/delivery/http_server"
salesreportservice "git.gocasts.ir/ebhomengo/niki/salesreportapp/service"
)
type Server struct { type Server struct {
HTTPServer *httpserver.Server HTTPServer *httpserver.Server
Handler *Handler Handler *Handler
SalesReportSvc salesreportservice.Service
} }
func NewServer(httpserver *httpserver.Server) *Server { func NewServer(httpserver *httpserver.Server, SalesReportSvc salesreportservice.Service) *Server {
return &Server{ return &Server{
HTTPServer: httpserver, HTTPServer: httpserver,
Handler: NewHandler(), Handler: NewHandler(),
SalesReportSvc: SalesReportSvc,
} }
} }

View File

@ -0,0 +1,26 @@
package entity
type FilterableFields struct {
Name string `json:"name"`
Type string `json:"type"`
}
type QueryCondition struct {
FieldName string `json:"field_name"`
Operation string `json:"operation"`
Value string `json:"value"`
}
type GetReportDataResponse struct {
StatusCode int `json:"status"`
Message string `json:"message"`
Header []struct {
Name string `json:"name"`
Type string `json:"type"`
} `json:"header"`
Data [][]struct {
Name string `json:"name"`
Type string `json:"type"`
Value string `json:"value"`
} `json:"data"`
}

View File

@ -0,0 +1,12 @@
package param
import "git.gocasts.ir/ebhomengo/niki/salesreportapp/entity"
type GetReportFiltersRequest struct {
ReportId int64 `json:"report_id"`
}
type GetReportDataRequest struct {
ReportID int `json:"reportID"`
Filters []entity.QueryCondition `json:"filters"`
}

View File

@ -0,0 +1,3 @@
{
"ReportID": 2
}

View File

@ -0,0 +1,16 @@
{
"statusCode": 200,
"Message": "Done",
"Body": {
"filterable_fields": [
{
"name": "city",
"type": "DateTime"
},
{
"name": "date",
"type": "DateTime"
}
]
}
}

View File

@ -0,0 +1,20 @@
{
"reportID": 2,
"filters": [
{
"field_name": "city",
"operation": "=",
"value": "tehran"
},
{
"field_name": "amount",
"operation": ">",
"value": "150000"
},
{
"field_name": "amount",
"operation": "<=",
"value": "300000"
}
]
}

View File

@ -0,0 +1,54 @@
{
"statusCode": 200,
"message": "Done",
"header": [
{
"name": "city",
"type": "string"
},
{
"name": "amount",
"type": "number"
},
{
"name": "benefactor",
"type": "string"
}
],
"data": [
[
{
"name": "city",
"type": "string",
"value": "tehran"
},
{
"name": "amount",
"type": "number",
"value": "200000"
},
{
"name": "benefactor",
"type": "string",
"value": "ali rezai"
}
],
[
{
"name": "city",
"type": "string",
"value": "tehran"
},
{
"name": "amount",
"type": "number",
"value": "200000"
},
{
"name": "benefactor",
"type": "string",
"value": "ali rezai"
}
]
]
}

View File

@ -0,0 +1,15 @@
package salesreportrepository
import (
"time"
"git.gocasts.ir/ebhomengo/niki/salesreportapp/entity"
)
// GetSalesReportsWithTimeRange retrieves a list of sales reports within the specified time range.
func (s Repository) GetSalesReportsWithTimeRange(from, to time.Time) []entity.SalesReport {
s.dbMysql.Conn().
panic("Implement me!")
}

View File

@ -0,0 +1,13 @@
package salesreportrepository
import "git.gocasts.ir/ebhomengo/niki/repository/mysql"
// abstract on db
type Repository struct {
dbMysql *mysql.DB
dbPostgre *mysql.DB
}
func New(connMy *mysql.DB, connPos *mysql.DB) Repository {
return Repository{}
}

View File

@ -0,0 +1,13 @@
package salesreportservice
import salesreportrepository "git.gocasts.ir/ebhomengo/niki/salesreportapp/repository"
type Service struct {
Repository salesreportrepository.Repository
}
func New(salesReportRepository salesreportrepository.Repository) Service {
return Service{
Repository: salesReportRepository,
}
}

View File

@ -0,0 +1,9 @@
package salesreportservice
import (
"git.gocasts.ir/ebhomengo/niki/salesreportapp/entity"
)
func (s Service) GetReportData(reportID []entity.QueryCondition) (entity.GetReportDataResponse, error) {
panic("Implement me!")
}

View File

@ -0,0 +1,9 @@
package salesreportservice
import (
"git.gocasts.ir/ebhomengo/niki/salesreportapp/entity"
)
func (s Service) GetReportFilters(reportID int64) ([]entity.FilterableFields, error) {
panic("Implement me!")
}