CasperSecurity
<?php
namespace App\Http\Livewire\Request;
use App\Models\EmployeeAssetDetailRequest;
use App\Models\EmployeeAssetRequest;
use App\Models\InventoryCategory;
use App\Models\InventoryManage;
use App\Models\InventorySubCategory;
use App\Models\Role;
use App\Support\Collection;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Livewire\Component;
use Livewire\WithPagination;
use Spatie\Activitylog\Models\Activity;
class EmployeeAssetRequestLivewire extends Component
{
use WithPagination;
protected $paginationTheme = 'bootstrap';
public $modelid;
public $search=null;
public $orderBy = 'id';
public $perPage = 10;
public $orderAsc = 'false';
public $status=true;
public $request_id,$request_date,$request_type,$request_description,$employee_id,$created_by;
public $category_id,$sub_category_id,$inventory_id,$assetnames=[];
public $newitemshow=false;
public $activityarray=[];
// public $allarray=[];
public function cleanVars()
{
$this->modelid=null;
$this->request_id=null;
$this->request_date=null;
$this->request_type=null;
$this->request_description=null;
$this->employee_id=null;
$this->category_id=null;
$this->sub_category_id=null;
$this->inventory_id=null;
$this->status=null;
}
//todo::Notifcation Of Success Or Error Message
public $successcreatemsg="Your informations have been successfully saved!";
public $successupdatemsg="Your changes have been successfully updated!";
public $successdeletemsg="Your selected data has been successfully deleted!";
public $errormsg="Oops !!! Something went wrong.";
public function createsuccessmsg(){
$this->dispatchBrowserEvent('showsuccessmsg', [
'type' => 'success',
'title'=>'DATA SAVED',
'message' => $this->successcreatemsg,
]);
}
public function updatesuccessmsg(){
$this->dispatchBrowserEvent('showsuccessmsg', [
'type' => 'success',
'title'=>'DATA UPDATED',
'message' => $this->successupdatemsg,
]);
}
public function deletesuccessmsg(){
$this->dispatchBrowserEvent('showsuccessmsg', [
'type' => 'success',
'title'=>'DATA DELETED',
'message' => $this->successdeletemsg,
]);
}
public function errormsg(){
$this->dispatchBrowserEvent('showsuccessmsg',[
'type'=>'error',
'title'=>'Sorry !!!',
'message'=>$this->errormsg,
]);
}
public function commonmsg($type,$title,$msg){
$this->dispatchBrowserEvent('showsuccessmsg', [
'type' => $type,
'title'=>$title,
'message' => $msg,
]);
}
/* //todo: Employee Asset Request Create Rules
protected $rules=[
'request_id' => 'nullable',
'request_date' => 'required|date',
'request_type' => 'nullable',
'request_description' => 'required|max:255',
'employee_id' => 'required|numeric',
'status' => 'nullable',
];
//todo: Employee Asset Request Updated Rules
protected $updaterules=[
'request_id' => 'nullable',
'request_date' => 'required|date',
'request_type' => 'nullable',
'request_description' => 'required|max:255',
'employee_id' => 'required|numeric',
'status' => 'nullable',
];*/
//todo: Employee Asset Request Validation Messages
protected $messages = [
'request_date.required' => 'The Request Date field cannot be empty.',
'request_description.required' => 'The Description field cannot be empty.',
'status.required' => 'The status cannot be empty.',
];
public function resetvalid()
{
$this->resetValidation();
}
public function updatingSearch()
{
$this->resetPage();
}
public function createclick()
{
$this->cleanVars();
$this->resetValidation();
$this->status = true;
$this->allarray=[];
$this->activityarray=[];
}
public function updateclick($id)
{
$this->inventory_id = null;
$this->request_description = null;
$this->category_id = null;
$this->sub_category_id = null;
$this->temproleids=[];
$this->activityarray=[];
$this->modelid = $id;
$this->loadData($id);
}
public function loadData($id){
$data = EmployeeAssetDetailRequest::where('asset_request_id',$id)->get();
// dd($data);
foreach($data as $key=>$dt){
$employee = EmployeeAssetRequest::find($id);
$role = InventoryManage::find($dt->inventory_id);
$data[$key]['asset_name']= $role['asset_name'];
$data[$key]['request_type'] = $employee['request_type'];
$data[$key]['request_date']=$employee['request_date'];
$data[$key]['request_id']=$employee['request_id'];
//dd($data[$key]['request_type']);
}
if ($data) {
$this->request_id = $data[0]['request_id'];
$this->request_date = $data[0]['request_date'];
$this->activityarray = $data;
$this->role_data = $this->activityarray;
// $this->notice_days = $data->notice_days;
// foreach($this->activityarray as $key=> $activity){
// $allarray[$key]=$activity['inventory_id'];
// }
}
//dd($this->lat);
}
public function deleteclick($id)
{
$this->modelid = $id;
}
public function addactivity(){
$match = false;
$allarray=[];
if($this->inventory_id != null){
$asset_info = InventoryManage::find($this->inventory_id);
}
if(sizeof($this->activityarray)>0){
foreach($this->activityarray as $key=> $activity){
if($this->activityarray[$key]['inventory_id'] == $this->inventory_id){
$match = true;
break;
// $this->dispatchBrowserEvent('showsuccessmsg', [
// 'type' => 'error',
// 'message' => 'Sorry!!! asset name already exist!.',
// ]);
}
}
if($match == true){
$this->dispatchBrowserEvent('showsuccessmsg', [
'type' => 'error',
'message' => 'Sorry!!! asset name already exist!.',
]);
}else{
array_push($this->activityarray,[
'request_id'=>$this->request_id,
'request_type'=>$this->request_type,
'inventory_id'=>$this->inventory_id,
'asset_name' =>$asset_info['asset_name'],
'request_description'=>$this->request_description,
'status'=>1,
]);
}
// if(in_array($this->inventory_id,$this->activityarray)){
// $this->dispatchBrowserEvent('showsuccessmsg', [
// 'type' => 'error',
// 'message' => 'Sorry!!! asset name already exist!.',
// ]);
// }else{
// $allarray=[
// 'request_id'=>$this->request_id,
// 'request_type'=>$this->request_type,
// 'inventory_id'=>$this->inventory_id,
// 'asset_name' =>$asset_info['asset_name'],
// 'request_description'=>$this->request_description,
// 'status'=>1,
// ];
// array_push($this->activityarray,$allarray);
// }
}else{
$allarray=[
'request_id'=>$this->request_id,
'request_type'=>$this->request_type,
'inventory_id'=>$this->inventory_id,
'asset_name' =>$asset_info['asset_name'],
'request_description'=>$this->request_description,
'status'=>1,
];
array_push($this->activityarray,$allarray);
}
//$this->request_id = null;
//$this->request_type = null;
$this->inventory_id = null;
$this->request_description = null;
$this->category_id = null;
$this->sub_category_id = null;
// dd($this->activityarray);
// $key = sizeof($this->allarray)+1;
//// $activity_arrays = [];
////dd($this->inventory_id);
// if($this->inventory_id){
//// dd($this->activityarray);
// $this->validate([
// 'inventory_id'=>'required',
// 'request_description'=>'required'
// ]);
//
// $this->allarray=[
// 'inventory_id'=>$this->inventory_id,
// 'request_description'=>$this->request_description,
// ];
// //dd($allarray);
// array_push($this->activityarray,$this->allarray)
// $count=0;
// if(in_array($this->inventory_id,$this->activityarray)){
// $count++;
// $this->dispatchBrowserEvent('showsuccessmsg', [
// 'type' => 'error',
// 'message' => 'Sorry!!! asset name already exist!.',
// ]);
// }else {
// //notfound
// array_push($this->activityarray,$this->allarray);
//
//
// }
//
//
//
//// dd($this->temproleids);
// if($this->allarray){
// //if($this->temproleids){
//
// $temp_role = [];
// foreach($this->allarray as $key=>$tmprole){
// //dd($key$tmprole);
// $role=InventoryManage::find($tmprole);
// //dd($role);
// $temp_role[$key]['inventory_id']=$role['id'];
// $temp_role[$key]['asset_name']=$role['asset_name'];
// $temp_role[$key]['request_description']=$this->request_description;
//
////dd($temp_role);
// }
// dd($temp_role);
// $this->activityarray = $temp_role;
//
// dd($this->activityarray);
// }
//
//
//
// }else{
// $this->dispatchBrowserEvent('showsuccessmsg',[
// 'type'=>'error',
// 'message'=>'Sorry!!! Please Enter a valid asset name.',
// ]);
// }
}
/* modelData */
public function updatedCategoryId($categoryid){
if($categoryid){
$this->subcategories=InventorySubCategory::where('category_id',$categoryid)->get();
//dd($this->subcategories);
// dd($this->activityarray);
}
}
public function updatedSubCategoryId($subcategoryid){
if($subcategoryid){
//dd($subcategoryid);
$this->assetnames=InventoryManage::where('sub_category_id',$subcategoryid)->get();
//dd($this->assetnames);
}
}
public function deleteactivity($key){
unset($this->activityarray[$key]);
//unset($this->allarray[$key]);
// dd($this->activityarray);
foreach($this->activityarray as $key=> $activity_array){
$role=InventoryCategory::find($activity_array['inventory_id']);
//$this->activityarray[$key]['display_name'] = $role['display_name'];
}
}
public function submit()
{
// $validatedData = $this->validate($this->rules, $this->messages);
$empAsset=EmployeeAssetRequest::create([
'request_id'=>$this->request_id,
'request_date'=>date("Y-m-d"),
'request_type'=>$this->request_type,
'employee_id'=>Auth::user()->id,
'status'=>'1',
]);
//dd($empAsset);
if($empAsset){
$empassetid=$empAsset['id'];
//dd($empassetid);
if(sizeof($this->activityarray)>0){
foreach ($this->activityarray as $activity){
//dd($activity);
//dd($activity['request_description']);
$response=EmployeeAssetDetailRequest::create([
'asset_request_id'=>$empassetid,
'inventory_id'=>$activity['inventory_id'],
'request_description'=>$activity['request_description'],
'status'=>'1',
//'created_by'=>Auth::user()->id,
]);
}
//dd($this->activityarray);
}
}
if ($response) {
$activity = Activity::all()->last();
$activity->description;
$activity->subject;
$activity->changes;
//session()->flash('success', $this->successmsg );
$this->dispatchBrowserEvent('closemodal');
$this->createsuccessmsg();
} else {
$this->dispatchBrowserEvent('closemodal');
$this->errormsg();
}
//dd($validatedData);
}
public function update()
{
// $validatedData = $this->validate($this->rules, $this->messages);
$emp_assetdetails = EmployeeAssetDetailRequest::where('asset_request_id', $this->modelid)->get();
//dd($emp_assetdetails);
foreach($emp_assetdetails as $emp){
$emp->delete();
}
//dd($empcategory);
//dd($this->activityarray);
if(sizeof($this->activityarray)>0){
foreach ($this->activityarray as $activity){
$response=EmployeeAssetDetailRequest::create([
'asset_request_id'=>$this->modelid,
'inventory_id'=>$activity['inventory_id'],
'request_description'=>$activity['request_description'],
'status'=>'1',
//'created_by'=>Auth::user()->id,
]);
}
//dd($this->activityarray);
}
if ($emp_assetdetails) {
$activity = Activity::all()->last();
$activity->description;
$activity->subject;
$activity->changes;
//session()->flash('success', $this->successmsg );
$this->dispatchBrowserEvent('closemodal');
$this->createsuccessmsg();
} else {
$this->dispatchBrowserEvent('closemodal');
$this->errormsg();
}
//dd($validatedData);
}
public function delete(){
$response=EmployeeAssetRequest::find($this->modelid);
if($response->delete()) {
$activity = Activity::all()->last();
$activity->description;
$activity->subject;
$activity->changes;
$this->cleanVars();
//session()->flash('success', $this->successmsg );
$this->dispatchBrowserEvent('closemodal');
$this->deletesuccessmsg();
}else{
//session()->flash('error',$this->errormsg);
$this->dispatchBrowserEvent('closemodal');
$this->errormsg();
}
}
//todo: Employee Asset Request Get All Data For Table
public function read($search,$perPage,$orderBy,$orderAsc){
$request=new Request();
$request->search = $search;
$request->orderBy = $orderBy;
$request->orderAsc = $orderAsc;
$response=EmployeeAssetRequest::search($search)
->orderBy($this->orderBy, $this->orderAsc ? 'asc' : 'desc')
->whereNull('deleted_at') //todo: Employee Asset Request Softdelete condition
->get();
if($response) {
return (new Collection($response))->paginate($perPage);
}else{
return (new Collection([]))->paginate($perPage);
}
}
public function render()
{
// if($this->match == true){
// $this->dispatchBrowserEvent('showsuccessmsg', [
// 'type' => 'error',
// 'message' => 'Sorry!!! asset name already exist!.',
// ]);
// }
$datatables=new Collection();
$this->created_by=Auth::user()->id;
$datatables=$this->read($this->search,$this->perPage,$this->orderBy,$this->orderAsc);
if($this->modelid == null) {
$currentyr = date('Y');
$assetid = sizeof($datatables) + 1;
if ($assetid < 10) {
$empno = "00" . $assetid;
} else if ($assetid < 100) {
$assetid = "0" . $assetid;
} else {
$assetid = $assetid;
}
$this->request_id = "RequestId/" . $currentyr . "/" . $assetid;
}
$categories=InventoryCategory::where('status',1)->get();
$subcategories=InventorySubCategory::where('status',1)
->where('category_id',$this->category_id)
->get();
return view('livewire.request.employee-asset-request-livewire',compact('datatables','categories','subcategories'));
}
}