Current File : /home/getxxhzo/app.genicards.com/app/Http/Controllers/EnquiryController.php |
<?php
namespace App\Http\Controllers;
use App\Http\Requests\CreateEnquiryRequest;
use App\Jobs\SendEmailJob;
use App\Models\Enquiry;
use App\Models\Vcard;
use Exception;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use App\Mail\ContactUsMail;
use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
class EnquiryController extends AppBaseController
{
/**
* @throws Exception
*/
public function index(Request $request, $id): \Illuminate\View\View
{
return view('enquiry.index');
}
public function store(CreateEnquiryRequest $request, Vcard $vcard)
{
$input = $request->all();
$input['vcard_id'] = $vcard->id;
$input['vcard_name'] = $vcard->name;
$enquiry = Enquiry::create($input);
if (isset($input['attachment']) && !empty($input['attachment'])) {
$enquiry->addMedia($input['attachment'])->toMediaCollection(Enquiry::ATTACHMENT, config('app.media_disc'));
}
$email = empty($vcard->email) ? $vcard->user->email : $vcard->email;
if (!empty($email)) {
Mail::to($email)->send(new ContactUsMail($input, $email));
}
setLocalLang(getLocalLanguage());
return $this->sendSuccess(__('messages.placeholder.enquiry_sent'));
}
public function show($id): JsonResponse
{
$enquiry = Enquiry::with('vcard', 'media')->where('id', '=', $id)->first();
return $this->sendResponse($enquiry, 'Testimonial successfully retrieved.');
}
/**
* @return Application|Factory|View
*
* @throws Exception
*/
public function enquiryList(Request $request): \Illuminate\View\View
{
return view('enquiry.list');
}
public function destroy(Enquiry $enquiry): JsonResponse
{
$enquiry->delete();
return $this->sendSuccess('Enquiry deleted successfully.');
}
public function inquiriesAttachmentDownload($id)
{
try {
$enquiry = Enquiry::findOrFail($id);
$documentMedia = $enquiry->media[0];
$documentPath = $documentMedia->getPath();
if (config('app.media_disc') === 'public') {
$documentPath = Str::after($documentMedia->getUrl(), '/uploads');
}
$file = Storage::disk(config('app.media_disc'))->get($documentPath);
$headers = [
'Content-Type' => $documentMedia->mime_type,
'Content-Description' => 'File Transfer',
'Content-Disposition' => "attachment; filename={$documentMedia->file_name}",
'filename' => $documentMedia->file_name,
];
return response($file, 200, $headers);
} catch (Exception $e) {
throw new UnprocessableEntityHttpException($e->getMessage());
}
}
}