IMMREX7

aku nok ndi : /home/spdtg/www/schoolmis/app/Http/Controllers/School/Stock/
File Up :
aku nok ndi : /home/spdtg/www/schoolmis/app/Http/Controllers/School/Stock/QuotationController.php

<?php

namespace App\Http\Controllers\School\Stock;

use Illuminate\Http\Request;
use App\Http\Controllers\School\SchoolController;
use Auth;
use DB;
use PDF;
use Mail;
use Session;

class QuotationController extends SchoolController {

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request) {
        $quotations = \App\Quotation::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->orderBy('idQuotation', 'desc');
        if ($request->has('idFinancialYear')) {
            $quotations = $quotations->where('idFinancialYear', '=', $request->idFinancialYear)->get();
        } else {
            $quotations = $quotations->where('idFinancialYear', '=', Session::get('idFinancialYear'))->get();
        }
        $products = ['' => '---Select---'] + \App\Product::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->get()->pluck('productName', 'idProduct')->toArray();
        $suppliers = \App\Supplier::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->get()->pluck('bussinessName', 'idSupplier')->toArray();
        return view('schools.stock.quotation', compact('quotations', 'products', 'suppliers'));
    }

    public function viewUpload(Request $request){
        $quotations = \App\Quotation::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->orderBy('idQuotation', 'desc');
        if ($request->has('idFinancialYear')) {
            $quotations = $quotations->where('idFinancialYear', '=', $request->idFinancialYear)->get();
        } else {
            $quotations = $quotations->where('idFinancialYear', '=', Session::get('idFinancialYear'))->get();
        }
        return view('schools.stock.quotation-upload', compact('quotations'));
    }

    public function storeUpload(Request $request){
        $rules = [
            'quotation' => 'required',
            'id' => 'required',
        ];
        $messages = [
            'quotation.required' => 'Quotation file is missing.',
            'id.required' => 'Quotation must be selected.',
        ];
        $this->validate($request, $rules, $messages);
        $quotation = \App\Quotation::where('idQuotation',$request->id)->first();
        if ($request->hasFile('quotation')) {
            $hw = 'quotation_' . $quotation->idQuotation . '.' . $request->file('quotation')->getClientOriginalExtension();
            $request->file('quotation')->storeAs('public/schools/' . Auth::guard('school')->user()->idSchool . '/quotations/', $hw);
            $quotation->received_quotation = $hw;
        }
        $quotation->update();
        flash('Quotation has been uploaded successfully');
        return redirect('school/quotations-upload');
    }

    /**
     * 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) {
        $rules = [
            'quotationDate' => 'required',
        ];
        if (count($request->products) == 0) {
            $rules += ['idProduct' => 'required'];
        }
        if (count($request->suppliers) == 0) {
            $rules += ['idSupplier' => 'required'];
        }
        $messages = [
            'quotationDate.required' => 'Quotation date must be filled.',
            'idProduct.required' => 'At least one Product must be selected.',
            'idSupplier.required' => 'At least one Vendor must be selected.'
        ];
        $this->validate($request, $rules, $messages);

        if ($request->has('suppliers')) {
            foreach ($request->suppliers as $key => $value) {
                //    dd($request->all());
                $quotation = new \App\Quotation();
                $quotation->fill($request->all());
                $quotation->idSchool = Auth::guard('school')->user()->idSchool;
                $quotation->idFinancialYear = Session::get('idFinancialYear');
                $quotation->idSupplier = $value;
                $month = \Carbon\Carbon::parse($quotation->quotationDate);
                $quotation->poMonth = $month->format('m');
                $quotation->save();
                foreach ($request->products as $k1 => $v1) {
//                    if ($v1['idProduct'] == 'new') {
//                        $newproduct = \App\Product::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
//                                        ->where('productName', '=', $v1['newproduct'])->first();
//                        if (count($newproduct) == 0) {
//                            $np = new \App\Product();
//                            $np->productName = $v1['newproduct'];
//                            $np->idSchool = Auth::guard('school')->user()->idSchool;
//                            $np->idFinancialYear = Session::get('idFinancialYear');
//                            $np->save();
//                            $prodId = $np->idProduct;
//                        }else{
//                            $prodId = $newproduct->idProduct;
//                        }
//                        $qdetails = new \App\QuotationDetail();
//                        $qdetails->idQuotation = $quotation->idQuotation;
//                        $qdetails->idProduct = $prodId;
//                        $qdetails->quantity = $v1['quantity'];
//                        $qdetails->save();
//                    } else {
                    $qdetails = new \App\QuotationDetail();
                    $qdetails->idQuotation = $quotation->idQuotation;
                    $qdetails->idProduct = $v1['idProduct'];
                    $qdetails->quantity = $v1['quantity'];
                    $qdetails->save();
//                    }
                }
            }
        }
        flash('Quotation has been saved successfully');
        if ($request->ajax()) {
            return response()->json(['success' => "SUCCESS"], 200, ['app-status' => 'success']);
        }
        return redirect('school/quotations');
    }

    public function sendQuotationMail(Request $request){
        $quotation = \App\Quotation::where('idQuotation',$request->id)->first();
        $school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
        $vendor = \App\Supplier::where('idSupplier','=',$quotation->idSupplier)->first()->toArray();
        $pdf = PDF::loadView('schools.stock.print_quotation_order', ['margin_top' => 20], compact('quotation', 'school'));
                // mail to client
        Mail::send('emails.quotation', ["school1" => $school,'quotation'=>$quotation], function($message) use ($vendor, $pdf, $school) {
            $message->from('onlineloginonline@gmail.com');
            $message->to($vendor['email']);
            $message->subject('Quotation Form ' . $school->schoolName);
            //Attach PDF doc
            $message->attachData($pdf->output(), 'quotation_order.pdf');
        });
        flash('Quotation mail has been successfully sent to '.$vendor['email']);
        return redirect('school/quotations');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id) {
        $quotation = \App\Quotation::where('idQuotation',$id)->first();
        $school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
        $pdf = PDF::loadView('schools.stock.print_quotation_order', ['margin_top' => 20], compact('quotation', 'school'));
        return $pdf->stream('quotation.pdf');
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id) {
        $quotation = \App\Quotation::where('idQuotation', '=', $id)->first();
        $quotations = \App\Quotation::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->orderBy('idQuotation', 'desc')->get();
        $products = ['' => '---Select---'] + \App\Product::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->get()->pluck('productName', 'idProduct')->toArray();
        $suppliers = \App\Supplier::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
                        ->get()->pluck('bussinessName', 'idSupplier')->toArray();
        return view('schools.stock.quotation', compact('quotations', 'products', 'suppliers', 'quotation'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id) {
        $quotation = \App\Quotation::where('idQuotation', '=', $id)->first();
        $quotation->fill($request->all());
        $month = \Carbon\Carbon::parse($quotation->quotationDate);
        $quotation->poMonth = $month->format('m');
        $quotation->update();
        foreach ($request->products as $a => $v) {
            if ($v['idProduct'] != null) {
                if (isset($v['idQuotationDetail'])) {
                    $q_details = \App\QuotationDetail::where('idQuotationDetail', '=', $v['idQuotationDetail'])->first();
                } else {
                    $q_details = new \App\QuotationDetail();
                }
                $q_details->idQuotation = $quotation->idQuotation;
                $q_details->idProduct = $v['idProduct'];
                $q_details->quantity = $v['quantity'];
                $q_details->save();
            }
        }
        return redirect('school/quotations');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id) {
        $quotation = \App\Quotation::where('idQuotation', '=', $id)->first();
        DB::beginTransaction();
        $quotation->details()->delete();
        $quotation->delete();
        DB::commit();
        return response()->json(['success' => "SUCCESS"], 200, ['app-status' => 'success']);
    }

}

Copyright © 2021 - 2025 IMMREX7