Premier commit

This commit is contained in:
jeremy bayse
2026-02-09 11:27:21 +01:00
commit 89a369964d
114 changed files with 17837 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
<?php
namespace App\Http\Controllers;
use App\Models\Contract;
use App\Models\Document;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
class DocumentController extends Controller
{
/**
* Store a new document for a contract.
*/
public function store(Request $request, Contract $contract)
{
// Simple validation
$request->validate([
'file' => 'required|file|mimes:pdf,docx,jpg,png|max:10240', // 10MB limit
'description' => 'nullable|string|max:255',
]);
if ($request->hasFile('file')) {
$path = $request->file('file')->store('contracts/' . $contract->id, 'public');
$contract->documents()->create([
'filename' => $request->file('file')->getClientOriginalName(),
'path' => $path,
'mime_type' => $request->file('file')->getMimeType(),
'size' => $request->file('file')->getSize(),
'description' => $request->input('description'),
'uploaded_by' => auth()->id(),
]);
return back()->with('success', 'Document uploaded successfully.');
}
return back()->with('error', 'No file uploaded.');
}
/**
* Delete a document.
*/
public function destroy(Document $document)
{
// Check permission (manager or admin or uploader?)
if (!auth()->user()->isManager() && auth()->id() !== $document->uploaded_by) {
abort(403);
}
// Delete from storage
Storage::disk('public')->delete($document->path);
$document->delete();
return back()->with('success', 'Document deleted.');
}
}