db->select('count(id) as count'); $this->db->from('pelanggan'); return $this->db->get(); } public function check_phone_number($number) { $cek = $this->db->query("SELECT id FROM pelanggan where phone='$number'"); if ($cek->num_rows() == 1) { return true; } else { return false; } } public function check_exist($email, $phone) { $cek = $this->db->query("SELECT id FROM pelanggan where email = '$email' AND no_telepon='$phone'"); if ($cek->num_rows() == 1) { return true; } else { return false; } } public function check_exist_phone($phone) { $cek = $this->db->query("SELECT id FROM pelanggan where no_telepon='$phone'"); if ($cek->num_rows() == 1) { return true; } else { return false; } } public function check_exist_phone_edit($id, $phone) { $cek = $this->db->query("SELECT no_telepon FROM pelanggan where no_telepon='$phone' AND id!='$id'"); if ($cek->num_rows() == 1) { return true; } else { return false; } } public function check_exist_email($email) { $cek = $this->db->query("SELECT id FROM pelanggan where email='$email'"); if ($cek->num_rows() == 1) { return true; } else { return false; } } public function check_exist_email_edit($id, $email) { $cek = $this->db->query("SELECT id FROM pelanggan where email='$email' AND id!='$id'"); if ($cek->num_rows() == 1) { return true; } else { return false; } } public function check_banned($phone) { $stat = $this->db->query("SELECT id FROM pelanggan WHERE status='3' AND no_telepon='$phone'"); if ($stat->num_rows() == 1) { return true; } else { return false; } } public function get_data_pelanggan($condition) { $this->db->select('pelanggan.*, saldo.saldo'); $this->db->from('pelanggan'); $this->db->join('saldo', 'pelanggan.id = saldo.id_user'); $this->db->where($condition); return $this->db->get(); } public function signup($data_signup) { $signup = $this->db->insert('pelanggan', $data_signup); $dataIns = array( 'id_user' => $data_signup['id'], 'saldo' => 0 ); $insSaldo = $this->db->insert('saldo', $dataIns); return $signup; } public function edit_profile($data, $email) { $this->db->where('no_telepon', $email); $this->db->update('pelanggan', $data); return true; } public function check_password($condition) { $this->db->select('id'); $this->db->from('pelanggan'); $this->db->where($condition); $cek = $this->db->get(); if ($cek->num_rows() > 0) { return true; } else { return false; } } function emailsend($subject, $emailuser, $content, $host, $port, $username, $password, $from, $appname, $secure) { require APPPATH . '/libraries/class.phpmailer.php'; $mail = new PHPMailer; $mail->IsSMTP(); $mail->SMTPSecure = $secure; $mail->Host = $host; //host masing2 provider email $mail->SMTPDebug = 0; $mail->Port = $port; $mail->SMTPAuth = true; $mail->Username = $username; //user email $mail->Password = $password; //password email $mail->SetFrom($from, $appname); //set email pengirim $mail->Subject = $subject; //subyek email $mail->AddAddress($emailuser, "User"); //tujuan email $mail->MsgHTML($content); //pesan dapat berupa html $mail->Send(); return true; } public function get_settings() { $this->db->select('*'); $this->db->from('app_settings'); $this->db->where('id', '1'); return $this->db->get()->result_array(); } public function dataforgot($forgotpass) { $forgot = $this->db->insert('forgot_password', $forgotpass); return $forgot; } public function sliderhome() { $this->db->select('*'); $this->db->from('promosi'); $this->db->join('fitur', 'promosi.fitur_promosi = fitur.id_fitur', 'left'); $this->db->where('is_show', '1'); $this->db->where('tanggal_berakhir>', date("Y-m-d")); return $this->db->get()->result_array(); } public function fiturhome() { $this->db->select('*'); $this->db->from('fitur'); $this->db->where('active', '1'); $this->db->order_by('id_fitur ASC'); $this->db->limit('7'); return $this->db->get()->result_array(); } public function fiturhomeall() { $this->db->select('*'); $this->db->from('fitur'); $this->db->where('active', '1'); $this->db->order_by('id_fitur ASC'); return $this->db->get()->result_array(); } public function beritahome() { $this->db->select('*'); $this->db->from('berita'); $this->db->join('kategori_news', 'berita.id_kategori = kategori_news.id_kategori_news', 'left'); $this->db->order_by('id_berita DESC'); $this->db->limit('4'); $this->db->where('status_berita', 1); return $this->db->get()->result_array(); } public function allberita() { $this->db->select('*'); $this->db->from('berita'); $this->db->join('kategori_news', 'berita.id_kategori = kategori_news.id_kategori_news', 'left'); $this->db->order_by('id_berita DESC'); $this->db->where('status_berita', 1); return $this->db->get()->result_array(); } public function beritadetail($id) { $this->db->select('*'); $this->db->from('berita'); $this->db->join('kategori_news', 'berita.id_kategori = kategori_news.id_kategori_news', 'left'); $this->db->where('id_berita', $id); $this->db->order_by('id_berita DESC'); return $this->db->get(); } public function ratinghome() { $this->db->select('rating_driver.*, pelanggan.*'); $this->db->from('rating_driver'); $this->db->where('rating_driver.rating != 0'); $this->db->where('rating_driver.rating != 1'); $this->db->where('rating_driver.rating != 2'); $this->db->where('rating_driver.rating != 3'); $this->db->join('pelanggan', 'rating_driver.id_pelanggan = pelanggan.id', 'left'); $this->db->order_by('rating_driver.nomor DESC'); $this->db->limit('3'); return $this->db->get()->result_array(); } public function saldouser($id) { $this->db->select('saldo'); $this->db->from('saldo'); $this->db->where('id_user', $id); $saldo = $this->db->get(); return $saldo; } public function getwallet($id) { $this->db->select('*'); $this->db->from('wallet'); $this->db->where('id_user', $id); $this->db->order_by('id', 'DESC'); return $this->db->get(); } public function tambahsaldo($id, $data) { $this->db->where('id_user', $id); $this->db->update('saldo', $data); return true; } public function insertwallet($data_withdraw) { $verify = $this->db->insert('wallet', $data_withdraw); return true; } public function get_driver_ride($lat, $lng, $fitur) { $url_foto = base_url() . 'images/fotodriver/'; $result = $this->db->query(" SELECT f.jarak_minimum, f.wallet_minimum, d.id as id, d.nama_driver, ld.latitude, ld.longitude, ld.bearing, ld.update_at, k.merek, k.nomor_kendaraan, k.warna, k.tipe, s.saldo, d.no_telepon, CONCAT('$url_foto', d.foto, '') as foto, d.reg_id, dj.driver_job, (6371 * acos(cos(radians($lat)) * cos(radians( ld.latitude ))" . " * cos(radians(ld.longitude) - radians($lng))" . " + sin(radians($lat)) * sin( radians(ld.latitude)))) AS distance FROM config_driver ld, driver d, driver_job dj, kendaraan k, saldo s,fitur f WHERE ld.id_driver = d.id AND f.id_fitur = $fitur AND ld.status = '1' AND dj.id = d.job AND d.job = f.driver_job AND d.status = '1' AND k.id_k = d.kendaraan AND s.id_user = d.id AND s.saldo > f.wallet_minimum HAVING distance <= f.jarak_minimum ORDER BY distance ASC"); return $result; } public function get_driver_car($lat, $lng, $fitur) { $range = 10; $url_foto = base_url() . 'images/fotodriver/'; $result = $this->db->query(" SELECT f.jarak_minimum, f.wallet_minimum, d.id as id, d.nama_driver, ld.latitude, ld.longitude, ld.bearing, ld.update_at, k.merek, k.nomor_kendaraan, k.warna, k.tipe, s.saldo, d.no_telepon, CONCAT('$url_foto', d.foto, '') as foto, d.reg_id, dj.driver_job, (6371 * acos(cos(radians($lat)) * cos(radians( ld.latitude ))" . " * cos(radians(ld.longitude) - radians($lng))" . " + sin(radians($lat)) * sin( radians(ld.latitude)))) AS distance FROM config_driver ld, driver d, driver_job dj, kendaraan k, saldo s,fitur f WHERE ld.id_driver = d.id AND f.id_fitur = $fitur AND ld.status = '1' AND dj.id = d.job AND d.job = '2' AND d.status = '1' AND k.id_k = d.kendaraan AND s.id_user = d.id AND s.saldo > 500 HAVING distance <= $range ORDER BY distance ASC"); return $result; } function get_biaya() { $tempBiaya = array(); $this->db->select('fitur.*,voucher.nilai, driver_job.icon as icon_driver'); $this->db->from('fitur'); $this->db->join('voucher', 'fitur.id_fitur = voucher.untuk_fitur', 'left'); $this->db->join('driver_job', 'fitur.driver_job = driver_job.id', 'left'); $biaya = $this->db->get()->result_array(); foreach ($biaya as $row) { $tempBiaya[] = array( 'id_fitur' => $row['id_fitur'], 'fitur' => $row['fitur'], 'biaya' => $row['biaya'], 'icon' => $row['icon'], 'home' => $row['home'], 'maks_distance' => $row['maks_distance'], 'icon_driver' => $row['icon_driver'], 'biaya_minimum' => $row['biaya_minimum'], 'keterangan_biaya' => $row['keterangan_biaya'], 'keterangan' => $row['keterangan'], 'diskon' => $row['nilai'] . "%", 'biaya_akhir' => $row['nilai'] / 100 ); } return $tempBiaya; } public function insert_transaksi($data_req) { $ha = 0; $kreditamuont = explode(".", $data_req['kredit_promo']); $ha = $data_req['harga'] - $kreditamuont[0]; if ($ha <= 0) { $ha = 0; } $data_req['kredit_promo'] = $kreditamuont[0]; $data_req['biaya_akhir'] = $ha; $this->db->insert('transaksi', $data_req); $reqid = $this->db->insert_id(); if ($this->db->affected_rows() == 1) { $get_data = $this->get_data_transaksi($data_req); $data_hist = array( 'id_transaksi' => $reqid, 'id_driver' => 'D0', 'status' => '1' ); $this->db->insert('history_transaksi', $data_hist); return array( 'status' => true, 'data' => $get_data->result() ); } else { return array( 'status' => false, 'data' => [] ); } } public function insert_transaksi_send($data_req, $dataDetail) { $ha = 0; $kreditamuont = explode(".", $data_req['kredit_promo']); $ha = $data_req['harga'] - $kreditamuont[0]; if ($ha <= 0) { $ha = 0; } $data_req['kredit_promo'] = $kreditamuont[0]; $data_req['biaya_akhir'] = $ha; $ins_trans = $this->db->insert('transaksi', $data_req); $reqid = $this->db->insert_id(); if ($this->db->affected_rows() == 1) { $data_hist = array( 'id_transaksi' => $reqid, 'id_driver' => 'D0', 'status' => '1' ); $this->db->insert('history_transaksi', $data_hist); $dataDetail['id_transaksi'] = $reqid; $this->db->insert('transaksi_detail_send', $dataDetail); $get_data_msend = $this->get_data_transaksi_send($data_req); return array( 'status' => true, 'data' => $get_data_msend ); } else { return array( 'status' => false, 'data' => [] ); } } function get_data_transaksi_send($data_cond) { $this->db->select('*'); $this->db->from('transaksi'); $this->db->join('transaksi_detail_send', 'transaksi.id = transaksi_detail_send.id_transaksi', 'left'); $this->db->where($data_cond); $cek = $this->db->get(); return $cek; } function get_data_transaksi($cond) { $this->db->select('*'); $this->db->from('transaksi'); $this->db->join('transaksi_detail_send', 'transaksi.id = transaksi_detail_send.id_transaksi', 'left'); $this->db->where($cond); $cek = $this->db->get(); return $cek; } function get_data_transaksi_merchant($cond) { $this->db->select('transaksi.*,transaksi_detail_merchant.id_trans_merchant, merchant.token_merchant'); $this->db->from('transaksi'); $this->db->join('transaksi_detail_merchant', 'transaksi.id = transaksi_detail_merchant.id_transaksi', 'left'); $this->db->join('merchant', 'transaksi_detail_merchant.id_merchant = merchant.id_merchant', 'left'); $this->db->where($cond); $cek = $this->db->get(); return $cek; } function check_status($dataTrans) { $this->db->select('' . 'status_transaksi.id as status,' . 'status_transaksi.status_transaksi as keterangan'); $this->db->from('history_transaksi'); $this->db->join('status_transaksi', 'history_transaksi.status = status_transaksi.id'); $this->db->where($dataTrans); $cek = $this->db->get(); $stat = TRUE; if ($cek->row('status') == 1) { $this->delete_transaksi($dataTrans['id_transaksi']); $stat = FALSE; } $dataCheck = array( 'message' => 'check status', 'status' => $stat, 'data' => $cek->result(), 'list_driver' => $this->get_data_driver_histroy($dataTrans['id_transaksi'])->result() ); return $dataCheck; } function check_banned_user($email) { $this->db->select('*'); $this->db->from('pelanggan'); $this->db->where('email', $email); $this->db->where("(status = '2' OR status = '3')", NULL, FALSE); // $this->db->where('status', '3'); $cek = $this->db->get(); if ($cek->num_rows() > 0) { return TRUE; } else { return FALSE; } } function listbank() { $this->db->select('*'); $this->db->from('list_bank'); $this->db->where('status_bank', "1"); return $this->db->get(); } function get_data_driver_histroy($id_transaksi) { $url_foto = base_url() . 'images/fotodriver/'; $this->db->select('' . 'driver.id,' . 'nama_driver,' . 'no_telepon,' . 'cd.latitude,' . 'cd.longitude,' . 'cd.update_at,' . "CONCAT('$url_foto', driver.foto, '') as foto," . 'reg_id,' . '"0" as distance,' . 'k.id_k as id_kendaraan,' . 'k.merek,' . 'k.tipe,' . 'k.jenis,' . 'k.nomor_kendaraan,' . 'k.warna'); $this->db->from('driver'); $this->db->join('history_transaksi', 'driver.id = history_transaksi.id_driver'); $this->db->join('config_driver cd', 'driver.id = cd.id_driver'); $this->db->join('kendaraan k', 'driver.kendaraan = k.id_k'); $this->db->where('history_transaksi.id_transaksi', $id_transaksi); $getD = $this->db->get(); return $getD; } function delete_chat($otherid, $userid) { $headers = array( "Accept: application/json", "Content-Type: application/json" ); $data3 = array(); $url3 = firebaseDb . '/chat/' . $otherid . '-' . $userid . '/.json'; $ch3 = curl_init($url3); curl_setopt($ch3, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch3, CURLOPT_CUSTOMREQUEST, 'DELETE'); curl_setopt($ch3, CURLOPT_POSTFIELDS, json_encode($data3)); curl_setopt($ch3, CURLOPT_HTTPHEADER, $headers); $return3 = curl_exec($ch3); $json_data3 = json_decode($return3, true); $data2 = array(); $url2 = firebaseDb . '/chat/' . $userid . '-' . $otherid . '/.json'; $ch2 = curl_init($url2); curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch2, CURLOPT_CUSTOMREQUEST, 'DELETE'); curl_setopt($ch2, CURLOPT_POSTFIELDS, json_encode($data2)); curl_setopt($ch2, CURLOPT_HTTPHEADER, $headers); $return2 = curl_exec($ch2); $json_data2 = json_decode($return2, true); $data1 = array(); $url1 = firebaseDb . '/Inbox/' . $userid . '/' . $otherid . '/.json'; $ch1 = curl_init($url1); curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch1, CURLOPT_CUSTOMREQUEST, 'DELETE'); curl_setopt($ch1, CURLOPT_POSTFIELDS, json_encode($data1)); curl_setopt($ch1, CURLOPT_HTTPHEADER, $headers); $return1 = curl_exec($ch1); $json_data1 = json_decode($return1, true); $data = array(); $url = firebaseDb . '/Inbox/' . $otherid . '/' . $userid . '/.json'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $return = curl_exec($ch); $json_data = json_decode($return, true); } public function get_trans_merchant($idtransaksi) { $this->db->select('mitra.*,transaksi_detail_merchant.id_merchant,transaksi_detail_merchant.total_biaya'); $this->db->from('transaksi_detail_merchant'); $this->db->join('mitra', 'transaksi_detail_merchant.id_merchant = mitra.id_merchant'); $this->db->where('id_transaksi', $idtransaksi); return $this->db->get(); } public function user_cancel_request($cond) { $this->db->select('' . 'id_driver,' . 'status'); $this->db->from('history_transaksi'); $this->db->where('id_transaksi', $cond['id_transaksi']); $id = $this->db->get(); $this->db->select('transaksi.*, fitur.home'); $this->db->from('transaksi'); $this->db->join('fitur', 'transaksi.order_fitur = fitur.id_fitur', 'left'); $this->db->where('id', $cond['id_transaksi']); $id2 = $this->db->get(); if ($id->row('status') == 1 || $id->row('status') == 2) { $data = array( 'status' => '5' ); if ($id2->row('home') == 4) { $get_mitra = $this->get_trans_merchant($cond['id_transaksi']); $this->delete_chat($get_mitra->row('id_merchant'), $id2->row('id_pelanggan')); $this->delete_chat($get_mitra->row('id_merchant'), $id2->row('id_driver')); }; $this->db->where($cond); $edit = $this->db->update('history_transaksi', $data); $data = array( 'status' => '1' ); $this->db->where('id_driver', $id->row('id_driver')); $edit = $this->db->update('config_driver', $data); return array( 'status' => true, 'data' => [], 'iddriver' => $id->row('id_driver'), 'idpelanggan' => $id2->row('id_pelanggan') ); } else { return array( 'status' => false, 'data' => [] ); } } public function user_expired_request($cond) { $this->db->select('' . 'id_driver, ' . 'status'); $this->db->from('history_transaksi'); $this->db->where('id_transaksi', $cond['id_transaksi']); $id = $this->db->get(); if ($id->row('status') == 1 || $id->row('status') == 2) { $data = array( 'status' => '0' ); $this->db->where($cond); $edit = $this->db->update('history_transaksi', $data); $data = array( 'status' => '1' ); $this->db->where('id_driver', $id->row('id_driver')); $edit = $this->db->update('config_driver', $data); return array( 'status' => true, 'data' => [], 'iddriver' => $id->row('id_driver'), 'idpelanggan' => $id->row('id_pelanggan') ); } else { return array( 'status' => false, 'data' => [] ); } } function detail_transaksi($idtrans) { $this->db->select('*'); $this->db->from('transaksi'); $this->db->where('id', $idtrans); $loc = $this->db->get(); return $loc; } function detail_driver($iddriver) { $this->db->select('*'); $this->db->from('driver'); $this->db->join('kendaraan', 'driver.kendaraan = kendaraan.id_k', 'left'); $this->db->where('id', $iddriver); $loc = $this->db->get(); return $loc; } function get_driver_location($idDriver) { $this->db->select('' . 'id_driver,' . 'latitude,' . 'longitude'); $this->db->from('config_driver'); $this->db->where('id_driver', $idDriver); $loc = $this->db->get(); return $loc; } function get_driver_location_admin() { $threshold = date('Y-m-d H:i:s', strtotime('-3 days')); $this->db->select('' . 'config_driver.id_driver,' . 'config_driver.latitude,' . 'config_driver.longitude,' . 'config_driver.status,' . 'config_driver.update_at as last_location_update,' . 'driver.nama_driver,' . 'MAX(history_transaksi.waktu) as last_order_time'); $this->db->from('config_driver'); $this->db->join('driver', 'config_driver.id_driver = driver.id', 'left'); $this->db->join('history_transaksi', 'history_transaksi.id_driver = driver.id', 'left'); $this->db->where('driver.status != 0'); $this->db->where('driver.status != 3'); $this->db->group_by('config_driver.id_driver'); $escapedThreshold = $this->db->escape($threshold); $this->db->having("(config_driver.update_at >= $escapedThreshold OR MAX(history_transaksi.waktu) >= $escapedThreshold)", null, false); $loc = $this->db->get(); return $loc; } function rate_driver($data) { $ins_rate = $this->db->insert('rating_driver', $data); if ($this->db->affected_rows() == 1) { $get_rating = $this->count_rate_driver($data['id_driver']); $this->db->where('id', $data['id_transaksi']); $upd_trans = $this->db->update('transaksi', array('rate' => $data['rating'])); $this->db->where('id', $data['id_driver']); $upd_driver = $this->db->update('driver', array('rating' => $get_rating)); return true; } else { return false; } } function count_rate_driver($id) { $this->db->select('rating'); $this->db->from('rating_driver'); $this->db->where('id_driver', $id); $cek = $this->db->get(); $rate = 0; $hasil = 0; if ($cek->num_rows() > 0) { foreach ($cek->result() as $row) { $rate += $row->rating; } $hasil = $rate / $cek->num_rows(); } return $hasil; } function diskon_wallet() { $this->db->select('*'); $this->db->from('voucher'); $this->db->where("voucher LIKE 'DISKON%'"); $this->db->order_by('id', 'asc'); $disk = $this->db->get(); $arrDisk = array(); foreach ($disk->result() as $row) { $diskmpay = array( 'fitur' => $row->untuk_fitur, 'diskon' => $row->nilai . "%", 'biaya_akhir' => (100 - $row->nilai) / 100 ); array_push($arrDisk, $diskmpay); } return $disk; } function promo_code() { $this->db->select('*'); $this->db->from('kodepromo'); $this->db->where("status", 1); $this->db->where('expired >', date("Y-m-d")); $this->db->order_by('id_promo', 'DESC'); return $this->db->get(); } function promo_code_use($code, $fitur) { $this->db->select('*'); $this->db->from('kodepromo'); $this->db->where('kode_promo', $code); $this->db->where("fitur", $fitur); $this->db->where("status", 1); $this->db->where('expired >', date("Y-m-d")); $diskon = $this->db->get(); if ($diskon->num_rows() > 0) { $out = [ 'nominal' => $diskon->row('nominal_promo'), 'type' => $diskon->row('type_promo') ]; return $out; } else { return false; } } function transaksi($idtran) { $this->db->select('*'); $this->db->from('transaksi'); $this->db->join('transaksi_detail_merchant', 'transaksi.id = transaksi_detail_merchant.id_transaksi', 'left'); $this->db->join('fitur', 'transaksi.order_fitur = fitur.id_fitur', 'left'); $this->db->join('merchant', 'transaksi_detail_merchant.id_merchant = merchant.id_merchant', 'left'); $this->db->join('history_transaksi', 'transaksi.id = history_transaksi.id_transaksi', 'left'); $this->db->join('transaksi_detail_send', 'transaksi.id = transaksi_detail_send.id_transaksi', 'left'); $this->db->where('transaksi.id', $idtran); $trans = $this->db->get(); return $trans; } function all_transaksi($iduser) { $this->db->select('*'); $this->db->from('transaksi'); $this->db->join('history_transaksi', 'transaksi.id = history_transaksi.id_transaksi', 'left'); $this->db->join('status_transaksi', 'history_transaksi.status = status_transaksi.id', 'left'); $this->db->join('fitur', 'transaksi.order_fitur = fitur.id_fitur', 'left'); $this->db->where('transaksi.id_pelanggan', $iduser); $this->db->where('history_transaksi.status != 1'); $this->db->where('history_transaksi.status != 0'); $this->db->order_by('transaksi.id', 'DESC'); $trans = $this->db->get(); return $trans; } public function getAlltransaksipickup() { $this->db->select('transaksi.*,' . 'driver.nama_driver,' . 'pelanggan.fullnama,' . 'history_transaksi.*,' . 'status_transaksi.*,' . 'fitur.icon,' . 'fitur.fitur'); $this->db->from('transaksi'); $this->db->join('history_transaksi', 'transaksi.id = history_transaksi.id_transaksi', 'left'); $this->db->join('status_transaksi', 'history_transaksi.status = status_transaksi.id', 'left'); $this->db->join('driver', 'transaksi.id_driver = driver.id', 'left'); $this->db->join('pelanggan', 'transaksi.id_pelanggan = pelanggan.id', 'left'); $this->db->join('fitur', 'transaksi.order_fitur = fitur.id_fitur', 'left'); $this->db->where('history_transaksi.status = 2'); $this->db->order_by('transaksi.id', 'DESC'); $this->db->limit('10'); return $this->db->get(); } public function getAlltransaksidestination() { $this->db->select('transaksi.*,' . 'driver.nama_driver,' . 'pelanggan.fullnama,' . 'history_transaksi.*,' . 'status_transaksi.*,' . 'fitur.icon,' . 'fitur.fitur'); $this->db->from('transaksi'); $this->db->join('history_transaksi', 'transaksi.id = history_transaksi.id_transaksi', 'left'); $this->db->join('status_transaksi', 'history_transaksi.status = status_transaksi.id', 'left'); $this->db->join('driver', 'transaksi.id_driver = driver.id', 'left'); $this->db->join('pelanggan', 'transaksi.id_pelanggan = pelanggan.id', 'left'); $this->db->join('fitur', 'transaksi.order_fitur = fitur.id_fitur', 'left'); $this->db->where('history_transaksi.status = 3'); $this->db->order_by('transaksi.id', 'DESC'); $this->db->limit('10'); return $this->db->get(); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////// function template1($subject, $text1, $text2, $web, $appname, $linkbtn, $linkgoogle, $address) { $msg = ' '; return $msg; } public function kategorymerchant() { $this->db->select('category_merchant.*'); $this->db->where('category_merchant.status_kategori = 1'); $this->db->where('fitur.active = 1'); $this->db->or_where('category_merchant.id_fitur = 0'); $this->db->join('fitur', 'category_merchant.id_fitur = fitur.id_fitur', 'left'); return $this->db->get('category_merchant'); } public function merchantnearby($long, $lat) { $this->db->select("merchant.id_merchant , merchant.nama_merchant , merchant.alamat_merchant , merchant.rate_merchant, merchant.latitude_merchant , merchant.longitude_merchant , merchant.jam_buka , merchant.jam_tutup , merchant.deskripsi_merchant , merchant.category_merchant , merchant.foto_merchant , merchant.telepon_merchant , merchant.status_merchant , merchant.open_merchant, saldo.saldo, (6371 * acos(cos(radians($lat)) * cos(radians(merchant.latitude_merchant)) * cos(radians(merchant.longitude_merchant) - radians( $long)) + sin(radians($lat)) * sin( radians(merchant.latitude_merchant)))) AS distance ,(SELECT item.status_promo FROM item where merchant.id_merchant = item.id_merchant AND status_item = 1 ORDER BY status_promo DESC LIMIT 1) AS status_promo, fitur.jarak_minimum, fitur.wallet_minimum"); $this->db->from('merchant'); $this->db->where('merchant.status_merchant = 1'); $this->db->where('mitra.status_mitra = 1'); $this->db->where('saldo.saldo >= fitur.wallet_minimum'); $this->db->having("status_promo is not null"); $this->db->having("distance <= fitur.jarak_minimum"); $this->db->order_by('distance ASC'); $this->db->join('fitur', 'merchant.id_fitur = fitur.id_fitur'); $this->db->join('mitra', 'merchant.id_merchant = mitra.id_merchant'); $this->db->join('saldo', 'mitra.id_mitra = saldo.id_user'); $this->db->limit('4'); $query = $this->db->get(); $data = []; foreach ($query->result_array() as $q) { if ($q['status_promo'] == NULL) { $status = 0; } else { $status = $q['status_promo']; } $data[] = [ 'id_merchant' => $q['id_merchant'], 'nama_merchant' => $q['nama_merchant'], 'alamat_merchant' => $q['alamat_merchant'], 'rate_merchant' => $q['rate_merchant'], 'latitude_merchant' => $q['latitude_merchant'], 'longitude_merchant' => $q['longitude_merchant'], 'jam_buka' => $q['jam_buka'], 'jam_tutup' => $q['jam_tutup'], 'deskripsi_merchant' => $q['deskripsi_merchant'], 'category_merchant' => $q['category_merchant'], 'foto_merchant' => $q['foto_merchant'], 'telepon_merchant' => $q['telepon_merchant'], 'status_merchant' => $q['status_merchant'], 'open_merchant' => $q['open_merchant'], 'saldo' => $q['saldo'], 'distance' => $q['distance'], 'status_promo' => $status ]; } return $data; } public function merchantpromo($long, $lat) { $this->db->select("merchant.id_merchant , merchant.nama_merchant , merchant.alamat_merchant , merchant.rate_merchant, merchant.latitude_merchant , merchant.longitude_merchant , merchant.jam_buka , merchant.jam_tutup , merchant.deskripsi_merchant , merchant.category_merchant , merchant.foto_merchant , merchant.telepon_merchant , merchant.status_merchant , merchant.open_merchant,saldo.saldo, (6371 * acos(cos(radians($lat)) * cos(radians(merchant.latitude_merchant)) * cos(radians(merchant.longitude_merchant) - radians( $long)) + sin(radians($lat)) * sin( radians(merchant.latitude_merchant)))) AS distance ,(SELECT item.status_promo FROM item WHERE merchant.id_merchant = item.id_merchant AND item.status_promo = 1 AND status_item = 1 ORDER BY status_promo DESC LIMIT 1) AS status_promo, fitur.jarak_minimum, fitur.wallet_minimum"); $this->db->where('merchant.status_merchant = 1'); $this->db->where('mitra.status_mitra = 1'); $this->db->where('saldo.saldo >= fitur.wallet_minimum'); $this->db->having("status_promo is not null"); $this->db->having("distance <= fitur.jarak_minimum"); $this->db->order_by('distance ASC'); $this->db->join('fitur', 'merchant.id_fitur = fitur.id_fitur'); $this->db->join('mitra', 'merchant.id_merchant = mitra.id_merchant', 'left'); $this->db->join('saldo', 'mitra.id_mitra = saldo.id_user', 'left'); $this->db->limit('4'); return $this->db->get('merchant'); } public function merchantbykategori($kategori, $long, $lat) { $this->db->select("merchant.id_merchant , merchant.nama_merchant , merchant.alamat_merchant , merchant.rate_merchant, merchant.latitude_merchant , merchant.longitude_merchant , merchant.jam_buka , merchant.jam_tutup , merchant.deskripsi_merchant , merchant.category_merchant , merchant.foto_merchant , merchant.telepon_merchant , merchant.status_merchant , merchant.open_merchant,saldo.saldo, (6371 * acos(cos(radians($lat)) * cos(radians(merchant.latitude_merchant)) * cos(radians(merchant.longitude_merchant) - radians( $long)) + sin(radians($lat)) * sin( radians(merchant.latitude_merchant)))) AS distance ,(SELECT item.status_promo FROM item where merchant.id_merchant = item.id_merchant AND status_item = 1 ORDER BY status_promo DESC LIMIT 1) AS status_promo, fitur.jarak_minimum, fitur.wallet_minimum"); $this->db->select('category_merchant.nama_kategori'); $this->db->where('merchant.status_merchant = 1'); $this->db->where('mitra.status_mitra = 1'); $this->db->where('saldo.saldo >= fitur.wallet_minimum'); if ($kategori != '1') { $this->db->where("merchant.category_merchant = $kategori"); } $this->db->having("status_promo is not null"); $this->db->having("distance <= fitur.jarak_minimum"); $this->db->order_by('distance ASC'); $this->db->join('fitur', 'merchant.id_fitur = fitur.id_fitur'); $this->db->join('mitra', 'mitra.id_merchant = merchant.id_merchant', 'left'); $this->db->join('saldo', 'mitra.id_mitra = saldo.id_user', 'left'); $this->db->join('category_merchant', 'merchant.category_merchant = category_merchant.id_kategori_merchant', 'left'); $this->db->limit('4'); return $this->db->get('merchant'); } public function merchantbykategoripromo($kategori, $long, $lat) { $this->db->select("merchant.id_merchant , merchant.nama_merchant , merchant.alamat_merchant , merchant.rate_merchant, merchant.latitude_merchant , merchant.longitude_merchant , merchant.jam_buka , merchant.jam_tutup , merchant.deskripsi_merchant , merchant.category_merchant , merchant.foto_merchant , merchant.telepon_merchant , merchant.status_merchant , merchant.open_merchant,saldo.saldo, (6371 * acos(cos(radians($lat)) * cos(radians(merchant.latitude_merchant)) * cos(radians(merchant.longitude_merchant) - radians( $long)) + sin(radians($lat)) * sin( radians(merchant.latitude_merchant)))) AS distance ,(SELECT item.status_promo FROM item where merchant.id_merchant = item.id_merchant AND item.status_promo = 1 AND status_item = 1 ORDER BY status_promo DESC LIMIT 1) AS status_promo, fitur.jarak_minimum, fitur.wallet_minimum"); $this->db->select('category_merchant.nama_kategori'); $this->db->where('merchant.status_merchant = 1'); $this->db->where('mitra.status_mitra = 1'); $this->db->where('saldo.saldo >= fitur.wallet_minimum'); if ($kategori != '1') { $this->db->where("merchant.category_merchant = $kategori"); } $this->db->having("status_promo is not null"); $this->db->having("distance <= fitur.jarak_minimum"); $this->db->order_by('distance ASC'); $this->db->join('fitur', 'merchant.id_fitur = fitur.id_fitur'); $this->db->join('mitra', 'mitra.id_merchant = merchant.id_merchant', 'left'); $this->db->join('saldo', 'mitra.id_mitra = saldo.id_user', 'left'); $this->db->join('category_merchant', 'merchant.category_merchant = category_merchant.id_kategori_merchant', 'left'); $this->db->limit('4'); return $this->db->get('merchant'); } public function allmerchantnearby($long, $lat, $fitur) { $this->db->select("merchant.id_merchant , merchant.nama_merchant , merchant.alamat_merchant , merchant.rate_merchant, merchant.latitude_merchant , merchant.longitude_merchant , merchant.jam_buka , merchant.jam_tutup , merchant.deskripsi_merchant , merchant.category_merchant , merchant.foto_merchant , merchant.telepon_merchant , merchant.status_merchant , merchant.open_merchant,saldo.saldo, (6371 * acos(cos(radians($lat)) * cos(radians(merchant.latitude_merchant)) * cos(radians(merchant.longitude_merchant) - radians( $long)) + sin(radians($lat)) * sin( radians(merchant.latitude_merchant)))) AS distance ,(SELECT item.status_promo FROM item where merchant.id_merchant = item.id_merchant AND status_item = 1 ORDER BY status_promo DESC LIMIT 1) AS status_promo, fitur.jarak_minimum, fitur.wallet_minimum"); $this->db->select('category_merchant.nama_kategori'); $this->db->where('merchant.status_merchant = 1'); $this->db->where('mitra.status_mitra = 1'); $this->db->where("merchant.id_fitur = $fitur"); $this->db->where('saldo.saldo >= fitur.wallet_minimum'); $this->db->having("status_promo is not null"); $this->db->having("distance <= fitur.jarak_minimum"); $this->db->order_by('distance ASC'); $this->db->join('fitur', 'merchant.id_fitur = fitur.id_fitur', 'left'); $this->db->join('mitra', 'mitra.id_merchant = merchant.id_merchant', 'left'); $this->db->join('saldo', 'mitra.id_mitra = saldo.id_user', 'left'); $this->db->join('category_merchant', 'merchant.category_merchant = category_merchant.id_kategori_merchant', 'left'); return $this->db->get('merchant'); } public function allmerchantnearbybykategori($long, $lat, $fitur, $kategori) { $this->db->select("merchant.id_merchant , merchant.nama_merchant , merchant.alamat_merchant ,merchant.rate_merchant, merchant.latitude_merchant , merchant.longitude_merchant , merchant.jam_buka , merchant.jam_tutup , merchant.deskripsi_merchant , merchant.category_merchant , merchant.foto_merchant , merchant.telepon_merchant , merchant.status_merchant , merchant.open_merchant,saldo.saldo, (6371 * acos(cos(radians($lat)) * cos(radians(merchant.latitude_merchant)) * cos(radians(merchant.longitude_merchant) - radians( $long)) + sin(radians($lat)) * sin( radians(merchant.latitude_merchant)))) AS distance ,(SELECT item.status_promo FROM item where merchant.id_merchant = item.id_merchant AND status_item = 1 ORDER BY status_promo DESC LIMIT 1) AS status_promo, fitur.jarak_minimum, fitur.wallet_minimum"); $this->db->select('category_merchant.nama_kategori'); $this->db->where('merchant.status_merchant = 1'); $this->db->where('mitra.status_mitra = 1'); $this->db->where("merchant.id_fitur = $fitur"); $this->db->where('saldo.saldo >= fitur.wallet_minimum'); if ($kategori != '1') { $this->db->where("merchant.category_merchant = $kategori"); } $this->db->having("status_promo is not null"); $this->db->having("distance <= fitur.jarak_minimum"); $this->db->order_by('distance ASC'); $this->db->join('fitur', 'merchant.id_fitur = fitur.id_fitur', 'left'); $this->db->join('mitra', 'mitra.id_merchant = merchant.id_merchant', 'left'); $this->db->join('saldo', 'mitra.id_mitra = saldo.id_user', 'left'); $this->db->join('category_merchant', 'merchant.category_merchant = category_merchant.id_kategori_merchant', 'left'); return $this->db->get('merchant'); } public function kategorymerchantbyfitur($fitur) { $this->db->where("id_fitur = $fitur OR id_fitur = 0"); $this->db->where('status_kategori = 1'); return $this->db->get('category_merchant'); } public function searchmerchantnearby($like, $long, $lat, $fitur) { $this->db->select("merchant.id_merchant , merchant.nama_merchant , merchant.alamat_merchant , merchant.rate_merchant, merchant.latitude_merchant , merchant.longitude_merchant , merchant.jam_buka , merchant.jam_tutup , merchant.deskripsi_merchant , merchant.category_merchant , merchant.foto_merchant , merchant.telepon_merchant , merchant.status_merchant , merchant.open_merchant, saldo.saldo, fitur.fitur, category_merchant.nama_kategori, merchant.id_fitur, (6371 * acos(cos(radians($lat)) * cos(radians(merchant.latitude_merchant)) * cos(radians(merchant.longitude_merchant) - radians( $long)) + sin(radians($lat)) * sin( radians(merchant.latitude_merchant)))) AS distance ,(SELECT item.status_promo FROM item where merchant.id_merchant = item.id_merchant AND status_item = 1 ORDER BY status_promo DESC LIMIT 1) AS status_promo, fitur.jarak_minimum, fitur.wallet_minimum"); $this->db->from('merchant'); $this->db->join('fitur', 'merchant.id_fitur = fitur.id_fitur', 'left'); $this->db->join('mitra', 'mitra.id_merchant = merchant.id_merchant', 'left'); $this->db->join('saldo', 'mitra.id_mitra = saldo.id_user', 'left'); $this->db->join('category_merchant', 'merchant.category_merchant = category_merchant.id_kategori_merchant', 'left'); $this->db->where(" saldo.saldo >= fitur.wallet_minimum AND merchant.id_fitur = $fitur "); $this->db->where('mitra.status_mitra = 1'); $this->db->where('merchant.status_merchant = 1'); $this->db->group_start(); $this->db->like('merchant.nama_merchant', $like); $this->db->or_like('merchant.alamat_merchant', $like); $this->db->group_end(); $this->db->having("status_promo is not null"); $this->db->having("distance <= fitur.jarak_minimum"); $this->db->order_by('distance ASC'); $query = $this->db->get(); $data = []; foreach ($query->result_array() as $q) { if ($q['status_promo'] == NULL) { $status = 0; } else { $status = $q['status_promo']; } $data[] = [ 'id_merchant' => $q['id_merchant'], 'nama_merchant' => $q['nama_merchant'], 'alamat_merchant' => $q['alamat_merchant'], 'rate_merchant' => $q['rate_merchant'], 'latitude_merchant' => $q['latitude_merchant'], 'longitude_merchant' => $q['longitude_merchant'], 'jam_buka' => $q['jam_buka'], 'jam_tutup' => $q['jam_tutup'], 'deskripsi_merchant' => $q['deskripsi_merchant'], 'category_merchant' => $q['category_merchant'], 'foto_merchant' => $q['foto_merchant'], 'telepon_merchant' => $q['telepon_merchant'], 'status_merchant' => $q['status_merchant'], 'open_merchant' => $q['open_merchant'], 'saldo' => $q['saldo'], 'distance' => $q['distance'], 'status_promo' => $status ]; } return $data; } public function merchantbyid($idmerchant, $long, $lat) { $this->db->select(" merchant.id_merchant , merchant.id_fitur , merchant.nama_merchant , merchant.alamat_merchant , merchant.rate_merchant, merchant.latitude_merchant , merchant.longitude_merchant , merchant.jam_buka , merchant.jam_tutup , merchant.deskripsi_merchant , merchant.category_merchant , merchant.foto_merchant , merchant.telepon_merchant , merchant.status_merchant , merchant.open_merchant, (6371 * acos(cos(radians($lat)) * cos(radians(merchant.latitude_merchant)) * cos(radians(merchant.longitude_merchant) - radians( $long)) + sin(radians($lat)) * sin( radians(merchant.latitude_merchant)))) AS distance "); $this->db->select(' item.status_promo, item.nama_item, item.harga_item, item.harga_promo, item.kategori_item, item.deskripsi_item'); $this->db->select('mitra.partner'); $this->db->select('category_merchant.nama_kategori'); $this->db->select('fitur.fitur, fitur.jarak_minimum, fitur.wallet_minimum'); $this->db->select('saldo.saldo'); $this->db->where("merchant.id_merchant = $idmerchant"); $this->db->where('merchant.status_merchant = 1'); $this->db->where('saldo.saldo >= fitur.wallet_minimum'); $this->db->join('fitur', 'merchant.id_fitur = fitur.id_fitur', 'left'); $this->db->join('mitra', 'mitra.id_merchant = merchant.id_merchant', 'left'); $this->db->join('saldo', 'mitra.id_mitra = saldo.id_user', 'left'); $this->db->join('category_merchant', 'merchant.category_merchant = category_merchant.id_kategori_merchant', 'left'); $this->db->join('item', 'merchant.id_merchant = item.id_merchant', 'left'); $this->db->order_by('merchant.id_merchant'); return $this->db->get('merchant'); } public function itemstatus($idmerchant) { $this->db->select('item.status_promo'); $this->db->where("item.status_item = 1"); $this->db->where("item.status_promo = 1"); $this->db->where("item.id_merchant = $idmerchant"); return $this->db->get('item'); } public function itembyid($idmerchant) { $this->db->select('item.*'); $this->db->select(' category_item.nama_kategori_item, category_item.foto_kategori_item'); $this->db->where("item.status_item = 1"); $this->db->where("item.id_merchant = $idmerchant"); $this->db->join('category_item', 'item.kategori_item = category_item.id_kategori_item', 'left'); $this->db->where("category_item.status_kategori = 1"); return $this->db->get('item'); } public function kategoriitem($idmerchant) { $this->db->select("nama_kategori_item,id_kategori_item"); $this->db->where("status_kategori = 1"); $this->db->where("id_merchant = $idmerchant"); $this->db->or_where('all_category = 1'); return $this->db->get('category_item'); } public function itembykategori($idmerchant, $itemk) { $this->db->select("item.*"); $this->db->select(' category_item.nama_kategori_item, category_item.foto_kategori_item'); $this->db->where("item.status_item = 1"); $this->db->where("item.id_merchant = $idmerchant"); if ($itemk != '1') { $this->db->where("id_kategori_item = $itemk"); } $this->db->join('category_item', 'item.kategori_item = category_item.id_kategori_item', 'left'); $this->db->where("category_item.status_kategori = 1"); return $this->db->get('item'); } public function insert_data_transaksi_merchant($data_transaksi, $dataDetail, $total_belanja) { $biaya_akhir = ($data_transaksi['harga'] + $total_belanja['total_belanja']) - $data_transaksi['kredit_promo']; $transaksi = [ 'id_pelanggan' => $data_transaksi['id_pelanggan'], 'order_fitur' => $data_transaksi['order_fitur'], 'start_latitude' => $data_transaksi['start_latitude'], 'start_longitude' => $data_transaksi['start_longitude'], 'end_latitude' => $data_transaksi['end_latitude'], 'end_longitude' => $data_transaksi['end_longitude'], 'jarak' => $data_transaksi['jarak'], 'harga' => $data_transaksi['harga'], 'waktu_order' => $data_transaksi['waktu_order'], 'estimasi_time' => $data_transaksi['estimasi_time'], 'alamat_asal' => $data_transaksi['alamat_asal'], 'alamat_tujuan' => $data_transaksi['alamat_tujuan'], 'kredit_promo' => $data_transaksi['kredit_promo'], 'pakai_wallet' => $data_transaksi['pakai_wallet'], 'biaya_akhir' => $biaya_akhir, ]; $this->db->insert('transaksi', $transaksi); $reqid = $this->db->insert_id(); if ($this->db->affected_rows() == 1) { $data_hist = array( 'id_transaksi' => $reqid, 'id_driver' => 'D0', 'status' => '1' ); $this->db->insert('history_transaksi', $data_hist); $dataDetail['id_transaksi'] = $reqid; $this->db->insert('transaksi_detail_merchant', $dataDetail); $get_data = $this->get_data_transaksi_merchant($data_transaksi); return array( 'status' => true, 'id_transaksi' => $reqid, 'data' => $get_data->result(), ); } else { return array( 'status' => false, 'data' => [] ); } } public function diskon_by_fitur($fitur) { $this->db->select('nilai'); $this->db->from('voucher'); $this->db->where("untuk_fitur = $fitur"); $this->db->order_by('id', 'asc'); return $this->db->get(); } public function insert_data_item($item) { foreach ($item as $it) { $this->db->insert('transaksi_item', $it); } if ($this->db->affected_rows() == 1) { return array( 'status' => true, ); } else { return array( 'status' => false ); } } public function detail_item($id) { $this->db->select('transaksi_item.jumlah_item,item.nama_item, transaksi_item.catatan_item, transaksi_item.total_harga'); $this->db->from('transaksi_item'); $this->db->join('item', 'transaksi_item.id_item = item.id_item'); $this->db->where('id_transaksi', $id); return $this->db->get(); } public function delete_transaksi($id) { $data = [ 'status' => '0' ]; $this->db->where('id_transaksi', $id); $this->db->update('history_transaksi', $data); return true; } }