Current File : //home/tradevaly/www/app/Http/Controllers/Admin/PackageController.php
<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\Package;
use App\Models\PackageFeature;
use App\Models\Feature;
use Brian2694\Toastr\Facades\Toastr;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Intervention\Image\Facades\Image;
use Illuminate\Support\Str;
class PackageController extends Controller
{
    public function index(){
        $packages= Package::latest()->get();
        return view('backend.pages.package.index')->with(compact('packages'));
    }
    public function feature_list(){
        $features = Feature::latest()->get();
        return view('backend.pages.package.feature_list')->with(compact('features'));
    }
    public function feature_list_show($id){
        $feature = Feature::findOrFail($id);
        return view('backend.pages.package.feature_show')->with(compact('feature'));
    }
    public function feature_list_update (Request $request,$id){
        $feature = Feature::findOrFail($id);
        $feature->name = $request->name;
        $feature->status = $request->status;
        $feature->save();
         Toastr::success('Feature Updated Successfully !!!','Success!');
        return back();
    }
    
    public function features($id){
     if($id == 6){
         return '<select name="value" class="form-control" required>
         <option value="">Select Value</option>
         <option value="Buyer Inquiries">Buyer Inquiries</option>
         <option value="Verified Buyer Inquiries">Verified Buyer Inquiries</option>
         <option value="Connected Buyers">Connected Buyers</option>
         <option value="Connected A & B Grade Buyers">Connected A & B Grade Buyers</option>
         <option value="Connected A Grade Buyers">Connected A Grade Buyers</option>
         </select>';
     } elseif($id == 7){
          return '<select name="value" class="form-control" required>
          <option value="">Select Value</option>
         <option value="10">10</option>
         <option value="15">15</option>
         <option value="20">20</option>
         <option value="30">30</option>
         <option value="50">50</option>
         </select>';
     } elseif($id == 11){
          return '<select name="value" class="form-control" required>
         <option value="0">Not Available</option>
         <option value="Yearly">Yearly</option>
         <option value="Quarterly">Quarterly</option>
         <option value="Monthly">Monthly</option>
         <option value="Weekly / Monthly">Weekly / Monthly</option>
         </select>';
     }  elseif($id == 17){
          return '<select name="value" class="form-control" required>
         <option value="">Select Value</option>
         <option value="0">Not Available</option>
         <option value="Shared">Shared</option>
         <option value="01 Hour">01 Hour</option>
         <option value="02 Hours">02 Hours</option>
         <option value="08 Hours">08 Hours</option>
         </select>';
     }  elseif($id == 24){
          return '<select name="value" class="form-control" required>
         <option value="">Select Value</option>
         <option value="0">Not Available</option>
         <option value="(5 Keywords) 1st Page Guaranteed Ranking on Google">(5 Keywords) 1st Page Guaranteed Ranking on Google</option>
         <option value="(10 Keywords) 1st Page Guaranteed Ranking on Google">(10 Keywords) 1st Page Guaranteed Ranking on Google</option>
         </select>';
     }  elseif($id == 26){
          return '<select name="value" class="form-control" required>
         <option value="">Select Value</option>
         <option value="0">Not Available</option>
         <option value="Basic Marketing">Basic Marketing</option>
         <option value="Advance Marketing">Advance Marketing</option>
         <option value="Paid Marketing">Paid Marketing</option>
         </select>';
     } else {
         return '<select name="value" class="form-control" required>
         <option value="">Select Value</option>
         <option value="0">Not Available</option>
         <option value="1">Available</option>
         </select>';
     }
    }
    public function featured($id){
       $packages= PackageFeature::where('package_id',$id)->get();
        return view('backend.pages.package.featured')->with(compact('packages', 'id'));
    }
    
