Current File : //home/tradevaly/www/app/Http/Controllers/Frontend/RfqController.php
<?php

namespace App\Http\Controllers\Frontend;

use App\Http\Controllers\Controller;
use App\Models\Rfq;
use Brian2694\Toastr\Facades\Toastr;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Intervention\Image\Facades\Image;
use App\Mail\RfqMail;
use App\Models\BuyOffer;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Notification;
use Mail;
use App\Notifications\frontend\RfqMessage;

class RfqController extends Controller
{
   public function add(Request $request){
    if($request->isMethod('post')){

        $request->validate([
            'p_methods'=>'required',
            'industry_name'=>'required',
            'want_buy'=>'required',
            'category_id'=>'required',
            'details'=>'required',
            'qty'=>'required',
            'unit'=>'required',
            'frequency'=>'required',
            'name'=>'required',
            'email'=>'required',
            'number'=>'required',
            'g-recaptcha-response' => 'required',
        ]);
        $data=new Rfq();
        if($request->hasFile('image'))
        {
        $image=$request->file('image');
        $currentDate=Carbon::now()->toDateString();
        $imageName=$currentDate.'-'.uniqid().'.'.$image->getClientOriginalExtension();
        
        if(Storage::disk('public')->exists('images/admin/rfq'))
        {
        Storage::disk('public')->makeDirectory('images/admin/rfq');
        }
        $packageImage = Image::make($image)->resize(900,500)->stream();
        Storage::disk('public')->put('images/admin/rfq/'.$imageName,$packageImage);
        $data->image=$imageName;
        }else{
            $data->image='default.png';
        }
        $data->industry_name=$request->industry_name;
        $data->want_buy=$request->want_buy;
        $data->category_id=$request->category_id;
        $data->details=$request->details;
        $data->qty=$request->qty;
        $data->unit=$request->unit;
        $data->frequency=$request->frequency;
        $data->name=$request->name;
        $data->email=$request->email;
        $data->phone=$request->number;
        $data->p_methods=json_encode($request->p_methods);
        $data->port=$request->port;
        $data->validity=$request->validity;
        $data->t_c=$request->t_c;
        
        $data->save();
        
         $buy_offer = new BuyOffer();
        $buy_offer->title  = $request->want_buy;
        $buy_offer->slug  = Str::slug($request->want_buy);
        $buy_offer->details  = $request->details;
        $buy_offer->country_id  = $request->category_id;
        $buy_offer->rfq_id  = $data->id;
        $buy_offer->ip  = visitorip();
        $buy_offer->date  = Carbon::now();
        $buy_offer->category_id  =$request->category_id;
        $buy_offer->created_at  = Carbon::now();
        $buy_offer->save();
        
        // Mail::to('mollameehedi@gmail.com')->send(new \App\Mail\RfqMail($data));
        
        Notification::route('mail', 'mollameehedi@gmail.com')->notify(new App\Notifications\frontend\RfqMessage($data));
        Toastr::success('RFQ Sent Successfully !!');
        return back();die;
    }

      $units=[
        "<option value='Acre'>Acre</option><option value='Ampere'>Ampere</option>",
        "<option value='Bag'>Bag</option>",
        "<option value='Barrel'>Barrel</option>",
        "<option value='Box'>Box</option>",
        "<option value='Bushel'>Bushel</option>",
        "<option value='Carton'>Carton</option>",
        "<option value='Case'>Case</option>",
        "<option value='Centimeter'>Centimeter</option>",
        "<option value='Chain'>Chain</option>",
        "<option value='Cubic Centimeter'>Cubic Centimeter</option>",
        "<option value='Cubic Foot'>Cubic Foot</option>",
        "<option value='Cubic Inch'>Cubic Inch</option>",
        "<option value='Cubic Meter'>Cubic Meter</option>",
        "<option value='Cubic Yard'>Cubic Yard</option>",
        "<option value='DEGREES Celsius'>DEGREES Celsius</option>",
        "<option value='Degrees Fahrenheit'>Degrees Fahrenheit</option>",
        "<option value='Dozen'>Dozen</option>",
        "<option value='Dram'>Dram</option>",
        "<option value='Fluid Ounce'>Fluid Ounce</option>",
        "<option value='Foot'>Foot</option>",
        "<option value='Forty-Foot Container '>Forty-Foot Container </option>",
        "<option value='Furlong'>Furlong</option>",
        "<option value='Gallon'>Gallon</option>",
        "<option value='Gill'>Gill</option>",
        "<option value='Grain'>Grain</option>",
        "<option value='Gram'>Gram</option>",
        "<option value='Gross'>Gross</option>",
        "<option value='Hectare'>Hectare</option>",
        "<option value='Hertz'>Hertz</option>",
        "<option value='Inch'>Inch</option>",
        "<option value='Kiloampere'>Kiloampere</option>",
        "<option value='Kilogram'>Kilogram</option>",
        "<option value='Kilohertz'>Kilohertz</option>",
        "<option value='Kilometer'>Kilometer</option>",
        "<option value='Kiloohm'>Kiloohm</option>",
        "<option value='Kilovolt'>Kilovolt</option>",
        "<option value='Kilowatt'>Kilowatt</option>",
        "<option value='Liter'>Liter</option>",
        "<option value='Long Ton'>Long Ton</option>",
        "<option value='Megahertz'>Megahertz</option>",
        "<option value='Meter'>Meter</option>",
        "<option value='Metric Ton'>Metric Ton</option>",
        "<option value='Mile'>Mile</option>",
        "<option value='Milliampere'>Milliampere</option>",
        "<option value='Milligram'>Milligram</option>",
        "<option value='Millihertz'>Millihertz</option>",
        "<option value='Milliliter'>Milliliter</option>",
        "<option value='Millimeter'>Millimeter</option>",
        "<option value='Milliohm'>Milliohm</option>",
        "<option value='Millivolt'>Millivolt</option>",
        "<option value='Milliwatt'>Milliwatt</option>",
        "<option value='Nautical Mile'>Nautical Mile</option>",
        "<option value='Ohm'>Ohm</option>",
        "<option value='Ounce'>Ounce</option>",
        "<option value='Pack'>Pack</option>",
        "<option value='Pallet'>Pallet</option>",
        "<option value='Pair'>Pair</option>",
        "<option value='Parcel'>Parcel</option>",
        "<option value='Perch'>Perch</option>",
        "<option value='Piece'>Piece</option>",
        "<option value='Pint'>Pint</option>",
        "<option value='Plant'>Plant</option>",
        "<option value='Pole'>Pole</option>",
        "<option value='Pound'>Pound</option>",
        "<option value='Quart'>Quart</option>",
        "<option value='Quarter'>Quarter</option>",
        "<option value='Rod'>Rod</option>",
        "<option value='Roll'>Roll</option>",
        "<option value='Set'>Set</option>",
        "<option value='Sheet'>Sheet</option>",
        "<option value='Short Ton'>Short Ton</option>",
        "<option value='Square Centimeter'>Square Centimeter</option>",
        "<option value='Square Foot'>Square Foot</option>",
        "<option value='Square Inch'>Square Inch</option>",
        "<option value='Square Meter'>Square Meter</option>",
        "<option value='Square Mile'>Square Mile</option>",
        "<option value='Square Yard'>Square Yard</option>",
        "<option value='Stone'>Stone</option>",
        "<option value='Strand'>Strand</option>",
        "<option value='Ton'>Ton</option>",
        "<option value='Tonne'>Tonne</option>",
        "<option value='Tray'>Tray</option>",
        "<option value='Twenty-Foot Container'>Twenty-Foot Container</option>",
        "<option value='Unit'>Unit</option>",
        "<option value='Volt'>Volt</option>",
        "<option value='Watt'>Watt</option>",
        "<option value='Wp'>Wp</option>",
        "<option value='Yard'>Yard</option>",
      ];

      $validities=[
        '<option value="0">Select Buying Frequency *</option>',
        '<option value="One time">One time</option>',
        '<option value="Daily">Daily</option>',
        '<option value="Weekly">Weekly</option>',
        '<option value="Monthly">Monthly</option>',
        '<option value="Quarterly">Quarterly</option>',
        '<option value="Semi Annually">Semi Annually</option>',
        '<option value="Annually">Annually</option>',
        '<option value="Other">Other</option>',
      ];

      $freqs=[
        '<option value="0">Select Time of Validity</option>',
        '<option value="1-w">1 Week</option>',
        '<option value="2-w">2 Weeks</option>',
        '<option value="3-w">3 Weeks</option>',
        '<option value="1-m">1 Month</option>',
        '<option value="2-m">2 Months</option>',
        '<option value="3-m">3 Months</option>',
        '<option value="4-m">4 Months</option>',
        '<option value="5-m">5 Months</option>',
        '<option value="6-m">6 Months</option>',
        '<option value="1-y">1 Year</option>',
      ];
    return view('frontend.pages.postrfq')->with(compact('units','validities','freqs'));
   }

   public function index(){
     $rfqs= Rfq::orderBy('status', 'desc')->latest()->get();
     return view('backend.pages.rfq.index')->with(compact('rfqs'));
   }
   public function show($id){
     $rfq= Rfq::find($id);
     return view('backend.pages.rfq.show')->with(compact('rfq'));
   }
   public function approved($id){
     $rfq= Rfq::find($id);
     $rfq->status = 'approved';
     $rfq->save();
     
     return back();
   }
   public function delete($id){
     $rfq= Rfq::find($id);
     if(Storage::disk('public')->exists('images/admin/rfq/'.$rfq->image))
     {
        Storage::disk('public')->delete('images/admin/rfq/'.$rfq->image);
     }
     $rfq->delete();
     return redirect()->back();
   }
}