Add file upload function. modify paramiter FILESYSTEM_DISK=public in file .env

This commit is contained in:
paoloGuagnano
2024-02-21 17:29:21 +01:00
parent e6f3fcbb4e
commit cd9c380b58
12 changed files with 254 additions and 129 deletions

View File

@@ -12,25 +12,40 @@ use Illuminate\Support\Facades\Storage;
class FileController extends Controller
{
public function datasubmit(FileRequest $request): RedirectResponse
public function uploadFile(FileRequest $request): RedirectResponse
{
//upload file in public folder
//dd($reqest->all());
//$filename = 'new_file.'.$request->filename->extension();
//$request->filename->move(public_path('uploads'), $filename);
//dd($request->all());
//$request->validate([
// 'filename'=>'required'
//]);
$filename = 'new_file.'.$request->file("filetoinsert")->getClientOriginalExtension();
$request->file("filetoinsert")->storeAs('file_temp', $filename);
//$request->filename->storeAs('file_temp', $filename);
// Leggi il contenuto del file CSV
$contenutoCSV = Storage::get('file_temp/new_file.csv');
// Analizza il contenuto CSV
$righeCSV = str_getcsv($contenutoCSV, "\n");
// Converte le righe CSV in un array associativo
$dati = [];
foreach ($righeCSV as $riga) {
$dati[] = str_getcsv($riga);
}
// Converte l'array in formato JSON
$json = json_encode($dati);
// Stampa il JSON
echo $json;
return redirect('/words');
}
public function insertFile()
{
return view("words.partials.upload-file");
}
public function delete(): RedirectResponse
{
Storage::delete('file_temp/new_file.txt');

View File

@@ -2,7 +2,8 @@
namespace App\Http\Controllers;
use App\Http\Requests\WordRequest;
use App\Http\Requests\StoreWordRequest;
use App\Http\Requests\UpdateWordRequest;
use App\Models\Word;
use Illuminate\Http\RedirectResponse;
@@ -19,14 +20,14 @@ class WordsController extends Controller
public function index()
{
return view('words.index', [
'words' => Word::all(),
'words' => Word::latest('id')->paginate(10),
]);
}
/**
* Store a new Word in the database.
*/
public function store(WordRequest $request): RedirectResponse
public function store(StoreWordRequest $request): RedirectResponse
{
$word = new Word;
$word->name = $request->name;
@@ -46,21 +47,42 @@ class WordsController extends Controller
$name = $data->name;
$translation = $data->translation;
//return $translation;
return view("words.modify-word-form", compact('id', "name", "translation"));
return view("words.partials.modify-word-form", compact('id', "name", "translation"));
}
public function insert()
{
return view("words.partials.insert-word-form");
}
/**
* Update an existing Word in the database.
*/
public function update(WordRequest $request, $id): RedirectResponse
public function update(UpdateWordRequest $request, $id): RedirectResponse
{
$data = Word::find($id);
$data->name = $request->name;
$data->translation = $request->translation;
$data->translation = $request->input('translation');
$data->save();
// Update the unique value
$data->name = $request->input('name');
return redirect('/words');
// Check for uniqueness
$isUnique = Word::where('name', $data->name)
->where('id', '!=', $id) // Exclude the current record from the uniqueness check
->doesntExist();
if ($isUnique) {
// Save the updated record
$data->translation = $request->input('translation');
$data->save();
// Redirect to a success route or return a success message
return redirect('/words');
} else {
// Unique constraint violated
return back()->withInput()->withErrors(['name' => 'Error: words already exists']);
}
}
/**

View File

@@ -4,13 +4,13 @@ namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class WordRequest extends FormRequest
class StoreWordRequest extends FormRequest
{
public function rules(): array
{
return [
'name' => ['required'],
'translation' => ['required', 'unique:words,translation'],
'name' => 'required|string|unique:words,name',
'translation' => 'required|string',
];
}

View File

@@ -0,0 +1,37 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UpdateWordRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'name' => 'required|string',
'translation' => 'required|string',
];
}
public function messages(): array
{
return [
'name.required' => 'Insert italian Word',
'translation.required' => 'Insert dialect Word',
];
}
}