1
0
forked from poc/pds

Added GuardPatrolEntry Dashboard and Added masters with transaction Policy

This commit is contained in:
dhanabalan
2025-06-23 18:57:05 +05:30
parent ecf6d494de
commit 19510d8348
8 changed files with 1149 additions and 0 deletions

View File

@@ -0,0 +1,108 @@
<?php
namespace App\Filament\Pages;
use App\Models\GuardPatrolEntry;
use App\Models\Plant;
use Carbon\Carbon;
use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\DateTimePicker;
use Filament\Forms\Components\Select;
use Filament\Forms\Form;
use Filament\Pages\Dashboard\Concerns\HasFiltersForm;
use Filament\Pages\Page;
use Illuminate\Support\Facades\Auth;
class GuardPatrolEntryDashboard extends Page
{
use HasFiltersForm;
protected static ?string $navigationIcon = 'heroicon-o-document-text';
protected static ?string $navigationGroup = 'Guard DashBoard';
protected static string $view = 'filament.pages.guard-patrol-entry-dashboard';
public function mount(): void
{
session()->forget(['select_guard_plant', 'select_guard_date']);
$this->filtersForm->fill([
'plant' => null,
'date' => null,
]);
}
public function filtersForm(Form $form): Form
{
return $form
->statePath('filters') // Explicitly set where to store form data
->schema([
Select::make('plant')
->options(Plant::pluck('name', 'id'))
->label('Select Plant')
->reactive()
->required()
->afterStateUpdated(function ($state, callable $set, callable $get){
// $this->dispatch('invoiceChart');
if(!$state)
{
$set('date', now()->format('Y-m-d')); // H:i:s
session(['select_guard_plant' => $state]);
session(['select_guard_date' => $get('date')]);
} else {
if(!$get('date'))
{
$set('date', now()->format('Y-m-d'));
session(['select_guard_plant' => $state]);
session(['select_guard_date' => $get('date')]);
} else {
session(['select_guard_plant' => $state]);
session(['select_guard_date' => $get('date')]);
}
}
$this->dispatch('loadGuardData', $state, $get('date')); //->format('Y-m-d')
}),
DatePicker::make('date')
->label('Select Date')
->placeholder('Select Date')
->reactive()
->required()
->beforeOrEqual(now())
->default(now()->format('Y-m-d'))
->afterStateUpdated(function ($state, callable $set, callable $get){
if(!$get('plant'))
{
$set('date', now()->format('Y-m-d'));
session(['select_guard_plant' => $get('plant')]);
session(['select_guard_date' => $state]);
} else {
if(!$get('date'))
{
$set('date', now()->format('Y-m-d'));
session(['select_guard_plant' => $get('plant')]);
session(['select_guard_date' => $state]);
} else {
$records = GuardPatrolEntry::whereDate('patrol_time', $state)->where('plant_id', $get('plant'))->orderBy('patrol_time', 'asc')->first(); //desc
//dd($get('plant'), $state, $records->patrol_time);//->toTimeString()
session(['select_guard_plant' => $get('plant')]);
session(['select_guard_date' => $state]);
}
}
// $this->dispatch('invoiceChart');
$this->dispatch('loadGuardData', $get('plant'), $state);//->format('Y-m-d')
})
])
->columns(2);
}
public static function getNavigationLabel(): string
{
return 'Guard Patrol Entry';
}
public static function canAccess(): bool
{
return Auth::check() && Auth::user()->can('view guard patrol entry dashboard');
}
}

View File

