HEX
Server: Apache/2.4.41 (Amazon) OpenSSL/1.0.2k-fips PHP/5.6.40
System: Linux ip-172-31-40-18 4.14.146-93.123.amzn1.x86_64 #1 SMP Tue Sep 24 00:45:23 UTC 2019 x86_64
User: apache (48)
PHP: 5.6.40
Disabled: NONE
Upload Files
File: /var/www/html/punjabcabs/Original_Backup/app/Http/Controllers/Resource/ProviderDocumentResource.php
<?php

namespace App\Http\Controllers\Resource;

use Illuminate\Http\Request;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use App\Http\Controllers\Controller;
use App\Http\Controllers\SendPushNotification;
use Carbon\Carbon;
use App\Helpers\Helper;

use App\Provider;
use App\ServiceType;
use App\ProviderService;
use App\ProviderDocument;
use App\Fleet;
use App\Document;
class ProviderDocumentResource extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request, $provider)
    {
        try {
            $Provider = Provider::findOrFail($provider);
            $ProviderService = ProviderService::where('provider_id',$provider)->with('service_type', 'fleet')->first();
            $Fleet = Fleet::all();
            $ServiceTypes = ServiceType::all();
            $documents = Document::orderBy('created_at' , 'desc')->get();
            return view('admin.providers.document.index', compact('Provider', 'ServiceTypes','ProviderService','Fleet','documents'));
        } catch (ModelNotFoundException $e) {
            return redirect()->route('admin.index');
        }
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request, $provider)
    {
        $this->validate($request, [
                'service_type' => 'required|exists:service_types,id',
                'taxi_type' => 'required',
                'service_number' => 'required',
                'service_model' => 'required',
                'license_number' => 'required',
                'license_expire' => 'required',
                'insurance_number' => 'required',
                'insurance_expire' => 'required',
                'certificate_number' => 'required',
                'certificate_expire' => 'required',
            ]);
        

        try {
            
            $ProviderService = ProviderService::where('provider_id', $provider)->firstOrFail();
            $now = Carbon::today();

            $expiry_date = Carbon::parse($request->license_expire);
            if($now > $expiry_date){
                $license_status = 2;
                Provider::where('id',$ProviderService->provider_id)->update(['status' => 'banned']);
            }else{
                $sub_days = Carbon::parse($request->license_expire)->subDays(14);
                if($now >= $sub_days){
                    $license_status = 1;
                }else{
                    $license_status = 0;
                }   
            }

            $expiry_date = Carbon::parse($request->insurance_expire);
            if($now > $expiry_date){
                $insurance_status = 2;
                Provider::where('id',$ProviderService->provider_id)->update(['status' => 'banned']);
            }else{
                $sub_days = Carbon::parse($request->insurance_expire)->subDays(14);
                if($now >= $sub_days){
                    $insurance_status = 1;
                }else{
                    $insurance_status = 0;
                }   
            }

            $expiry_date = Carbon::parse($request->certificate_expire);
            if($now > $expiry_date){
                $certificate_status = 2;
                Provider::where('id',$ProviderService->provider_id)->update(['status' => 'banned']);
            }else{
                $sub_days = Carbon::parse($request->certificate_expire)->subDays(14);
                if($now >= $sub_days){
                    $certificate_status = 1;
                }else{
                    $certificate_status = 0;
                }   
            }

            $ProviderService->update([
                    'service_type_id' => $request->service_type,
                    'taxi_type' => $request->taxi_type,
                    'fleet_id' => $request->fleet_id,
                    'status' => 'offline',
                    'service_number' => $request->service_number,
                    'service_model' => $request->service_model,
                    'license_number' => $request->license_number,
                    'license_expire' => Helper::date_formatter($request->license_expire),
                    'insurance_number' => $request->insurance_number,
                    'insurance_expire' => Helper::date_formatter($request->insurance_expire),
                    'certificate_number' => $request->certificate_number,
                    'certificate_expire' => Helper::date_formatter($request->certificate_expire),
                    'license_status' => $license_status,
                    'insurance_status' => $insurance_status,
                    'certificate_status' => $certificate_status,
                ]);
            if($request->has('fleet_id')){    
                Provider::where('id', $provider)->update(['fleet'=> $request->fleet_id]);
            }else{
                Provider::where('id', $provider)->update(['fleet'=> 0]);
            }
            // Sending push to the provider
            (new SendPushNotification)->DocumentsVerfied($provider);

        } catch (ModelNotFoundException $e) {
            ProviderService::create([
                    'provider_id' => $provider,
                    'service_type_id' => $request->service_type,
                    'taxi_type' => $request->taxi_type,
                    'fleet_id' => $request->fleet_id,
                    'status' => 'offline',
                    'service_number' => $request->service_number,
                    'service_model' => $request->service_model,
                    'license_number' => $request->license_number,
                    'license_expire' => $request->license_expire,
                    'insurance_number' => $request->insurance_number,
                    'insurance_expire' => $request->insurance_expire,
                    'certificate_number' => $request->certificate_number,
                    'certificate_expire' => $request->certificate_expire,
                    'license_status' => 0,
                    'insurance_status' => 0,
                    'certificate_status' => 0,
                ]);
            if($request->has('fleet_id')){    
                Provider::where('id', $provider)->update(['fleet'=> $request->fleet_id]);
            }else{
                Provider::where('id', $provider)->update(['fleet'=> 0]);
            }
        }

        return redirect()->route('admin.provider.document.index', $provider)->with('flash_success', 'Provider service type updated successfully!');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($provider, $id)
    {
        try {
            $Document = ProviderDocument::where('provider_id', $provider)
                ->findOrFail($id);

            return view('admin.providers.document.edit', compact('Document'));
        } catch (ModelNotFoundException $e) {
            return redirect()->route('admin.index');
        }
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $provider, $id)
    {
        try {

            $Document = ProviderDocument::where('provider_id', $provider)
                ->where('document_id', $id)
                ->firstOrFail();
            $Document->update(['status' => 'ACTIVE']);

            return redirect()
                ->route('admin.provider.document.index', $provider)
                ->with('flash_success', 'Provider document has been approved.');
        } catch (ModelNotFoundException $e) {
            return redirect()
                ->route('admin.provider.document.index', $provider)
                ->with('flash_error', 'Provider not found!');
        }
    }
    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function upload(Request $request, $provider, $id)
    {
        $this->validate($request, [
                'document' => 'required|mimes:jpg,jpeg,png,pdf',
            ]);

        try {
            
            $Document = ProviderDocument::where('provider_id', $provider)
                ->where('document_id', $id)
                ->firstOrFail();

            $Document->update([
                    'url' => $request->document->store('provider/documents'),
                    'status' => 'ASSESSING',
                ]);

            return redirect()
                ->route('admin.provider.document.index', $provider)
                ->with('flash_success', 'Provider document has been uploaded.');
                
        } catch (ModelNotFoundException $e) {

            ProviderDocument::create([
                    'url' => $request->document->store('provider/documents'),
                    'provider_id' => $provider,
                    'document_id' => $id,
                    'status' => 'ASSESSING',
                ]);
            return redirect()
                ->route('admin.provider.document.index', $provider)
                ->with('flash_success', 'Provider document has been uploaded.');
        }

        return back();
    }
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($provider, $id)
    {
        try {

            $Document = ProviderDocument::where('provider_id', $provider)
                ->where('document_id', $id)
                ->firstOrFail();
            $Document->delete();

            return redirect()
                ->route('admin.provider.document.index', $provider)
                ->with('flash_success', 'Provider document has been deleted');
        } catch (ModelNotFoundException $e) {
            return redirect()
                ->route('admin.provider.document.index', $provider)
                ->with('flash_error', 'Provider not found!');
        }
    }

    /**
     * Delete the service type of the provider.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function service_destroy(Request $request, $provider, $id)
    {
        try {

            $ProviderService = ProviderService::where('provider_id', $provider)->firstOrFail();
            $ProviderService->delete();   
            Provider::where('id', $provider)->update(['fleet'=> 0]);
        
            return redirect()
                ->route('admin.provider.document.index', $provider)
                ->with('flash_success', 'Provider service has been deleted.');
        } catch (ModelNotFoundException $e) {
            return redirect()
                ->route('admin.provider.document.index', $provider)
                ->with('flash_error', 'Provider service not found!');
        }
    }
}