HEX
Server: Apache/2.4.46 (Ubuntu)
System: Linux localhost 5.11.0-49-generic #55-Ubuntu SMP Wed Jan 12 17:36:34 UTC 2022 x86_64
User: root (0)
PHP: 7.4.16
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
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,
        // ]);
    }
}