Viewing File: /home/ubuntu/vedadeals-backend-base/app/Http/Controllers/Admin/ContactRequestController.php
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Helpers\Helper;
use DB, Exception, Setting;
use App\Models\{ ContactRequest };
use App\Http\Requests\Admin\ContactRequest\{ ContactRequestGetRequest };
use App\Services\{ EmailService };
class ContactRequestController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct(Request $request)
{
$this->middleware('auth:admin');
$this->skip = $request->skip ?: 0;
$this->take = $request->take ?: (Setting::get('admin_take_count') ?: TAKE_COUNT);
}
/**
* @method contact_requests_index()
*
* @uses to list the contact_requests
*
* @created Karthick
*
* @updated
*
* @param
*
* @return to contact_requests index page
*/
public function contact_requests_index(Request $request) {
$base_query = ContactRequest::orderBy('created_at','DESC');
if($request->filled('search_key')) {
$contact_request_ids = ContactRequest::when($request->filled('status'), function ($query) use ($request) {
$query->where('status', $request->status);
})->where(function($query) use ($request) {
$query->orWhere('name', "LIKE", "%". $request->search_key . "%");
$query->orWhere('mobile', "LIKE", "%". $request->search_key . "%");
$query->orWhere('email', "LIKE", "%". $request->search_key . "%");
$query->orWhere('query', "LIKE", "%". $request->search_key . "%");
$query->orWhere('answer', "LIKE", "%". $request->search_key . "%");
})
->pluck('id');
$base_query = $base_query->whereIn('id', $contact_request_ids);
}
if($request->filled('status')) {
$base_query = $base_query->where('status', $request->status);
}
$contact_requests = $base_query->paginate($this->take);
return view('admin.contact_requests.index')
->with('page', 'contact_requests')
->with('sub_page', 'contact_requests-view')
->with(compact(['contact_requests']));
}
/**
* @method contact_requests_view()
*
* @uses to view the contact_request details based on contact_request_id
*
* @created Karthick
*
* @updated
*
* @param object $request - contact_request_id
*
* @return View page
*
*/
public function contact_requests_view(ContactRequestGetRequest $request) {
try {
$contact_request = ContactRequest::find($request->contact_request_id);
return view('admin.contact_requests.view')
->with('page', 'contact_requests')
->with('sub_page', 'contact_requests-view')
->with('contact_request',$contact_request);
} catch (Exception $e) {
return redirect()->route('admin.contact_requests.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method contact_requests_status
*
* @uses to change contact_request status as REQUEST_OPEN/REQUEST_CLOSED based on contact_request_id
*
* @created Karthick
*
* @updated
*
* @param object $request - contact_request_id
*
* @return response success/failure message
*
**/
public function contact_requests_status(ContactRequestGetRequest $request) {
try {
DB::beginTransaction();
$contact_request = ContactRequest::find($request->contact_request_id);
$result = $contact_request->update(['status' => $contact_request->status ? REQUEST_OPEN : REQUEST_CLOSED]);
if($result) {
DB::commit();
$message = $contact_request->status ? tr('contact_request_closed_success') : tr('contact_request_open_success');
return back()->with('flash_success', $message);
}
throw new Exception(tr('contact_request_status_change_failed'));
} catch(Exception $e) {
DB::rollback();
return redirect()->route('admin.contact_requests.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method contact_requests_delete()
*
* @uses to delete the contact_request details based on contact_request_id
*
* @created Karthick
*
* @updated
*
* @param object $request - contact_request_id
*
* @return response of success/failure details with view page
*
*/
public function contact_requests_delete(ContactRequestGetRequest $request) {
try {
DB::begintransaction();
$contact_request = ContactRequest::find($request->contact_request_id);
if($contact_request->delete()) {
DB::commit();
return redirect()->route('admin.contact_requests.index')->with('flash_success', tr('contact_request_deleted_success'));
}
throw new Exception(tr('contact_request_delete_failed'));
} catch(Exception $e){
DB::rollback();
return back()->with('flash_error', $e->getMessage());
}
}
/**
* @method contact_requests_send_answer
*
* @uses to send & respond to a contact request
*
* @created Karthick
*
* @updated
*
* @param object $request - contact_request_id
*
* @return response success/failure message
*
**/
public function contact_requests_send_answer(ContactRequestGetRequest $request) {
try {
$contact_request = ContactRequest::find($request->contact_request_id);
DB::begintransaction();
$result = $contact_request->update(['answer' => $request->answer, 'status' => REQUEST_CLOSED]);
if($result) {
DB::commit();
EmailService::send_contact_request_email($contact_request);
return back()->with('flash_success', tr('contact_request_send_answer_success'));
}
throw new Exception(tr('contact_request_send_answer_failed'));
} catch(Exception $e) {
DB::rollback();
return redirect()->route('admin.contact_requests.index')->with('flash_error', $e->getMessage());
}
}
}
Back to Directory
File Manager