Untitled

mail@pastecode.io avatar
unknown
plain_text
22 days ago
4.9 kB
1
Indexable
Never
<?php

namespace App\Controllers;

use App\Controllers\BaseController;
use App\Models\ModelPembelian;

class Pembelian extends BaseController
{
    public function __construct()
    {
        $this->ModelPembelian = new ModelPembelian();
    }

    public function index()
    {

        $data = [
            'judul' => 'Pembelian',
            'produk' => $this->ModelPembelian->AllProduk(),
            'cart_items' => session()->get('cart_items') ?? [] ,
        ];
        return view('v_pembelian', $data);
    }

    public function getProdukDetails($kode_produk)
    {
        if ($this->request->isAJAX()) {
            $produk = $this->ModelPembelian->getProdukById($kode_produk);
            return $this->response->setJSON($produk);
        }
    }

    // public function updateStock()
    // {
    //     $kode_produk = $this->request->getPost('kode_produk');
    //     $qty = $this->request->getPost('qty');

    //     // Validasi input
    //     if (empty($kode_produk) || empty($qty)) {
    //         session()->setFlashdata('error', 'Kode produk dan jumlah tidak boleh kosong');
    //         return redirect()->to(base_url('Pembelian'));
    //     }

    //     // Update stok produk
    //     $result = $this->ModelPembelian->updateStok($kode_produk, $qty);

    //     if ($result) {
    //         // Set pesan sukses
    //         session()->setFlashdata('pesan', 'Stok produk berhasil diperbarui');
    //     } else {
    //         // Set pesan error
    //         session()->setFlashdata('error', 'Gagal memperbarui stok produk');
    //     }

    //     // Redirect kembali ke halaman pembelian
    //     return redirect()->to(base_url('Pembelian'));
    // }

    public function addToCart()
    {
        $kode_produk = $this->request->getPost('kode_produk');
        $qty = $this->request->getPost('qty');
        $produk = $this->ModelPembelian->getProdukById($kode_produk);

        if ($produk) {
            $cart_items = session()->get('cart_items') ?? [];

            // Cek apakah produk sudah ada di cart
            $found = false;
            foreach ($cart_items as &$item) {
                if ($item['kode_produk'] == $kode_produk) {
                    $item['qty'] += $qty;
                    $item['total_harga'] = $item['qty'] * $item['harga_jual'];
                    $found = true;
                    break;
                }
            }
            unset($item);

            if (!$found) {
                $cart_items[] = [
                    'kode_produk' => $kode_produk,
                    'nama_produk' => $produk['nama_produk'],
                    'nama_kategori' => $produk['nama_kategori'],
                    'nama_satuan' => $produk['nama_satuan'],
                    'harga_jual' => $produk['harga_jual'],
                    'qty' => $qty,
                    'total_harga' => $qty * $produk['harga_jual']
                ];
            }

            session()->set('cart_items', $cart_items);
            session()->setFlashdata('pesan', 'Produk berhasil ditambahkan ke keranjang');
        }

        return redirect()->to(base_url('Pembelian'));
    }

    public function removeItem($kode_produk)
    {
        $cart_items = session()->get('cart_items') ?? [];

        foreach ($cart_items as $key => $item) {
            if ($item['kode_produk'] == $kode_produk) {
                unset($cart_items[$key]);
                break;
            }
        }

        session()->set('cart_items', array_values($cart_items));
        session()->setFlashdata('pesan', 'Produk berhasil dihapus dari keranjang');

        return redirect()->to(base_url('Pembelian'));
    }

    public function savePembelian()
    {
        $cart = \Config\Services::cart();
        $produk = $cart->contents();
        // Simpan ke tbl_beli
        $dataBeli = [
            'tgl_beli' => date('Y-m-d'),
            'jam' => date('H:i:s'),
            'id_user' => session()->get('id_user'),
        ];

        $this->ModelPembelian->InsertBeli($dataBeli);
        $id_beli = $this->ModelPembelian->getInsertID();

        $cart_items = session()->get('cart_items') ?? [];

        foreach ($cart_items as $item) {
            $dataRinciBeli = [
                'id_beli' => $id_beli,
                'kode_produk' => $item['id'],
                'qty' => $item['qty'],
            ];
            $this->ModelPembelian->InsertRinciBeli($dataRinciBeli);
            $this->ModelPembelian->updateStok($item['kode_produk'], $item['qty']);
        }

        // Kosongkan cart setelah pembelian berhasil disimpan
        session()->remove('cart_items');
        session()->setFlashdata('pesan', 'Pembelian berhasil disimpan dan stok diperbarui');

        return redirect()->to(base_url('Pembelian'));
    }

}
Leave a Comment