@@ -0,0 +1,354 @@
<?php
namespace App\Livewire;
use App\Models\CheckPointTime;
use App\Models\GuardPatrolEntry;
use Carbon\Carbon;
use Livewire\Component;
class GuardPatrolEntryDataTable extends Component
{
// public $plantId;
// public $date;
public $newNameFound;
public $guardName;
public $checkPointName;
public $startTime;
public $endTime;
public $start;
public $finish;
public $begin;
public $end;
public $labTime;
public $minDiff;
public $seqNo;
public $isSequenced = true;
public $sequence1;
public $sequence2;
public $sequence3;
public $sequence4;
public $sequence5;
public $sequence6;
public $sequence7;
public $sequence8;
public $sequence9;
public $startSeqCheckPoint1;
public $startSeqCheckPoint2;
public $startSeqCheckPoint3;
public $startSeqCheckPoint4;
public $startSeqCheckPoint5;
public $startSeqCheckPoint6;
public $startSeqCheckPoint7;
public $startSeqCheckPoint8;
public $startSeqCheckPoint9;
public $records = [];
protected $listeners = [
'loadGuardData' => 'loadGuardPatrolData',
];
public function loadGuardPatrolData($plantId, $date)
{
// $this->plantId = $plantId;
// $this->date = $date;
$this->records = [];
$this->newNameFound = true;
$this->guardName = null;
// $this->checkPointName = null;
$this->startTime = null;
$this->endTime = null;
$this->start = null;
$this->finish = null;
$this->begin = null;
$this->end = null;
$this->labTime = null;
$this->minDiff = 0;
$this->seqNo = 0;
$this->isSequenced = true;
$this->sequence1 = null;
$this->sequence2 = null;
$this->sequence3 = null;
$this->sequence4 = null;
$this->sequence5 = null;
$this->sequence6 = null;
$this->sequence7 = null;
$this->sequence8 = null;
$this->sequence9 = null;
if(!$plantId || !$date)
{
$this->records = [];
return;
}
$this->startSeqCheckPoint1 = CheckPointTime::with('checkPointNames1')->with('checkPointNames2')->where('sequence_number', 1)->where('plant_id', $plantId)->first();
$this->startSeqCheckPoint2 = CheckPointTime::with('checkPointNames1')->with('checkPointNames2')->where('sequence_number', 2)->where('plant_id', $plantId)->first();
$this->startSeqCheckPoint3 = CheckPointTime::with('checkPointNames1')->with('checkPointNames2')->where('sequence_number', 3)->where('plant_id', $plantId)->first();
$this->startSeqCheckPoint4 = CheckPointTime::with('checkPointNames1')->with('checkPointNames2')->where('sequence_number', 4)->where('plant_id', $plantId)->first();
$this->startSeqCheckPoint5 = CheckPointTime::with('checkPointNames1')->with('checkPointNames2')->where('sequence_number', 5)->where('plant_id', $plantId)->first();
$this->startSeqCheckPoint6 = CheckPointTime::with('checkPointNames1')->with('checkPointNames2')->where('sequence_number', 6)->where('plant_id', $plantId)->first();
$this->startSeqCheckPoint7 = CheckPointTime::with('checkPointNames1')->with('checkPointNames2')->where('sequence_number', 7)->where('plant_id', $plantId)->first();
$this->startSeqCheckPoint8 = CheckPointTime::with('checkPointNames1')->with('checkPointNames2')->where('sequence_number', 8)->where('plant_id', $plantId)->first();
$this->startSeqCheckPoint9 = CheckPointTime::with('checkPointNames1')->with('checkPointNames2')->where('sequence_number', 9)->where('plant_id', $plantId)->first();
$records = GuardPatrolEntry::with('guardNames')->with('checkPointNames')->whereDate('patrol_time', $date)->where('plant_id', $plantId)->orderBy('patrol_time', 'asc')->get(); //desc Carbon::parse($record->patrol_time)->toTimeString()
foreach ($records as $record) {
$guardName = $record->guardNames ? $record->guardNames->name : null;
$checkPointName = $record->checkPointNames ? $record->checkPointNames->name : null;
if ($this->guardName != $guardName || $this->newNameFound) {//if ($this->newNameFound) {
if($this->guardName)
{
$this->records[] = [
'guard_name' => $this->guardName,
// 'check_point_name' => $record->checkPointNames ? $record->checkPointNames->name : "",
'start_time' => $this->startTime,
'end_time' => $this->endTime,
'lap_time' => $this->labTime,
'Sequence_1' => $this->sequence1,
'Sequence_2' => $this->sequence2,
'Sequence_3' => $this->sequence3,
'Sequence_4' => $this->sequence4,
'Sequence_5' => $this->sequence5,
'Sequence_6' => $this->sequence6,
'Sequence_7' => $this->sequence7,
'Sequence_8' => $this->sequence8,
'Sequence_9' => $this->sequence9
//'created_at' => $record->created_at,
];
}
$this->guardName = $guardName;
$this->startTime = Carbon::parse($record->patrol_time)->toTimeString(); //"2025-06-01 00:07:12"
$this->start = Carbon::parse($record->patrol_time);
$this->endTime = Carbon::parse($record->patrol_time)->toTimeString(); //"2025-06-01 00:07:12"
$this->finish = Carbon::parse($record->patrol_time);
$this->begin = Carbon::parse($record->patrol_time);
$this->end = Carbon::parse($record->patrol_time);
$this->labTime = (int)$this->start->diffInMinutes($this->finish);
$this->minDiff = (int)$this->begin->diffInMinutes($this->end);
$this->seqNo = 0;
$this->newNameFound = false;
$this->isSequenced = true;
}
else if ($this->guardName == $guardName && $this->start && $this->begin)
{
$this->endTime = Carbon::parse($record->patrol_time)->toTimeString(); //"2025-06-01 00:07:12"
$this->finish = Carbon::parse($record->patrol_time);
$this->end = Carbon::parse($record->patrol_time);
$this->labTime = (int)$this->start->diffInMinutes($this->finish);
$this->minDiff = (int)$this->begin->diffInMinutes($this->end);
$this->begin = Carbon::parse($record->patrol_time);
// $this->seqNo = 0;
}
$this->seqNo++;
if ($this->seqNo == 1) {
if ($checkPointName == $this->startSeqCheckPoint1->checkPointNames1->name) {//"STP BACKSIDE"
$this->isSequenced = true;
$this->sequence1 = "X";
$this->sequence2 = "X";
$this->sequence3 = "X";
$this->sequence4 = "X";
$this->sequence5 = "X";
$this->sequence6 = "X";
$this->sequence7 = "X";
$this->sequence8 = "X";
$this->sequence9 = "X";
}
else {
$this->isSequenced = false;
$this->sequence1 = "X";
$this->sequence2 = "X";
$this->sequence3 = "X";
$this->sequence4 = "X";
$this->sequence5 = "X";
$this->sequence6 = "X";
$this->sequence7 = "X";
$this->sequence8 = "X";
$this->sequence9 = "X";
}
}
else if ($this->seqNo == 2) {
if ($checkPointName == $this->startSeqCheckPoint2->checkPointNames1->name) {//"CANTEEN"
if ($this->isSequenced) {
$this->sequence1 = $this->minDiff;
$this->sequence2 = "X";
$this->sequence3 = "X";
$this->sequence4 = "X";
$this->sequence5 = "X";
$this->sequence6 = "X";
$this->sequence7 = "X";
$this->sequence8 = "X";
$this->sequence9 = "X";
}
}
else {
$this->isSequenced = false;
$this->sequence1 = "X";
$this->sequence2 = "X";
$this->sequence3 = "X";
$this->sequence4 = "X";
$this->sequence5 = "X";
$this->sequence6 = "X";
$this->sequence7 = "X";
$this->sequence8 = "X";
$this->sequence9 = "X";
}
}
else if ($this->seqNo == 3) {
if ($checkPointName == $this->startSeqCheckPoint3->checkPointNames1->name) {//"D BLOCK BACK GATE"
if ($this->isSequenced) {
$this->sequence2 = $this->minDiff;
$this->sequence3 = "X";
$this->sequence4 = "X";
$this->sequence5 = "X";
$this->sequence6 = "X";
$this->sequence7 = "X";
$this->sequence8 = "X";
$this->sequence9 = "X";
}
}
else {
$this->isSequenced = false;
$this->sequence2 = "X";
$this->sequence3 = "X";
$this->sequence4 = "X";
$this->sequence5 = "X";
$this->sequence6 = "X";
$this->sequence7 = "X";
$this->sequence8 = "X";
$this->sequence9 = "X";
}
}
else if ($this->seqNo == 4) {
if ($checkPointName == $this->startSeqCheckPoint4->checkPointNames1->name) {//"C BLOCK PACKING END"
if ($this->isSequenced) {
$this->sequence3 = $this->minDiff;
$this->sequence4 = "X";
$this->sequence5 = "X";
$this->sequence6 = "X";
$this->sequence7 = "X";
$this->sequence8 = "X";
$this->sequence9 = "X";
}
}
else {
$this->isSequenced = false;
$this->sequence3 = "X";
$this->sequence4 = "X";
$this->sequence5 = "X";
$this->sequence6 = "X";
$this->sequence7 = "X";
$this->sequence8 = "X";
$this->sequence9 = "X";
}
}
else if ($this->seqNo == 5) {
if ($checkPointName == $this->startSeqCheckPoint5->checkPointNames1->name) {//"EXPORT WINDING FRONT"
if ($this->isSequenced) {
$this->sequence4 = $this->minDiff;
$this->sequence5 = "X";
$this->sequence6 = "X";
$this->sequence7 = "X";
$this->sequence8 = "X";
$this->sequence9 = "X";
}
}
else {
$this->isSequenced = false;
$this->sequence4 = "X";
$this->sequence5 = "X";
$this->sequence6 = "X";
$this->sequence7 = "X";
$this->sequence8 = "X";
$this->sequence9 = "X";
}
}
elseif ($this->seqNo == 6) {
if ($checkPointName == $this->startSeqCheckPoint6->checkPointNames1->name) {//"DOMESTIC WINDING FRONT"
if ($this->isSequenced) {
$this->sequence5 = $this->minDiff;
$this->sequence6 = "X";
$this->sequence7 = "X";
$this->sequence8 = "X";
$this->sequence9 = "X";
}
}
else {
$this->isSequenced = false;
$this->sequence5 = "X";
$this->sequence6 = "X";
$this->sequence7 = "X";
$this->sequence8 = "X";
$this->sequence9 = "X";
}
}
elseif ($this->seqNo == 7) {
if ($checkPointName == $this->startSeqCheckPoint7->checkPointNames1->name) {//"POWER HOUSE FRONT"
if ($this->isSequenced) {
$this->sequence6 = $this->minDiff;
$this->sequence7 = "X";
$this->sequence8 = "X";
$this->sequence9 = "X";
}
}
else {
$this->isSequenced = false;
$this->sequence6 = "X";
$this->sequence7 = "X";
$this->sequence8 = "X";
$this->sequence9 = "X";
}
}
elseif ($this->seqNo == 8) {
if ($checkPointName == $this->startSeqCheckPoint8->checkPointNames1->name) {//"B BLOCK BUFFING FRONT"
if ($this->isSequenced) {
$this->sequence7 = $this->minDiff;
$this->sequence8 = "X";
$this->sequence9 = "X";
}
}
else {
$this->isSequenced = false;
$this->sequence7 = "X";
$this->sequence8 = "X";
$this->sequence9 = "X";
}
}
elseif ($this->seqNo == 9) {
if ($checkPointName == $this->startSeqCheckPoint9->checkPointNames1->name) {//"D BLOCK DESPATCH FRONT"
if ($this->isSequenced) {
$this->sequence8 = $this->minDiff;
$this->sequence9 = "X";
}
}
else {
$this->isSequenced = false;
$this->sequence8 = "X";
$this->sequence9 = "X";
}
}
elseif ($this->seqNo == 10) {
if ($checkPointName == $this->startSeqCheckPoint9->checkPointNames2->name) {//"D 72 END"
if ($this->isSequenced) {
$this->sequence9 = $this->minDiff;
}
}
else {
$this->isSequenced = false;
$this->sequence9 = "X";
}
$this->newNameFound = true;
}
}
}
public function render()
{
return view('livewire.guard-patrol-entry-data-table');
}
}

