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
|
||||
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
|
||||
var err error
|
||||
@@ -684,7 +684,7 @@ func (transabsensi *RekapKehadiranHomeScreen) RekapKehadiranHomeScreen(M_StaffID
|
||||
|
||||
var jumlah_saturday 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_libur_sampai_hari_ini_point_b int = 0
|
||||
@@ -780,27 +780,27 @@ func (transabsensi *RekapKehadiranHomeScreen) RekapKehadiranHomeScreen(M_StaffID
|
||||
&jumlah_sunday,
|
||||
)
|
||||
|
||||
qJumlahHariBulanIni := `select timestampdiff(day,
|
||||
qJumlahHariSampaiHariIni := `select timestampdiff(day,
|
||||
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(
|
||||
qJumlahHariBulanIni,
|
||||
rowqJumlahHariSampaiHariIni := db.Handle.QueryRow(
|
||||
qJumlahHariSampaiHariIni,
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
log.Printf("Error select count jumlah_hari_bulan_ini: %v", err)
|
||||
log.Printf("Executing query: %s\n", qJumlahHariBulanIni)
|
||||
log.Printf("Error select count jumlah_hari_sampai_hari_ini: %v", err)
|
||||
log.Printf("Executing query: %s\n", qJumlahHariSampaiHariIni)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
db.LogSQL(qJumlahHariBulanIni)
|
||||
err = rowQJumlahHariBulanIni.Scan(
|
||||
&jumlah_hari_bulan_ini,
|
||||
db.LogSQL(qJumlahHariSampaiHariIni)
|
||||
err = rowqJumlahHariSampaiHariIni.Scan(
|
||||
&jumlah_hari_sampai_hari_ini,
|
||||
)
|
||||
|
||||
// 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
|
||||
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_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_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
|
||||
}
|
||||
|
||||
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