load->model('keranjang_model'); $this->load->model('produk_model'); $this->load->model('menu_model'); $this->load->model('pengguna_model'); $this->load->model('ulasan_model'); $this->load->model('pembeli_model'); $this->load->model('penjualan_model'); $this->load->model('Chat_model'); } public function chat_admin_get() { $id_admin = $this->get('id'); $chats = $this->Chat_model->get_chat_by_admin($id_admin); if ($chats) { $this->response([ 'status' => true, 'data' => $chats, ], 200); } else { $this->response([ 'status' => false, 'message' => 'Tidak ada chat' ], 200); } } public function chat_all_pembeli_get() { $id_pembeli = $this->get('id_pembeli'); $chats = $this->Chat_model->get_all_chat_by_pembeli($id_pembeli); if ($chats) { $this->response([ 'status' => true, 'data' => $chats, ], 200); } else { $this->response([ 'status' => false, 'message' => 'Tidak ada chat' ], 200); } } public function chat_pembeli_get() { $id_pembeli = $this->get('id_pembeli'); $chats = $this->Chat_model->get_chat_by_pembeli($id_pembeli); if ($chats) { $this->response([ 'status' => true, 'data' => $chats, ], 200); } else { $this->response([ 'status' => false, 'message' => 'Tidak ada chat' ], 200); } } public function pesanan_get() { $pesanan = $this->penjualan_model->get_new_penjualan(); if ($pesanan) { $this->response([ 'status' => true, 'data' => $chats, ], 200); } else { $this->response([ 'status' => false, 'message' => 'Tidak ada chat' ], 200); } } public function sendChat_post() { $data = array( "id_admin" => $this->post("id_admin"), "id_pembeli" => $this->post("id_pembeli"), "pesan" => $this->post("pesan"), "sender" => $this->post("sender"), "timestamp" => date('Y-m-d H:i:s') ); $result = $this->Chat_model->add_chat($data); $this->response([ 'status' => true, 'message' => 'Berhasil mengirimkan chat', ], 200); } public function kategori_get() { $kategori = $this->produk_model->get_unique_kategori(); if (!empty($kategori)) { $this->response($kategori, 200); } else { $this->response([ 'status' => FALSE, 'message' => 'Data kategori tidak ditemukan' ], 404); } } public function login_post() { $username = $this->post('username'); $password = $this->post('password'); $query = $this->pengguna_model->get_by_username($username); if ($query->num_rows() > 0) { $result = $query->row_array(); if (password_verify($password, $result['password'])) { $pembeli = []; if ($result['role'] == 'Pembeli') { $pembeli = $this->pembeli_model->get_by_id_pengguna($result['id_pengguna'])->row_array(); } $this->response([ 'status' => true, 'data' => $result, 'pembeli' => $pembeli, 'message' => 'Login berhasil' ], 200); } else { $this->response([ 'status' => false, 'message' => 'Username atau password salah' ], 200); } } else { $this->response([ 'status' => false, 'message' => 'Pengguna tidak terdaftar' ], 200); } } public function kirimemail_post() { $email = $this->post('email'); $config = [ 'protocol' => 'smtp', 'smtp_host' => 'ssl://smtp.googlemail.com', 'smtp_user' => 'ridhoriyadi335@gmail.com', 'smtp_pass' => 'kmehfkecuzkknlhh', 'smtp_port' => 465, 'mailtype' => 'html', 'charset' => 'utf-8', 'newline' => "\r\n" ]; $token = base64_encode(random_bytes(3)); $this->email->initialize($config); $this->email->from('ridhoriyadi335@gmail.com', 'Token Reset Password'); $this->email->to($email); $user_token = [ 'email' => $email, 'token' => $token, 'date_created' => time() ]; $this->db->insert('user_token', $user_token); $this->email->subject('Reset Password'); $this->email->message('Masukan token ini pada aplikasi : ' . $token); if ($this->email->send()) { return true; } else { echo $this->email->print_debugger(); die; } } public function resetpassword_post() { $params = array( 'password' => password_hash($this->post('password'), PASSWORD_DEFAULT), ); $this->pengguna_model->update_byemail($this->post('email'), $params); $this->response([ 'status' => true, 'message' => 'Detail akun berhasil diubah' ], 200); } public function cektoken_post() { $result = $this->pengguna_model->cek_token($this->post('email'), $this->post('token')); if ($result->num_rows() < 1) { $this->response([ 'status' => false, 'message' => 'Token Salah' ], 200); } else { $this->response([ 'status' => true, 'message' => 'Token Sesuai' ], 200); } } public function pembeli_post() { $result = $this->pengguna_model->get_by_username($this->post('username')); if ($result->num_rows() > 0) { $this->response([ 'status' => false, 'message' => 'Username sudah digunakan' ], 200); } else { $params = array( 'nama_lengkap' => $this->post('nama_pembeli'), 'nama_belakang' => $this->post('nama_belakang'), 'username' => $this->post('username'), 'email' => $this->post('email'), 'password' => password_hash($this->post('password'), PASSWORD_DEFAULT), 'role' => 'Pembeli', ); $id_pengguna = $this->pengguna_model->add_pengguna($params); $params = array( 'nama_pembeli' => $this->post('nama_pembeli'), 'alamat' => $this->post('alamat'), 'no_hp' => $this->post('no_hp'), 'email' => $this->post('email'), 'id_pengguna' => $id_pengguna, ); $this->pembeli_model->add_pembeli($params); $this->response([ 'status' => true, 'message' => 'Registrasi berhasil' ], 200); } } public function produk_get() { $id = $this->get('id'); if ($id === null) { $produk = $this->produk_model->get_all_produk_api()->result_array(); if ($produk) { $this->response([ 'status' => true, 'data' => $produk, ], 200); } else { $this->response([ 'status' => false, 'message' => 'Tidak ada produk' ], 200); } } else { $produk = $this->produk_model->get_produk($id)->row_array(); if ($produk) { $this->response([ 'status' => true, 'data' => $produk, ], 200); } else { $this->response([ 'status' => false, 'message' => 'Tidak ada produk' ], 200); } } } public function add_produk_post() { $nama_file = rand() . "_" . time() . ".jpg"; $nama_produk = $this->post('nama_produk'); $harga = $this->post('harga'); $kategori = $this->post('kategori'); $deskripsi = $this->post('deskripsi'); $foto = $this->post('foto'); $params = array( 'nama_produk' => $nama_produk, 'kategori' => $kategori, 'harga' => $harga, 'deskripsi' => $deskripsi, 'foto' => $nama_file, ); if ($foto !== null) { if (file_put_contents('assets/images/produk/' . $nama_file, base64_decode($foto))) { $this->produk_model->add_produk($params); $this->response([ 'status' => true, 'message' => 'Produk berhasil ditambahkan', ], 200); } else { $this->response([ 'status' => false, 'message' => 'Gagal menyimpan foto produk', ], 200); } } else { $this->response([ 'status' => false, 'message' => 'Foto produk tidak diterima', ], 200); } } public function menu_post() { $id_prod = $this->post('id_produk'); $date = date('Y-m-d'); $params = array( 'id_produk' => $id_prod, 'date_created' => $date, ); $this->menu_model->add_menu($params); $this->response([ 'status' => true, 'message' => 'Berhasil ditambahkan', ], 200); } public function menu_get() { $date = date("Y-m-d"); $produk = $this->menu_model->get_all_menu($date)->result_array(); if ($produk) { $this->response([ 'status' => true, 'data' => $produk, ], 200); } else { $this->response([ 'status' => false, 'message' => 'Tidak ada menu' ], 200); } } public function delete_menu_post() { $this->menu_model->delete_menu($this->post('id_menu')); $this->response([ 'status' => true, 'message' => 'Menu berhasil dihapus', ], 200); } public function edit_post() { $id_produk = $this->post('id_produk'); $nama_produk = $this->post('nama_produk'); $harga = $this->post('harga'); $deskripsi = $this->post('deskripsi'); $foto = $this->post('foto'); if (empty($foto)) { $params = array( 'nama_produk' => $nama_produk, 'harga' => $harga, 'deskripsi' => $deskripsi, ); $this->produk_model->update_produk($id_produk, $params); $this->response([ 'status' => true, 'message' => 'Produk berhasil diubah', ], 200); } else { $nama_file = rand() . "_" . time() . ".jpg"; $params = array( 'nama_produk' => $nama_produk, 'harga' => $harga, 'deskripsi' => $deskripsi, 'foto' => $nama_file, ); if (file_put_contents('assets/images/produk/' . $nama_file, base64_decode($foto))) { $produk = $this->produk_model->get_produk($id_produk)->row_array(); if (!empty($produk['foto'])) { unlink('assets/images/produk/' . $produk['foto']); } $this->produk_model->update_produk($id_produk, $params); $this->response([ 'status' => true, 'message' => 'Produk berhasil diubah', ], 200); } else { $this->response([ 'status' => false, 'message' => 'Produk gagal diubah', ], 200); } } } public function delete_post() { $produk = $this->produk_model->get_produk($this->post('id_produk'))->row_array(); if (!empty($produk['foto'])) { unlink('assets/images/produk/' . $produk['foto']); } $this->produk_model->delete_produk($this->post('id_produk')); $this->response([ 'status' => true, 'message' => 'Produk berhasil dihapus', ], 200); } public function ulasan_get() { $rate = $this->ulasan_model->get_all()->result_array(); if ($rate) { $this->response([ 'status' => true, 'data' => $rate, ], 200); } else { $this->response([ 'status' => false, 'message' => 'Tidak ada Ulasan' ], 200); } } public function produk_rate_get() { $avg = $this->ulasan_model->get_avg($this->get('id'))->result_array(); $sum = array_sum(array_column($avg, 'avg')); $result = $sum / count($avg); $result = number_format($result, 1, '.', ''); $rate_1 = $this->ulasan_model->get_rate($this->get('id'), 1); $rate_2 = $this->ulasan_model->get_rate($this->get('id'), 2); $rate_3 = $this->ulasan_model->get_rate($this->get('id'), 3); $rate_4 = $this->ulasan_model->get_rate($this->get('id'), 4); $rate_5 = $this->ulasan_model->get_rate($this->get('id'), 5); $params = array( 'avg' => $result, 'rate_1' => $rate_1, 'rate_2' => $rate_2, 'rate_3' => $rate_3, 'rate_4' => $rate_4, 'rate_5' => $rate_5, ); if ($avg) { $this->response([ 'status' => true, 'data' => $params, ], 200); } else { $this->response([ 'status' => false, 'message' => 'Tidak ada Rate' ], 200); } } public function produk_ulasan_get() { $ulasan = $this->ulasan_model->get_ulasan($this->get('id'))->result_array(); if ($ulasan) { $this->response([ 'status' => true, 'ulasan' => $ulasan, ], 200); } else { $this->response([ 'status' => false, 'message' => 'Tidak ada Ulasan' ], 200); } } public function ulasan_post() { $id_produk = $this->post('id_produk'); $id_pembeli = $this->post('id_pembeli'); $rating = $this->post('rating'); $keterangan = $this->post('keterangan'); $date = date('Y-m-d'); $params = array( 'id_produk' => $id_produk, 'id_pembeli' => $id_pembeli, 'rating' => $rating, 'keterangan' => $keterangan, 'date_created' => $date, ); $this->ulasan_model->add_ulasan($params); $this->response([ 'status' => true, 'message' => 'Berhasil menambahkan', ], 200); } public function search_get() { $kata_kunci = $this->get('kata_kunci'); $result = $this->produk_model->search_produk($kata_kunci)->result_array(); if ($result) { $this->response([ 'status' => true, 'data' => $result ], 200); } else { $this->response([ 'status' => false, 'message' => 'Produk tidak ditemukan' ], 200); } } public function keranjang_post() { if ($this->post('date') == null) { $params = array( 'id_pembeli' => $this->post('id_pembeli'), 'id_produk' => $this->post('id_produk'), 'jumlah' => $this->post('jumlah'), 'date' => date("Y-m-d", strtotime("tomorrow")) . ' ' . $this->post('time'), 'harga' => $this->post('harga'), 'subtotal' => $this->post('subtotal'), ); } else { $params = array( 'id_pembeli' => $this->post('id_pembeli'), 'id_produk' => $this->post('id_produk'), 'jumlah' => $this->post('jumlah'), 'date' => $this->post('date'), 'harga' => $this->post('harga'), 'subtotal' => $this->post('subtotal'), ); } $this->keranjang_model->add_keranjang($params); $this->response([ 'status' => true, 'message' => 'Produk berhasil ditambahkan ke keranjang' ], 200); } public function data_pembeli_get() { $id = $this->get('id'); $pembeli = $this->pembeli_model->get_pembeli($id)->row_array(); if ($pembeli) { $this->response([ 'status' => true, 'data' => $pembeli, ], 200); } else { $this->response([ 'status' => false, 'message' => 'Tidak ada data pembeli' ], 200); } } public function keranjang_get() { $id_pembeli = $this->get('id'); $keranjang = $this->keranjang_model->get_keranjang($id_pembeli)->result_array(); if ($keranjang) { $this->response([ 'status' => true, 'data' => $keranjang, ], 200); } else { $this->response([ 'status' => false, 'message' => 'Keranjang belanja kosong' ], 200); } } public function akun_post() { $result = $this->pengguna_model->cek_unik_username_lama($this->post('username'), $this->post('username_lama')); if ($result->num_rows() > 0) { $this->response([ 'status' => false, 'message' => 'Username sudah digunakan' ], 200); } else { $params = array( 'nama_pembeli' => $this->post('nama_pembeli'), 'alamat' => $this->post('alamat'), 'no_hp' => $this->post('no_hp'), 'email' => $this->post('email'), ); $this->pembeli_model->update_pembeli($this->post('id_pembeli'), $params); $pembeli = $this->pembeli_model->get_pembeli($this->post('id_pembeli'))->row_array(); if (empty($this->post('password'))) { $params = array( 'nama_lengkap' => $this->post('nama_pembeli'), 'username' => $this->post('username'), 'email' => $this->post('email'), ); $this->pengguna_model->update_pengguna($pembeli['id_pengguna'], $params); } else { $params = array( 'nama_lengkap' => $this->post('nama_pembeli'), 'username' => $this->post('username'), 'email' => $this->post('email'), 'password' => password_hash($this->post('password'), PASSWORD_DEFAULT), ); $this->pengguna_model->update_pengguna($pembeli['id_pengguna'], $params); } $this->response([ 'status' => true, 'message' => 'Detail akun berhasil diubah' ], 200); } } public function pengguna_get() { $id = $this->get('id'); $pengguna = $this->pengguna_model->get_pengguna($id)->row_array(); if ($pengguna) { $this->response([ 'status' => true, 'data' => $pengguna, ], 200); } else { $this->response([ 'status' => false, 'message' => 'Tidak ada data pengguna' ], 200); } } public function pengguna_data_post() { $result = $this->pengguna_model->cek_unik_username_lama($this->post('username'), $this->post('username_lama')); if ($result->num_rows() > 0) { $this->response([ 'status' => false, 'message' => 'Username sudah digunakan' ], 200); } else { if (empty($this->post('password'))) { $params = array( 'nama_lengkap' => $this->post('nama_lengkap'), 'username' => $this->post('username'), ); $this->pengguna_model->update_pengguna($this->post('id_pengguna'), $params); } else { $params = array( 'nama_lengkap' => $this->post('nama_lengkap'), 'username' => $this->post('username'), 'password' => password_hash($this->post('password'), PASSWORD_DEFAULT), ); $this->pengguna_model->update_pengguna($this->post('id_pengguna'), $params); } $this->response([ 'status' => true, 'message' => 'Detail akun berhasil diubah' ], 200); } } public function data_keranjang_get() { $id_pembeli = $this->get('id'); $keranjang = $this->keranjang_model->get_keranjang($id_pembeli)->result_array(); if ($keranjang) { $this->response([ 'status' => true, 'data' => $keranjang, ], 200); } else { $this->response([ 'status' => false, 'message' => 'Keranjang belanja kosong' ], 200); } } public function hapuskeranjang_get() { $this->keranjang_model->delete_keranjang($this->get('id_pembeli')); $this->response([ 'status' => true, 'message' => 'Keranjang belanja sudah dihapus', ], 200); } public function hapus_get() { $this->keranjang_model->delete_keranjang_item($this->get('id_keranjang')); $this->response([ 'status' => true, 'message' => 'Produk berhasil dihapus dari keranjang', ], 200); } public function penjualan_add_post() { $no_invoice = $this->post('no_invoice'); $tanggal = date('Y-m-d'); $result = $this->post('ongkir'); $status = $this->post('status_pembayaran'); $total = $this->post('total'); $keterangan = $this->post('keterangan'); if ($status == 1) { $status_pesanan = "menunggu konfirmasi"; if (empty($keterangan)) { $params = array( 'no_invoice' => $no_invoice, 'tanggal' => $tanggal, 'tanggal_pembayaran' => $tanggal, 'id_pembeli' => $this->post('id_pembeli'), 'total_ongkir' => $result, 'total' => $total, 'status_pembayaran' => $status, 'status_pesanan' => $status_pesanan ); } else { $params = array( 'no_invoice' => $no_invoice, 'tanggal' => $tanggal, 'tanggal_pembayaran' => $tanggal, 'id_pembeli' => $this->post('id_pembeli'), 'total_ongkir' => $result, 'total' => $total, 'keterangan' => $keterangan, 'status_pembayaran' => $status, 'status_pesanan' => $status_pesanan ); } } else { $status_pesanan = "menunggu pembayaran"; if (empty($keterangan)) { $params = array( 'no_invoice' => $no_invoice, 'tanggal' => $tanggal, 'id_pembeli' => $this->post('id_pembeli'), 'total_ongkir' => $result, 'total' => $total, 'status_pembayaran' => $status, 'status_pesanan' => $status_pesanan ); } else { $params = array( 'no_invoice' => $no_invoice, 'tanggal' => $tanggal, 'id_pembeli' => $this->post('id_pembeli'), 'total_ongkir' => $result, 'total' => $total, 'keterangan' => $keterangan, 'status_pembayaran' => $status, 'status_pesanan' => $status_pesanan ); } } $id_penjualan = $this->penjualan_model->add_penjualan($params); $keranjang = $this->keranjang_model->get_keranjang($this->post('id_pembeli'))->result(); foreach ($keranjang as $row) { $params2 = array( 'id_penjualan' => $id_penjualan, 'id_produk' => $row->id_produk, 'harga' => $row->harga, 'date_pemesanan' => $row->date, 'jumlah' => $row->jumlah, 'subtotal' => $row->subtotal, ); $this->penjualan_model->add_penjualan_produk($params2); } $this->keranjang_model->delete_keranjang($this->post('id_pembeli')); $params3 = array( 'alamat' => $this->post('alamat'), 'no_hp' => $this->post('no_hp'), ); $this->pembeli_model->update_pembeli($this->post('id_pembeli'), $params3); $this->response([ 'status' => true, 'message' => 'Pesanan berhasil disimpan', 'data' => $id_penjualan ], 200); } public function penjualan_get() { $id_pembeli = $this->get('id'); $penjualan = $this->penjualan_model->get_penjualan($id_pembeli)->result_array(); if ($penjualan) { $this->response([ 'status' => true, 'data' => $penjualan, ], 200); } else { $this->response([ 'status' => false, 'message' => 'Tidak ada pesanan' ], 200); } } public function allpenjualan_get() { $penjualan = $this->penjualan_model->get_all_penjualan()->result_array(); if ($penjualan) { $this->response([ 'status' => true, 'data' => $penjualan, ], 200); } else { $this->response([ 'status' => false, 'message' => 'Tidak ada pesanan' ], 200); } } public function penjualandetail_get() { $id_penjualan = $this->get('id'); $penjualan_detail = $this->penjualan_model->get_penjualan_detail($id_penjualan)->result_array(); if ($penjualan_detail) { $this->response([ 'status' => true, 'data' => $penjualan_detail, ], 200); } else { $this->response([ 'status' => false, 'message' => 'Tidak ada detail penjualan' ], 200); } } public function konfirmasipembayaran_post() { $nama_file = rand() . "_" . time() . ".jpg"; $id_penjualan = $this->post('id'); $foto = $this->post('foto'); $params = array( 'tanggal_pembayaran' => date('Y-m-d'), 'status_pembayaran' => 1, 'status_pesanan' => "menunggu konfirmasi", 'bukti_pembayaran' => $nama_file, ); if (file_put_contents('assets/images/pembayaran/' . $nama_file, base64_decode($foto))) { $this->penjualan_model->update_penjualan($id_penjualan, $params); $this->response([ 'status' => true, 'message' => 'Berhasil mengunggah bukti pembayaran', ], 200); } else { $this->response([ 'status' => false, 'message' => 'Bukti pembayaran gagal diunggah', ], 200); } } public function status_post() { $id_penjualan = $this->post('id_penjualan'); $status = $this->post('status'); $params = array( 'status_pesanan' => $status, ); $this->penjualan_model->update_penjualan($id_penjualan, $params); $this->response([ 'status' => true, 'message' => 'Status pesanan berhasil diubah', ], 200); } public function add_ulasan_post() { $params = array( 'id_pembeli' => $this->post('id_pembeli'), 'id_produk' => $this->post('id_produk'), 'rating' => $this->post('rating'), 'keterangan' => $this->post('keterangan'), 'date_created' => date('Y-m-d H:i:s'), ); $this->ulasan_model->add_ulasan($params); $this->response([ 'status' => true, 'message' => 'Ulasan berhasil disimpan', ], 200); } } ?>