<?php

namespace App\Http\Controllers;

use App\Models\DataGadai;
use App\Models\Customer;
use Illuminate\Http\Request;
use App\Exports\DataGadaiExport;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Facades\Excel;
use Yajra\DataTables\DataTables;


class DataGadaiController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
        $this->middleware('permission:view-dataGadai', ['only' => ['index', 'show', 'listdata']]);
    }

    public function index(Request $request)
    {

        return view('data-gadai.index');
    }

    public function listdata()
    {
        $data = DataGadai::select(
            'data_gadai.id',
            'customer.nomor_member as nomor_member',
            'customer.nama_customer as nama_customer',
            'data_gadai.customer_id',
            'data_gadai.nomor_transaksi',
            'data_gadai.tgl_gadai',
            'data_gadai.tgl_jatuh_tempo',
            'data_gadai.tgl_lelang',
            'data_gadai.poin',
            'data_gadai.nominal',
            'data_gadai.status',
            'data_gadai.lokasi_gerai'
        )
            ->join('customer', 'data_gadai.customer_id', '=', 'customer.customer_id')
            ->orderByDesc('data_gadai.tgl_gadai');

        return DataTables::eloquent($data)
            ->editColumn('nomor_member', function ($row) {
                $formatted = substr_replace($row->nomor_member, '-', 4, 0);
                return substr_replace($formatted, '-', 9, 0);
            })
            ->addColumn('action', function ($row) {
                return '<a href="/data-gadai/' . $row->id . '" class="btn btn-primary"><i class="fas fa-eye"></i></a>';
            })
            ->rawColumns(['action']) // biar tombol bisa tampil
            ->make(true);
    }


    public function xlistdata()
    {

        $data = DataGadai::select(
            'data_gadai.id',
            'customer.nomor_member as nomor_member',
            'customer.nama_customer as nama_customer',
            'data_gadai.customer_id',
            'data_gadai.nomor_transaksi',
            'data_gadai.tgl_gadai',
            'data_gadai.tgl_jatuh_tempo',
            'data_gadai.tgl_lelang',
            'data_gadai.poin',
            'data_gadai.nominal',
            'data_gadai.status',
            'data_gadai.lokasi_gerai'
        )
            ->join('customer', 'data_gadai.customer_id', '=', 'customer.customer_id')
            ->orderByDesc('data_gadai.tgl_gadai')
            ->get();

        $data_gabung = [];
        foreach ($data as $datas) {
            $formatting = substr_replace($datas->nomor_member, '-', 4, 0);
            $nomor_member = substr_replace($formatting, '-', 9, 0);

            $data_gabung[] = [
                "id" => $datas->id,
                "nama_customer" => $datas->nama_customer,
                "nomor_member" => $nomor_member,
                "nomor_transaksi" => $datas->nomor_transaksi,
                "tgl_gadai" => $datas->tgl_gadai,
                "tgl_jatuh_tempo" => $datas->tgl_jatuh_tempo,
                "tgl_lelang" => $datas->tgl_lelang,
                "status" => $datas->status
            ];
        }
        if (empty($data_gabung)) {
            $data_gabung = $data;
        }

        return DataTables::of($data_gabung)->make(true);
    }

    public function show($id)
    {
        $dataGadai = DataGadai::find($id);
        $customer = Customer::where('customer_id', $dataGadai->customer_id)->select('nama_customer', 'nomor_member')->first();
        $details = $dataGadai->dataGadaiDetail;

        return view('data-gadai.show', compact('dataGadai', 'customer', 'details'));
    }
    public function export_all()
    {

        return Excel::download(new DataGadaiExport(), 'data_gadai.xlsx');
    }
}
