API perbandingan kategori antrean
This commit is contained in:
No files matched your search
+58
-3
@@ -223,6 +223,47 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/dashboard/perbandingan-kategori-antrian/": {
|
||||||
|
"get": {
|
||||||
|
"tags": [
|
||||||
|
"Dashboard"
|
||||||
|
],
|
||||||
|
"summary": "Get Perbandingan Kategori Antrean",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "tahun dalam int",
|
||||||
|
"name": "year",
|
||||||
|
"in": "query",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "bulan dalam int",
|
||||||
|
"name": "month",
|
||||||
|
"in": "query",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/dashboard.PerbandinganKategoriAntrean"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"500": {
|
||||||
|
"description": "Internal Server Error",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/shared.BaseErrorResponse"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"/dashboard/perbandingan-status-antrian/": {
|
"/dashboard/perbandingan-status-antrian/": {
|
||||||
"get": {
|
"get": {
|
||||||
"tags": [
|
"tags": [
|
||||||
@@ -852,16 +893,30 @@ const docTemplate = `{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dashboard.PerbandinganStatusAntreanResponse": {
|
"dashboard.PerbandinganKategoriAntrean": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"idStatus": {
|
"id_kategori": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"jumlah": {
|
"jumlah": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"status": {
|
"kategori": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dashboard.PerbandinganStatusAntreanResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"jumlah": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"statust": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+58
-3
@@ -217,6 +217,47 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/dashboard/perbandingan-kategori-antrian/": {
|
||||||
|
"get": {
|
||||||
|
"tags": [
|
||||||
|
"Dashboard"
|
||||||
|
],
|
||||||
|
"summary": "Get Perbandingan Kategori Antrean",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "tahun dalam int",
|
||||||
|
"name": "year",
|
||||||
|
"in": "query",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "integer",
|
||||||
|
"description": "bulan dalam int",
|
||||||
|
"name": "month",
|
||||||
|
"in": "query",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/dashboard.PerbandinganKategoriAntrean"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"500": {
|
||||||
|
"description": "Internal Server Error",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/shared.BaseErrorResponse"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"/dashboard/perbandingan-status-antrian/": {
|
"/dashboard/perbandingan-status-antrian/": {
|
||||||
"get": {
|
"get": {
|
||||||
"tags": [
|
"tags": [
|
||||||
@@ -846,16 +887,30 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dashboard.PerbandinganStatusAntreanResponse": {
|
"dashboard.PerbandinganKategoriAntrean": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"idStatus": {
|
"id_kategori": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"jumlah": {
|
"jumlah": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
"status": {
|
"kategori": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dashboard.PerbandinganStatusAntreanResponse": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"jumlah": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"statust": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+39
-3
@@ -226,13 +226,22 @@ definitions:
|
|||||||
subSpesialis:
|
subSpesialis:
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
dashboard.PerbandinganStatusAntreanResponse:
|
dashboard.PerbandinganKategoriAntrean:
|
||||||
properties:
|
properties:
|
||||||
idStatus:
|
id_kategori:
|
||||||
type: integer
|
type: integer
|
||||||
jumlah:
|
jumlah:
|
||||||
type: integer
|
type: integer
|
||||||
status:
|
kategori:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
dashboard.PerbandinganStatusAntreanResponse:
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
jumlah:
|
||||||
|
type: integer
|
||||||
|
statust:
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
diagnosa.DiagnosaResponse:
|
diagnosa.DiagnosaResponse:
|
||||||
@@ -508,6 +517,33 @@ paths:
|
|||||||
summary: Get Antrian Per Spesialis
|
summary: Get Antrian Per Spesialis
|
||||||
tags:
|
tags:
|
||||||
- Dashboard
|
- Dashboard
|
||||||
|
/dashboard/perbandingan-kategori-antrian/:
|
||||||
|
get:
|
||||||
|
parameters:
|
||||||
|
- description: tahun dalam int
|
||||||
|
in: query
|
||||||
|
name: year
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
- description: bulan dalam int
|
||||||
|
in: query
|
||||||
|
name: month
|
||||||
|
required: true
|
||||||
|
type: integer
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
schema:
|
||||||
|
items:
|
||||||
|
$ref: '#/definitions/dashboard.PerbandinganKategoriAntrean'
|
||||||
|
type: array
|
||||||
|
"500":
|
||||||
|
description: Internal Server Error
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/shared.BaseErrorResponse'
|
||||||
|
summary: Get Perbandingan Kategori Antrean
|
||||||
|
tags:
|
||||||
|
- Dashboard
|
||||||
/dashboard/perbandingan-status-antrian/:
|
/dashboard/perbandingan-status-antrian/:
|
||||||
get:
|
get:
|
||||||
parameters:
|
parameters:
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ func (h DashboardHandler) GetAntrianPerSpesialis(c *gin.Context) {
|
|||||||
// @Success 200 {object} []PerbandinganStatusAntreanResponse
|
// @Success 200 {object} []PerbandinganStatusAntreanResponse
|
||||||
// @Failure 500 {object} shared.BaseErrorResponse
|
// @Failure 500 {object} shared.BaseErrorResponse
|
||||||
// @Router /dashboard/perbandingan-status-antrian/ [get]
|
// @Router /dashboard/perbandingan-status-antrian/ [get]
|
||||||
func (h DashboardHandler) GetPerbandinganstatusAntrean(c *gin.Context) {
|
func (h DashboardHandler) GetPerbandinganStatusAntrean(c *gin.Context) {
|
||||||
var req PeriodeDashboardRequest
|
var req PeriodeDashboardRequest
|
||||||
if err := c.ShouldBindQuery(&req); err != nil {
|
if err := c.ShouldBindQuery(&req); err != nil {
|
||||||
c.JSON(400, shared.BaseErrorResponse{
|
c.JSON(400, shared.BaseErrorResponse{
|
||||||
@@ -105,3 +105,43 @@ func (h DashboardHandler) GetPerbandinganstatusAntrean(c *gin.Context) {
|
|||||||
|
|
||||||
c.JSON(http.StatusOK, response)
|
c.JSON(http.StatusOK, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetPerbandinganKategoriAntrean godoc
|
||||||
|
// @Summary Get Perbandingan Kategori Antrean
|
||||||
|
// @Tags Dashboard
|
||||||
|
// @Param year query int true "tahun dalam int"
|
||||||
|
// @Param month query int true "bulan dalam int"
|
||||||
|
// @Success 200 {object} []PerbandinganKategoriAntrean
|
||||||
|
// @Failure 500 {object} shared.BaseErrorResponse
|
||||||
|
// @Router /dashboard/perbandingan-kategori-antrian/ [get]
|
||||||
|
func (h DashboardHandler) GetPerbandinganKategoriAntrean(c *gin.Context) {
|
||||||
|
var req PeriodeDashboardRequest
|
||||||
|
if err := c.ShouldBindQuery(&req); err != nil {
|
||||||
|
c.JSON(400, shared.BaseErrorResponse{
|
||||||
|
Success: false,
|
||||||
|
Code: 400,
|
||||||
|
Message: "error bind json",
|
||||||
|
Errors: shared.ValidationError(err),
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
data, err := h.repo.GetPerbandinganKategoriAntrean(c, req)
|
||||||
|
if err != nil {
|
||||||
|
errorResponse := baseResponse.BaseErrorResponse{
|
||||||
|
Success: false,
|
||||||
|
Code: 500,
|
||||||
|
Message: err.Error(),
|
||||||
|
}
|
||||||
|
c.JSON(http.StatusInternalServerError, errorResponse)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
response := baseResponse.ToBaseResponse(
|
||||||
|
data,
|
||||||
|
true,
|
||||||
|
200,
|
||||||
|
"success get perbandingan kategori antrean")
|
||||||
|
|
||||||
|
c.JSON(http.StatusOK, response)
|
||||||
|
}
|
||||||
@@ -38,6 +38,12 @@ type PerbandinganStatusAntreanResponse struct {
|
|||||||
Status string `json:"statust"`
|
Status string `json:"statust"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PerbandinganKategoriAntrean struct {
|
||||||
|
IdKategori int `db:"id_kategori" json:"id_kategori"`
|
||||||
|
Kategori string `db:"kategori" json:"kategori"`
|
||||||
|
Jumlah int `db:"jumlah" json:"jumlah"`
|
||||||
|
}
|
||||||
|
|
||||||
type ListModelAntrianPerSpesialis []AntrianPerSpesialisModel
|
type ListModelAntrianPerSpesialis []AntrianPerSpesialisModel
|
||||||
|
|
||||||
func (list ListModelAntrianPerSpesialis) ParseToResponse() []AntrianPerSpesialisResponse {
|
func (list ListModelAntrianPerSpesialis) ParseToResponse() []AntrianPerSpesialisResponse {
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ type IDashboardRepository interface {
|
|||||||
GetAntrianPerKategori(c *gin.Context) ([]AntrianPerKategori, error)
|
GetAntrianPerKategori(c *gin.Context) ([]AntrianPerKategori, error)
|
||||||
GetAntrianPerSpesialis(c *gin.Context) (ListModelAntrianPerSpesialis, error)
|
GetAntrianPerSpesialis(c *gin.Context) (ListModelAntrianPerSpesialis, error)
|
||||||
GetPerbandinganStatusAntrean(c *gin.Context, req PeriodeDashboardRequest) (ListPerbandinganStatusAntrean, error)
|
GetPerbandinganStatusAntrean(c *gin.Context, req PeriodeDashboardRequest) (ListPerbandinganStatusAntrean, error)
|
||||||
|
GetPerbandinganKategoriAntrean(c *gin.Context, req PeriodeDashboardRequest) ([]PerbandinganKategoriAntrean, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type dashboardRepo struct {
|
type dashboardRepo struct {
|
||||||
@@ -188,3 +189,49 @@ func (r dashboardRepo) GetPerbandinganStatusAntrean(c *gin.Context, req PeriodeD
|
|||||||
|
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r dashboardRepo) GetPerbandinganKategoriAntrean(c *gin.Context, req PeriodeDashboardRequest) ([]PerbandinganKategoriAntrean, error) {
|
||||||
|
var result []PerbandinganKategoriAntrean
|
||||||
|
|
||||||
|
startDate, endDate := GenerateStartEndDate(req)
|
||||||
|
|
||||||
|
query := queryUtils.DynamicQuery{
|
||||||
|
From: "daftar_kategori_operasi",
|
||||||
|
Aliases: "dko",
|
||||||
|
Fields: []queryUtils.SelectField{
|
||||||
|
{Expression: "dko.id", Alias: "id_kategori"},
|
||||||
|
{Expression: "dko.Kategori", Alias: "kategori"},
|
||||||
|
{Expression: "COUNT(dpo.id)", Alias: "jumlah"},
|
||||||
|
},
|
||||||
|
Joins: []queryUtils.Join{
|
||||||
|
{
|
||||||
|
Type: "LEFT",
|
||||||
|
Table: TBL_NAME,
|
||||||
|
Alias: "dpo",
|
||||||
|
OnConditions: queryUtils.FilterGroup{
|
||||||
|
Filters: []queryUtils.DynamicFilter{
|
||||||
|
{Column: "dpo.Kategori_operasi", Operator: queryUtils.OpEqual, Value: "dko.id"},
|
||||||
|
{Column: "dpo.Tanggal_daftar", Operator: queryUtils.OpBetween, Value: []string{startDate, endDate}},
|
||||||
|
}, LogicOp: "AND",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
GroupBy: []string{"dko.id", "dko.Kategori"},
|
||||||
|
Sort: []queryUtils.SortField{
|
||||||
|
{Column: "dko.id", Order: "ASC"},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
dbconn, err := r.db.GetSQLXDB(DB_NAME)
|
||||||
|
if err != nil {
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = r.queryBuilder.ExecuteQuery(
|
||||||
|
c, dbconn, query, &result)
|
||||||
|
if err != nil {
|
||||||
|
return result, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return result, nil
|
||||||
|
}
|
||||||
@@ -12,5 +12,6 @@ func RegisterRoutes(r *gin.RouterGroup, dbService database.Service) {
|
|||||||
|
|
||||||
r.GET("/antrian-per-kategori", dashboardHandler.GetAntrianPerKategori)
|
r.GET("/antrian-per-kategori", dashboardHandler.GetAntrianPerKategori)
|
||||||
r.GET("/antrian-per-spesialis", dashboardHandler.GetAntrianPerSpesialis)
|
r.GET("/antrian-per-spesialis", dashboardHandler.GetAntrianPerSpesialis)
|
||||||
r.GET("/perbandingan-status-antrian", dashboardHandler.GetPerbandinganstatusAntrean)
|
r.GET("/perbandingan-status-antrian", dashboardHandler.GetPerbandinganStatusAntrean)
|
||||||
|
r.GET("/perbandingan-kategori-antrian", dashboardHandler.GetPerbandinganKategoriAntrean)
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user