    public function add(Request $request){
       
        if($request->isMethod('post')){
            
            $data=new Package();
            if($request->hasFile('image'))
            {
            $image=$request->file('image');
            $currentDate=Carbon::now()->toDateString();
            $imageName=$currentDate.'-'.uniqid().'.'.$image->getClientOriginalExtension();
            
            if(Storage::disk('public')->exists('images/admin/package'))
            {
            Storage::disk('public')->makeDirectory('images/admin/package');
            }
            $packageImage = Image::make($image)->resize(400,200)->stream();
            Storage::disk('public')->put('images/admin/package/'.$imageName,$packageImage);
            $data->image=$imageName;
            }else{
                $data->image='default.png';
            }
            
            
            
            if($request->hasFile('pdf'))
            {
            $image=$request->file('pdf');
            $currentDate=Carbon::now()->toDateString();
            $thefile = \File::get($image);
            $imageName=$currentDate.'-'.uniqid().'.'.$image->getClientOriginalExtension();
            
            if(Storage::disk('public')->exists('images/admin/package/pdf'))
            {
            Storage::disk('public')->makeDirectory('images/admin/package/pdf');
            }
            Storage::disk('public')->put('images/admin/package/pdf/'.$imageName, $thefile);
           
            $data->pdf=$imageName;
            }
            
            
            
            
            $data->name=$request->name;
            $data->details=$request->details;
            $data->price=$request->price;
            $data->discount=$request->discount;
            $data->slug=Str::slug($request->name);
            $data->status='1';
            $data->save();
            Toastr::success('Uploaded!');
            return redirect('b2b/package/index');die;
        }
        
        return view('backend.pages.package.add');
    }
    public function edit(Request $request, $id){
       
        if($request->isMethod('post')){
            
            $data=Package::find($id);
            if($request->hasFile('image'))
            {
            $image=$request->file('image');
            $currentDate=Carbon::now()->toDateString();
            $imageName=$currentDate.'-'.uniqid().'.'.$image->getClientOriginalExtension();
            
            if(Storage::disk('public')->exists('images/admin/package'))
            {
            Storage::disk('public')->makeDirectory('images/admin/package');
            }
            $packageImage = Image::make($image)->resize(400,200)->stream();
            Storage::disk('public')->put('images/admin/package/'.$imageName,$packageImage);
            $data->image=$imageName;
            }else{
                $data->image=$data->image;
            }
            
            
            
            
            if($request->hasFile('pdf'))
            {
            $image=$request->file('pdf');
            $currentDate=Carbon::now()->toDateString();
            $imageName=$currentDate.'-'.uniqid().'.'.$image->getClientOriginalExtension();
            
            if(Storage::disk('public')->exists('images/admin/package/pdf'))
            {
            Storage::disk('public')->makeDirectory('images/admin/package/pdf');
            }
            Storage::disk('public')->put('images/admin/package/pdf/'.$imageName,$imageName);
            $data->pdf=$imageName;
            }
            
            
            $data->name=$request->name;
            $data->details=$request->details;
            $data->price=$request->price;
            $data->discount=$request->discount;
            if($data->status==0){
                $data->status='0';
            }else{
                $data->status='1';
            }
            $data->save();
            Toastr::success('Updated!');
            return redirect('b2b/package/index');die;
        }
        
        $package=package::find($id);
        return view('backend.pages.package.edit')->with(compact('package'));
    }
    public function delete($id){
        $data= Package::find($id);
        if(Storage::disk('public')->exists('images/admin/package/'.$data->image))
        {
           Storage::disk('public')->delete('images/admin/package/'.$data->image);
        }
        $collection = PackageFeature::where('package_id', $id)->get(['id']);
        PackageFeature::destroy($collection->toArray());
        $data->delete();
        Toastr::success('package Deleted!','Success!');
      return redirect()->back();die;
    }
    
    
    public function featured_add(Request $request, $id){
             if($request->isMethod('post')){
                $feature = new PackageFeature();
                $feature->value = $request->value;
                $feature->feature_id = $request->feature_id;
                $feature->package_id = $id;
                $feature->save();
                Toastr::success('Added!');
                 return redirect()->route('admin.package.featured', $id);
             }
             return view('backend.pages.package.add_features', compact('id'));
        
    }
    
    public function featured_delete(Request $request, $id){
            $data= PackageFeature::find($id);
            $data->delete();
            Toastr::success('Featured Deleted!','Success!');
            return redirect()->back();die;
    }
    
    public function featured_edit(Request $request, $id){
       $data= PackageFeature::find($id);
        if($request->isMethod('post')){
            $data->name = $request->name;
            $data->status = $request->status;
            $data->save();
            Toastr::success('Updated!');
            return redirect()->route('admin.package.featured', $data->package_id);
        }
        return view('backend.pages.package.edit_features', compact('id', 'data'));
        
    }
    
    public function updatePackageStatus(Request $request){
        if($request->ajax()){
            $data= $request->all();
            if($data['status']=='Active'){
                $status=0;
            }else{
                $status=1;
            }
            Package::where('id',$data['package_id'])->update(['status'=>$status]);
            return response()->json(['status'=>$status, 'id'=>$data['package_id']]);
        }
    }
    public function featured_edit_status($id){
        $data = PackageFeature::findOrFail($id);
        if ($data->value == 1) {
            $data->value = 0;
        } else {
            $data->value = 1;
        }
            
            $data->save();
            Toastr::success('Updated!');
            return back();
   
    }
}