diff --git a/app/Http/Controllers/ArcadiaLinkController.php b/app/Http/Controllers/ArcadiaLinkController.php index 353e7cb..2554e18 100644 --- a/app/Http/Controllers/ArcadiaLinkController.php +++ b/app/Http/Controllers/ArcadiaLinkController.php @@ -3,7 +3,7 @@ namespace App\Http\Controllers; use App\Models\ArcadiaLink; -use Illuminate\Support\Carbon; +use Illuminate\Contracts\Database\Eloquent\Builder; class ArcadiaLinkController extends Controller { @@ -17,9 +17,14 @@ class ArcadiaLinkController extends Controller /** @var \App\Models\User */ $user = auth()->user(); $user->authorizeRoles(config('roles.const.ADMIN')); - $dt = Carbon::now('Europe/Paris')->subMinutes(15)->toDateTimeString(); - $ano = ArcadiaLink::where('created_at', '<', $dt)->orderBy('id', 'DESC')->get(); - return view('arcadialinks.index', ['ano' => $ano]); + + // * ArcadiaLink->Media is nullable + $arcadiaLinkList = ArcadiaLink::query() + ->with('media', fn (Builder $q) => $q->withTrashed()) + ->where('created_at', '<', now()->subMinutes(15)) + ->orderBy('id', 'DESC')->get(); + + return view('arcadialinks.index', compact('arcadiaLinkList')); } /** diff --git a/app/Models/ArcadiaLink.php b/app/Models/ArcadiaLink.php index 46f6230..423c4ca 100644 --- a/app/Models/ArcadiaLink.php +++ b/app/Models/ArcadiaLink.php @@ -5,6 +5,13 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; use Carbon\Carbon; +/** + * @property integer $arcadia_id The ID on Arcadia side, Defaults to 0 (not linked). + * @property string $filename + * + * @property-read \App\Models\Media $media Media BelongsTo relationship. + * @package App\Models + */ class ArcadiaLink extends Model { // * GETTERS diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 9867adc..6fab38f 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -42,11 +42,13 @@ class RouteServiceProvider extends ServiceProvider }); Route::bind('media', function ($value) { - return Media::whereUid($value)->firstOrFail(); + return Media::query() + ->where('uid', $value) + ->firstOrFail(); }); Route::bind('basket_uuid', function ($value) { return Panier::where('uid', $value) - ->with('owner')->firstOrFail(); + ->with('owner')->firstOrFail(); }); // * API diff --git a/database/migrations/2023_12_15_103629_set_foreign_on_arcadia_links.php b/database/migrations/2023_12_15_103629_set_foreign_on_arcadia_links.php new file mode 100644 index 0000000..f24ad92 --- /dev/null +++ b/database/migrations/2023_12_15_103629_set_foreign_on_arcadia_links.php @@ -0,0 +1,48 @@ +pluck('media_id'); + $existingMediaIdList = DB::table('media')->whereIn('id', $linkedMediaIdList)->pluck('id'); + $linkIdListToRemove = $linkedMediaIdList->filter(fn (int $media_id) => + !$existingMediaIdList->contains($media_id)); + + // * Remove Orphan links + DB::transaction(fn () => DB::table('arcadia_links')->whereIn('media_id', $linkIdListToRemove)->delete()); + + // * Add foreign Key + Schema::table('arcadia_links', function (Blueprint $table) { + $table->unsignedBigInteger('media_id')->nullable(false)->default(null)->change(); + }); + Schema::table('arcadia_links', function (Blueprint $table) { + $table->foreign('media_id')->references('id')->on('media'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('arcadia_links', function (Blueprint $table) { + $table->dropForeign(['media_id']); + }); + Schema::table('arcadia_links', function (Blueprint $table) { + $table->bigInteger('media_id')->default(0)->change(); + }); + } +}; diff --git a/resources/views/arcadialinks/index.blade.php b/resources/views/arcadialinks/index.blade.php index 81e9964..22457d2 100644 --- a/resources/views/arcadialinks/index.blade.php +++ b/resources/views/arcadialinks/index.blade.php @@ -1,36 +1,48 @@ @extends('layouts.app') + @include('layouts.header') + @section('content')
@include('modules.param-sideMenu')
-

Anomalies du lien Arcadia

+

{{ __('Anomalies du lien Arcadia') }}

- - +
+ - - - - - + + + + + - - @foreach ($ano as $line) - - - - - - - - - - @endforeach -
IDMedia ID (DAM ID)Arcadia IDFilenameDate création ZIP{{ __('ID') }}{{ __('Media ID (DAM ID)') }}{{ __('Arcadia ID') }}{{ __('Filename') }}{{ __('Date création ZIP') }}
{{$line->id}}{{$line->media_id}}{{$line->arcadia_id}}{{$line->filename}}{{$line->date_f}}Ouvrir la fiche média
+ + @foreach ($arcadiaLinkList as $arcadiaLink) + + {{ $arcadiaLink->id }} + {{ $arcadiaLink->media->id }} + {{ $arcadiaLink->arcadia_id }} + {{ $arcadiaLink->filename }} + {{ $arcadiaLink->date_f }} + + + {{ __('Ouvrir la fiche média') }} + + + + + + + + + @endforeach +
@endsection