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