step 12 : fix search first login internal
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user