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
|
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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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