View File

@@ -0,0 +1,106 @@
<?php
namespace App\Policies;
use Illuminate\Auth\Access\Response;
use App\Models\CheckPointName;
use App\Models\User;
class CheckPointNamePolicy
{
/**
* Determine whether the user can view any models.
*/
public function viewAny(User $user): bool
{
return $user->checkPermissionTo('view-any CheckPointName');
}
/**
* Determine whether the user can view the model.
*/
public function view(User $user, CheckPointName $checkpointname): bool
{
return $user->checkPermissionTo('view CheckPointName');
}
/**
* Determine whether the user can create models.
*/
public function create(User $user): bool
{
return $user->checkPermissionTo('create CheckPointName');
}
/**
* Determine whether the user can update the model.
*/
public function update(User $user, CheckPointName $checkpointname): bool
{
return $user->checkPermissionTo('update CheckPointName');
}
/**
* Determine whether the user can delete the model.
*/
public function delete(User $user, CheckPointName $checkpointname): bool
{
return $user->checkPermissionTo('delete CheckPointName');
}
/**
* Determine whether the user can delete any models.
*/
public function deleteAny(User $user): bool
{
return $user->checkPermissionTo('delete-any CheckPointName');
}
/**
* Determine whether the user can restore the model.
*/
public function restore(User $user, CheckPointName $checkpointname): bool
{
return $user->checkPermissionTo('restore CheckPointName');
}
/**
* Determine whether the user can restore any models.
*/
public function restoreAny(User $user): bool
{
return $user->checkPermissionTo('restore-any CheckPointName');
}
/**
* Determine whether the user can replicate the model.
*/
public function replicate(User $user, CheckPointName $checkpointname): bool
{
return $user->checkPermissionTo('replicate CheckPointName');
}
/**
* Determine whether the user can reorder the models.
*/
public function reorder(User $user): bool
{
return $user->checkPermissionTo('reorder CheckPointName');
}
/**
* Determine whether the user can permanently delete the model.
*/
public function forceDelete(User $user, CheckPointName $checkpointname): bool
{
return $user->checkPermissionTo('force-delete CheckPointName');
}
/**
* Determine whether the user can permanently delete any models.
*/
public function forceDeleteAny(User $user): bool
{
return $user->checkPermissionTo('force-delete-any CheckPointName');
}
}

