File: /home/armgroup/libs/app/Http/Controllers/Frontend/ContactController.php
<?php
namespace App\Http\Controllers\Frontend;
use App\Http\Controllers\Controller;
use App\Models\Contact;
use App\Rules\Mobile;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class ContactController extends Controller
{
public function store(Request $request)
{
$data = $request->validate([
'name' => 'required|string|max:250',
'email' => 'nullable|email|max:250',
'mobile' => ['required', new Mobile],
'message' => 'required|string|min:5|max:60000',
'file' => 'nullable|max:1024|mimes:png,jpg,jpeg,mp4,pdf',
'category_id' => 'sometimes|required|exists:categories,id',
]);
DB::transaction(function () use ($request, $data) {
if ($request->file) {
$data['file'] = 'storage/'.$request->file->store('contacts', 'public');
}
$contact = Contact::create($data);
if ($request->has('category_id')) {
$contact->categories()->attach($request->category_id);
}
});
$this->doneMessage('Saved Successfully');
return back();
}
}