step 12 : fix search first login internal

This commit is contained in:
sindhu
2024-01-25 07:32:06 +07:00
parent 369e1ff02a
commit cadeeb6740
6 changed files with 417 additions and 21 deletions

View File

@@ -26,6 +26,7 @@ func (staff *Staff) LoginAttendance(email string, id_google_sign_in string) (*mo
// inisialisasi
var err error
var ret model.Staff
var var_staff_is_login string
// decode private.pem
pemData, err := ioutil.ReadFile(config.Data.Get("privatekey"))
@@ -55,32 +56,61 @@ func (staff *Staff) LoginAttendance(email string, id_google_sign_in string) (*mo
return nil, err
}
// jika sukses generate token maka update
// M_StaffToken & M_StaffIsLogin
qx := `UPDATE m_staff
SET
M_StaffToken = ?,
M_StaffIsLogin = 'Y'
WHERE
M_StaffIsActive = 'Y'
AND M_StaffEmail = ?
AND M_StaffIDGoogleSignIn = ?
// check staff is login
qCheck := `SELECT
M_StaffIsLogin
FROM m_staff
WHERE
M_StaffIsActive = 'Y'
AND M_StaffEmail = ?
`
// log sql untuk mengetahui query yg akan dieksekusi
db.LogSQL(qx)
// cek kondisi
// _ merupakan kondisi true namun value tidak digunakan sbg cek
// error kondisi false dan error digunakan
_, err = db.Handle.Exec(
qx,
token,
rowCheck := db.Handle.QueryRow(
qCheck,
email,
id_google_sign_in)
)
db.LogSQL(qCheck)
err = rowCheck.Scan(
&var_staff_is_login,
)
if err != nil {
return &ret, fmt.Errorf("UPDATE_TOKEN_FAILED")
log.Printf("Error m_staff select isLogin: %v", err)
log.Printf("Executing query: %s\n", qCheck)
return nil, err
}
if var_staff_is_login == "N" {
// generate token jk isLogin N
// jika sukses generate token maka update
// M_StaffToken & M_StaffIsLogin
qx := `UPDATE m_staff
SET
M_StaffToken = ?,
M_StaffIDGoogleSignIn = ?,
M_StaffIsLogin = 'Y'
WHERE
M_StaffIsActive = 'Y'
AND M_StaffEmail = ?
`
// log sql untuk mengetahui query yg akan dieksekusi
db.LogSQL(qx)
// cek kondisi
// _ merupakan kondisi true namun value tidak digunakan sbg cek
// error kondisi false dan error digunakan
_, err = db.Handle.Exec(
qx,
token,
id_google_sign_in,
email)
if err != nil {
return &ret, fmt.Errorf("UPDATE_TOKEN_FAILED")
}
}
// data yang akan di tampilkan
@@ -147,3 +177,76 @@ func (staff *Staff) LoginAttendance(email string, id_google_sign_in string) (*mo
// hasil return nya
return &ret, err
}
// logout
func (staff *Staff) LogoutAttendance(email string, id_google_sign_in string) (*model.LogoutResponse, error) {
// inisialisasi
var err error
var ret model.LogoutResponse
var varCheckToken string
ret.Status = new(string)
ret.Message = new(string)
*ret.Status = "OK"
*ret.Message = "Logout Berhasil"
q := `SELECT
M_StaffToken
FROM m_staff
join m_company
ON M_StaffM_CompanyID = M_CompanyID
AND M_CompanyIsActive = 'Y'
AND M_StaffIsActive = 'Y'
AND M_StaffIsLogin = 'Y'
AND M_StaffIDGoogleSignIn = ?
AND M_StaffEmail = ?`
// row merupakan penerima yang akan dimasukkan langsung, menggunakan anotasi :=
// id_google_sign_in, email merupakan binding parameter dari tanda tanya "?" di sql
row := db.Handle.QueryRow(q, id_google_sign_in, email)
db.LogSQL(q)
// row.Scan untuk mendapatkan field dari sql diatas
// NOTE POSISI ROW SCAN HARUS SAMA PERSIS SEPERTI FIELD YANG AKAN DI RETURN
err = row.Scan(
&varCheckToken,
)
// check data
if err != nil {
log.Printf("Error m_staff select: %v", err)
log.Printf("Executing query: %s\n", q)
*ret.Status = "ERR"
*ret.Message = "Error : Check Data Failed"
return &ret, err
}
qx := `UPDATE m_staff
SET
M_StaffToken = NULL,
M_StaffIsLogin = 'N'
WHERE
M_StaffIsActive = 'Y'
AND M_StaffEmail = ?
`
// log sql untuk mengetahui query yg akan dieksekusi
db.LogSQL(qx)
// cek kondisi
// _ merupakan kondisi true namun value tidak digunakan sbg cek
// error kondisi false dan error digunakan
_, err = db.Handle.Exec(
qx,
email)
if err != nil {
*ret.Status = "ERR"
*ret.Message = "Error : UPDATE TOKEN FAILED"
return &ret, fmt.Errorf("UPDATE_TOKEN_FAILED")
}
// hasil return nya
return &ret, err
}