View File

@@ -0,0 +1,106 @@
<?php
namespace App\Policies;
use Illuminate\Auth\Access\Response;
use App\Models\CheckPointTime;
use App\Models\User;
class CheckPointTimePolicy
{
/**
* Determine whether the user can view any models.
*/
public function viewAny(User $user): bool
{
return $user->checkPermissionTo('view-any CheckPointTime');
}
/**
* Determine whether the user can view the model.
*/
public function view(User $user, CheckPointTime $checkpointtime): bool
{
return $user->checkPermissionTo('view CheckPointTime');
}
/**
* Determine whether the user can create models.
*/
public function create(User $user): bool
{
return $user->checkPermissionTo('create CheckPointTime');
}
/**
* Determine whether the user can update the model.
*/
public function update(User $user, CheckPointTime $checkpointtime): bool
{
return $user->checkPermissionTo('update CheckPointTime');
}
/**
* Determine whether the user can delete the model.
*/
public function delete(User $user, CheckPointTime $checkpointtime): bool
{
return $user->checkPermissionTo('delete CheckPointTime');
}
/**
* Determine whether the user can delete any models.
*/
public function deleteAny(User $user): bool
{
return $user->checkPermissionTo('delete-any CheckPointTime');
}
/**
* Determine whether the user can restore the model.
*/
public function restore(User $user, CheckPointTime $checkpointtime): bool
{
return $user->checkPermissionTo('restore CheckPointTime');
}
/**
* Determine whether the user can restore any models.
*/
public function restoreAny(User $user): bool
{
return $user->checkPermissionTo('restore-any CheckPointTime');
}
/**
* Determine whether the user can replicate the model.
*/
public function replicate(User $user, CheckPointTime $checkpointtime): bool
{
return $user->checkPermissionTo('replicate CheckPointTime');
}
/**
* Determine whether the user can reorder the models.
*/
public function reorder(User $user): bool
{
return $user->checkPermissionTo('reorder CheckPointTime');
}
/**
* Determine whether the user can permanently delete the model.
*/
public function forceDelete(User $user, CheckPointTime $checkpointtime): bool
{
return $user->checkPermissionTo('force-delete CheckPointTime');
}
/**
* Determine whether the user can permanently delete any models.
*/
public function forceDeleteAny(User $user): bool
{
return $user->checkPermissionTo('force-delete-any CheckPointTime');
}
}

