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!');
}
}
}