IMMREX7
<?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 -