View File

@@ -0,0 +1,106 @@
<?php
namespace App\Policies;
use Illuminate\Auth\Access\Response;
use App\Models\GuardName;
use App\Models\User;
class GuardNamePolicy
{
/**
* Determine whether the user can view any models.
*/
public function viewAny(User $user): bool
{
return $user->checkPermissionTo('view-any GuardName');
}
/**
* Determine whether the user can view the model.
*/
public function view(User $user, GuardName $guardname): bool
{
return $user->checkPermissionTo('view GuardName');
}
/**
* Determine whether the user can create models.
*/
public function create(User $user): bool
{
return $user->checkPermissionTo('create GuardName');
}
/**
* Determine whether the user can update the model.
*/
public function update(User $user, GuardName $guardname): bool
{
return $user->checkPermissionTo('update GuardName');
}
/**
* Determine whether the user can delete the model.
*/
public function delete(User $user, GuardName $guardname): bool
{
return $user->checkPermissionTo('delete GuardName');
}
/**
* Determine whether the user can delete any models.
*/
public function deleteAny(User $user): bool
{
return $user->checkPermissionTo('delete-any GuardName');
}
/**
* Determine whether the user can restore the model.
*/
public function restore(User $user, GuardName $guardname): bool
{
return $user->checkPermissionTo('restore GuardName');
}
/**
* Determine whether the user can restore any models.
*/
public function restoreAny(User $user): bool
{
return $user->checkPermissionTo('restore-any GuardName');
}
/**
* Determine whether the user can replicate the model.
*/
public function replicate(User $user, GuardName $guardname): bool
{
return $user->checkPermissionTo('replicate GuardName');
}
/**
* Determine whether the user can reorder the models.
*/
public function reorder(User $user): bool
{
return $user->checkPermissionTo('reorder GuardName');
}
/**
* Determine whether the user can permanently delete the model.
*/
public function forceDelete(User $user, GuardName $guardname): bool
{
return $user->checkPermissionTo('force-delete GuardName');
}
/**
* Determine whether the user can permanently delete any models.
*/
public function forceDeleteAny(User $user): bool
{
return $user->checkPermissionTo('force-delete-any GuardName');
}
}

