Compare commits
25 Commits
22cbb6c4d3
...
jothi-patc
| Author | SHA1 | Date | |
|---|---|---|---|
| 9a7b42dea5 | |||
| 0ce59ebe22 | |||
|
|
053c07bcfb | ||
| c032cdc58d | |||
|
|
b09ed3481a | ||
| 4074374614 | |||
|
|
c2d840d772 | ||
| 15712c44b6 | |||
|
|
119262405c | ||
| 99f7450e5e | |||
|
|
84748c5e3d | ||
| f6f6f0924e | |||
|
|
4ec781b942 | ||
| 3bab0310a1 | |||
|
|
f0f7bffe74 | ||
| 6924990ace | |||
|
|
40889f8802 | ||
| ba0b2c2709 | |||
|
|
62272df783 | ||
| 51416cdf37 | |||
|
|
53d55555d8 | ||
| a8ff5b5120 | |||
|
|
8c0a404665 | ||
| 4ca965ccb1 | |||
|
|
def447e12b |
23
.github/workflows/gemini-pr-review.yaml
vendored
23
.github/workflows/gemini-pr-review.yaml
vendored
@@ -5,15 +5,20 @@ name: Gemini PR Review
|
|||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
types: [opened, reopened, synchronize]
|
types: [opened, reopened, synchronize]
|
||||||
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
review:
|
gemini-pr-review:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
name: Gemini PR Review
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0 # This fetches the full history
|
fetch-depth: 0 # This fetches the full history
|
||||||
|
|
||||||
@@ -22,7 +27,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
node-version: '24'
|
node-version: '24'
|
||||||
|
|
||||||
|
|
||||||
- name: Get npm cache directory
|
- name: Get npm cache directory
|
||||||
id: npm-cache-dir
|
id: npm-cache-dir
|
||||||
run: |
|
run: |
|
||||||
@@ -36,8 +40,14 @@ jobs:
|
|||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-npm-global-
|
${{ runner.os }}-npm-global-
|
||||||
|
|
||||||
# - name: Install Gemini CLI globally
|
- name: Install Gemini CLI globally (if not already installed)
|
||||||
# run: npm install -g --loglevel=http @google/gemini-cli
|
run: |
|
||||||
|
if ! command -v gemini &> /dev/null; then
|
||||||
|
echo "Gemini CLI not found, installing..."
|
||||||
|
npm install -g --loglevel=http @google/gemini-cli
|
||||||
|
else
|
||||||
|
echo "Gemini CLI already installed."
|
||||||
|
fi
|
||||||
|
|
||||||
- name: Generate git diff and review with Gemini
|
- name: Generate git diff and review with Gemini
|
||||||
id: review
|
id: review
|
||||||
@@ -52,7 +62,6 @@ jobs:
|
|||||||
|
|
||||||
cat /tmp/gemini-client-error*.json || true
|
cat /tmp/gemini-client-error*.json || true
|
||||||
|
|
||||||
|
|
||||||
- name: Post output to PR comment
|
- name: Post output to PR comment
|
||||||
id: post_comment
|
id: post_comment
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -209,7 +209,7 @@ class Scheduler extends Command
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'Daily':
|
case 'Daily':
|
||||||
if (now()->format('H:i') == '08:00') {
|
if (now()->format('H:i') == '10:00') {
|
||||||
\Artisan::call('send:invoice-transit-report', [
|
\Artisan::call('send:invoice-transit-report', [
|
||||||
'schedule_type' => $rule->schedule_type,
|
'schedule_type' => $rule->schedule_type,
|
||||||
'plant' => $rule->plant,
|
'plant' => $rule->plant,
|
||||||
@@ -220,7 +220,6 @@ class Scheduler extends Command
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper to call Artisan commands with parameters.
|
* Helper to call Artisan commands with parameters.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -67,14 +67,21 @@ class SendInvoiceTransitReport extends Command
|
|||||||
'im.id as invoice_master_id',
|
'im.id as invoice_master_id',
|
||||||
'im.transport_name',
|
'im.transport_name',
|
||||||
DB::raw('CAST(im.transit_days AS INTEGER) as transit_days'),
|
DB::raw('CAST(im.transit_days AS INTEGER) as transit_days'),
|
||||||
DB::raw('(CURRENT_DATE - CAST(it.lr_bl_aw_date AS DATE)) as delayed_days')
|
// DB::raw('(CURRENT_DATE - CAST(it.lr_bl_aw_date AS DATE)) as delayed_days')
|
||||||
|
DB::raw('
|
||||||
|
GREATEST(
|
||||||
|
0,
|
||||||
|
(CURRENT_DATE - CAST(it.lr_bl_aw_date AS DATE) - 1)
|
||||||
|
- CAST(im.transit_days AS INTEGER)
|
||||||
|
) AS delayed_days
|
||||||
|
')
|
||||||
)
|
)
|
||||||
->when($plantId != 0, fn($q) => $q->where('it.plant_id', $plantId))
|
->when($plantId != 0, fn($q) => $q->where('it.plant_id', $plantId))
|
||||||
->whereNotNull('it.lr_bl_aw_date')
|
->whereNotNull('it.lr_bl_aw_date')
|
||||||
// ->whereRaw(
|
->whereRaw('
|
||||||
// '(CURRENT_DATE - CAST(it.lr_bl_aw_date AS DATE)) >= CAST(im.transit_days AS INTEGER)'
|
(CURRENT_DATE - CAST(it.lr_bl_aw_date AS DATE))
|
||||||
// )
|
- CAST(im.transit_days AS INTEGER) > 0
|
||||||
->whereRaw('(CURRENT_DATE - CAST(it.lr_bl_aw_date AS DATE) + 1) >= CAST(im.transit_days AS INTEGER)')
|
')
|
||||||
->get();
|
->get();
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -454,6 +454,22 @@ class InvoiceInTransitResource extends Resource
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$mandatoryColumns = 23;
|
||||||
|
|
||||||
|
$firstRow = $rows[0] ?? [];
|
||||||
|
|
||||||
|
if (count($firstRow) < $mandatoryColumns) {
|
||||||
|
|
||||||
|
Notification::make()
|
||||||
|
->title('Invalid Excel Format')
|
||||||
|
->body('Few columns not found. Columns A to W are mandatory.')
|
||||||
|
->danger()
|
||||||
|
->persistent()
|
||||||
|
->send();
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($rows as $index => $row)
|
foreach ($rows as $index => $row)
|
||||||
{
|
{
|
||||||
if ($index == 0) {
|
if ($index == 0) {
|
||||||
|
|||||||
252
app/Filament/Resources/TestingTempResource.php
Normal file
252
app/Filament/Resources/TestingTempResource.php
Normal file
@@ -0,0 +1,252 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Filament\Resources;
|
||||||
|
|
||||||
|
use App\Filament\Resources\TestingTempResource\Pages;
|
||||||
|
use App\Filament\Resources\TestingTempResource\RelationManagers;
|
||||||
|
use App\Models\TestingTemp;
|
||||||
|
use Filament\Facades\Filament;
|
||||||
|
use Filament\Forms;
|
||||||
|
use Filament\Forms\Form;
|
||||||
|
use Filament\Resources\Resource;
|
||||||
|
use Filament\Tables;
|
||||||
|
use Filament\Tables\Table;
|
||||||
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
|
use Illuminate\Database\Eloquent\SoftDeletingScope;
|
||||||
|
use Filament\Forms\Components\Actions\Action;
|
||||||
|
use Filament\Notifications\Notification;
|
||||||
|
use Storage;
|
||||||
|
use Livewire\Features\SupportFileUploads\TemporaryUploadedFile;
|
||||||
|
|
||||||
|
class TestingTempResource extends Resource
|
||||||
|
{
|
||||||
|
protected static ?string $model = TestingTemp::class;
|
||||||
|
|
||||||
|
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
|
||||||
|
|
||||||
|
public static function form(Form $form): Form
|
||||||
|
{
|
||||||
|
return $form
|
||||||
|
->schema([
|
||||||
|
Forms\Components\TextInput::make('name')
|
||||||
|
->label('File Name'),
|
||||||
|
Forms\Components\Select::make('selected_file')
|
||||||
|
->label('Select Uploaded File')
|
||||||
|
->options(function () {
|
||||||
|
return collect(Storage::disk('local')->files('uploads'))
|
||||||
|
->mapWithKeys(function ($file) {
|
||||||
|
return [
|
||||||
|
$file => basename($file), // value => label
|
||||||
|
];
|
||||||
|
})
|
||||||
|
->toArray();
|
||||||
|
})
|
||||||
|
->searchable()
|
||||||
|
->reactive(),
|
||||||
|
Forms\Components\FileUpload::make('attachment')
|
||||||
|
->label('Upload')
|
||||||
|
// ->acceptedFileTypes(['application/pdf'])
|
||||||
|
->storeFiles(false)
|
||||||
|
->disk('local')
|
||||||
|
->directory('uploads/temp')
|
||||||
|
->preserveFilenames()
|
||||||
|
->reactive(),
|
||||||
|
Forms\Components\Actions::make([
|
||||||
|
Action::make('uploadNow')
|
||||||
|
->label('File Upload')
|
||||||
|
->color('success')
|
||||||
|
->action(function ($get) {
|
||||||
|
|
||||||
|
$uploadedFiles = $get('attachment');
|
||||||
|
|
||||||
|
if (is_array($uploadedFiles) && count($uploadedFiles) > 0) {
|
||||||
|
|
||||||
|
$uploaded = reset($uploadedFiles);
|
||||||
|
|
||||||
|
if ($uploaded instanceof TemporaryUploadedFile) {
|
||||||
|
|
||||||
|
$baseName = $get('name');
|
||||||
|
$extension = $uploaded->getClientOriginalExtension();
|
||||||
|
|
||||||
|
$finalFileName = $baseName . '.' . $extension;
|
||||||
|
|
||||||
|
$uploaded->storeAs(
|
||||||
|
'uploads',
|
||||||
|
$finalFileName,
|
||||||
|
'local'
|
||||||
|
);
|
||||||
|
|
||||||
|
Notification::make()
|
||||||
|
->title("File uploaded successfully: {$finalFileName}")
|
||||||
|
->success()
|
||||||
|
->send();
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
Notification::make()
|
||||||
|
->title('No file selected to upload')
|
||||||
|
->warning()
|
||||||
|
->send();
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
|
||||||
|
// Action::make('downloadAttachment')
|
||||||
|
// ->label('Download File')
|
||||||
|
// ->action(function ($get) {
|
||||||
|
|
||||||
|
// $fileName = basename($get('selected_file'));
|
||||||
|
|
||||||
|
// //dd($fileName);
|
||||||
|
|
||||||
|
// // if (!$fileName) {
|
||||||
|
// // Notification::make()
|
||||||
|
// // ->title('Enter file name to download')
|
||||||
|
// // ->danger()
|
||||||
|
// // ->send();
|
||||||
|
// // return;
|
||||||
|
// // }
|
||||||
|
|
||||||
|
// $files = Storage::disk('local')->files('uploads');
|
||||||
|
|
||||||
|
// foreach ($files as $file) {
|
||||||
|
|
||||||
|
// if (pathinfo($file, PATHINFO_FILENAME) === $fileName) {
|
||||||
|
// dd($fileName);
|
||||||
|
// Notification::make()
|
||||||
|
// ->title("File downloaded successfully")
|
||||||
|
// ->success()
|
||||||
|
// ->send();
|
||||||
|
|
||||||
|
// return response()->download(
|
||||||
|
// Storage::disk('local')->path($file)
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
// // Notification::make()
|
||||||
|
// // ->title('File not found')
|
||||||
|
// // ->danger()
|
||||||
|
// // ->send();
|
||||||
|
// }),
|
||||||
|
Action::make('downloadAttachment')
|
||||||
|
->label('Download File')
|
||||||
|
->action(function ($get) {
|
||||||
|
|
||||||
|
$filePath = $get('selected_file'); // uploads/filename.pdf
|
||||||
|
|
||||||
|
if (!$filePath || !Storage::disk('local')->exists($filePath)) {
|
||||||
|
Notification::make()
|
||||||
|
->title('File not found')
|
||||||
|
->danger()
|
||||||
|
->send();
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Notification::make()
|
||||||
|
->title('File downloaded successfully')
|
||||||
|
->success()
|
||||||
|
->send();
|
||||||
|
|
||||||
|
return response()->download(
|
||||||
|
Storage::disk('local')->path($filePath)
|
||||||
|
);
|
||||||
|
}),
|
||||||
|
|
||||||
|
Action::make('deleteAttachment')
|
||||||
|
->label('Delete File')
|
||||||
|
->color('danger')
|
||||||
|
->requiresConfirmation()
|
||||||
|
->action(function ($get) {
|
||||||
|
|
||||||
|
$filePath = $get('selected_file'); // uploads/filename.pdf
|
||||||
|
|
||||||
|
if (!$filePath || !Storage::disk('local')->exists($filePath)) {
|
||||||
|
Notification::make()
|
||||||
|
->title('File not found')
|
||||||
|
->danger()
|
||||||
|
->send();
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Storage::disk('local')->delete($filePath);
|
||||||
|
|
||||||
|
Notification::make()
|
||||||
|
->title('File deleted successfully')
|
||||||
|
->success()
|
||||||
|
->send();
|
||||||
|
}),
|
||||||
|
|
||||||
|
]),
|
||||||
|
Forms\Components\Hidden::make('created_by')
|
||||||
|
->label('Created By')
|
||||||
|
->default(Filament::auth()->user()?->name),
|
||||||
|
Forms\Components\Hidden::make('updated_by')
|
||||||
|
->label('Updated By')
|
||||||
|
->default(Filament::auth()->user()?->name),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function table(Table $table): Table
|
||||||
|
{
|
||||||
|
return $table
|
||||||
|
->columns([
|
||||||
|
Tables\Columns\TextColumn::make('id')
|
||||||
|
->label('ID')
|
||||||
|
->numeric()
|
||||||
|
->sortable(),
|
||||||
|
Tables\Columns\TextColumn::make('created_at')
|
||||||
|
->dateTime()
|
||||||
|
->sortable()
|
||||||
|
->toggleable(isToggledHiddenByDefault: true),
|
||||||
|
Tables\Columns\TextColumn::make('updated_at')
|
||||||
|
->dateTime()
|
||||||
|
->sortable()
|
||||||
|
->toggleable(isToggledHiddenByDefault: true),
|
||||||
|
Tables\Columns\TextColumn::make('deleted_at')
|
||||||
|
->dateTime()
|
||||||
|
->sortable()
|
||||||
|
->toggleable(isToggledHiddenByDefault: true),
|
||||||
|
])
|
||||||
|
->filters([
|
||||||
|
Tables\Filters\TrashedFilter::make(),
|
||||||
|
])
|
||||||
|
->actions([
|
||||||
|
Tables\Actions\ViewAction::make(),
|
||||||
|
Tables\Actions\EditAction::make(),
|
||||||
|
])
|
||||||
|
->bulkActions([
|
||||||
|
Tables\Actions\BulkActionGroup::make([
|
||||||
|
Tables\Actions\DeleteBulkAction::make(),
|
||||||
|
Tables\Actions\ForceDeleteBulkAction::make(),
|
||||||
|
Tables\Actions\RestoreBulkAction::make(),
|
||||||
|
]),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getRelations(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
//
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getPages(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'index' => Pages\ListTestingTemps::route('/'),
|
||||||
|
'create' => Pages\CreateTestingTemp::route('/create'),
|
||||||
|
'view' => Pages\ViewTestingTemp::route('/{record}'),
|
||||||
|
'edit' => Pages\EditTestingTemp::route('/{record}/edit'),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getEloquentQuery(): Builder
|
||||||
|
{
|
||||||
|
return parent::getEloquentQuery()
|
||||||
|
->withoutGlobalScopes([
|
||||||
|
SoftDeletingScope::class,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Filament\Resources\TestingTempResource\Pages;
|
||||||
|
|
||||||
|
use App\Filament\Resources\TestingTempResource;
|
||||||
|
use Filament\Actions;
|
||||||
|
use Filament\Resources\Pages\CreateRecord;
|
||||||
|
|
||||||
|
class CreateTestingTemp extends CreateRecord
|
||||||
|
{
|
||||||
|
protected static string $resource = TestingTempResource::class;
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Filament\Resources\TestingTempResource\Pages;
|
||||||
|
|
||||||
|
use App\Filament\Resources\TestingTempResource;
|
||||||
|
use Filament\Actions;
|
||||||
|
use Filament\Resources\Pages\EditRecord;
|
||||||
|
|
||||||
|
class EditTestingTemp extends EditRecord
|
||||||
|
{
|
||||||
|
protected static string $resource = TestingTempResource::class;
|
||||||
|
|
||||||
|
protected function getHeaderActions(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
Actions\ViewAction::make(),
|
||||||
|
Actions\DeleteAction::make(),
|
||||||
|
Actions\ForceDeleteAction::make(),
|
||||||
|
Actions\RestoreAction::make(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Filament\Resources\TestingTempResource\Pages;
|
||||||
|
|
||||||
|
use App\Filament\Resources\TestingTempResource;
|
||||||
|
use Filament\Actions;
|
||||||
|
use Filament\Resources\Pages\ListRecords;
|
||||||
|
|
||||||
|
class ListTestingTemps extends ListRecords
|
||||||
|
{
|
||||||
|
protected static string $resource = TestingTempResource::class;
|
||||||
|
|
||||||
|
protected function getHeaderActions(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
Actions\CreateAction::make(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Filament\Resources\TestingTempResource\Pages;
|
||||||
|
|
||||||
|
use App\Filament\Resources\TestingTempResource;
|
||||||
|
use Filament\Actions;
|
||||||
|
use Filament\Resources\Pages\ViewRecord;
|
||||||
|
|
||||||
|
class ViewTestingTemp extends ViewRecord
|
||||||
|
{
|
||||||
|
protected static string $resource = TestingTempResource::class;
|
||||||
|
|
||||||
|
protected function getHeaderActions(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
Actions\EditAction::make(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
20
app/Models/TestingTemp.php
Normal file
20
app/Models/TestingTemp.php
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
|
|
||||||
|
class TestingTemp extends Model
|
||||||
|
{
|
||||||
|
use SoftDeletes;
|
||||||
|
|
||||||
|
protected $fillable = [
|
||||||
|
'name',
|
||||||
|
'created_at',
|
||||||
|
'updated_at',
|
||||||
|
'created_by',
|
||||||
|
'updated_by',
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
||||||
106
app/Policies/TestingTempPolicy.php
Normal file
106
app/Policies/TestingTempPolicy.php
Normal file
@@ -0,0 +1,106 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Policies;
|
||||||
|
|
||||||
|
use Illuminate\Auth\Access\Response;
|
||||||
|
use App\Models\TestingTemp;
|
||||||
|
use App\Models\User;
|
||||||
|
|
||||||
|
class TestingTempPolicy
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine whether the user can view any models.
|
||||||
|
*/
|
||||||
|
public function viewAny(User $user): bool
|
||||||
|
{
|
||||||
|
return $user->checkPermissionTo('view-any TestingTemp');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine whether the user can view the model.
|
||||||
|
*/
|
||||||
|
public function view(User $user, TestingTemp $testingtemp): bool
|
||||||
|
{
|
||||||
|
return $user->checkPermissionTo('view TestingTemp');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine whether the user can create models.
|
||||||
|
*/
|
||||||
|
public function create(User $user): bool
|
||||||
|
{
|
||||||
|
return $user->checkPermissionTo('create TestingTemp');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine whether the user can update the model.
|
||||||
|
*/
|
||||||
|
public function update(User $user, TestingTemp $testingtemp): bool
|
||||||
|
{
|
||||||
|
return $user->checkPermissionTo('update TestingTemp');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine whether the user can delete the model.
|
||||||
|
*/
|
||||||
|
public function delete(User $user, TestingTemp $testingtemp): bool
|
||||||
|
{
|
||||||
|
return $user->checkPermissionTo('delete TestingTemp');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine whether the user can delete any models.
|
||||||
|
*/
|
||||||
|
public function deleteAny(User $user): bool
|
||||||
|
{
|
||||||
|
return $user->checkPermissionTo('delete-any TestingTemp');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine whether the user can restore the model.
|
||||||
|
*/
|
||||||
|
public function restore(User $user, TestingTemp $testingtemp): bool
|
||||||
|
{
|
||||||
|
return $user->checkPermissionTo('restore TestingTemp');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine whether the user can restore any models.
|
||||||
|
*/
|
||||||
|
public function restoreAny(User $user): bool
|
||||||
|
{
|
||||||
|
return $user->checkPermissionTo('restore-any TestingTemp');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine whether the user can replicate the model.
|
||||||
|
*/
|
||||||
|
public function replicate(User $user, TestingTemp $testingtemp): bool
|
||||||
|
{
|
||||||
|
return $user->checkPermissionTo('replicate TestingTemp');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine whether the user can reorder the models.
|
||||||
|
*/
|
||||||
|
public function reorder(User $user): bool
|
||||||
|
{
|
||||||
|
return $user->checkPermissionTo('reorder TestingTemp');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine whether the user can permanently delete the model.
|
||||||
|
*/
|
||||||
|
public function forceDelete(User $user, TestingTemp $testingtemp): bool
|
||||||
|
{
|
||||||
|
return $user->checkPermissionTo('force-delete TestingTemp');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine whether the user can permanently delete any models.
|
||||||
|
*/
|
||||||
|
public function forceDeleteAny(User $user): bool
|
||||||
|
{
|
||||||
|
return $user->checkPermissionTo('force-delete-any TestingTemp');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
$sql = <<<'SQL'
|
||||||
|
CREATE TABLE testing_temps (
|
||||||
|
id BIGINT GENERATED always AS IDENTITY PRIMARY KEY,
|
||||||
|
name TEXT DEFAULT NULL,
|
||||||
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||||
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||||
|
created_by TEXT DEFAULT NULL,
|
||||||
|
updated_by TEXT DEFAULT NULL,
|
||||||
|
deleted_at TIMESTAMP
|
||||||
|
);
|
||||||
|
SQL;
|
||||||
|
DB::statement($sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('testing_temps');
|
||||||
|
}
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user