File "ContactUsApiController.php"
Full Path: /home/clickysoft/public_html/jmapi5.clickysoft.net/app/Http/Controllers/Api/V1/Admin/ContactUsApiController.php
File size: 3.82 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace App\Http\Controllers\Api\V1\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\StoreContactQueryRequest;
use App\Http\Resources\Admin\ContactQueryResource;
use App\Mail\ContactQuerySubmitted;
use App\Models\ContactQuery;
use Illuminate\Support\Facades\Gate;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Mail;
use Symfony\Component\HttpFoundation\Response;
class ContactUsApiController extends Controller
{
public function index(Request $request)
{
abort_if(Gate::denies('contact_us_access'), Response::HTTP_FORBIDDEN, '403 Forbidden');
$queries = ContactQuery::when($request->filled('name'), function ($query) use ($request) {
$searchQuery = $request->get('name');
$query->whereRaw("name like '%" . addslashes($searchQuery) . "%' OR email like '%" . addslashes($searchQuery) . "%' OR phone like '%" . addslashes($searchQuery) . "%' OR department like '%" . addslashes($searchQuery) . "%' OR subject like '%" . addslashes($searchQuery) . "%' OR message like '%" . addslashes($searchQuery) . "%'");
})->when($request->filled('is_read'), function ($query) use ($request) {
$is_read = $request->get('is_read');
$query->where("is_read", $is_read);
})->orderBy('created_at', 'DESC')->paginate(50);
ContactQueryResource::withoutWrapping();
return ContactQueryResource::collection($queries);
}
public function store(StoreContactQueryRequest $request)
{
$contact_us = ContactQuery::create($request->all());
$contact_us = new ContactQueryResource($contact_us);
//Send email to orders@jmtrophies.com
Mail::to('orders@jmtrophies.com')->send(new ContactQuerySubmitted(['data' => $contact_us]));
return ($contact_us)
->response()
->setStatusCode(Response::HTTP_CREATED);
}
public function show(ContactQuery $contact_query)
{
abort_if(Gate::denies('contact_us_show'), Response::HTTP_FORBIDDEN, '403 Forbidden');
$contact_query->is_read = true;
$contact_query->save();
$query_count = ContactQuery::where('is_read', 0)->count();
return [
'data' => new ContactQueryResource($contact_query),
'new_queries_count' => $query_count,
];
}
public function destroy(ContactQuery $contact_query)
{
abort_if(Gate::denies('contact_us_delete'), Response::HTTP_FORBIDDEN, '403 Forbidden');
try {
$contact_query->delete();
return response()
->json(['message' => 'Contact query deleted successfully'], Response::HTTP_OK);
} catch (\Exception $e) {
Log::channel('db_errors')->info('Record Deletion Error : Contact Query -> ' . $contact_query->id);
Log::channel('db_errors')->info($e->getMessage());
return response()
->json([
'message' => "Record not deleted.",
'errors' => ["error" => ["Unable to delete contact query."]]
], Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
public function getDepartments()
{
return \response()
->json(['data' => ContactQuery::DEPARTMENTS], Response::HTTP_OK);
}
public function updateContactQueryStatus(Request $request)
{
$request->validate([
'contact_query_id' => 'sometimes|array',
]);
if (count($request->get('contact_query_id')) > 0) {
ContactQuery::whereIn('id', $request->get('contact_query_id'))->update(['is_read' => true]);
} else {
ContactQuery::where('is_read', 0)->update(['is_read' => true]);
}
return response()
->json(['message' => 'Contact query status updated successfully'], Response::HTTP_OK);
}
}