View File

@@ -0,0 +1,106 @@
<?php
namespace App\Policies;
use Illuminate\Auth\Access\Response;
use App\Models\GuardPatrolEntry;
use App\Models\User;
class GuardPatrolEntryPolicy
{
/**
* Determine whether the user can view any models.
*/
public function viewAny(User $user): bool
{
return $user->checkPermissionTo('view-any GuardPatrolEntry');
}
/**
* Determine whether the user can view the model.
*/
public function view(User $user, GuardPatrolEntry $guardpatrolentry): bool
{
return $user->checkPermissionTo('view GuardPatrolEntry');
}
/**
* Determine whether the user can create models.
*/
public function create(User $user): bool
{
return $user->checkPermissionTo('create GuardPatrolEntry');
}
/**
* Determine whether the user can update the model.
*/
public function update(User $user, GuardPatrolEntry $guardpatrolentry): bool
{
return $user->checkPermissionTo('update GuardPatrolEntry');
}
/**
* Determine whether the user can delete the model.
*/
public function delete(User $user, GuardPatrolEntry $guardpatrolentry): bool
{
return $user->checkPermissionTo('delete GuardPatrolEntry');
}
/**
* Determine whether the user can delete any models.
*/
public function deleteAny(User $user): bool
{
return $user->checkPermissionTo('delete-any GuardPatrolEntry');
}
/**
* Determine whether the user can restore the model.
*/
public function restore(User $user, GuardPatrolEntry $guardpatrolentry): bool
{
return $user->checkPermissionTo('restore GuardPatrolEntry');
}
/**
* Determine whether the user can restore any models.
*/
public function restoreAny(User $user): bool
{
return $user->checkPermissionTo('restore-any GuardPatrolEntry');
}
/**
* Determine whether the user can replicate the model.
*/
public function replicate(User $user, GuardPatrolEntry $guardpatrolentry): bool
{
return $user->checkPermissionTo('replicate GuardPatrolEntry');
}
/**
* Determine whether the user can reorder the models.
*/
public function reorder(User $user): bool
{
return $user->checkPermissionTo('reorder GuardPatrolEntry');
}
/**
* Determine whether the user can permanently delete the model.
*/
public function forceDelete(User $user, GuardPatrolEntry $guardpatrolentry): bool
{
return $user->checkPermissionTo('force-delete GuardPatrolEntry');
}
/**
* Determine whether the user can permanently delete any models.
*/
public function forceDeleteAny(User $user): bool
{
return $user->checkPermissionTo('force-delete-any GuardPatrolEntry');
}
}