Sunday, January 3, 2021

Aplikasi Kehadiran Scan QRCode Android #3

Sesi ini kita akan membuat RestAPI, sedangkan API dari beberapa sumber bacaan yang bertebaran adalah singkatan dari Application Programming Interface yaitu sebuah software yang memungkinkan para developer untuk mengintegrasikan dan mengizinkan dua aplikasi yang berbeda secara bersamaan untuk saling terhubung satu sama lain.

Untuk membuat API dipembahasan ini kita menggunakan salah satu framework PHP yang masih cukup familiar sampai sekarang, CI atau Code Igniter yang sekarang sudah mencapai versi 4.x.x, karena belum sempat ada waktu luang, maka pembuatan API ini terbatas di CI versi 3.


    public function login(){
        $email = $this->input->post('email', TRUE);
        $pass = $this->input->post('password', TRUE);
        
        $query  = $this->db->query("SELECT * FROM m_guru WHERE email ='$email' AND password =MD5('$pass')");
        if ($query->num_rows() > 0){
            $data = $query->row();
            if ($data){
                $response["user"]["nama"] = $data->nama_lengkap;
                $response["user"]["id"] = $data->id;
                $response["user"]["photo"] = $data->photo;
                $response["error"] = FALSE;
                $response["message"] = "success";

                echo json_encode($response);
            }else{
                $response["error"] = TRUE;
                $response["message"] = "Username dan password tidak cocok";
                echo json_encode($response);
            }
        }else{
            $response["error"] = TRUE;
                $response["message"] = "Username dan password tidak cocok";
                echo json_encode($response);
        }
        
    }


function getPresensi(){
        
        $guru_id = $this->input->post('guru_id', TRUE);
        $tgl_hadir = $this->input->post('tanggal', TRUE);

        if (empty($tgl_hadir)){
            $tgl_hadir = date('Y-m-d');
        }

        $sql ="SELECT p.id, g.nama_lengkap, DATE_FORMAT(p.tanggal,'%d-%m-%Y') as tgl_hadir, DATE_FORMAT(p.tanggal, '%T') AS jam_hadir, k.kelas, p.is_mode ";
        $sql .=" FROM tr_presensi p INNER JOIN m_guru g ON p.guru_id = g.id ";
        $sql .=" INNER JOIN m_kelas k ON p.kelas_id = k.id ";
        $sql .=" WHERE DATE_FORMAT(p.tanggal,'%Y-%m-%d')='".$tgl_hadir."' AND p.guru_id='".$guru_id."' ORDER BY p.id ASC";

        $result = $this->db->query($sql)->result();

        if ($result) {
            $response['error']      = FALSE;
            $response['data']       = $result;  
        }else{
            $response['error']      = TRUE;
            $response['error_msg']      = 'Tidak ada data presensi';

        }
        
        header('Content-Type: application/json');
        echo json_encode($response);

    }
    
    function save_kehadiran(){
        $guru_id = $this->input->post('guru_id', TRUE);
        $qrcode = $this->input->post('qrcode', TRUE);
        $kelas_id = $this->input->post('kelas_id', TRUE);
        
        $tanggal = date('Y-m-d');

        $sql ="SELECT id, kelas_id FROM m_qrcode WHERE qrcode='".$qrcode."' AND is_status='1'";
        $jumlah = $this->db->query($sql)->num_rows();

        if ($jumlah >0){
            $sql_guru = "SELECT * FROM m_guru WHERE id='".$guru_id."'";
            $data = $this->db->query($sql_guru)->row();

            $q="SELECT * FROM tr_presensi WHERE guru_id ='".$data->id."' AND DATE_FORMAT(tanggal,'%Y-%m-%d')='".$tanggal."' AND kelas_id ='".$kelas_id."' ORDER BY id DESC";
            $num_rows = $this->db->query($q)->num_rows();

            if ($num_rows > 0) {
                $mode = $this->db->query($q)->row()->is_mode;
                $id = $this->db->query($q)->row()->id;
                
                if ($mode=="1"){
                    $is_mode ="2";

                    $object = array ('guru_id' => $data->id, 'is_mode' => $is_mode, 'kelas_id' => $kelas_id);
                    $result = $this->db->insert('tr_presensi', $object);

                    if ($result) {
                        $response["error"] = FALSE;
                        $response["message"] = "Kehadiran Success Terkirim !";
                    }else{
                        $response["error"] = TRUE;
                        $response["message"] = "Kehadiran Gagal Terkirim !";
                    }

                }else{

                    $object = array ('tanggal' => date("Y-m-d H:i:s"));
                    $result = $this->guru->updateKehadiran($id, $object);
                    if ($result) {
                        $response["error"] = FALSE;
                        $response["message"] = "Kehadiran Success Terkirim !";
                    }else{
                        $response["error"] = TRUE;
                        $response["message"] = "Kehadiran Gagal Terkirim !";
                    }
                }
            }else{

                $object = array ('guru_id' => $data->id, 'kelas_id' => $kelas_id);
                $result = $this->db->insert('tr_presensi', $object);

                if ($result) {
                    $response["error"] = FALSE;
                    $response["message"] = "Kehadiran Success Terkirim !";
                }else{
                    $response["error"] = TRUE;
                    $response["message"] = "Kehadiran Gagal Terkirim !";
                }
            }
            
        }else{
            $response["error"] = FALSE;
            $response["message"] = "QR-CODE Tidak terdaftar ...";
        }
        
        echo json_encode($response);
    }

No comments:

Post a Comment