dbfdg
can('manage proposal'))
{
$customer = Customer::where('created_by', '=', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$customer->prepend('All', '');
$status = Proposal::$statues;
$query = Proposal::where('created_by', '=', \Auth::user()->creatorId());
if(!empty($request->customer))
{
$query->where('id', '=', $request->customer);
}
if(!empty($request->issue_date))
{
$date_range = explode('to', $request->issue_date);
$query->whereBetween('issue_date', $date_range);
}
if(!empty($request->status))
{
$query->where('status', '=', $request->status);
}
$proposals = $query->with(['category'])->get();
return view('proposal.index', compact('proposals', 'customer', 'status'));
}
else
{
return redirect()->back()->with('error', __('Permission Denied.'));
}
}
public function create($customerId)
{
if(\Auth::user()->can('create proposal'))
{
$customFields = CustomField::where('created_by', '=', \Auth::user()->creatorId())->where('module', '=', 'proposal')->get();
$proposal_number = \Auth::user()->proposalNumberFormat($this->proposalNumber());
$customers = Customer::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$customers->prepend('Select Customer', '');
$category = ProductServiceCategory::where('created_by', \Auth::user()->creatorId())->where('type', 'income')->get()->pluck('name', 'id');
$category->prepend('Select Category', '');
$product_services = ProductService::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$product_services->prepend('--', '');
return view('proposal.create', compact('customers', 'proposal_number', 'product_services', 'category', 'customFields', 'customerId'));
}
else
{
return response()->json(['error' => __('Permission denied.')], 401);
}
}
public function customer(Request $request)
{
$customer = Customer::where('id', '=', $request->id)->first();
return view('proposal.customer_detail', compact('customer'));
}
public function product(Request $request)
{
$data['product'] = $product = ProductService::find($request->product_id);
$data['unit'] = (!empty($product->unit)) ? $product->unit->name : '';
$data['taxRate'] = $taxRate = !empty($product->tax_id) ? $product->taxRate($product->tax_id) : 0;
$data['taxes'] = !empty($product->tax_id) ? $product->tax($product->tax_id) : 0;
$salePrice = $product->sale_price;
$quantity = 1;
$taxPrice = ($taxRate / 100) * ($salePrice * $quantity);
$data['totalAmount'] = ($salePrice * $quantity);
return json_encode($data);
}
public function store(Request $request)
{
if(\Auth::user()->can('create proposal'))
{
$validator = \Validator::make(
$request->all(), [
'customer_id' => 'required',
'issue_date' => 'required',
'category_id' => 'required',
'items' => 'required',
]
);
if($validator->fails())
{
$messages = $validator->getMessageBag();
return redirect()->back()->with('error', $messages->first());
}
$status = Proposal::$statues;
$proposal = new Proposal();
$proposal->proposal_id = $this->proposalNumber();
$proposal->customer_id = $request->customer_id;
$proposal->status = 0;
$proposal->issue_date = $request->issue_date;
$proposal->category_id = $request->category_id;
// $proposal->discount_apply = isset($request->discount_apply) ? 1 : 0;
$proposal->created_by = \Auth::user()->creatorId();
$proposal->save();
CustomField::saveData($proposal, $request->customField);
$products = $request->items;
for($i = 0; $i < count($products); $i++)
{
$proposalProduct = new ProposalProduct();
$proposalProduct->proposal_id = $proposal->id;
$proposalProduct->product_id = $products[$i]['item'];
$proposalProduct->quantity = $products[$i]['quantity'];
$proposalProduct->tax = $products[$i]['tax'];
// $proposalProduct->discount = isset($products[$i]['discount']) ? $products[$i]['discount'] : 0;
$proposalProduct->discount = $products[$i]['discount'];
$proposalProduct->price = $products[$i]['price'];
$proposalProduct->description = $products[$i]['description'];
$proposalProduct->save();
}
//For Notification
$setting = Utility::settings(\Auth::user()->creatorId());
$customer = Customer::find($proposal->customer_id);
$proposalNotificationArr = [
'proposal_number' => \Auth::user()->proposalNumberFormat($proposal->proposal_id),
'user_name' => \Auth::user()->name,
'customer_name' => $customer->name,
'proposal_issue_date' => $proposal->issue_date,
];
//Twilio Notification
if(isset($setting['twilio_proposal_notification']) && $setting['twilio_proposal_notification'] ==1)
{
Utility::send_twilio_msg($customer->contact,'new_proposal', $proposalNotificationArr);
}
return redirect()->route('proposal.index', $proposal->id)->with('success', __('Proposal successfully created.'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function edit($ids)
{
if(\Auth::user()->can('edit proposal'))
{
try {
$id = Crypt::decrypt($ids);
} catch (\Throwable $th) {
return redirect()->back()->with('error', __('Proposal Not Found.'));
}
$id = Crypt::decrypt($ids);
$proposal = Proposal::find($id);
$proposal_number = \Auth::user()->proposalNumberFormat($proposal->proposal_id);
$customers = Customer::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$category = ProductServiceCategory::where('created_by', \Auth::user()->creatorId())->where('type', 'income')->get()->pluck('name', 'id');
$category->prepend('Select Category', '');
$product_services = ProductService::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$proposal->customField = CustomField::getData($proposal, 'proposal');
$customFields = CustomField::where('created_by', '=', \Auth::user()->creatorId())->where('module', '=', 'proposal')->get();
$items = [];
foreach($proposal->items as $proposalItem)
{
$itemAmount = $proposalItem->quantity * $proposalItem->price;
$proposalItem->itemAmount = $itemAmount;
$proposalItem->taxes = Utility::tax($proposalItem->tax);
$items[] = $proposalItem;
}
return view('proposal.edit', compact('customers', 'product_services', 'proposal', 'proposal_number', 'category', 'customFields', 'items'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function update(Request $request, Proposal $proposal)
{
if(\Auth::user()->can('edit proposal'))
{
if($proposal->created_by == \Auth::user()->creatorId())
{
$validator = \Validator::make(
$request->all(), [
'customer_id' => 'required',
'issue_date' => 'required',
'category_id' => 'required',
'items' => 'required',
]
);
if($validator->fails())
{
$messages = $validator->getMessageBag();
return redirect()->route('proposal.index')->with('error', $messages->first());
}
$proposal->customer_id = $request->customer_id;
$proposal->issue_date = $request->issue_date;
$proposal->category_id = $request->category_id;
// $proposal->discount_apply = isset($request->discount_apply) ? 1 : 0;
$proposal->save();
CustomField::saveData($proposal, $request->customField);
$products = $request->items;
for($i = 0; $i < count($products); $i++)
{
$proposalProduct = ProposalProduct::find($products[$i]['id']);
if($proposalProduct == null)
{
$proposalProduct = new ProposalProduct();
$proposalProduct->proposal_id = $proposal->id;
}
if(isset($products[$i]['item']))
{
$proposalProduct->product_id = $products[$i]['item'];
}
$proposalProduct->quantity = $products[$i]['quantity'];
$proposalProduct->tax = $products[$i]['tax'];
// $proposalProduct->discount = isset($products[$i]['discount']) ? $products[$i]['discount'] : 0;
$proposalProduct->discount = $products[$i]['discount'];
$proposalProduct->price = $products[$i]['price'];
$proposalProduct->description = $products[$i]['description'];
$proposalProduct->save();
}
return redirect()->route('proposal.index', $proposal->id)->with('success', __('Proposal successfully updated.'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
function proposalNumber()
{
$latest = Proposal::where('created_by', '=', \Auth::user()->creatorId())->latest()->first();
if(!$latest)
{
return 1;
}
return $latest->proposal_id + 1;
}
public function show($ids)
{
if(\Auth::user()->can('show proposal'))
{
try {
$id = Crypt::decrypt($ids);
} catch (\Throwable $th) {
return redirect()->back()->with('error', __('Proposal Not Found.'));
}
$id = Crypt::decrypt($ids);
$proposal = Proposal::with(['items.product.unit'])->find($id);
if($proposal->created_by == \Auth::user()->creatorId())
{
$customer = $proposal->customer;
$iteams = $proposal->items;
$status = Proposal::$statues;
$proposal->customField = CustomField::getData($proposal, 'proposal');
$customFields = CustomField::where('created_by', '=', \Auth::user()->creatorId())->where('module', '=', 'proposal')->get();
return view('proposal.view', compact('proposal', 'customer', 'iteams', 'status', 'customFields'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function destroy(Proposal $proposal)
{
if(\Auth::user()->can('delete proposal'))
{
if($proposal->created_by == \Auth::user()->creatorId())
{
$proposal->delete();
ProposalProduct::where('proposal_id', '=', $proposal->id)->delete();
return redirect()->route('proposal.index')->with('success', __('Proposal successfully deleted.'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function productDestroy(Request $request)
{
if(\Auth::user()->can('delete proposal product'))
{
ProposalProduct::where('id', '=', $request->id)->delete();
return redirect()->back()->with('success', __('Proposal product successfully deleted.'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function customerProposal(Request $request)
{
if(\Auth::user()->can('manage customer proposal'))
{
$status = Proposal::$statues;
$query = Proposal::where('customer_id', '=', \Auth::user()->id)->where('status', '!=', '0')->where('created_by', \Auth::user()->creatorId());
if(!empty($request->issue_date))
{
$date_range = explode(' - ', $request->issue_date);
$query->whereBetween('issue_date', $date_range);
}
if(!empty($request->status))
{
$query->where('status', '=', $request->status);
}
$proposals = $query->get();
return view('proposal.index', compact('proposals', 'status'));
}
else
{
return redirect()->back()->with('error', __('Permission Denied.'));
}
}
public function customerProposalShow($ids)
{
if(\Auth::user()->can('show proposal'))
{
$proposal_id = \Crypt::decrypt($ids);
$proposal = Proposal::where('id', $proposal_id)->first();
if($proposal->created_by == \Auth::user()->creatorId())
{
$customer = $proposal->customer;
$iteams = $proposal->items;
return view('proposal.view', compact('proposal', 'customer', 'iteams'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function sent($id)
{
if(\Auth::user()->can('send proposal'))
{
$proposal = Proposal::where('id', $id)->first();
$proposal->send_date = date('Y-m-d');
$proposal->status = 1;
$proposal->save();
$customer = Customer::where('id', $proposal->customer_id)->first();
$proposal->name = !empty($customer) ? $customer->name : '';
$proposal->proposal = \Auth::user()->proposalNumberFormat($proposal->proposal_id);
$proposalId = Crypt::encrypt($proposal->id);
$proposal->url = route('proposal.pdf', $proposalId);
// Send Email
$setings = Utility::settings();
if($setings['proposal_sent'] == 1 && !empty($customer->id))
{
$customer = Customer::where('id', $proposal->customer_id)->first();
$proposal->name = !empty($customer) ? $customer->name : '';
$proposal->proposal = \Auth::user()->proposalNumberFormat($proposal->proposal_id);
$proposalId = Crypt::encrypt($proposal->id);
$proposal->url = route('proposal.pdf', $proposalId);
$proposalArr = [
'proposal_name' => $proposal->name,
'proposal_number' => $proposal->proposal,
'proposal_url' => $proposal->url,
];
// dd($proposalArr);
$resp = \App\Models\Utility::sendEmailTemplate('proposal_sent', [$customer->id => $customer->email], $proposalArr);
return redirect()->back()->with('success', __('Proposal successfully sent.') . (($resp['is_success'] == false && !empty($resp['error'])) ? '
' . $resp['error'] . '' : ''));
}
return redirect()->back()->with('success', __('Proposal successfully sent.') );
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function resent($id)
{
if(\Auth::user()->can('send proposal'))
{
$proposal = Proposal::where('id', $id)->first();
$customer = Customer::where('id', $proposal->customer_id)->first();
$proposal->name = !empty($customer) ? $customer->name : '';
$proposal->proposal = \Auth::user()->proposalNumberFormat($proposal->proposal_id);
$proposalId = Crypt::encrypt($proposal->id);
$proposal->url = route('proposal.pdf', $proposalId);
// Send Email
$setings = Utility::settings();
if($setings['proposal_sent'] == 1)
{
$customer = Customer::where('id', $proposal->customer_id)->first();
$proposal->name = !empty($customer) ? $customer->name : '';
$proposal->proposal = \Auth::user()->proposalNumberFormat($proposal->proposal_id);
$proposalId = Crypt::encrypt($proposal->id);
$proposal->url = route('proposal.pdf', $proposalId);
$proposalArr = [
'proposal_name' => $proposal->name,
'proposal_number' => $proposal->proposal,
'proposal_url' => $proposal->url,
];
// dd($proposalArr);
$resp = \App\Models\Utility::sendEmailTemplate('proposal_sent', [$customer->id => $customer->email], $proposalArr);
return redirect()->back()->with('success', __('Proposal successfully sent.') . (($resp['is_success'] == false && !empty($resp['error'])) ? '
' . $resp['error'] . '' : ''));
}
return redirect()->back()->with('success', __('Proposal successfully sent.') );
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function shippingDisplay(Request $request, $id)
{
$proposal = Proposal::find($id);
if($request->is_display == 'true')
{
$proposal->shipping_display = 1;
}
else
{
$proposal->shipping_display = 0;
}
$proposal->save();
return redirect()->back()->with('success', __('Shipping address status successfully changed.'));
}
public function duplicate($proposal_id)
{
if(\Auth::user()->can('duplicate proposal'))
{
$proposal = Proposal::where('id', $proposal_id)->first();
$duplicateProposal = new Proposal();
$duplicateProposal->proposal_id = $this->proposalNumber();
$duplicateProposal->customer_id = $proposal['customer_id'];
$duplicateProposal->issue_date = date('Y-m-d');
$duplicateProposal->send_date = null;
$duplicateProposal->category_id = $proposal['category_id'];
$duplicateProposal->status = 0;
$duplicateProposal->created_by = $proposal['created_by'];
$duplicateProposal->save();
if($duplicateProposal)
{
$proposalProduct = ProposalProduct::where('proposal_id', $proposal_id)->get();
foreach($proposalProduct as $product)
{
$duplicateProduct = new ProposalProduct();
$duplicateProduct->proposal_id = $duplicateProposal->id;
$duplicateProduct->product_id = $product->product_id;
$duplicateProduct->quantity = $product->quantity;
$duplicateProduct->tax = $product->tax;
$duplicateProduct->discount = $product->discount;
$duplicateProduct->price = $product->price;
$duplicateProduct->save();
}
}
return redirect()->back()->with('success', __('Proposal duplicate successfully.'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function convert($proposal_id)
{
if(\Auth::user()->can('convert invoice'))
{
$proposal = Proposal::where('id', $proposal_id)->first();
$proposal->is_convert = 1;
$proposal->save();
$convertInvoice = new Invoice();
$convertInvoice->invoice_id = $this->invoiceNumber();
$convertInvoice->customer_id = $proposal['customer_id'];
$convertInvoice->issue_date = date('Y-m-d');
$convertInvoice->due_date = date('Y-m-d');
$convertInvoice->send_date = null;
$convertInvoice->category_id = $proposal['category_id'];
$convertInvoice->status = 0;
$convertInvoice->created_by = $proposal['created_by'];
$convertInvoice->save();
$proposal->converted_invoice_id = $convertInvoice->id;
$proposal->save();
if($convertInvoice)
{
$proposalProduct = ProposalProduct::where('proposal_id', $proposal_id)->get();
foreach($proposalProduct as $product)
{
$duplicateProduct = new InvoiceProduct();
$duplicateProduct->invoice_id = $convertInvoice->id;
$duplicateProduct->product_id = $product->product_id;
$duplicateProduct->quantity = $product->quantity;
$duplicateProduct->tax = $product->tax;
$duplicateProduct->discount = $product->discount;
$duplicateProduct->price = $product->price;
$duplicateProduct->save();
//inventory management (Quantity)
Utility::total_quantity('minus',$duplicateProduct->quantity,$duplicateProduct->product_id);
//Product Stock Report
$type='invoice';
$type_id = $convertInvoice->id;
StockReport::where('type','=','invoice')->where('type_id' ,'=', $convertInvoice->id)->delete();
$description= $duplicateProduct->quantity.''.__(' quantity sold in').' ' . \Auth::user()->proposalNumberFormat($proposal->proposal_id).' '.__('Proposal convert to invoice').' '. \Auth::user()->invoiceNumberFormat($convertInvoice->invoice_id);
Utility::addProductStock( $duplicateProduct->product_id,$duplicateProduct->quantity,$type,$description,$type_id);
}
}
return redirect()->back()->with('success', __('Proposal to invoice convert successfully.'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function statusChange(Request $request, $id)
{
$status = $request->status;
$proposal = Proposal::find($id);
$proposal->status = $status;
$proposal->save();
return redirect()->back()->with('success', __('Proposal status changed successfully.'));
}
public function previewProposal($template, $color)
{
$objUser = \Auth::user();
$settings = Utility::settings();
$proposal = new Proposal();
$customer = new \stdClass();
$customer->email = '';
$customer->shipping_name = '';
$customer->shipping_country = '';
$customer->shipping_state = '';
$customer->shipping_city = '';
$customer->shipping_phone = '';
$customer->shipping_zip = '';
$customer->shipping_address = '';
$customer->billing_name = '';
$customer->billing_country = '';
$customer->billing_state = '';
$customer->billing_city = '';
$customer->billing_phone = '';
$customer->billing_zip = '';
$customer->billing_address = '';
$totalTaxPrice = 0;
$taxesData = [];
$items = [];
for($i = 1; $i <= 3; $i++)
{
$item = new \stdClass();
$item->name = 'Item ' . $i;
$item->quantity = 1;
$item->tax = 5;
$item->discount = 50;
$item->price = 100;
$item->unit = 1;
$taxes = [
'Tax 1',
'Tax 2',
];
$itemTaxes = [];
foreach($taxes as $k => $tax)
{
$taxPrice = 10;
$totalTaxPrice += $taxPrice;
$itemTax['name'] = 'Tax ' . $k;
$itemTax['rate'] = '10 %';
$itemTax['price'] = '$10';
$itemTax['tax_price'] = 10;
$itemTaxes[] = $itemTax;
if(array_key_exists('Tax ' . $k, $taxesData))
{
$taxesData['Tax ' . $k] = $taxesData['Tax 1'] + $taxPrice;
}
else
{
$taxesData['Tax ' . $k] = $taxPrice;
}
}
$item->itemTax = $itemTaxes;
$items[] = $item;
}
$proposal->proposal_id = 1;
$proposal->issue_date = date('Y-m-d H:i:s');
$proposal->due_date = date('Y-m-d H:i:s');
$proposal->itemData = $items;
$proposal->totalTaxPrice = 60;
$proposal->totalQuantity = 3;
$proposal->totalRate = 300;
$proposal->totalDiscount = 10;
$proposal->taxesData = $taxesData;
$proposal->created_by = $objUser->creatorId();
$proposal->customField = [];
$customFields = [];
$preview = 1;
$color = '#' . $color;
$font_color = Utility::getFontColor($color);
// $logo = asset(Storage::url('uploads/logo/'));
// $proposal_logo = Utility::getValByName('proposal_logo');
// $company_logo = \App\Models\Utility::GetLogo();
// if(isset($proposal_logo) && !empty($proposal_logo))
// {
// $img = asset(\Storage::url('proposal_logo').'/'. $proposal_logo);
// }
// else
// {
// $img = asset($logo . '/' . (isset($company_logo) && !empty($company_logo) ? $company_logo : 'logo-dark.png'));
// }
$logo = asset(Storage::url('uploads/logo/'));
$company_logo = Utility::getValByName('company_logo_dark');
$proposal_logo = Utility::getValByName('proposal_logo');
if(isset($proposal_logo) && !empty($proposal_logo))
{
$img = Utility::get_file('proposal_logo/') . $proposal_logo;
}
else{
$img = asset($logo . '/' . (isset($company_logo) && !empty($company_logo) ? $company_logo : 'logo-dark.png'));
}
return view('proposal.templates.' . $template, compact('proposal', 'preview', 'color', 'img', 'settings', 'customer', 'font_color', 'customFields'));
}
public function proposal($proposal_id)
{
$settings = Utility::settings();
$proposalId = Crypt::decrypt($proposal_id);
$proposal = Proposal::where('id', $proposalId)->first();
$data = DB::table('settings');
$data = $data->where('created_by', '=', $proposal->created_by);
$data1 = $data->get();
foreach($data1 as $row)
{
$settings[$row->name] = $row->value;
}
$customer = $proposal->customer;
$items = [];
$totalTaxPrice = 0;
$totalQuantity = 0;
$totalRate = 0;
$totalDiscount = 0;
$taxesData = [];
foreach($proposal->items as $product)
{
$item = new \stdClass();
$item->name = !empty($product->product) ? $product->product->name : '';
$item->quantity = $product->quantity;
$item->tax = $product->tax;
$item->unit = !empty($product->product) ? $product->product->unit_id : '';
$item->discount = $product->discount;
$item->price = $product->price;
$item->description = $product->description;
$totalQuantity += $item->quantity;
$totalRate += $item->price;
$totalDiscount += $item->discount;
$taxes = Utility::tax($product->tax);
$itemTaxes = [];
if(!empty($item->tax))
{
foreach($taxes as $tax)
{
$taxPrice = Utility::taxRate($tax->rate, $item->price, $item->quantity,$item->discount);
$totalTaxPrice += $taxPrice;
$itemTax['name'] = $tax->name;
$itemTax['rate'] = $tax->rate . '%';
$itemTax['price'] = Utility::priceFormat($settings, $taxPrice);
$itemTax['tax_price'] =$taxPrice;
$itemTaxes[] = $itemTax;
if(array_key_exists($tax->name, $taxesData))
{
$taxesData[$tax->name] = $taxesData[$tax->name] + $taxPrice;
}
else
{
$taxesData[$tax->name] = $taxPrice;
}
}
$item->itemTax = $itemTaxes;
}
else
{
$item->itemTax = [];
}
$items[] = $item;
}
$proposal->itemData = $items;
$proposal->totalTaxPrice = $totalTaxPrice;
$proposal->totalQuantity = $totalQuantity;
$proposal->totalRate = $totalRate;
$proposal->totalDiscount = $totalDiscount;
$proposal->taxesData = $taxesData;
$proposal->customField = CustomField::getData($proposal, 'proposal');
$proposal->created_by = $proposal->created_by;
$customFields = [];
if(!empty(\Auth::user()))
{
$customFields = CustomField::where('created_by', '=', \Auth::user()->creatorId())->where('module', '=', 'proposal')->get();
}
//Set your logo
// $logo = asset(Storage::url('uploads/logo/'));
// $company_logo = Utility::getValByName('company_logo_dark');
// $img = asset($logo . '/' . (isset($company_logo) && !empty($company_logo) ? $company_logo : 'logo-dark.png'));
$logo = asset(Storage::url('uploads/logo/'));
$company_logo = Utility::getValByName('company_logo_dark');
$settings_data = \App\Models\Utility::settingsById($proposal->created_by);
$proposal_logo = $settings_data['proposal_logo'];
if(isset($proposal_logo) && !empty($proposal_logo))
{
$img = Utility::get_file('proposal_logo/') . $proposal_logo;
}
else{
$img = asset($logo . '/' . (isset($company_logo) && !empty($company_logo) ? $company_logo : 'logo-dark.png'));
}
if($proposal)
{
$color = '#' . $settings['proposal_color'];
$font_color = Utility::getFontColor($color);
return view('proposal.templates.' . $settings['proposal_template'], compact('proposal', 'color', 'settings', 'customer', 'img', 'font_color', 'customFields'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function saveProposalTemplateSettings(Request $request)
{
// dd($request);
$post = $request->all();
unset($post['_token']);
if(isset($post['proposal_template']) && (!isset($post['proposal_color']) || empty($post['proposal_color'])))
{
$post['proposal_color'] = "ffffff";
}
// if($request->proposal_logo)
// {
// $validator = \Validator::make($request->all(), ['proposal_logo' => 'image|mimes:png|max:20480',]);
// if($validator->fails())
// {
// $messages = $validator->getMessageBag();
// return redirect()->back()->with('error', $messages->first());
// }
// $proposal_logo = \Auth::user()->id . '_proposal_logo.png';
// $path = $request->file('proposal_logo')->storeAs('proposal_logo', $proposal_logo);
// $post['proposal_logo'] = $proposal_logo;
// }
if($request->proposal_logo)
{
$dir = 'proposal_logo/';
$proposal_logo = \Auth::user()->id . '_proposal_logo.png';
$validation =[
'mimes:'.'png',
'max:'.'20480',
];
$path = Utility::upload_file($request,'proposal_logo',$proposal_logo,$dir,$validation);
if($path['flag']==0){
return redirect()->back()->with('error', __($path['msg']));
}
$post['proposal_logo'] = $proposal_logo;
}
foreach($post as $key => $data)
{
\DB::insert(
'insert into settings (`value`, `name`,`created_by`) values (?, ?, ?) ON DUPLICATE KEY UPDATE `value` = VALUES(`value`) ', [
$data,
$key,
\Auth::user()->creatorId(),
]
);
}
return redirect()->back()->with('success', __('Proposal Setting updated successfully'));
}
function invoiceNumber()
{
$latest = Invoice::where('created_by', '=', \Auth::user()->creatorId())->latest()->first();
if(!$latest)
{
return 1;
}
return $latest->invoice_id + 1;
}
public function items(Request $request)
{
$items = ProposalProduct::where('proposal_id', $request->proposal_id)->where('product_id', $request->product_id)->first();
return json_encode($items);
}
public function invoiceLink($proposalID)
{
try {
$id = Crypt::decrypt($proposalID);
} catch (\Throwable $th) {
return redirect()->back()->with('error', __('Proposal Not Found.'));
}
$id = Crypt::decrypt($proposalID);
$proposal =Proposal::find($id);
if(!empty($proposal))
{
$user_id = $proposal->created_by;
$user = User::find($user_id);
$customer = $proposal->customer;
$iteams = $proposal->items;
$proposal->customField = CustomField::getData($proposal, 'proposal');
$status = Proposal::$statues;
$customFields = CustomField::where('module', '=', 'proposal')->get();
return view('proposal.customer_proposal',compact('proposal','customer','iteams','customFields','status','user'));
}
else
{
return redirect()->back()->with('error', __('Permission Denied.'));
}
}
public function export()
{
$name = 'proposal_' . date('Y-m-d i:h:s');
$data = Excel::download(new ProposalExport(), $name . '.xlsx'); ob_end_clean();
return $data;
}
}