File: /var/www/html/fieldsblaze-heroku/app/Http/Controllers/PriceBookController.php
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\PriceBook;
use App\Models\PriceBookEntry;
use App\Models\Customer;
use App\Models\Product;
use Illuminate\Http\Request;
use App\Library\UserLib;
use DB;
class PriceBookController extends Controller
{
protected $userLib;
public function __construct(UserLib $userLib)
{
$this->userLib = $userLib;
}
public function allPriceBook()
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
$PriceBook = PriceBook::select('tbl_price_book.*', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_price_book.Created_by', '=', 'tbl_admin.UserId')
->where('tbl_price_book.IsDeleted', '=', '0')
->orderBy('tbl_price_book.id', 'desc')
->get();
$ActivePriceBook = PriceBook::select('tbl_price_book.*', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_price_book.Created_by', '=', 'tbl_admin.UserId')
->where('tbl_price_book.Status', '=', '1')
->where('tbl_price_book.IsDeleted', '=', '0')
->orderBy('tbl_price_book.id', 'desc')
->get();
$trashPriceBook = PriceBook::select('tbl_price_book.*', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_price_book.Created_by', '=', 'tbl_admin.UserId')
->where('tbl_price_book.IsDeleted', '=', '1')
->orderBy('tbl_price_book.id', 'desc')
->get();
$inactivePriceBook = PriceBook::select('tbl_price_book.*', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_price_book.Created_by', '=', 'tbl_admin.UserId')
->where('tbl_price_book.Status', '=', '0')
->where('tbl_price_book.IsDeleted', '=', '0')
->orderBy('tbl_price_book.id', 'desc')
->get();
return view('admin.all-price-book', ['PriceBook' => $PriceBook, 'InactivePriceBook' => $inactivePriceBook, 'TrashPriceBook' => $trashPriceBook, 'ActivePriceBook' => $ActivePriceBook]);
}
### Active PriceBook
public function activePriceBook()
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
$PriceBook = PriceBook::select('tbl_price_book.*', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_price_book.Created_by', '=', 'tbl_admin.UserId')
->where('tbl_price_book.IsDeleted', '=', '0')
->orderBy('tbl_price_book.id', 'desc')
->get();
$ActivePriceBook = PriceBook::select('tbl_price_book.*', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_price_book.Created_by', '=', 'tbl_admin.UserId')
->where('tbl_price_book.Status', '=', '1')
->where('tbl_price_book.IsDeleted', '=', '0')
->orderBy('tbl_price_book.id', 'desc')
->get();
$trashPriceBook = PriceBook::select('tbl_price_book.*', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_price_book.Created_by', '=', 'tbl_admin.UserId')
->where('tbl_price_book.IsDeleted', '=', '1')
->orderBy('tbl_price_book.id', 'desc')
->get();
$inactivePriceBook = PriceBook::select('tbl_price_book.*', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_price_book.Created_by', '=', 'tbl_admin.UserId')
->where('tbl_price_book.Status', '=', '0')
->where('tbl_price_book.IsDeleted', '=', '0')
->orderBy('tbl_price_book.id', 'desc')
->get();
return view('admin.active-price-book', ['PriceBook' => $PriceBook, 'InactivePriceBook' => $inactivePriceBook, 'TrashPriceBook' => $trashPriceBook, 'ActivePriceBook' => $ActivePriceBook]);
}
#### Inactive Records
public function inactivePriceBook()
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
$PriceBook = PriceBook::select('tbl_price_book.*', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_price_book.Created_by', '=', 'tbl_admin.UserId')
->where('tbl_price_book.IsDeleted', '=', '0')
->orderBy('tbl_price_book.id', 'desc')
->get();
$ActivePriceBook = PriceBook::select('tbl_price_book.*', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_price_book.Created_by', '=', 'tbl_admin.UserId')
->where('tbl_price_book.Status', '=', '1')
->where('tbl_price_book.IsDeleted', '=', '0')
->orderBy('tbl_price_book.id', 'desc')
->get();
$trashPriceBook = PriceBook::select('tbl_price_book.*', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_price_book.Created_by', '=', 'tbl_admin.UserId')
->where('tbl_price_book.IsDeleted', '=', '1')
->orderBy('tbl_price_book.id', 'desc')
->get();
$inactivePriceBook = PriceBook::select('tbl_price_book.*', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_price_book.Created_by', '=', 'tbl_admin.UserId')
->where('tbl_price_book.Status', '=', '0')
->where('tbl_price_book.IsDeleted', '=', '0')
->orderBy('tbl_price_book.id', 'desc')
->get();
return view('admin.inactive-price-book', ['PriceBook' => $PriceBook, 'InactivePriceBook' => $inactivePriceBook, 'TrashPriceBook' => $trashPriceBook, 'ActivePriceBook' => $ActivePriceBook]);
}
### Trash
public function trashPriceBook()
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
$PriceBook = PriceBook::select('tbl_price_book.*', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_price_book.Created_by', '=', 'tbl_admin.UserId')
->where('tbl_price_book.IsDeleted', '=', '0')
->orderBy('tbl_price_book.id', 'desc')
->get();
$ActivePriceBook = PriceBook::select('tbl_price_book.*', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_price_book.Created_by', '=', 'tbl_admin.UserId')
->where('tbl_price_book.Status', '=', '1')
->where('tbl_price_book.IsDeleted', '=', '0')
->orderBy('tbl_price_book.id', 'desc')
->get();
$trashPriceBook = PriceBook::select('tbl_price_book.*', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_price_book.Created_by', '=', 'tbl_admin.UserId')
->where('tbl_price_book.IsDeleted', '=', '1')
->orderBy('tbl_price_book.id', 'desc')
->get();
$inactivePriceBook = PriceBook::select('tbl_price_book.*', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->leftJoin('tbl_admin', 'tbl_price_book.Created_by', '=', 'tbl_admin.UserId')
->where('tbl_price_book.Status', '=', '0')
->where('tbl_price_book.IsDeleted', '=', '0')
->orderBy('tbl_price_book.id', 'desc')
->get();
return view('admin.trash-price-book', ['PriceBook' => $PriceBook, 'InactivePriceBook' => $inactivePriceBook, 'TrashPriceBook' => $trashPriceBook, 'ActivePriceBook' => $ActivePriceBook]);
}
#### View PriceBook
public function viewPriceBook($PriceBookId)
{
$ViewPriceBook = PriceBook::select('tbl_price_book.*', 'tbl_admin.FirstName as Updated_by', 'tbl_admin.FirstName as Created_by')
->where('PriceBookId', $PriceBookId)
->leftJoin('tbl_admin', 'tbl_price_book.Created_by', '=', 'tbl_admin.UserId')
->get()->first();
// Get the Associated Customer
$GetCustomer = Customer::select('tbl_customer.*')
->where('PriceBookId', $PriceBookId)
->orderBy('CustomerName')
->get();
// if ($GetCustomer) {
// foreach ($GetCustomer as $key => $Customer) {
// echo ucfirst($Customer->CustomerName)."<br/>" ;
// }
// }
// Get the Associated Product
$GetProduct = PriceBookEntry::select('tbl_price_book_entry.*', 'tbl_products.ProductName as ProductName')
->where('PriceBookId', $PriceBookId)
->leftJoin('tbl_products', 'tbl_price_book_entry.ProductId', '=', 'tbl_products.ProductId')
->orderBy('tbl_products.ProductName')
->get();
// if ($GetProduct) {
// foreach ($GetProduct as $key => $Product) {
// echo ucfirst($Product->ProductName)."<br/> " ;
// }
// }
// exit();
return view('admin.view-pricebook', ['ViewPriceBook' => $ViewPriceBook, 'GetCustomer' => $GetCustomer, 'GetProduct' => $GetProduct]);
}
### Store New Records
public function storePriceBook(Request $request)
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
$g_PriceBookId = $this->userLib->useridGenrator();
$PriceBookId = $g_PriceBookId;
$PriceBook = new PriceBook;
$PriceBook->PriceBookId = $PriceBookId;
$PriceBook->PriceBookName = $request->input('name');
$PriceBook->Description = $request->input('description');
$PriceBook->Created_by = session('UserId');
$PriceBook->Updated_by = session('UserId');
$PriceBook->IsDeleted = '0';
if ($request->has('statusPriceBook')) {
$PriceBook->Status = '1';
} else {
$PriceBook->Status = '0';
}
$PriceBook->save();
$PriceBookName = $request->input('name');
$Description = $request->input('description');
$IsDeleted = '0';
$Status = '1';
$IsActive = 'true';
DB::connection('pgsql')->insert("insert into salesforce.Pricebook2 (External_Price_Book_Id__c,Name,Description,Is_Deleted__c,Status__c,IsActive) values ('$PriceBookId','$PriceBookName','$Description','$IsDeleted','$Status','$IsActive')");
//return redirect()->back()->with('status_success');
return response()->json('status_success');
}
#### Change Status
public function statusUpdatePriceBook($id)
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
$PriceBook = PriceBook::find($id);
if ($PriceBook->Status == '1') {
$Status = '0';
} else {
$Status = '1';
}
$values = array('Status' => $Status);
PriceBook::find($id)->update($values);
return redirect()->back();
}
#### Delete Temporary
public function deletePriceBook($id)
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
$CreatedDate = date('Y-m-d H:i:s', time());
$pricebook = array();
$pricebook['Updated_at'] = $CreatedDate;
$pricebook['IsDeleted'] = '1';
$pricebook['Status'] = '0';
$delete_pricebook = PriceBook::where('PriceBookId', $id)->update($pricebook);
DB::connection('pgsql')->update("update salesforce.Pricebook2 set Is_Deleted__c='1',IsActive='false,Status__c='0' where External_Price_Book_Id__c = '$id'");
if ($delete_pricebook) {
PriceBookEntry::where('PriceBookId', $id)->update($pricebook);
}
}
#### Delete Selected PriceBook
public function deleteSelectedPriceBook(Request $request)
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
$id = $request->input('SelectedPriceBook');
if ($id) {
foreach ($id as $PriceBookId) {
$GetCustomerPriceBook = Customer::select('tbl_customer.*')
->where('PriceBookId', $PriceBookId)
->get()->first();
if (!$GetCustomerPriceBook) {
$checkData = PriceBook::select('tbl_price_book.*')
->where('PriceBookId', '=', $PriceBookId)
->get()->first();
if ($checkData->IsDeleted == '0') {
$UpdatedDate = date(
'Y-m-d H:i:s',
time()
);
$data = array();
$data['Updated_at'] = $UpdatedDate;
$data['Status'] = '0';
$data['IsDeleted'] = '1';
$selected_entry = PriceBook::where('PriceBookId', $PriceBookId)->update($data);
if ($selected_entry) {
PriceBookEntry::where('PriceBookId', $PriceBookId)->update($data);
}
} else {
$selected_entry = PriceBook::select('tbl_price_book.*')
->where('PriceBookId', '=', $PriceBookId)
->get()->first();
$selected_entry->delete();
}
}
}
}
return redirect()->back()->with('status_success');
}
#### Restore
public function restorePriceBook($id)
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
$CreatedDate = date('Y-m-d H:i:s', time());
$value = array();
$value['Updated_at'] = $CreatedDate;
$value['IsDeleted'] = '0';
PriceBook::where('PriceBookId', $id)->update($value);
DB::connection('pgsql')->update("update salesforce.Pricebook2 set Is_Deleted__c='0',IsActive='true',Status__c='1' where External_Price_Book_Id__c = '$id'");
}
#### Delete Permanent
public function destroyPriceBook($id)
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
PriceBook::where('PriceBookId', $id)->delete();
}
### Edit Records
public function editPriceBook($id)
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
$PriceBook = PriceBook::select('tbl_price_book.*')
->where('PriceBookId', $id)
->get()->first();
return response()->json([
'status' => 200,
'PriceBook' => $PriceBook,
]);
}
### Update Records
public function updatePriceBook(Request $request)
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
//$user_id = Auth::id();
$book_id = $request->input('id');
$data['PriceBookName'] = $request->input('name');
$data['Description'] = $request->input('description');
$data['Updated_by'] = session('UserId');
if ($request->has('editStatus')) {
$data['Status'] = '1';
} else {
$data['Status'] = '0';
}
$PriceBookName = $request->input('name');
$Description = $request->input('description');
$Updated_by = session('UserId');
PriceBook::where('PriceBookId', $book_id)->update($data);
DB::connection('pgsql')->update("update salesforce.Pricebook2 set Name='$PriceBookName',Description='$Description',Updated_By__c ='$Updated_by' where External_Price_Book_Id__c = '$book_id'");
return redirect()->back()->with('status_success');
}
#### Check PriceBook Name
public function checkPriceBook(Request $request)
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
$GetPriceBookName = $request->input('name');
$PriceBook = PriceBook::select('tbl_price_book.*')
->where('PriceBookName', '=', $GetPriceBookName)
->get()->first();
if($PriceBook){
return response()->json(array("exists" => true));
}else{
return response()->json(array("exists" => false));
}
}
### Check PriceBook Name in edit form
public function checkPriceBookEdit(Request $request)
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
$GetPriceBookName = $request->input('name');
$GetPriceBookId = $request->input('id');
$PriceBook = PriceBook::select('tbl_price_book.*')
->where('PriceBookName', '=', $GetPriceBookName)
->where('PriceBookId','!=', $GetPriceBookId)
->get()->first();
if($PriceBook){
return response()->json(array("exists" => true));
}else{
return response()->json(array("exists" => false));
}
}
#### Check Customer PriceBook
public function checkCustomerPriceBook($id)
{
if (empty(session('UserId'))) {
return redirect('/admin/logout');
}
$GetCustomerPriceBook = Customer::select('tbl_customer.*')
->where('PriceBookId', $id)
->get()->first();
if ($GetCustomerPriceBook) {
return response()->json(array("exists" => true));
} else {
return response()->json(array("exists" => false));
}
// return response()->json([
// 'status' => 200,
// 'GetCustomerPriceBook' => $GetCustomerPriceBook,
// ]);
}
}