<?php

namespace App\Models;

use CodeIgniter\Model;

class ProductOutModel extends Model
{
    protected $table            = 'productout';
    protected $primaryKey       = 'id';
    protected $allowedFields    = [
        'kode',
        'item_id',
        'barcode',
        'gudang_id',
        'qty',
        'tanggal_keluar',
        'keterangan',
        'created_by' // untuk join ke tabel users
    ];

    /**
     * Ambil semua transaksi (dikelompokkan per kode transaksi)
     * Menampilkan total item dan qty dalam satu transaksi
     */
    public function getGroupedTransaction()
    {
        return $this->db->table($this->table)
            ->select('
                productout.kode,
                MAX(productout.tanggal_keluar) as tanggal_keluar,
                MAX(productout.keterangan) as keterangan,
                users.username as username,
                COUNT(productout.id) as total_item,
                SUM(productout.qty) as total_qty
            ')
            ->join('users', 'users.id = productout.created_by', 'left')
            ->groupBy('productout.kode, users.username')
            ->orderBy('tanggal_keluar', 'DESC')
            ->get()
            ->getResultArray();
    }

    /**
     * Ambil semua item dalam satu transaksi (berdasarkan kode transaksi)
     */
    public function getDetailByKode($kode)
{
    return $this->db->table($this->table)
        ->select('
            productout.*,
            items.nama AS nama_item,
            gudang.nama AS nama_gudang,
            users.username AS created_by
            ')

        ->join('items', 'items.id = productout.item_id', 'left')
        ->join('gudang', 'gudang.id = productout.gudang_id', 'left')
        ->join('users', 'users.id = productout.created_by', 'left')
        ->where('productout.kode', $kode)
        ->orderBy('productout.id', 'ASC')
        ->get()
        ->getResultArray();
}


    /**
     * Ambil semua data produk keluar (tanpa grup), cocok untuk halaman riwayat full
     */
    public function getJoinAll()
    {
        return $this->db->table($this->table)
            ->select('
                productout.id,
                productout.kode,
                productout.barcode,
                productout.qty,
                productout.tanggal_keluar,
                productout.keterangan,
                items.nama AS nama_item,
                gudang.nama AS nama_gudang,
                users.username AS username
            ')
            ->join('items', 'items.id = productout.item_id', 'left')
            ->join('gudang', 'gudang.id = productout.gudang_id', 'left')
            ->join('users', 'users.id = productout.created_by', 'left')
            ->orderBy('productout.tanggal_keluar', 'DESC')
            ->get()
            ->getResultArray();
    }
}
