Etude index working
This commit is contained in:
parent
f7c75fa1f9
commit
e9a6379438
|
|
@ -17,6 +17,7 @@ This application is a Laravel application and its main Laravel ecosystems packag
|
|||
- laravel/sail (SAIL) - v1
|
||||
- pestphp/pest (PEST) - v3
|
||||
- phpunit/phpunit (PHPUNIT) - v11
|
||||
- alpinejs (ALPINEJS) - v3
|
||||
- tailwindcss (TAILWINDCSS) - v4
|
||||
|
||||
## Conventions
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ This application is a Laravel application and its main Laravel ecosystems packag
|
|||
- laravel/sail (SAIL) - v1
|
||||
- pestphp/pest (PEST) - v3
|
||||
- phpunit/phpunit (PHPUNIT) - v11
|
||||
- alpinejs (ALPINEJS) - v3
|
||||
- tailwindcss (TAILWINDCSS) - v4
|
||||
|
||||
## Conventions
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ use App\Models\AuditionedEnsemble;
|
|||
use App\Models\AuditionEtude;
|
||||
use App\Models\Instrument;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class AuditionEtudeController extends Controller
|
||||
{
|
||||
|
|
@ -15,7 +16,9 @@ class AuditionEtudeController extends Controller
|
|||
*/
|
||||
public function index()
|
||||
{
|
||||
return view('admin.audition_etude.index');
|
||||
$etudes = AuditionEtude::paginate(10);
|
||||
|
||||
return view('admin.audition_etude.index', compact('etudes'));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -37,7 +40,12 @@ class AuditionEtudeController extends Controller
|
|||
*/
|
||||
public function store(EtudeUploadRequest $request)
|
||||
{
|
||||
$path = $request->file('file_upload')->store('etudes', 'public');
|
||||
$instrument = Instrument::find($request->instrument_id);
|
||||
$ensemble = AuditionedEnsemble::find($request->auditioned_ensemble_id);
|
||||
$filename = $ensemble->name.' '.$instrument->instrument.' Set '.$request->set.'.pdf';
|
||||
$filename = str_replace(' ', '_', $filename);
|
||||
|
||||
$path = $request->file('file_upload')->storeAs('etudes', $filename, 'public');
|
||||
$originalFilename = $request->file('file_upload')->getClientOriginalName();
|
||||
$fileSize = $request->file('file_upload')->getSize();
|
||||
|
||||
|
|
@ -80,8 +88,11 @@ class AuditionEtudeController extends Controller
|
|||
/**
|
||||
* Remove the specified resource from storage.
|
||||
*/
|
||||
public function destroy(AuditionEtude $auditionEtude)
|
||||
public function destroy(AuditionEtude $etude)
|
||||
{
|
||||
//
|
||||
Storage::disk('public')->delete('/'.$etude->file_path);
|
||||
$etude->delete();
|
||||
|
||||
return redirect()->route('admin.etudes.index')->with('success', 'Etude deleted successfully.');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Casts\Attribute;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
|
||||
|
|
@ -20,4 +21,24 @@ class AuditionEtude extends Model
|
|||
{
|
||||
return $this->belongsTo(AuditionedEnsemble::class);
|
||||
}
|
||||
|
||||
protected function humanReadableFileSize(): Attribute
|
||||
{
|
||||
return Attribute::make(
|
||||
get: function () {
|
||||
$bytes = $this->file_size;
|
||||
if ($bytes === null) {
|
||||
return 'N/A';
|
||||
}
|
||||
|
||||
$units = ['B', 'KB', 'MB', 'GB', 'TB'];
|
||||
$bytes = max($bytes, 0);
|
||||
$pow = floor(($bytes ? log($bytes) : 0) / log(1024));
|
||||
$pow = min($pow, count($units) - 1);
|
||||
$bytes /= pow(1024, $pow);
|
||||
|
||||
return round($bytes, 2).' '.$units[$pow];
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
"license": "MIT",
|
||||
"require": {
|
||||
"php": "^8.2",
|
||||
"blade-ui-kit/blade-heroicons": "^2.6",
|
||||
"laravel/fortify": "^1.32",
|
||||
"laravel/framework": "^12.0",
|
||||
"laravel/prompts": "^0.3.8",
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "bd377529b45b2db07fbfd360dccb505c",
|
||||
"content-hash": "5157014187d3ae76a3586965840ec1f0",
|
||||
"packages": [
|
||||
{
|
||||
"name": "bacon/bacon-qr-code",
|
||||
|
|
@ -61,6 +61,156 @@
|
|||
},
|
||||
"time": "2025-11-19T17:15:36+00:00"
|
||||
},
|
||||
{
|
||||
"name": "blade-ui-kit/blade-heroicons",
|
||||
"version": "2.6.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/driesvints/blade-heroicons.git",
|
||||
"reference": "4553b2a1f6c76f0ac7f3bc0de4c0cfa06a097d19"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/driesvints/blade-heroicons/zipball/4553b2a1f6c76f0ac7f3bc0de4c0cfa06a097d19",
|
||||
"reference": "4553b2a1f6c76f0ac7f3bc0de4c0cfa06a097d19",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"blade-ui-kit/blade-icons": "^1.6",
|
||||
"illuminate/support": "^9.0|^10.0|^11.0|^12.0",
|
||||
"php": "^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"orchestra/testbench": "^7.0|^8.0|^9.0|^10.0",
|
||||
"phpunit/phpunit": "^9.0|^10.5|^11.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"laravel": {
|
||||
"providers": [
|
||||
"BladeUI\\Heroicons\\BladeHeroiconsServiceProvider"
|
||||
]
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"BladeUI\\Heroicons\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Dries Vints",
|
||||
"homepage": "https://driesvints.com"
|
||||
}
|
||||
],
|
||||
"description": "A package to easily make use of Heroicons in your Laravel Blade views.",
|
||||
"homepage": "https://github.com/blade-ui-kit/blade-heroicons",
|
||||
"keywords": [
|
||||
"Heroicons",
|
||||
"blade",
|
||||
"laravel"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/driesvints/blade-heroicons/issues",
|
||||
"source": "https://github.com/driesvints/blade-heroicons/tree/2.6.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/sponsors/driesvints",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://www.paypal.com/paypalme/driesvints",
|
||||
"type": "paypal"
|
||||
}
|
||||
],
|
||||
"time": "2025-02-13T20:53:33+00:00"
|
||||
},
|
||||
{
|
||||
"name": "blade-ui-kit/blade-icons",
|
||||
"version": "1.8.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/driesvints/blade-icons.git",
|
||||
"reference": "7b743f27476acb2ed04cb518213d78abe096e814"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/driesvints/blade-icons/zipball/7b743f27476acb2ed04cb518213d78abe096e814",
|
||||
"reference": "7b743f27476acb2ed04cb518213d78abe096e814",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"illuminate/contracts": "^8.0|^9.0|^10.0|^11.0|^12.0",
|
||||
"illuminate/filesystem": "^8.0|^9.0|^10.0|^11.0|^12.0",
|
||||
"illuminate/support": "^8.0|^9.0|^10.0|^11.0|^12.0",
|
||||
"illuminate/view": "^8.0|^9.0|^10.0|^11.0|^12.0",
|
||||
"php": "^7.4|^8.0",
|
||||
"symfony/console": "^5.3|^6.0|^7.0",
|
||||
"symfony/finder": "^5.3|^6.0|^7.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"mockery/mockery": "^1.5.1",
|
||||
"orchestra/testbench": "^6.0|^7.0|^8.0|^9.0|^10.0",
|
||||
"phpunit/phpunit": "^9.0|^10.5|^11.0"
|
||||
},
|
||||
"bin": [
|
||||
"bin/blade-icons-generate"
|
||||
],
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"laravel": {
|
||||
"providers": [
|
||||
"BladeUI\\Icons\\BladeIconsServiceProvider"
|
||||
]
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/helpers.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"BladeUI\\Icons\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Dries Vints",
|
||||
"homepage": "https://driesvints.com"
|
||||
}
|
||||
],
|
||||
"description": "A package to easily make use of icons in your Laravel Blade views.",
|
||||
"homepage": "https://github.com/blade-ui-kit/blade-icons",
|
||||
"keywords": [
|
||||
"blade",
|
||||
"icons",
|
||||
"laravel",
|
||||
"svg"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/blade-ui-kit/blade-icons/issues",
|
||||
"source": "https://github.com/blade-ui-kit/blade-icons"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/sponsors/driesvints",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://www.paypal.com/paypalme/driesvints",
|
||||
"type": "paypal"
|
||||
}
|
||||
],
|
||||
"time": "2025-02-13T20:35:06+00:00"
|
||||
},
|
||||
{
|
||||
"name": "brick/math",
|
||||
"version": "0.14.1",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,43 @@
|
|||
<x-layout.admin>
|
||||
<x-form.button href="{{ route('admin.etudes.create') }}" type="link">Add Etude</x-form.button>
|
||||
<p>Audition Etude Index</p>
|
||||
<x-card class="mt-3">
|
||||
<x-slot:header class="bg-brand-600!">Etudes</x-slot:header>
|
||||
<x-slot:body class="bg-white border border-brand-600">
|
||||
<x-table>
|
||||
<x-slot:header>
|
||||
<x-table.th>Ensemble</x-table.th>
|
||||
<x-table.th>Set</x-table.th>
|
||||
<x-table.th>Instrument</x-table.th>
|
||||
<x-table.th>Link</x-table.th>
|
||||
<x-table.th>Original Filename</x-table.th>
|
||||
<x-table.th>Size</x-table.th>
|
||||
<x-table.th></x-table.th>
|
||||
</x-slot:header>
|
||||
@foreach($etudes as $etude)
|
||||
<tr>
|
||||
<x-table.td>{{ $etude->auditionedEnsemble->name }}</x-table.td>
|
||||
<x-table.td>{{ $etude->set }}</x-table.td>
|
||||
<x-table.td>{{ $etude->instrument->instrument }}</x-table.td>
|
||||
<x-table.td>
|
||||
<a href="/{{ $etude->file_path }}" target="_new">
|
||||
<x-heroicon-o-arrow-down-tray class="w-5"/>
|
||||
</a>
|
||||
</x-table.td>
|
||||
<x-table.td>{{ $etude->original_filename }}</x-table.td>
|
||||
<x-table.td>{{ $etude->human_readable_file_size }}</x-table.td>
|
||||
<x-table.td>
|
||||
<x-form method="DELETE" action="{{ route('admin.etudes.destroy', $etude) }}">
|
||||
<button type="submit">
|
||||
<x-heroicon-o-trash class="w-5"/>
|
||||
</button>
|
||||
</x-form>
|
||||
</x-table.td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</x-table>
|
||||
<div class="mt-3 px-4">
|
||||
{{ $etudes->links() }}
|
||||
</div>
|
||||
</x-slot:body>
|
||||
</x-card>
|
||||
</x-layout.admin>
|
||||
|
|
|
|||
Loading…
Reference in New Issue