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