forked from ebhomengo/niki
update:wip getReportFilters and getreportData is developing ...
This commit is contained in:
parent
6f2ddb409f
commit
6459adaff2
|
|
@ -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,
|
||||
})
|
||||
}
|
||||
|
|
@ -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,
|
||||
})
|
||||
}
|
||||
|
|
@ -1,16 +1,21 @@
|
|||
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 {
|
||||
HTTPServer *httpserver.Server
|
||||
Handler *Handler
|
||||
SalesReportSvc salesreportservice.Service
|
||||
}
|
||||
|
||||
func NewServer(httpserver *httpserver.Server) *Server {
|
||||
func NewServer(httpserver *httpserver.Server, SalesReportSvc salesreportservice.Service) *Server {
|
||||
return &Server{
|
||||
HTTPServer: httpserver,
|
||||
Handler: NewHandler(),
|
||||
SalesReportSvc: SalesReportSvc,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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"`
|
||||
}
|
||||
|
|
@ -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"`
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"ReportID": 2
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"statusCode": 200,
|
||||
"Message": "Done",
|
||||
"Body": {
|
||||
"filterable_fields": [
|
||||
{
|
||||
"name": "city",
|
||||
"type": "DateTime"
|
||||
},
|
||||
{
|
||||
"name": "date",
|
||||
"type": "DateTime"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -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"
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
|
|
@ -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!")
|
||||
|
||||
}
|
||||
|
|
@ -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{}
|
||||
}
|
||||
|
|
@ -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,
|
||||
}
|
||||
}
|
||||
|
|
@ -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!")
|
||||
}
|
||||
|
|
@ -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!")
|
||||
}
|
||||
Loading…
Reference in New Issue