diff --git a/app/Http/Controllers/FileController.php b/app/Http/Controllers/FileController.php index 49b37ce..b15f114 100644 --- a/app/Http/Controllers/FileController.php +++ b/app/Http/Controllers/FileController.php @@ -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'); diff --git a/app/Http/Controllers/WordsController.php b/app/Http/Controllers/WordsController.php index 48ed6f7..30acd1f 100644 --- a/app/Http/Controllers/WordsController.php +++ b/app/Http/Controllers/WordsController.php @@ -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']); + } } /** diff --git a/app/Http/Requests/WordRequest.php b/app/Http/Requests/StoreWordRequest.php similarity index 74% rename from app/Http/Requests/WordRequest.php rename to app/Http/Requests/StoreWordRequest.php index de4c6c0..4e8f1dd 100644 --- a/app/Http/Requests/WordRequest.php +++ b/app/Http/Requests/StoreWordRequest.php @@ -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', ]; } diff --git a/app/Http/Requests/UpdateWordRequest.php b/app/Http/Requests/UpdateWordRequest.php new file mode 100644 index 0000000..005d545 --- /dev/null +++ b/app/Http/Requests/UpdateWordRequest.php @@ -0,0 +1,37 @@ +|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', + ]; + } +} diff --git a/app/Models/Word.php b/app/Models/Word.php index 43589b6..40eba63 100644 --- a/app/Models/Word.php +++ b/app/Models/Word.php @@ -11,5 +11,6 @@ use Illuminate\Database\Eloquent\Model; class Word extends Model { use HasFactory; + protected $fillable = ['name', 'translation']; } diff --git a/resources/views/components/table-words.blade.php b/resources/views/components/table-words.blade.php new file mode 100644 index 0000000..b470e53 --- /dev/null +++ b/resources/views/components/table-words.blade.php @@ -0,0 +1,39 @@ +@props(['items' => []]) +@props(['fields' => []]) + +
- {{ __("Enter the word Italian and its dialect translation") }} -
-- {{ __("Enter the word Italian and its dialect translation") }} -
-