<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Barang;
use App\Models\JenisBarang;
use App\Models\SatuanBarang;
use App\Models\Pengguna;
use App\Models\KategoriSimak;
use Illuminate\Support\Facades\DB;
class BarangController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\View\View
     */
    public function index()
    {
      
        $data['menu'] = 'Manajemen Barang';
        $data['current_page'] = 'Data-barang';
        $data['pengguna'] = Pengguna::all();
        $data['barang'] = Barang::join('tbl_satuan','tbl_satuan.id','=','tbl_barang.satuan_id')
                                  ->join('tbl_kategori_simak','tbl_barang.kategori_simak_id','=','tbl_kategori_simak.id')     
                                  ->join('tbl_jenis_barang','tbl_jenis_barang.id','=','tbl_barang.jenis_barang_id')
                                  ->get(['tbl_barang.*','tbl_satuan.nama_satuan','tbl_jenis_barang.nama_jenis']);
        $data['satuan_barang'] = SatuanBarang::all();
        $data['jenis_barang'] = jenisBarang::all();
        $data['kategori_simak'] = KategoriSimak::all();
        return view('admin.barang.index',$data);
    }

    public function store(Request $request)
    {

        $data = array(
            'nama_barang'=>$request->nama_barang,
            'serial_number'=>$request->serial_number,
            'keterangan'=>$request->keterangan,
            'tanggal_masuk'=>$request->tanggal_masuk,
            'jenis_barang_id'=>$request->jenis_barang,
            'satuan_id'=>$request->satuan_barang,
            'jumlah_barang'=>$request->jumlah,
            'lokasi'=>$request->lokasi,
            'harga'=>$request->harga_barang,
            'nup'=>$request->nup,
            'kategori_simak_id'=>$request->kategori_simak,
            'kodebarang'=>$request->kode_barang
        );
        
        $insert = DB::table('tbl_barang')->insert($data);

        if($insert){

            return redirect('barang')->with('sukses', 'Data Barang Berhasil di tambahkan ..');
    
          }else{
    
            return redirect('barang')->with('error', 'Data Barang Gagal di tambahkan ..');
          }
    }

    public function jenis_barang()
    {

        $data['menu'] = 'Manajemen Barang';
        $data['current_page'] = 'Jenis-barang';
        return view('admin.barang.jenis_barang',$data);
    }


    public function updates_barang(Request $request)
    {
        

            $id_barang = $request->id;
            
            

            if(!empty($request->file('image_barang'))){

                if(!$request->validate([
                    'image_barang' => 'mimes:png,jpg,jpeg|max:2048',
                ])){
                    return redirect('barang')->with('error', 'Pastikan File Berekstensi PNG,JPG,JPEG ..');
    
                }

                $file = $request->file('image_barang');
        
                $fileName =  'barang-'.time().'.'.$file->extension();  
                $file->move(public_path('upload_image'), $fileName);
                $data_update = array(
                    'jenis_barang_id'=>$request->jenis_barang,
                    'satuan_id'=>$request->satuan_barang,
                    'jumlah_barang'=>$request->jumlah,
                    'lokasi'=>$request->lokasi,
                    'tanggal_masuk'=>$request->tanggal_masuk,
                    'keterangan'=>$request->keterangan,
                    'image'=>$fileName,
                    'kodebarang'=>$request->kode_barang,
                    'kategori_simak_id'=>$request->kategori_simak,
                    'harga'=>$request->harga,
                    'nup'=>$request->nup,

                );

                $insert = DB::table('tbl_barang')->where('id',$id_barang)->update($data_update);
                if($insert){

                    return redirect('barang')->with('sukses', 'Data Barang Berhasil di Update ..');
            
                  }else{
            
                    return redirect('barang')->with('error', 'Data Barang Gagal di Update ..');
                  }


        }else{
            $data_update = array(
                'jenis_barang_id'=>$request->jenis_barang,
                'satuan_id'=>$request->satuan_barang,
                'jumlah_barang'=>$request->jumlah,
                'lokasi'=>$request->lokasi,
                'tanggal_masuk'=>$request->tanggal_masuk,
                'keterangan'=>$request->keterangan,
                'kodebarang'=>$request->kode_barang,
                'kategori_simak_id'=>$request->kategori_simak,
                'harga'=>$request->harga,
                'nup'=>$request->nup,

            );

            $update = DB::table('tbl_barang')->where('id',$id_barang)->update($data_update);
            if($update){

                return redirect('barang')->with('sukses', 'Data Barang Berhasil di Update ..');
        
              }else{
        
                return redirect('barang')->with('error', 'Data Barang Gagal di Update ..');
              }
         
        }


      
    


    }
    public function barang_keluar(Request $request)
    {
     
        $char = 'TRX';
        $transaksi_id = $char . sprintf("%03s", time());
        //  dd($transaksi_id);
       
        
  
        

        if($request->jenis_keluar == 1){
            
            
            
            if(!$request->validate([
                'file_barang' => 'required|mimes:pdf,xlx,csv|max:2048',
            ])){
                return redirect('barang')->with('error', 'Pastikan File Berekstensi PDF,XLX,CSV ..');

            }

            $file = $request->file('file_barang');
            $fileName =  $request->pengguna.'-'.time().'.'.$file->extension();  

            if($file->move(public_path('upload_pdf'), $fileName)){

                $data_barang_pinjam = array(
                    
                    'barang_id'=>$request->id_barang,
                    'pengguna_id'=>$request->pengguna,
                    'jumlah_keluar'=>$request->jumlah_keluar,
                    'lokasi_keluar'=>$request->lokasi_keluar,
                    'tanggal_keluar'=>$request->tanggal_keluar,
                    'keterangan_keluar'=>$request->keterangan_keluar,
                    'transaksi_id'=>$transaksi_id,
                    'file_barang'=>$fileName,
                    'jenis_keluar'=>'pinjam'

                );

                $insert = DB::table('tbl_barang_keluar')->insert($data_barang_pinjam);
                if($insert){

                    return redirect('barang')->with('sukses', 'Data Barang Berhasil di Keluarkan ..');
            
                  }else{
            
                    return redirect('barang')->with('error', 'Data Barang Gagal di keluarkan ..');
                  }


        }else{

            return redirect('barang')->with('error', 'Data File Gagal di Upload ..');
        }


        }else if($request->jenis_keluar == 2){

            $data_barang_rusak = array(
                    
                'barang_id'=>$request->id_barang,
                'jumlah_keluar'=>$request->jumlah_keluar,
                'lokasi_keluar'=>$request->lokasi_keluar,
                'tanggal_keluar'=>$request->tanggal_keluar,
                'keterangan_keluar'=>$request->keterangan_keluar,
                'transaksi_id'=>$transaksi_id,
                'jenis_keluar'=>'rusak'

            );

            $insert_rusak = DB::table('tbl_barang_keluar')->insert($data_barang_rusak);
            if($insert_rusak){

                return redirect('barang')->with('sukses', 'Data Barang Berhasil di Keluarkan ..');
        
              }else{
        
                return redirect('barang')->with('error', 'Data Barang Gagal di keluarkan ..');
              }


        }
    


    }
}