feat: require hospital code and add company APIs
This commit is contained in:
71
internal/repository/layanan.go
Normal file
71
internal/repository/layanan.go
Normal file
@@ -0,0 +1,71 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
)
|
||||
|
||||
type LayananListParams struct {
|
||||
Page int
|
||||
PerPage int
|
||||
}
|
||||
|
||||
type LayananPage struct {
|
||||
Items []LayananDepartemen
|
||||
Total int
|
||||
}
|
||||
|
||||
type LayananDepartemen struct {
|
||||
GroupLayananID *string `json:"GroupLayananID"`
|
||||
Departemen *string `json:"Departemen"`
|
||||
LayananDepartemenID int64 `json:"LayananDepartemenID"`
|
||||
LayananID *string `json:"LayananID"`
|
||||
NamaLayanan *string `json:"NamaLayanan"`
|
||||
Harga *string `json:"Harga"`
|
||||
}
|
||||
|
||||
func (r MySQLLayananRepository) ListLayanan(ctx context.Context, params LayananListParams) (LayananPage, error) {
|
||||
var total int
|
||||
if err := r.db.QueryRowContext(ctx, `
|
||||
SELECT COUNT(*)
|
||||
FROM layanandepartemen
|
||||
WHERE NA = 'N' AND DepartemenID = 'MCU'
|
||||
`).Scan(&total); err != nil {
|
||||
return LayananPage{}, err
|
||||
}
|
||||
|
||||
rows, err := r.db.QueryContext(ctx, `
|
||||
SELECT ld.GroupLayananID, d.Nama, ld.LayananDepartemenID,
|
||||
ld.LayananID, ml.Nama, CAST(ld.Harga AS CHAR)
|
||||
FROM layanandepartemen ld
|
||||
LEFT JOIN departemen d ON d.DepartemenID = ld.DepartemenID
|
||||
LEFT JOIN masterlayanan ml ON ml.LayananID = ld.LayananID
|
||||
WHERE ld.NA = 'N' AND ld.DepartemenID = 'MCU'
|
||||
ORDER BY ld.TanggalBuat DESC
|
||||
LIMIT ? OFFSET ?
|
||||
`, params.PerPage, (params.Page-1)*params.PerPage)
|
||||
if err != nil {
|
||||
return LayananPage{}, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
items := make([]LayananDepartemen, 0)
|
||||
for rows.Next() {
|
||||
var item LayananDepartemen
|
||||
var groupLayananID, departemen, layananID, namaLayanan, harga sql.NullString
|
||||
if err := rows.Scan(&groupLayananID, &departemen, &item.LayananDepartemenID,
|
||||
&layananID, &namaLayanan, &harga); err != nil {
|
||||
return LayananPage{}, err
|
||||
}
|
||||
item.GroupLayananID = nullStringPtr(groupLayananID)
|
||||
item.Departemen = nullStringPtr(departemen)
|
||||
item.LayananID = nullStringPtr(layananID)
|
||||
item.NamaLayanan = nullStringPtr(namaLayanan)
|
||||
item.Harga = nullStringPtr(harga)
|
||||
items = append(items, item)
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return LayananPage{}, err
|
||||
}
|
||||
return LayananPage{Items: items, Total: total}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user