step 14 : rekap kehadiran query resolve
This commit is contained in:
@@ -676,7 +676,7 @@ func (transabsensi *TransAbsensiCheckTimeAttendanceResponse) CheckTimeAttendance
|
|||||||
}
|
}
|
||||||
|
|
||||||
// fungsi untuk rekap kehadiran home screen
|
// fungsi untuk rekap kehadiran home screen
|
||||||
func (transabsensi *RekapKehadiranHomeScreen) RekapKehadiranHomeScreen(M_StaffID string, M_CompanyID string, token string) (*model.RekapKehadiranHomeScreen, error) {
|
func (transabsensi *RekapKehadiranHomeScreen) RekapKehadiranHomeScreenV1(M_StaffID string, M_CompanyID string, token string) (*model.RekapKehadiranHomeScreen, error) {
|
||||||
|
|
||||||
// inisialisasi
|
// inisialisasi
|
||||||
var err error
|
var err error
|
||||||
@@ -684,7 +684,7 @@ func (transabsensi *RekapKehadiranHomeScreen) RekapKehadiranHomeScreen(M_StaffID
|
|||||||
|
|
||||||
var jumlah_saturday int = 0
|
var jumlah_saturday int = 0
|
||||||
var jumlah_sunday int = 0
|
var jumlah_sunday int = 0
|
||||||
var jumlah_hari_bulan_ini int = 0
|
var jumlah_hari_sampai_hari_ini int = 0
|
||||||
|
|
||||||
var jumlah_hari_sampai_hari_ini_point_a int = 0
|
var jumlah_hari_sampai_hari_ini_point_a int = 0
|
||||||
var jumlah_hari_libur_sampai_hari_ini_point_b int = 0
|
var jumlah_hari_libur_sampai_hari_ini_point_b int = 0
|
||||||
@@ -780,27 +780,27 @@ func (transabsensi *RekapKehadiranHomeScreen) RekapKehadiranHomeScreen(M_StaffID
|
|||||||
&jumlah_sunday,
|
&jumlah_sunday,
|
||||||
)
|
)
|
||||||
|
|
||||||
qJumlahHariBulanIni := `select timestampdiff(day,
|
qJumlahHariSampaiHariIni := `select timestampdiff(day,
|
||||||
concat(year(now()),'-',month(now()),'-01'),
|
concat(year(now()),'-',month(now()),'-01'),
|
||||||
date_add( concat(year(now()),'-',month(now()),'-01'), interval 1 month)) as jumlah_hari_bulan_ini`
|
date_add( concat(year(now()),'-',month(now()),'-01'), interval 1 month)) as jumlah_hari_sampai_hari_ini`
|
||||||
|
|
||||||
rowQJumlahHariBulanIni := db.Handle.QueryRow(
|
rowqJumlahHariSampaiHariIni := db.Handle.QueryRow(
|
||||||
qJumlahHariBulanIni,
|
qJumlahHariSampaiHariIni,
|
||||||
)
|
)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error select count jumlah_hari_bulan_ini: %v", err)
|
log.Printf("Error select count jumlah_hari_sampai_hari_ini: %v", err)
|
||||||
log.Printf("Executing query: %s\n", qJumlahHariBulanIni)
|
log.Printf("Executing query: %s\n", qJumlahHariSampaiHariIni)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
db.LogSQL(qJumlahHariBulanIni)
|
db.LogSQL(qJumlahHariSampaiHariIni)
|
||||||
err = rowQJumlahHariBulanIni.Scan(
|
err = rowqJumlahHariSampaiHariIni.Scan(
|
||||||
&jumlah_hari_bulan_ini,
|
&jumlah_hari_sampai_hari_ini,
|
||||||
)
|
)
|
||||||
|
|
||||||
// hitung point A
|
// hitung point A
|
||||||
jumlah_hari_sampai_hari_ini_point_a = jumlah_hari_bulan_ini - jumlah_sunday - jumlah_saturday
|
jumlah_hari_sampai_hari_ini_point_a = jumlah_hari_sampai_hari_ini - jumlah_sunday - jumlah_saturday
|
||||||
|
|
||||||
// query point B : jumlah hari libur selain sabtu dan minggu sampai hari ini
|
// query point B : jumlah hari libur selain sabtu dan minggu sampai hari ini
|
||||||
qPointB := `SELECT COUNT(M_LiburID) as jumlah_hari_libur_sampai_hari_ini_point_b
|
qPointB := `SELECT COUNT(M_LiburID) as jumlah_hari_libur_sampai_hari_ini_point_b
|
||||||
@@ -863,7 +863,7 @@ func (transabsensi *RekapKehadiranHomeScreen) RekapKehadiranHomeScreen(M_StaffID
|
|||||||
|
|
||||||
log.Printf("Executing jumlah_saturday: %s\n", strconv.Itoa(jumlah_saturday))
|
log.Printf("Executing jumlah_saturday: %s\n", strconv.Itoa(jumlah_saturday))
|
||||||
log.Printf("Executing jumlah_sunday: %s\n", strconv.Itoa(jumlah_sunday))
|
log.Printf("Executing jumlah_sunday: %s\n", strconv.Itoa(jumlah_sunday))
|
||||||
log.Printf("Executing jumlah_hari_bulan_ini: %s\n", strconv.Itoa(jumlah_hari_bulan_ini))
|
log.Printf("Executing jumlah_hari_sampai_hari_ini: %s\n", strconv.Itoa(jumlah_hari_sampai_hari_ini))
|
||||||
|
|
||||||
log.Printf("Executing jumlah_hari_sampai_hari_ini_point_a: %s\n", strconv.Itoa(jumlah_hari_sampai_hari_ini_point_a))
|
log.Printf("Executing jumlah_hari_sampai_hari_ini_point_a: %s\n", strconv.Itoa(jumlah_hari_sampai_hari_ini_point_a))
|
||||||
log.Printf("Executing jumlah_hari_libur_sampai_hari_ini_point_b: %s\n", strconv.Itoa(jumlah_hari_libur_sampai_hari_ini_point_b))
|
log.Printf("Executing jumlah_hari_libur_sampai_hari_ini_point_b: %s\n", strconv.Itoa(jumlah_hari_libur_sampai_hari_ini_point_b))
|
||||||
@@ -886,3 +886,195 @@ func (transabsensi *RekapKehadiranHomeScreen) RekapKehadiranHomeScreen(M_StaffID
|
|||||||
|
|
||||||
return &ret, err
|
return &ret, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (transabsensi *RekapKehadiranHomeScreen) RekapKehadiranHomeScreen(M_StaffID string, M_CompanyID string, token string) (*model.RekapKehadiranHomeScreen, error) {
|
||||||
|
|
||||||
|
// inisialisasi
|
||||||
|
var err error
|
||||||
|
var ret model.RekapKehadiranHomeScreen
|
||||||
|
|
||||||
|
var jumlah_saturday int = 0
|
||||||
|
var jumlah_sunday int = 0
|
||||||
|
var jumlah_hari_sampai_hari_ini int = 0
|
||||||
|
|
||||||
|
var jumlah_hari_sampai_hari_ini_point_a int = 0
|
||||||
|
// var jumlah_hari_libur_sampai_hari_ini_point_b int = 0
|
||||||
|
var jumlah_absen_sampai_hari_ini_point_c int = 0
|
||||||
|
var total_ketidakhadiran int = 0
|
||||||
|
var total_lembur_sampai_hari_ini int = 0
|
||||||
|
|
||||||
|
// clear memory address
|
||||||
|
ret.Kehadiran = new(string)
|
||||||
|
ret.Lembur = new(string)
|
||||||
|
ret.TidakHadir = new(string)
|
||||||
|
ret.Status = new(string)
|
||||||
|
ret.Message = new(string)
|
||||||
|
|
||||||
|
// set value
|
||||||
|
*ret.TidakHadir = "0"
|
||||||
|
*ret.Kehadiran = "0"
|
||||||
|
*ret.Lembur = "0"
|
||||||
|
|
||||||
|
// query rekap lembur
|
||||||
|
qLembur := `SELECT COUNT(T_TransactionLemburID) as total_lembur_sampai_hari_ini
|
||||||
|
FROM t_transaction_lembur
|
||||||
|
WHERE
|
||||||
|
T_TransactionLemburIsActive = 'Y'
|
||||||
|
AND T_TransactionLemburM_StaffID = ?
|
||||||
|
AND T_TransactionLemburM_CompanyID = ?
|
||||||
|
AND T_TransactionLemburM_AbsensiTypeID = 5
|
||||||
|
AND MONTH(T_TransactionTglLembur) = MONTH(CURDATE())`
|
||||||
|
|
||||||
|
rowQLembur := db.Handle.QueryRow(
|
||||||
|
qLembur,
|
||||||
|
M_StaffID,
|
||||||
|
M_CompanyID,
|
||||||
|
)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error select count lembur: %v", err)
|
||||||
|
log.Printf("Executing query: %s\n", qLembur)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
db.LogSQL(qLembur)
|
||||||
|
err = rowQLembur.Scan(
|
||||||
|
&total_lembur_sampai_hari_ini,
|
||||||
|
)
|
||||||
|
|
||||||
|
// query point A : jumlah hari sampai hari ini ( dalam bulan ini ) selain sabtu dan minggu
|
||||||
|
qCountSaturday := `WITH RECURSIVE offdays as(
|
||||||
|
SELECT
|
||||||
|
LAST_DAY(DATE_FORMAT(CURDATE(), '%Y-%m-01') - INTERVAL 1 MONTH) + INTERVAL 1 DAY AS Date,
|
||||||
|
DAYNAME(LAST_DAY(DATE_FORMAT(CURDATE(), '%Y-%m-01') - INTERVAL 1 MONTH) + INTERVAL 1 DAY) AS DayName
|
||||||
|
UNION ALL
|
||||||
|
SELECT Date + INTERVAL 1 DAY, DAYNAME(Date + INTERVAL 1 DAY)
|
||||||
|
FROM offdays WHERE DATE < LAST_DAY(CURDATE())
|
||||||
|
)
|
||||||
|
SELECT count(*) as countSaturday
|
||||||
|
FROM offdays where DAYNAME(DATE) = 'Saturday'
|
||||||
|
AND Date BETWEEN DATE_FORMAT(CURDATE(), '%Y-%m-01') AND CURDATE()`
|
||||||
|
|
||||||
|
rowQCountSaturday := db.Handle.QueryRow(
|
||||||
|
qCountSaturday,
|
||||||
|
)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error select count jumlah saturday : %v", err)
|
||||||
|
log.Printf("Executing query: %s\n", qCountSaturday)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
db.LogSQL(qCountSaturday)
|
||||||
|
err = rowQCountSaturday.Scan(
|
||||||
|
&jumlah_saturday,
|
||||||
|
)
|
||||||
|
|
||||||
|
qCountSunday := `WITH RECURSIVE offdays AS (
|
||||||
|
SELECT
|
||||||
|
LAST_DAY(DATE_FORMAT(CURDATE(), '%Y-%m-01') - INTERVAL 1 MONTH) + INTERVAL 1 DAY AS Date,
|
||||||
|
DAYNAME(LAST_DAY(DATE_FORMAT(CURDATE(), '%Y-%m-01') - INTERVAL 1 MONTH) + INTERVAL 1 DAY) AS DayName
|
||||||
|
UNION ALL
|
||||||
|
SELECT Date + INTERVAL 1 DAY, DAYNAME(Date + INTERVAL 1 DAY)
|
||||||
|
FROM offdays
|
||||||
|
WHERE DATE < LAST_DAY(CURDATE())
|
||||||
|
)
|
||||||
|
SELECT COUNT(*) AS countSunday
|
||||||
|
FROM offdays
|
||||||
|
WHERE DAYNAME(Date) = 'Sunday' AND Date BETWEEN DATE_FORMAT(CURDATE(), '%Y-%m-01') AND CURDATE()`
|
||||||
|
|
||||||
|
rowQCountSunday := db.Handle.QueryRow(
|
||||||
|
qCountSunday,
|
||||||
|
)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error select count jumlah saturday : %v", err)
|
||||||
|
log.Printf("Executing query: %s\n", qCountSunday)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
db.LogSQL(qCountSunday)
|
||||||
|
err = rowQCountSunday.Scan(
|
||||||
|
&jumlah_sunday,
|
||||||
|
)
|
||||||
|
|
||||||
|
qJumlahHariSampaiHariIni := `SELECT DATEDIFF(CURDATE(), DATE_FORMAT(CURDATE(), '%Y-%m-01') ) + 1 AS total_hari`
|
||||||
|
|
||||||
|
rowqJumlahHariSampaiHariIni := db.Handle.QueryRow(
|
||||||
|
qJumlahHariSampaiHariIni,
|
||||||
|
)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error select count jumlah_hari_sampai_hari_ini: %v", err)
|
||||||
|
log.Printf("Executing query: %s\n", qJumlahHariSampaiHariIni)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
db.LogSQL(qJumlahHariSampaiHariIni)
|
||||||
|
err = rowqJumlahHariSampaiHariIni.Scan(
|
||||||
|
&jumlah_hari_sampai_hari_ini,
|
||||||
|
)
|
||||||
|
|
||||||
|
// hitung point A
|
||||||
|
jumlah_hari_sampai_hari_ini_point_a = jumlah_hari_sampai_hari_ini - jumlah_sunday - jumlah_saturday
|
||||||
|
|
||||||
|
// query point C : jumlah absen sampai hari ini ( bisa di lihat dari clock in )
|
||||||
|
qPointC := `SELECT COUNT(T_TransactionID) as jumlah_absen_sampai_hari_ini_point_c
|
||||||
|
FROM t_transaction
|
||||||
|
WHERE
|
||||||
|
T_TransactionIsActive = 'Y'
|
||||||
|
AND T_TransactionM_StaffID = ?
|
||||||
|
AND T_TransactionM_CompanyID = ?
|
||||||
|
AND (
|
||||||
|
T_TransactionDate >= DATE_FORMAT(CURDATE(), '%Y-%m-01')
|
||||||
|
OR T_TransactionDate = CURDATE()
|
||||||
|
)
|
||||||
|
AND (
|
||||||
|
T_TransactionM_AbsensiTypeID = 1
|
||||||
|
AND (T_TransactionClockAbsensi != '00:00:00' OR T_TransactionClockAbsensi IS NOT NULL)
|
||||||
|
)`
|
||||||
|
|
||||||
|
rowQPointC := db.Handle.QueryRow(
|
||||||
|
qPointC,
|
||||||
|
M_StaffID,
|
||||||
|
M_CompanyID,
|
||||||
|
)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("Error select count jumlah_absen_sampai_hari_ini_point_c: %v", err)
|
||||||
|
log.Printf("Executing query: %s\n", qPointC)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
db.LogSQL(qPointC)
|
||||||
|
err = rowQPointC.Scan(
|
||||||
|
&jumlah_absen_sampai_hari_ini_point_c,
|
||||||
|
)
|
||||||
|
|
||||||
|
total_ketidakhadiran = jumlah_hari_sampai_hari_ini_point_a - jumlah_absen_sampai_hari_ini_point_c
|
||||||
|
|
||||||
|
log.Printf("Executing jumlah_saturday: %s\n", strconv.Itoa(jumlah_saturday))
|
||||||
|
log.Printf("Executing jumlah_sunday: %s\n", strconv.Itoa(jumlah_sunday))
|
||||||
|
log.Printf("Executing jumlah_hari_sampai_hari_ini: %s\n", strconv.Itoa(jumlah_hari_sampai_hari_ini))
|
||||||
|
|
||||||
|
log.Printf("Executing jumlah_hari_sampai_hari_ini_point_a: %s\n", strconv.Itoa(jumlah_hari_sampai_hari_ini_point_a))
|
||||||
|
// log.Printf("Executing jumlah_hari_libur_sampai_hari_ini_point_b: %s\n", strconv.Itoa(jumlah_hari_libur_sampai_hari_ini_point_b))
|
||||||
|
log.Printf("Executing jumlah_absen_sampai_hari_ini_point_c: %s\n", strconv.Itoa(jumlah_absen_sampai_hari_ini_point_c))
|
||||||
|
|
||||||
|
if total_ketidakhadiran != 0 {
|
||||||
|
*ret.TidakHadir = strconv.Itoa(total_ketidakhadiran)
|
||||||
|
}
|
||||||
|
|
||||||
|
if jumlah_absen_sampai_hari_ini_point_c != 0 {
|
||||||
|
*ret.Kehadiran = strconv.Itoa(jumlah_absen_sampai_hari_ini_point_c)
|
||||||
|
}
|
||||||
|
|
||||||
|
if total_lembur_sampai_hari_ini != 0 {
|
||||||
|
*ret.Lembur = strconv.Itoa(total_lembur_sampai_hari_ini)
|
||||||
|
}
|
||||||
|
|
||||||
|
*ret.Status = "OK"
|
||||||
|
*ret.Message = "Rekap Kehadiran Muncul"
|
||||||
|
|
||||||
|
return &ret, err
|
||||||
|
}
|
||||||
|
|||||||
BIN
backend/server
BIN
backend/server
Binary file not shown.
Reference in New Issue
Block a user