feat: include tariff period in package detail
This commit is contained in:
@@ -50,29 +50,37 @@ type PaketSummary struct {
|
||||
}
|
||||
|
||||
type PaketDetail struct {
|
||||
PaketID string `json:"PaketID"`
|
||||
Nama string `json:"Nama"`
|
||||
JenisPaket string `json:"JenisPaket"`
|
||||
RJ int `json:"RJ"`
|
||||
RI int `json:"RI"`
|
||||
TglDari string `json:"TglDari"`
|
||||
TglSampai string `json:"TglSampai"`
|
||||
MultiVisit int `json:"MultiVisit"`
|
||||
HeaderPaket string `json:"HeaderPaket"`
|
||||
KelasID string `json:"KelasID"`
|
||||
JumlahHari int `json:"JumlahHari"`
|
||||
TotalHarga string `json:"TotalHarga"`
|
||||
Keterangan string `json:"Keterangan"`
|
||||
StatusID int `json:"StatusID"`
|
||||
LoginBuat string `json:"LoginBuat"`
|
||||
TanggalBuat string `json:"TanggalBuat"`
|
||||
LoginEdit string `json:"LoginEdit"`
|
||||
TanggalEdit string `json:"TanggalEdit"`
|
||||
NA string `json:"NA"`
|
||||
Layanan []PaketLayanan `json:"layanan"`
|
||||
Operasi []PaketOperasi `json:"operasi"`
|
||||
Item []PaketItem `json:"item"`
|
||||
Kamar []PaketKamar `json:"kamar"`
|
||||
PaketID string `json:"PaketID"`
|
||||
Nama string `json:"Nama"`
|
||||
JenisPaket string `json:"JenisPaket"`
|
||||
RJ int `json:"RJ"`
|
||||
RI int `json:"RI"`
|
||||
TglDari string `json:"TglDari"`
|
||||
TglSampai string `json:"TglSampai"`
|
||||
MultiVisit int `json:"MultiVisit"`
|
||||
HeaderPaket string `json:"HeaderPaket"`
|
||||
KelasID string `json:"KelasID"`
|
||||
JumlahHari int `json:"JumlahHari"`
|
||||
TotalHarga string `json:"TotalHarga"`
|
||||
Keterangan string `json:"Keterangan"`
|
||||
StatusID int `json:"StatusID"`
|
||||
LoginBuat string `json:"LoginBuat"`
|
||||
TanggalBuat string `json:"TanggalBuat"`
|
||||
LoginEdit string `json:"LoginEdit"`
|
||||
TanggalEdit string `json:"TanggalEdit"`
|
||||
NA string `json:"NA"`
|
||||
PeriodeTarif *PaketPeriodeTarif `json:"PeriodeTarif"`
|
||||
Layanan []PaketLayanan `json:"layanan"`
|
||||
Operasi []PaketOperasi `json:"operasi"`
|
||||
Item []PaketItem `json:"item"`
|
||||
Kamar []PaketKamar `json:"kamar"`
|
||||
}
|
||||
|
||||
type PaketPeriodeTarif struct {
|
||||
PeriodeTarifID int64 `json:"PeriodeTarifID"`
|
||||
Keterangan *string `json:"Keterangan"`
|
||||
TanggalBerlaku string `json:"TanggalBerlaku"`
|
||||
TanggalBerakhir string `json:"TanggalBerakhir"`
|
||||
}
|
||||
|
||||
type PaketLayanan struct {
|
||||
@@ -243,10 +251,11 @@ func (r MySQLLayananRepository) GetPaket(ctx context.Context, id string) (*Paket
|
||||
result.TanggalBuat = laravelDateJSON(tanggalBuat)
|
||||
result.TanggalEdit = laravelDateJSON(tanggalEdit)
|
||||
|
||||
tariffTable, err := r.activePaketTariffTable(ctx)
|
||||
periodeTarif, tariffTable, err := r.activePaketTariff(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
result.PeriodeTarif = periodeTarif
|
||||
pricing := newPaketBasePricing()
|
||||
if result.Layanan, err = r.paketLayanan(ctx, id, result.KelasID, tariffTable, pricing); err != nil {
|
||||
return nil, err
|
||||
@@ -275,29 +284,37 @@ func newPaketBasePricing() *paketBasePricing {
|
||||
}
|
||||
}
|
||||
|
||||
func (r MySQLLayananRepository) activePaketTariffTable(ctx context.Context) (string, error) {
|
||||
var periodID int64
|
||||
func (r MySQLLayananRepository) activePaketTariff(ctx context.Context) (*PaketPeriodeTarif, string, error) {
|
||||
var period PaketPeriodeTarif
|
||||
var keterangan sql.NullString
|
||||
err := r.db.QueryRowContext(ctx, `
|
||||
SELECT PeriodeTarifID
|
||||
SELECT PeriodeTarifID, Keterangan,
|
||||
CAST(TanggalBerlaku AS CHAR), CAST(TanggalBerakhir AS CHAR)
|
||||
FROM periode_tarif
|
||||
WHERE DATE(TanggalBerlaku) <= CURRENT_DATE()
|
||||
AND DATE(TanggalBerakhir) >= CURRENT_DATE()
|
||||
AND NA = 'N'
|
||||
ORDER BY PeriodeTarifID DESC
|
||||
LIMIT 1`).Scan(&periodID)
|
||||
LIMIT 1`).Scan(
|
||||
&period.PeriodeTarifID,
|
||||
&keterangan,
|
||||
&period.TanggalBerlaku,
|
||||
&period.TanggalBerakhir,
|
||||
)
|
||||
if err == sql.ErrNoRows {
|
||||
return "", nil
|
||||
return nil, "", nil
|
||||
}
|
||||
if err != nil {
|
||||
return "", err
|
||||
return nil, "", err
|
||||
}
|
||||
period.Keterangan = nullStringPtr(keterangan)
|
||||
|
||||
tableName := "harga_layanan_" + strconv.FormatInt(periodID, 10)
|
||||
tableName := "harga_layanan_" + strconv.FormatInt(period.PeriodeTarifID, 10)
|
||||
exists, err := r.tableExists(ctx, tableName)
|
||||
if err != nil || !exists {
|
||||
return "", err
|
||||
return &period, "", err
|
||||
}
|
||||
return tableName, nil
|
||||
return &period, tableName, nil
|
||||
}
|
||||
|
||||
func (r MySQLLayananRepository) paketLayanan(
|
||||
|
||||
Reference in New Issue
Block a user