KUJUNTI.ID MINISH3LL
Path : /var/www/html/mini-moneyexchange/app/Exports/
(S)h3ll Cr3at0r :
F!le Upl0ad :

B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H

Current File : /var/www/html/mini-moneyexchange/app/Exports/TransactionExport.php


<?php

namespace App\Exports;
use App\Models\Transaction;
use App\Models\MoneyExchangeList;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;

// use Maatwebsite\Excel\Concerns\WithDrawings;
// use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;

use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\AfterSheet;

use Illuminate\Support\Facades\Auth;
class TransactionExport implements FromQuery,WithHeadings, WithMapping,WithEvents
 //,WithDrawings
{
    private $current_row = 0;
    private $start_date;
    private $end_date;
    private $bank_account_id;
    private $user_id;
    private $moneyExhangeLists;
    private $orders;
    public function __construct($start_date, $end_date, $bank_account_id, $user_id=null)
    {
        $this->start_date = $start_date;
        $this->end_date = $end_date;
        $this->bank_account_id = $bank_account_id;
        $this->user_id = $user_id;
    }
     public function registerEvents(): array
    {
        return [
            AfterSheet::class=> function(AfterSheet $event) {  
                $event->sheet->getDelegate()->getStyle('A1:B1')
                        ->getFill()
                        ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
                        ->getStartColor()
                        ->setARGB('153654');
                $event->sheet->getDelegate()->getStyle('C1:U1')
                        ->getFill()
                        ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
                        ->getStartColor()
                        ->setARGB('679ECE');
                $event->sheet->getDelegate()->getStyle('V1:Z1')
                        ->getFill()
                        ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
                        ->getStartColor()
                        ->setARGB('0383F0');
  
            },
        ];
    }
    //  public function drawings()
    // {
    //     $drawing = new Drawing();
    //     $drawing->setName('Logo');
    //     $drawing->setDescription('Logo');
    //     $drawing->setPath(public_path('/logo.png'));
    //     $drawing->setHeight(50);
    //     $drawing->setCoordinates('A1');

    //     return $drawing;
    // }


    /**
    * @return \Illuminate\Support\Collection
    */  
    // use Exportable;

    public function headings(): array
    {
        $this->moneyExhangeLists = MoneyExchangeList::where('is_active', true)->orderBy('order')->get();
        $cols= ['ID',"Customer",__('message.exchange from').'/'.__('message.exchange to')];
        foreach($this->moneyExhangeLists as $moneyExhangeList) {
            $cols = array_merge($cols, [
                    $moneyExhangeList->exchangeFromCurrency->currency_code??'#',
                    "Rate",
                    $moneyExhangeList->exchangeToCurrency->currency_code??'#',
                ]);
        }
        $cols = array_merge($cols,['THB','USD','KHR', __('message.created by'),__('message.created date')]);
        $this->orders = $this->moneyExhangeLists->pluck('order')->toArray();
        return $cols;
        // return [
        //     'No',
        //     __('message.customer'),
        //     // __('message.bank account'),
        //     __('message.exchange from').'/'.__('message.exchange to'),
        //     __('message.amount'),
        //     __('message.exchange rate'),
        //     __('message.received money'),
        //     __('message.created by'),
        //     __('message.created date'),
        // ];
    }
        

    public function query()
    {
        $bank_account_id = $this->bank_account_id;
        $user_id = $this->user_id;
        $start_date = $this->start_date;
        $end_date= $this->end_date;      

        if(Auth::user()->role_id==2){
            $datas = Transaction::query();
        }
        else {
            $datas = Transaction::where('user_id',Auth::id());
        }
        if($bank_account_id){
            $datas->where('bank_account_id', $bank_account_id);
        }
        if($user_id){
            $datas->where('user_id', $user_id);
        }
        if($start_date!=null){
            // dd($start_date,$end_date);
            $datas->whereDate("created_at", ">=", $start_date." 00:00:00");
        } 
        if($end_date!=null){
            $datas->whereDate("created_at", "<=", $end_date." 23:59:59");
        }
        return $datas->orderBy('id', 'desc');
    }
    
    public function map($transaction): array
    {

        $this->current_row ++ ;
        $moneyExchangeList= $transaction->moneyExchangeList;
        $currencyFrom= $moneyExchangeList->exchangeFromCurrency;
        $currencyTo= $moneyExchangeList->exchangeToCurrency;
        $startExchangeColumn = array_search($moneyExchangeList->order, $this->orders);
        // dd($startExchangeColumn, (($startExchangeColumn+1)*3)+1);
        if($startExchangeColumn==0){
            return [
                $this->current_row,
                $transaction->customer_level==1?__('message.general'):__('message.special'),
                ($moneyExchangeList->exchangeFromCurrency->currency_code??'').'/'.($moneyExchangeList->exchangeToCurrency->currency_code??''),

                number_format($transaction->amount,$currencyFrom->decimal_precision).' '.$currencyFrom->currency_code,
                number_format($transaction->exchange_rate,2),
                number_format($transaction->amount_after_exchange,$currencyTo->decimal_precision).' '.$currencyTo->currency_code,

                "",
                "",
                "",
                
                "",
                "",
                "",
                
                "",
                "",
                "",
                
                "",
                "",
                "",
                
                "",
                "",
                "",
                number_format($transaction->credit_thb,2),
                number_format($transaction->credit_usd,2),
                number_format($transaction->credit_khr,2),
                $transaction->user->name??'#',
                $transaction->created_at->format('d/m/Y H:i'),
            ];
        }
        elseif($startExchangeColumn==1){
            return [
                $this->current_row,
                $transaction->customer_level==1?__('message.general'):__('message.special'),
                ($moneyExchangeList->exchangeFromCurrency->currency_code??'').'/'.($moneyExchangeList->exchangeToCurrency->currency_code??''),       

                "",
                "",
                "",

                number_format($transaction->amount,$currencyFrom->decimal_precision).' '.$currencyFrom->currency_code,
                number_format($transaction->exchange_rate,2),
                number_format($transaction->amount_after_exchange,$currencyTo->decimal_precision).' '.$currencyTo->currency_code,

                "",
                "",
                "",
                
                "",
                "",
                "",
                
                "",
                "",
                "",
                
                "",
                "",
                "",
                number_format($transaction->credit_thb,2),
                number_format($transaction->credit_usd,2),
                number_format($transaction->credit_khr,2),
                $transaction->user->name??'#',
                $transaction->created_at->format('d/m/Y H:i'),
            ];
        }
        elseif($startExchangeColumn==2){
            return [
                $this->current_row,
                $transaction->customer_level==1?__('message.general'):__('message.special'),
                ($moneyExchangeList->exchangeFromCurrency->currency_code??'').'/'.($moneyExchangeList->exchangeToCurrency->currency_code??''),   
                "",
                "",
                "",

                "",
                "",
                "",
                
                number_format($transaction->amount,$currencyFrom->decimal_precision).' '.$currencyFrom->currency_code,
                number_format($transaction->exchange_rate,2),
                number_format($transaction->amount_after_exchange,$currencyTo->decimal_precision).' '.$currencyTo->currency_code,

                "",
                "",
                "",
                
                "",
                "",
                "",
                
                "",
                "",
                "",
                number_format($transaction->credit_thb,2),
                number_format($transaction->credit_usd,2),
                number_format($transaction->credit_khr,2),
                $transaction->user->name??'#',
                $transaction->created_at->format('d/m/Y H:i'),
            ];
        }
        elseif($startExchangeColumn==3){
            return [
                $this->current_row,
                $transaction->customer_level==1?__('message.general'):__('message.special'),
                ($moneyExchangeList->exchangeFromCurrency->currency_code??'').'/'.($moneyExchangeList->exchangeToCurrency->currency_code??''),

                "",
                "",
                "",
                
                "",
                "",
                "",
                
                "",
                "",
                "",
                number_format($transaction->amount,$currencyFrom->decimal_precision).' '.$currencyFrom->currency_code,
                number_format($transaction->exchange_rate,2),
                number_format($transaction->amount_after_exchange,$currencyTo->decimal_precision).' '.$currencyTo->currency_code,

                "",
                "",
                "",

                "",
                "",
                "",
                number_format($transaction->credit_thb,2),
                number_format($transaction->credit_usd,2),
                number_format($transaction->credit_khr,2),
                $transaction->user->name??'#',
                $transaction->created_at->format('d/m/Y H:i'),
            ];
        }
        elseif($startExchangeColumn==4){
            return [
                $this->current_row,
                $transaction->customer_level==1?__('message.general'):__('message.special'),
                ($moneyExchangeList->exchangeFromCurrency->currency_code??'').'/'.($moneyExchangeList->exchangeToCurrency->currency_code??''),                
                

                "",
                "",
                "",
                
                "",
                "",
                "",

                "",
                "",
                "",
                
                "",
                "",
                "",
                number_format($transaction->amount,$currencyFrom->decimal_precision).' '.$currencyFrom->currency_code,
                number_format($transaction->exchange_rate,2),
                number_format($transaction->amount_after_exchange,$currencyTo->decimal_precision).' '.$currencyTo->currency_code,

                
                "",
                "",
                "",
                number_format($transaction->credit_thb,2),
                number_format($transaction->credit_usd,2),
                number_format($transaction->credit_khr,2),
                $transaction->user->name??'#',
                $transaction->created_at->format('d/m/Y H:i'),
            ];
        }
        elseif($startExchangeColumn==5){
            return [
                $this->current_row,
                $transaction->customer_level==1?__('message.general'):__('message.special'),
                ($moneyExchangeList->exchangeFromCurrency->currency_code??'').'/'.($moneyExchangeList->exchangeToCurrency->currency_code??''),                
                

                "",
                "",
                "",
                
                "",
                "",
                "",

                "",
                "",
                "",
                
                "",
                "",
                "",


                "",
                "",
                "",
                number_format($transaction->amount,$currencyFrom->decimal_precision).' '.$currencyFrom->currency_code,
                number_format($transaction->exchange_rate,2),
                number_format($transaction->amount_after_exchange,$currencyTo->decimal_precision).' '.$currencyTo->currency_code,

                number_format($transaction->credit_thb,2),
                number_format($transaction->credit_usd,2),
                number_format($transaction->credit_khr,2),
                $transaction->user->name??'#',
                $transaction->created_at->format('d/m/Y H:i'),
            ];
        }
    }

}

© KUJUNTI.ID