<?php
namespace App\Http\Livewire;
use App\Helpers\Helper;
use App\Models\Transaksi;
use App\Models\DetailTransaksi;
use App\Models\Armada;
use App\Models\User;
use App\Models\Dealer;
use App\Models\Motor;
use Livewire\Component;
use Livewire\WithPagination;
use Illuminate\Support\Facades\Validator;
use Livewire\WithFileUploads;
use Illuminate\Support\Str;
use PhpOffice\PhpSpreadsheet\IOFactory;
class Transaksis extends Component
{
use WithPagination;
use WithFileUploads;
public $searchTerms;
//nama field
public $uuid="",
$kd_transaksi,
$tgl_transaksi,
$tgl_muat,
$tgl_berangkat,
$tgl_datang,
$tgl_selesai,
$penerima,
$no_hp,
$status,
$user_id,
$armada_id,
$dealer_id,
$motor_id;
public $users;
public $armadas;
public $dealers;
public $motors;
//0 = tambah, 1 = edit
public $action = 0;
//keterangan halaman
public $title = "Transaksi";
public $link = "/transaksi";
public $hakAkses = [];
/**
* The attributes that are mass assignable.
*
* @var array
*/
public function render()
{
$this->hakAkses = Helper::cekAkses([
[$this->title=>'Lihat'],//0
[$this->title=>'Tambah'],//1
[$this->title=>'Ubah'],//2
[$this->title=>'Hapus']//3
],null,true);
if(!$this->hakAkses[0]){
session()->flash('error', 'Anda tidak mempunyai akses');
return view('livewire.402');
}
$this->users = User::where(['posisi' => 'Ekspedisi', 'status_kerja' => 'no'])->whereHas('absen', function($q){
$q->where('tanggal', date('Y-m-d'));
})->get();
$this->armadas = Armada::all();
$this->dealers = Dealer::all();
$this->motors = Motor::orderBy('nama_motor', 'ASC')->get();
$searchTerms = '%'.$this->searchTerms.'%';
return view('livewire.transaksi.transaksis',[
'transaksis' => Transaksi::with('user', 'armada', 'dealer')->where('kd_transaksi','LIKE',$searchTerms)
->orWhere('status','LIKE',$searchTerms)
->orWhere('penerima','LIKE',$searchTerms)
->orWhere('tgl_transaksi','LIKE',$searchTerms)
->orderBy('created_at','DESC')
->paginate(10),
]);
return view('livewire.transaksi.transaksis');
}
/**
* The attributes that are mass assignable.
*
* @var array
*/
public function create()
{
if(!$this->hakAkses[1]){
session()->flash('error', 'Anda tidak mempunyai akses');
return;
}
$this->resetInputFields();
$this->action = 0;
}
/**
* The attributes that are mass assignable.
*
* @var array
*/
public function resetInputFields(){
$this->uuid = '';
$this->kd_transaksi = \Helper::kodeTransaksi();
$this->tgl_transaksi = date('Y-m-d H:i:s');
$this->penerima = '';
$this->no_hp = '';
$this->user_id = $this->users[0]->id ?? null;
$this->armada_id = $this->armadas[0]->id ?? null;
$this->dealer_id = $this->dealers[0]->id ?? null;
$this->motor_id = NULL;
}
/**
* The attributes that are mass assignable.
*
* @var array
*/
public function store()
{
$this->validate([
'kd_transaksi'=>'required',
'tgl_transaksi'=>'required',
'penerima'=>'required',
'no_hp'=>'required',
'user_id'=>'required',
'armada_id'=>'required',
'dealer_id'=>'required',
]);
try {
if($this->action == 0){
$this->uuid = (string) Str::uuid();
}
if($this->action == 0){
$transaksi = Transaksi::create([
'id'=>$this->uuid,
'kd_transaksi' => $this->kd_transaksi,
'tgl_transaksi'=>$this->tgl_transaksi,
'penerima'=>$this->penerima,
'no_hp'=>$this->no_hp,
'user_id' => $this->user_id,
'armada_id' => $this->armada_id,
'dealer_id' => $this->dealer_id
]);
foreach ($this->motor_id as $motor) {
DetailTransaksi::create([
'transaksi_id' => $transaksi->id,
'motor_id' => $motor,
]);
}
\Helper::addLog("Menambah Transaksi ".$transaksi->kd_transaksi);
} else {
Transaksi::updateOrCreate(['id' => $this->uuid], [
'kd_transaksi' => $this->kd_transaksi,
'tgl_transaksi'=>$this->tgl_transaksi,
'penerima'=>$this->penerima,
'no_hp'=>$this->no_hp,
'user_id' => $this->user_id,
'armada_id' => $this->armada_id,
'dealer_id' => $this->dealer_id
]);
\Helper::addLog("Mengubah Transaksi ".$transaksi->kd_transaksi);
}
// Update Status Kerja User
$user = User::find($this->user_id);
$user->update([
'status_kerja' => 'yes',
]);
session()->flash('success',
$this->id ? $this->kd_transaksi.' berhasil di simpan' : $this->kd_transaksi.' berhasil di simpan');
if($this->action == 0){
$this->resetInputFields();
}
$this->emit('dataStore',true);
} catch (\Exception $th) {
session()->flash('error', 'data gagal di simpan : '.$th->getMessage());
$this->emit('dataStore',false);
}
}
/**
* The attributes that are mass assignable.
*
* @var array
*/
public function edit($uuid)
{
if(!$this->hakAkses[2]){
session()->flash('error', 'Anda tidak mempunyai akses');
return;
}
$transaksi = Transaksi::findOrFail($uuid);
$detailTransaksi = [];
foreach ($transaksi->detailTransaksi as $data) {
array_push($detailTransaksi, $data->motor_id);
}
$this->uuid = $uuid;
$this->kd_transaksi = $transaksi->kd_transaksi;
$this->tgl_transaksi = $transaksi->tgl_transaksi;
$this->penerima = $transaksi->penerima;
$this->no_hp = $transaksi->no_hp;
$this->user_id = $transaksi->user_id;
$this->armada_id = $transaksi->armada_id;
$this->dealer_id = $transaksi->dealer_id;
$this->motor_id = $detailTransaksi ?? NULL;
$this->action = 1;
$this->emit('edit');
}
/**
* The attributes that are mass assignable.
*
* @var array
*/
public function delete($uuid)
{
if(!$this->hakAkses[3]){
session()->flash('error', 'Anda tidak mempunyai akses');
return;
}
$transaksi = Transaksi::find($uuid);
$transaksi->delete();
\Helper::addLog("Menghapus Transaksi ".$transaksi->kd_transaksi);
session()->flash('message', 'armada Deleted Successfully.');
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]