IMMREX7

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

<?php

namespace App\Http\Controllers\School\Canteen;

use Illuminate\Http\Request;
use App\Http\Controllers\School\SchoolController;
use Illuminate\Validation\ValidationException;
use DB;
use Auth;
use Session;
use Carbon\Carbon;

class FoodVendorController extends SchoolController {

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request) {
        $products = \App\FoodVendor::where('idSchool',Auth::guard('school')->user()->idSchool)->where('idFinancialYear',Session::get('idFinancialYear'))->get();  
        return view('schools.canteen.vendor',compact('products'));
    }

    /**
     * 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 = [
            'name' => 'required',
            'address' => 'required',
            'mobile' => 'required',
            'email' => 'required',
            'order_time' => 'required'
        ];
        $message = [
            'order_time.required' => 'Food ordering time is required'
        ];
        $this->Validate($request, $rules, $message);
        $emailCheck =\App\SchoolUser::where('email',$request->email)->first();
        if($emailCheck != null){
            throw ValidationException::withMessages(['email' => 'Email address already exists']);
        }

        $food = new \App\FoodVendor();
        $food->idSchool = Auth::guard('school')->user()->idSchool;
        $food->idFinancialYear = Session::get('idFinancialYear');
        $food->fill($request->all());
        $food->save();

        $role = DB::table('roles')->where('idSchool',$food->idSchool)->where('name','Food Vendor')->first();
        if($role == null){
            $idRole = DB::table('roles')->insertGetId(['idSchool' => $food->idSchool, 'name' => 'Food Vendor', 'label' => 'Vendor']);
        }else $idRole = $role->idRole;
        //insert user into the table
        $user = new \App\SchoolUser();
        $user->fill($request->all());
        $password = $request->pwd;
        $user->password = bcrypt($password);
        $user->idSchool = Auth::guard('school')->user()->idSchool;
        $user->isActive = 'Y';
        $user->idReference = $food->id;
        $user->save();
        $user->roles()->attach(array(($idRole)));

        return redirect('school/food-vendor');
    }

    /**
     * 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($id) {
        $product = \App\FoodVendor::where('id', '=', $id)->first();
        $products = \App\FoodVendor::where('idSchool',Auth::guard('school')->user()->idSchool)->where('idFinancialYear',Session::get('idFinancialYear'))->get();  
        return view('schools.canteen.vendor', compact('product','products'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id) {
        $rules = [
            'name' => 'required',
            'address' => 'required',
            'mobile' => 'required',
            'email' => 'required',
            'order_time' => 'required'
        ];
        $message = [
            'order_time.required' => 'Food ordering time is required'
        ];
        $this->Validate($request, $rules, $message);
        $food =\App\FoodVendor::where('id', '=', $id)->first();
        $food->idSchool = Auth::guard('school')->user()->idSchool;
        $food->idFinancialYear = Session::get('idFinancialYear');
        $food->fill($request->all());
        $food->save();
        $user =\App\SchoolUser::where('idReference',$id)->first();
        if($user != null){
            $user->fill($request->all());
            if(isset($request->pwd)){
                $password = $request->pwd;
                $user->password = bcrypt($password);
            }
            $user->update();
        }
        return redirect('school/food-vendor');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id) {
        $type = \App\FoodVendor::where('id', '=', $id)->first();
        $type->delete();
        $user =\App\SchoolUser::where('idReference',$id)->first();
        if($user != null){
            DB::table('schooluser_roles')->where('idSchoolUser',$user->idSchoolUser)->delete();
            $user->delete();
        }
        return response()->json(['success' => "SUCCESS"], 200, ['app-status' => 'success']);
    }

    public function report(Request $request){
        $today_date = Carbon::today()->format('Y-m-d');
        if ($request->has('fromDate') && $request->fromDate != null) {
            $from_date = Carbon::createFromFormat('d-m-Y', $request->fromDate)->format('Y-m-d');
        }
        if ($request->has('toDate') && $request->toDate != null) {
            $to_date = Carbon::createFromFormat('d-m-Y', $request->toDate)->format('Y-m-d');
        }
                        
        $transactions = \App\FoodTransaction::join('students', 'food_transaction.idStudent', '=', 'students.idStudent')
                    ->join('classes', 'students.idClass', '=', 'classes.idClass')
                    ->join('sections', 'students.idSection', '=', 'sections.idSection')
                    ->where('food_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                    ->where('food_transaction.idFinancialYear', '=', Session::get('idFinancialYear'))
                    ->where(function($query) {
                        $query->whereNull('food_transaction.status');
                        $query->orWhere('food_transaction.status', '=', 'In-Process');
                        $query->orWhere('food_transaction.status', '=', 'Cleared');
                        $query->orWhere('food_transaction.status', '=', 'Success');
                    })
                    ->select('ecNo', 'food_transaction.idTransaction', 'food_transaction.idFinancialYear', 'students.idClass', 'students.idStudent', 'students.idSection', 'firstName', 'middleName', 'contactPersonMobile', 'lastName', 'className', 'sectionName', 'father_fname', 'father_mobile', 'father_lname', 'receiptNo',  'totalPaid', 'food_transaction.paymentDate');

        if (($request->has('toDate') && $request->toDate != null) && ($request->has('fromDate') && $request->fromDate != null)) {
            $transactions = $transactions->whereBetween('food_transaction.paymentDate', [$from_date, $to_date])->get();
        } else if ($request->has('fromDate') && $request->fromDate != null) {
            $transactions = $transactions->whereBetween('food_transaction.paymentDate', [$from_date, $today_date])->get();
        } else if ($request->has('toDate') && $request->toDate != null) {
            $transactions = $transactions->whereDate('food_transaction.paymentDate', '<=', $to_date)->get();
        } else {
            $transactions = $transactions->whereDate('food_transaction.paymentDate',$today_date)->get();
        }
        return view('schools.canteen.vendor_report',compact('transactions'));
    }

    public function reportPending(Request $request){
        $today_date = Carbon::today()->format('Y-m-d');
        if ($request->has('fromDate') && $request->fromDate != null) {
            $from_date = Carbon::createFromFormat('d-m-Y', $request->fromDate)->format('Y-m-d');
        }
        if ($request->has('toDate') && $request->toDate != null) {
            $to_date = Carbon::createFromFormat('d-m-Y', $request->toDate)->format('Y-m-d');
        }
                        
        $transactions = \App\FoodTransaction::join('students', 'food_transaction.idStudent', '=', 'students.idStudent')
                    ->join('classes', 'students.idClass', '=', 'classes.idClass')
                    ->join('sections', 'students.idSection', '=', 'sections.idSection')
                    ->where('food_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                    ->where('food_transaction.idFinancialYear', '=', Session::get('idFinancialYear'))
                    ->where('food_transaction_details.is_delivered', '=', 'N')
                    ->where(function($query) {
                        $query->whereNull('food_transaction.status');
                        $query->orWhere('food_transaction.status', '=', 'In-Process');
                        $query->orWhere('food_transaction.status', '=', 'Cleared');
                        $query->orWhere('food_transaction.status', '=', 'Success');
                    })
                    ->select('ecNo', 'food_transaction.idTransaction', 'food_transaction.idFinancialYear', 'students.idClass', 'students.idStudent', 'students.idSection', 'firstName', 'middleName', 'contactPersonMobile', 'lastName', 'className', 'sectionName', 'father_fname', 'father_mobile', 'father_lname', 'receiptNo',  'totalPaid', 'food_transaction.paymentDate');

        if (($request->has('toDate') && $request->toDate != null) && ($request->has('fromDate') && $request->fromDate != null)) {
            $transactions = $transactions->whereBetween('food_transaction.paymentDate', [$from_date, $to_date])->get();
        } else if ($request->has('fromDate') && $request->fromDate != null) {
            $transactions = $transactions->whereBetween('food_transaction.paymentDate', [$from_date, $today_date])->get();
        } else if ($request->has('toDate') && $request->toDate != null) {
            $transactions = $transactions->whereDate('food_transaction.paymentDate', '<=', $to_date)->get();
        } else {
            $transactions = $transactions->whereDate('food_transaction.paymentDate',$today_date)->get();
        }
        return view('schools.canteen.vendor_pending_report',compact('transactions'));
    }

    public function updateOrder(Request $request){
        if(isset($request->orders)){
            foreach($request->orders as $key => $value){
                $transaction =  \App\FoodTransactionDetail::where('idTransactionDetail',$value)->first(); 
                $transaction->is_delivered = "Y";
                $transaction->delivery_date_time = Carbon::parse($request->delivery)->format('Y-m-d H:i:s');
                $transaction->update();
            }
        }
       return redirect('school/manage-food-order');
    }

    public function manageOrder(Request $request){
        $today_date = Carbon::today()->format('Y-m-d');
        if ($request->has('fromDate') && $request->fromDate != null) {
            $from_date = Carbon::createFromFormat('d-m-Y', $request->fromDate)->format('Y-m-d');
        }
        if ($request->has('toDate') && $request->toDate != null) {
            $to_date = Carbon::createFromFormat('d-m-Y', $request->toDate)->format('Y-m-d');
        }
                        
        $transactions = \App\FoodTransaction::join('students', 'food_transaction.idStudent', '=', 'students.idStudent')
                    ->join('classes', 'students.idClass', '=', 'classes.idClass')
                    ->join('sections', 'students.idSection', '=', 'sections.idSection')
                    ->where('food_transaction.idSchool', '=', Auth::guard('school')->user()->idSchool)
                    ->where('food_transaction.idFinancialYear', '=', Session::get('idFinancialYear'))
                    ->where(function($query) {
                        $query->whereNull('food_transaction.status');
                        $query->orWhere('food_transaction.status', '=', 'In-Process');
                        $query->orWhere('food_transaction.status', '=', 'Cleared');
                        $query->orWhere('food_transaction.status', '=', 'Success');
                    })
                    ->select('ecNo', 'food_transaction.idTransaction', 'food_transaction.idFinancialYear', 'students.idClass', 'students.idStudent', 'students.idSection', 'firstName', 'middleName', 'contactPersonMobile', 'lastName', 'className', 'sectionName', 'father_fname', 'father_mobile', 'father_lname', 'receiptNo',  'totalPaid', 'food_transaction.paymentDate');

        if (($request->has('toDate') && $request->toDate != null) && ($request->has('fromDate') && $request->fromDate != null)) {
            $transactions = $transactions->whereBetween('food_transaction.paymentDate', [$from_date, $to_date])->get();
        } else if ($request->has('fromDate') && $request->fromDate != null) {
            $transactions = $transactions->whereBetween('food_transaction.paymentDate', [$from_date, $today_date])->get();
        } else if ($request->has('toDate') && $request->toDate != null) {
            $transactions = $transactions->whereDate('food_transaction.paymentDate', '<=', $to_date)->get();
        } else {
            $transactions = $transactions->whereDate('food_transaction.paymentDate',$today_date)->get();
        }
        return view('schools.canteen.vendor_orders',compact('transactions'));
    }

    public function manageFood(Request $request){
        date_default_timezone_set("Asia/Kolkata");  
        $food = \App\Food::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
        ->where('idFinancialYear', '=', Session::get('idFinancialYear'))->get();

        $vendor = \App\FoodVendor::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
        ->where('idFinancialYear', '=', Session::get('idFinancialYear'))->first();

        $stock = DB::table('food_stock')->join('canteen_food_items', 'food_stock.idFood', '=', 'canteen_food_items.id')->where('food_stock.idSchool', '=', Auth::guard('school')->user()->idSchool)
        ->where('food_stock.idFinancialYear', '=', Session::get('idFinancialYear'))->whereDate('food_date',Carbon::now()->format('Y-m-d'))->get();
        
        $item = DB::table('food_stock')->join('canteen_food_items', 'food_stock.idFood', '=', 'canteen_food_items.id')->where('food_stock.idSchool', '=', Auth::guard('school')->user()->idSchool)
        ->where('food_stock.idFinancialYear', '=', Session::get('idFinancialYear'))->whereDate('food_date',Carbon::now()->format('Y-m-d'))->get()->pluck('idFood')->toArray();

        if($vendor != null){
            $vendorTime = explode("-",$vendor->order_time);
            $now = Carbon::now();
            $toTime = Carbon::parse($now->format('d-M-Y').' '.$vendorTime[0]);
            $now->subDays(1);
            $fromTime = Carbon::parse($now->format('d-M-Y').' '.$vendorTime[1]);
            if(count($item) == 0){
                if (str_contains($fromTime->diffForHumans(), 'ago') && str_contains($toTime->diffForHumans(), 'ago')){
                    updateOldStock(Auth::guard('school')->user()->idSchool,Session::get('idFinancialYear'),$now);
                }
            }
        }
        
        return view('schools.canteen.vendor_dashboard',compact('food','stock','item','vendor'));
    }

    public function updateFood(Request $request){
       foreach($request->products as $key => $value){
            $stock = DB::table('food_stock')->join('canteen_food_items', 'food_stock.idFood', '=', 'canteen_food_items.id')->where('food_stock.idSchool', '=', Auth::guard('school')->user()->idSchool)
            ->where('food_stock.idFinancialYear', '=', Session::get('idFinancialYear'))
            ->where('food_stock.idFood', '=', $value)
            ->whereDate('food_date',Carbon::now()->format('Y-m-d'))->first();
            if($stock == null){
                DB::table('food_stock')->insert([
                    'idSchool' => Auth::guard('school')->user()->idSchool,
                    'idFinancialYear' => Session::get('idFinancialYear'),
                    'idFood' => $value,
                    'food_date' => Carbon::now()->format('Y-m-d')
                ]);
            }
       } 
       return redirect('school/food-vendor-dashboard');
    }

    public function removeStock($id){
        DB::table('food_stock')->where('idStock',$id)->where('food_stock.idSchool', '=', Auth::guard('school')->user()->idSchool)
        ->where('food_stock.idFinancialYear', '=', Session::get('idFinancialYear'))->delete();
        return response()->json(['success' => "SUCCESS"], 200, ['app-status' => 'success']);
    }

}

Copyright © 2021 - 2025 IMMREX7