/
home
/
corsairdevelopme
/
public_html
/
admin-csrnow.corsair-development.com
/
app__b301cdf
/
Services
/
Upload File
HOME
<?php namespace App\Services; use App\Mail\JobEmail; use App\Models\Amplivo\Member; use App\Models\Amplivo\User as AmplivoUser; use App\Models\BankAccount; use App\Models\Country; use App\Models\CSRCirculation; use App\Models\CsrRetirementDetail; use App\Models\Currencies; use App\Models\Language; use App\Models\Order; use App\Models\Transaction; use App\Models\MintingCsr25; use App\Models\ProductStaticOption; use App\Models\User; use App\Models\UserCompany; use Illuminate\Support\Facades\Auth; use App\Models\UserWalletAddress; use App\Models\WalletTransaction; use App\Models\WithdrawalBatch; use App\Services\Database\Facade\TouchDB; use Carbon\Carbon; use Exception; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Session; use Illuminate\Support\Facades\Storage; use Spatie\Activitylog\Models\Activity; use App\Services\ThirdPartyApiServices\Etherscan\EtherscanApi; use Zip; class Export { public function createfile($investorShareLog, $columns, $fieldsTable, $keys, $table) { $file = fopen('php://output', 'w'); fputcsv($file, $columns); $counter = 1; foreach ($investorShareLog as $mainKey => $investment) { $row = $this->dataFormet($fieldsTable, $investment, $counter, $table); $temp = array(); foreach ($keys as $itm) { if ($itm != 'id') { if ($itm == 'index') { $temp[] = $row['counter']; } else { $temp[] = $row[$itm] ?? ''; } } else { $temp[] = $row['counter']; } } fputcsv($file, $temp); $counter++; } fclose($file); return $file; } public function dataFormet($fieldsTable, $investment, $counter, $table) { $row['counter'] = $counter; foreach ($fieldsTable['data'] as $key => $item) { if (isset($item['status']) && $item['status']) { if (isset($item['relation']) && $item['relation']) { $row[$key] = !empty($investment[$item['index']][$item['relationKey']]) ? $investment[$item['index']][$item['relationKey']] : ''; $row[$key] = $item['replace'][$row[$key]] ?? ''; } else { $row[$key] = $item['replace'][$investment[$item['index']]] ?? $investment[$item['index']]; } } elseif (isset($item['relation']) && $item['relation']) { $row[$key] = !empty($investment[$item['index']][$item['relationKey']]) ? $investment[$item['index']][$item['relationKey']] : ''; if ($item['type'] == 'date') { $row[$key] = !empty($row[$key]) ? Carbon::parse($row[$key])->format('d/m/Y') : ''; } if ($item['type'] == 'float') { $row[$key] = !empty($row[$key]) ? number_format($row[$key], 2) : 0; } if ($item['type'] == 'number') { $row[$key] = !empty($row[$key]) ? number_format($row[$key]) : 0; } } elseif ($item['type'] == 'date') { $row[$key] = !empty($investment[$item['index']]) ? Carbon::parse($investment[$item['index']])->format('d/m/Y') : ''; } elseif ($item['type'] == 'datetime') { $row[$key] = !empty($investment[$item['index']]) ? Carbon::parse($investment[$item['index']])->format('d-m-Y h:i:s A') : ''; } elseif ($item['type'] == 'float') { $row[$key] = !empty($investment[$item['index']]) ? number_format($investment[$item['index']], 2) : 0; } elseif ($item['type'] == 'number') { $row[$key] = !empty($investment[$item['index']]) ? number_format($investment[$item['index']]) : 0; } elseif ($key == 'role' && ($table == 'users' || $table == 'users_sm' || $table == 'users_archived' || $table == 'users_sm_archived')) { $allRoles = $investment['roles']; $displayRoles = []; foreach ($allRoles as $showRole) { $displayRoles[] = $showRole['name']; } $row[$key] = !empty($investment['roles'][0]['name']) ? implode(',', $displayRoles) : ''; } elseif ($key == 'first_name' && ($table == 'users' || $table == 'users_sm' || $table == 'users_archived' || $table == 'users_sm_archived' || $table == 'users_sa' || $table == 'users_sa_archived')) { $row[$key] = $investment->first_name . ' ' . $investment->last_name; } elseif ($key == 'phone' && ($table == 'users_sa' || $table == 'users_sa_archived')) { $row[$key] = $investment->profile ? $investment->profile->phone : ''; } elseif ($key == 'gender' && ($table == 'users_sa' || $table == 'users_sa_archived')) { $row[$key] = $investment->profile ? $investment->profile->gender : ''; } elseif ($key == 'date_of_birth' && ($table == 'users_sa' || $table == 'users_sa_archived')) { $row[$key] = $investment->profile ? $investment->profile->date_of_birth : ''; } elseif ($key == 'is_active' && ($table == 'users_sa' || $table == 'users_sa_archived')) { if ($investment->is_active == '1') { $row[$key] = 'Active'; } else { $row[$key] = 'Inactive'; } } elseif ($key == 'status' && ($table == 'su_tokens' || $table == 'su_tokens_archived')) { if ($investment->status == '1') { $row[$key] = 'Active'; } else if ($investment->status == '2') { $row[$key] = 'Archived'; } else { $row[$key] = 'Inactive'; } } elseif ($key == 'name' && ($table == '' || $table == 'su_tokens_archived')) { $row[$key] = $investment->symbol . ' ' . $investment->type; } elseif ($key == 'meta_data' && ($table == 'wallet_transaction')) { if (isset($investment->meta_data)) { $metaData = $investment->meta_data; if (is_array($metaData) && !empty($metaData['user_wallet_address'])) { $userwalletaddId = $metaData['user_wallet_address']; $userWalletAddress = UserWalletAddress::where('id', $userwalletaddId)->value('address'); } else { $userWalletAddress = ""; } } else { $userWalletAddress = ""; } $row[$key] = $userWalletAddress; } elseif ($table == "su_languages" && $key == "TranslatorManager") { $row[$key] = $investment['translatorManger']['first_name'] ?? 'NA'; } elseif ($table == "su_languages" && $key == "Translator") { $row[$key] = $investment['translator']['first_name'] ?? 'NA'; } elseif ($table == "su_language_archive" && $key == "TranslatorManager") { $row[$key] = $investment['translatorManger']['first_name'] ?? 'NA'; } elseif ($table == "su_language_archive" && $key == "Translator") { $row[$key] = $investment['translator']['first_name'] ?? 'NA'; } elseif ($key == 'languages.name' && ($table == 'country_settings_sm')) { $row[$key] = $investment['languages']['name'] ?? 'NA'; } elseif ($key == 'introduced_by' && ($table == 'sa_order_invoice' || $table == 'sa_order_invoice_archive' || $table == 'invoice_report')) { $row[$key] = $investment['user']['profile']['introducedBy']['username'] ?? 'NA'; }elseif($key == 'european_vat_number' && ($table == 'invoice_report')){ $row[$key] = $investment['user']['companies']['european_vat_number'] ?? 'NA'; }elseif($key == 'business_name' && ($table == 'invoice_report')){ $row[$key] = $investment['user']['companies']['business_name'] ?? 'NA'; }elseif($key == 'country_id' && ($table == 'invoice_report')){ $row[$key] = $investment['user']['useraddress']['country']['country_name'] ?? 'NA'; }elseif($key == 'state_id' && ($table == 'invoice_report')){ $row[$key] = $investment['user']['useraddress']['state']['name'] ?? 'NA'; }elseif($key == 'city_id' && ($table == 'invoice_report')){ $row[$key] = $investment['user']['useraddress']['city']['name'] ?? 'NA'; }elseif($key == 'city' && ($table == 'invoice_report')){ $row[$key] = $investment['user']['useraddress']['city'] ?? 'NA'; }elseif($key == 'postal_code' && ($table == 'invoice_report')){ $row[$key] = $investment['user']['useraddress']['postal_code'] ?? 'NA'; }elseif($key == 'address_2' && ($table == 'invoice_report')){ $row[$key] = $investment['user']['useraddress']['address_2'] ?? 'NA'; }elseif($key == 'address_1' && ($table == 'invoice_report')){ $row[$key] = $investment['user']['useraddress']['address_1'] ?? 'NA'; } elseif ($key == 'company_status' && ($table == 'sa_csr_retirement_setting')) { if ($investment->company_status == 1) { $row[$key] = 'Approved'; } else if ($investment->company_status == 2) { $row[$key] = 'Rejected'; } else { $row[$key] = 'Pending'; } } elseif ($key == 'type' && ($table == 'sa_csr_retirement' || $table == 'sa_csr_retirement_dashboard')) { $row[$key] = $investment['currency']['type'] ?? 'NA'; } elseif ($key == 'retire_amount' && ($table == 'sa_csr_retirement' || $table == 'sa_csr_retirement_dashboard')) { $row[$key] = number_format($investment['retire_amount'], 2); } elseif ($key == 'company_logo' && ($table == 'sa_csr_retirement_setting')) { $row[$key] = asset($investment['company_logo']); } elseif ($key == 'updated_at' && ($table == 'sa_csr_retirement_setting')) { $row[$key] = date('Y-m-d',strtotime($investment['updated_at'])); } elseif ($key == 'name' && ($table == 'sa_csr_retirement_setting')) { $fname = $investment['user']['first_name'] ?? ''; $lname = $investment['user']['last_name'] ?? ''; $row[$key] = $fname . " " . $lname; }elseif ($key == 'full_name' && ($table == 'transaction')) { $fname = $investment['user']['first_name'] ?? ''; $lname = $investment['user']['last_name'] ?? ''; $row[$key] = $fname . " " . $lname; }elseif ($key == 'deliveryStatus' && ($table == 'transaction')) { $row[$key] = 'Delivered'; }elseif ($key == 'deliveryType' && ($table == 'transaction')) { $row[$key] = ucfirst($investment['type']); } elseif ($table == "su_languages" && $key == "TranslatorManager") { $row[$key] = $investment['translatorManger']['name'] ?? 'NA'; } elseif ($table == "su_languages" && $key == "Translator") { $row[$key] = $investment['translator']['name'] ?? 'NA'; } elseif ($table == "su_language_archive" && $key == "TranslatorManager") { $row[$key] = $investment['translatorManger']['name'] ?? 'NA'; } elseif ($table == "su_language_archive" && $key == "Translator") { $row[$key] = $investment['translator']['name'] ?? 'NA'; } elseif ($key == 'is_active' && ($table == 'sm_account_detail' || $table == 'sm_account_detail_archive')) { if ($investment->is_active == 1) { $row[$key] = 'Active'; } else { $row[$key] = 'Inactive'; } } elseif (($table == 'sa_csr_retirement' || $table == 'sa_csr_retirement_dashboard') && $key == 'retire_visibility') { if ($investment->retire_visibility == 1) { $row[$key] = 'Private'; } else if ($investment->retire_visibility == 2) { $row[$key] = 'Restricted'; } else { $row[$key] = 'Public'; } } elseif (($table == 'sa_csr_retirement' || $table == 'sa_csr_retirement_dashboard') && $key == 'retire_status') { if ($investment->retire_status == 1) { $row[$key] = 'Complete'; } else { $row[$key] = 'Incomplete'; } } else { $row[$key] = !empty($investment[$item['index']]) ? $investment[$item['index']] : ''; } if ($table == 'activity_log' && $key == 'causer_id') { $user = User::find($investment->causer_id); $row[$key] = ($user) ? $user->first_name . ' ' . $user->last_name : ''; } elseif ($key == 'causer_id') { $user = User::find($investment->causer_id); $row[$key] = ($user) ? $user->first_name . ' ' . $user->last_name : ''; } if ($table == 'transaction' && $key == 'csr_initial') { $row[$key] = number_format($investment->csr_initial, 2); } if ($table == 'transaction' && $key == 'csr_amount') { $row[$key] = number_format($investment->csr_amount, 2); } if (($table == 'redemption' || $table == 'redemption_dashboard') && $key == 'csr_initial') { $row[$key] = number_format($investment->csr_initial, 2); } if (($table == 'redemption_dashboard') && $key == 'created_at_red_dist_date') { $row[$key] = date('Y-m-d',strtotime($investment['created_at'])); } if (($table == 'redemption' || $table == 'redemption_dashboard') && $key == 'csr_amount') { $row[$key] = number_format($investment->csr_amount, 2); } if ($table == 'invoice_report' && $key == 'net_amount') { $row[$key] = number_format($investment->net_amount, 2); } if ($table == 'invoice_report' && $key == 'vat_amount') { $row[$key] = number_format($investment->vat_amount, 2); } if ($table == 'invoice_report' && $key == 'gross_amount') { $row[$key] = number_format($investment->gross_amount, 2); } if (($table == 'redemption' || $table == 'redemption_dashboard') && $key == 'corp_approved') { if ($investment->corp_approved == 0) { $row[$key] = 'Pending'; } else if ($investment->corp_approved == 1) { $row[$key] = 'Delivered'; } else if ($investment->corp_approved == 2) { $row[$key] = 'Hold'; } else if ($investment->corp_approved == 3) { $row[$key] = 'Cancel'; } } if (($table == 'wallet_transaction_main' || $table == 'wallet_transaction_withdrawal' || $table == 'wallet_transaction' || $table == 'withdrawal_batch_wise' || $table == 'wallet_transaction_withdrawal_dashboard' || $table == 'wallet_transaction_cancel_withdrawal') && $key == 'receive_amount' ) { $amount = $investment->amount - $investment->fee; $row[$key] = number_format($amount, 2, '.', ''); } if (($table == 'wallet_transaction_main' || $table == 'wallet_transaction_withdrawal' || $table == 'wallet_transaction' || $table == 'withdrawal_batch_wise' || $table == 'wallet_transaction_withdrawal_dashboard' || $table == 'wallet_transaction_cancel_withdrawal') && $key == 'amount') { $row[$key] = number_format($investment->amount, 2, '.', ''); } if (($table == 'wallet_transaction_main' || $table == 'wallet_transaction_withdrawal' || $table == 'wallet_transaction' || $table == 'withdrawal_batch_wise' || $table == 'wallet_transaction_withdrawal_dashboard' || $table == 'wallet_transaction_cancel_withdrawal') && $key == 'fee') { $row[$key] = number_format($investment->fee, 2, '.', ''); } if (($table == 'wallet_transaction_main' || $table == 'wallet_transaction_withdrawal' || $table == 'wallet_transaction' || $table == 'withdrawal_batch_wise' || $table == 'wallet_transaction_cancel_withdrawal') && $key == 'rank') { $amplivoUser = AmplivoUser::where('external_id', $investment->user_id)->first(); $member = Member::where('user_id', $amplivoUser->id)->first(); $row[$key] = $member->rank ?? 'NA'; } if (($table == 'completed_withdrawals_batch_wise') && $key == 'noOfWithdrawal') { $row[$key] = count(explode(',',$investment->wallet_transaction_ids)); } if (($table == 'wallet_transaction_main' || $table == 'wallet_transaction_withdrawal' || $table == 'wallet_transaction' || $table == 'wallet_transaction_withdrawal_dashboard' || $table == 'withdrawal_batch_wise' || $table == 'wallet_transaction_cancel_withdrawal') && $key == 'status') { if ($investment->status == 1) { $row[$key] = 'Completed'; } else if ($investment->status == 2) { $row[$key] = 'Pending'; } else if ($investment->status == 3) { $row[$key] = 'Failed'; } else if ($investment->status == 4) { $row[$key] = 'Rejected'; } else if ($investment->status == 5) { $row[$key] = 'Hold'; } else if ($investment->status == 6) { $row[$key] = 'Cancel'; } else if ($investment->status == 7) { $row[$key] = 'In-Process'; } } if (($table == 'wallet_transaction_main' || $table == 'wallet_transaction_withdrawal' || $table == 'wallet_transaction' || $table == 'wallet_transaction_withdrawal_dashboard' || $table == 'withdrawal_batch_wise' || $table == 'wallet_transaction_cancel_withdrawal') && $key == 'user_wallet_address' ) { if (isset($investment->meta_data)) { $metaData = $investment->meta_data; if (is_array($metaData) && !empty($metaData['user_wallet_address'])) { $userwalletaddId = $metaData['user_wallet_address']; $userWalletAddress = UserWalletAddress::where('id', $userwalletaddId)->value('address'); } else { $userWalletAddress = ""; } } else { $userWalletAddress = ""; } $row[$key] = $userWalletAddress; } if (($table == 'member_to_member_transfer' ) && $key == 'toUserEmail' ) { $toUserEmail = 'N/A'; if (isset($investment->meta_data)) { $metaData = $investment->meta_data; if (is_array($metaData)) { $description = $metaData['description'] ?? ""; $transferUserId = $metaData['transfer_id'] ?? ''; if($transferUserId){ $toUser = User::find($transferUserId); $toUserEmail = $toUser->email; } } } $row[$key] = $toUserEmail; } if (($table == 'member_to_member_transfer' ) && $key == 'description' ) { $toUserEmail = 'N/A'; if (isset($investment->meta_data)) { $metaData = $investment->meta_data; if (is_array($metaData)) { $description = $metaData['member_transfer_description'] ?? ""; } } $row[$key] = $description; } if ($table == 'wallet_transaction' && $key == 'amount') { if (isset($investment->amount)) { $amount = $investment->amount - $investment->fee; $dueAmount = number_format($amount,2); } else { $dueAmount = 0.00; } $row[$key] = $dueAmount; } if ( ($table == 'wallet_transaction_withdrawal_dashboard' || $table == 'withdrawal_batch_wise' || $table == 'wallet_transaction_withdrawal' || $table == 'wallet_transaction_cancel_withdrawal') && ($key == 'transaction_hash' || $key == 'transactionHash')) { if (isset($investment->meta_data)) { $metaData = $investment->meta_data; if (is_array($metaData) && !empty($metaData['transaction_hash'])) { $transactionHash = $metaData['transaction_hash']; } else { $transactionHash = ""; } } else { $transactionHash = ""; } $row[$key] = $transactionHash; } if ( ($table == 'wallet_transaction_cancel_withdrawal') && $key == 'reason' ) { if (isset($investment->meta_data)) { $metaData = $investment->meta_data; if (is_array($metaData) && !empty($metaData['reason'])) { $reason = $metaData['reason']; } else { $reason = ""; } } else { $reason = ""; } $row[$key] = $reason; } if (($table == 'deposit_main' || $table == 'wallet_transaction_deposit_dashboard') && $key == 'amount') { $row[$key] = number_format($investment->amount, 2); } if (($table == 'deposit_main' || $table == 'wallet_transaction_deposit_dashboard') && $key == 'status') { if ($investment->status == 1) { $row[$key] = 'Completed'; } else if ($investment->status == 2) { $row[$key] = 'Pending'; } else if ($investment->status == 6) { $row[$key] = 'Rejected'; }else if ($investment->status == -2) { $row[$key] = 'Submitted'; }else if ($investment->status == -1) { $row[$key] = 'Failed'; }else if ($investment->status == -3) { $row[$key] = 'Cancelled'; } } if (($table == 'deposit_main') && $key == 'user_wallet_address') { if (isset($investment->meta_data)) { $metaData = $investment->meta_data; if (is_array($metaData) && !empty($metaData['user_wallet_address'])) { $userwalletaddId = $metaData['user_wallet_address']; $userWalletAddress = UserWalletAddress::where('id', $userwalletaddId)->value('address'); } else { $userWalletAddress = ""; } } else { $userWalletAddress = ""; } $row[$key] = $userWalletAddress; } if (($table == 'deposit_main' || $table == 'wallet_transaction_deposit_dashboard') && $key == 'transaction_hash' ) { if (isset($investment->meta_data)) { $metaData = $investment->meta_data; if (is_array($metaData) && !empty($metaData['transaction_hash'])) { $transactionHash = $metaData['transaction_hash']; } else { $transactionHash = ""; } } else { $transactionHash = ""; } $row[$key] = $transactionHash; } if ($table == 'user_wallet_report' && $key == 'total_wallet_balance') { $row[$key] = number_format($investment->total_wallet_balance ?? 0, 2); }if ($table == 'user_wallet_report' && $key == 'available_wallet_balance') { $row[$key] = number_format($investment->available_balance ?? 0, 2); }if (($table == 'user_wallet_report' || $table == 'withdrawals_report') && $key == 'total_withdrawal') { $row[$key] = number_format($investment->total_withdrawal ?? 0, 2); }if ($table == 'user_wallet_report' && $key == 'pending_withdrawal') { $row[$key] = number_format($investment->pending_withdrawal ?? 0, 2); }if ($table == 'user_wallet_report' && $key == 'total_deposit') { $row[$key] = number_format($investment->total_deposit ?? 0, 2); }if ($table == 'user_wallet_report' && $key == 'total_redemptions') { $row[$key] = number_format($investment->total_redemptions ?? 0, 2); }if ($table == 'user_wallet_report' && $key == 'pending_redemptions') { $row[$key] = number_format($investment->pending_redemptions ?? 0, 2); }if ($table == 'user_wallet_report' && $key == 'pending_deposit') { $row[$key] = number_format($investment->pending_deposit ?? 0, 2); }if($table == 'withdrawals_report' && $key == 'fullname'){ $fname = $investment['first_name'] ?? ''; $lname = $investment['last_name'] ?? ''; $row[$key] = $fname . " " . $lname; } } return $row; } /** * @throws Exception */ public function jobfile($filter, $defaultSearch, $columns, $keys, $table, $user, $type, $ids,$currencyId,$userId,$batchId) { $fieldsTable = $this->exportData($filter, $defaultSearch, $table, $user, $ids,$currencyId,$userId,$batchId); $investorShareLog = $fieldsTable['query']->get(); $page = $fieldsTable['page']->pageName ?? 'Logs'; if ($table == 'activity_log_my' || $table == 'activity_log' || $table == 'activity_log_dashboard') { $page = 'My Logs'; } else if ($table == 'sa_csr_retirement_setting') { $page = 'Review Logo & Url'; } else if ($table == 'country_settings_sm' || $table == 'country_settings_sm_archive') { $page = 'Countries'; } else if ($table == 'transaction') { $page = 'Transaction'; } else if ($table == 'redemption' || $table == 'redemption_dashboard') { $page = 'Redemption'; } else if ($table == 'deposit_main') { $page = 'Deposits'; }else if($table == 'user_wallet_report'){ $page = 'User Wallet Report'; }else if ($table == 'product_static_option' || $table == 'product_static_option_archive'){ $page = 'Product Static option'; }else if($table == 'wallet_transaction_withdrawal'){ $page = 'Withdrawals'; }else if($table == 'wallet_transaction_cancel_withdrawal'){ $page = 'Cancelled Withdrawals'; }else if($table == 'invoice_report'){ $page = 'Invoice Report'; }else if($table == 'withdrawals_report'){ $page = 'Withdrawals Report'; } if (!File::exists(public_path() . "/files")) { File::makeDirectory(public_path() . "/files"); } $date = Carbon::now()->format('Ymd'); $pass = substr(str_shuffle("0123456789abcdefghijklmnopqrstvwxyz"), 0, 8); if (!File::exists(public_path() . "/files" . "/" . $pass)) { File::makeDirectory(public_path() . "/files" . "/" . $pass); } $time = 'files' . "/" . $pass . '/' . config('app.name') . '-' . $page . '-' . $date . '.csv'; $urlFile = config('app.name') . '-' . $page . '-' . $date . '.csv'; $urlFolder = $pass; $filename = public_path() . '/' . $time; $file = fopen($filename, 'a+'); fputcsv($file, $columns); $counter = 1; foreach ($investorShareLog as $mainKey => $investment) { $row = $this->dataFormet($fieldsTable, $investment, $counter, $table); $temp = array(); foreach ($keys as $itm) { if ($itm != 'id') { if ($itm == 'index') { $temp[] = $row['counter']; } else { $temp[] = $row[$itm] ?? ''; } } else { $temp[] = $row['counter']; } } fputcsv($file, $temp); $counter++; } fclose($file); if ($type == 'zip') { $tempFilePath = public_path() . '/files' . '/' . $pass; $zip = Zip::create(public_path() . '/files' . '/' . $pass . '/' . config('app.name') . '-' . $page . '-' . $date . '.zip'); $zip->add($tempFilePath . '/' . config('app.name') . '-' . $page . '-' . $date . '.csv'); $urlFile = config('app.name') . '-' . $page . '-' . $date . '.zip'; $zip->close(); } $this->sendEmail($urlFolder, $urlFile, $user); } public function exportData($filter, $defaultSearch, $tableName, $user, $ids,$currencyId,$userId,$batchId) { $temp = $this->exportDataStructure($filter, $defaultSearch, $user, $ids, $tableName,$currencyId,$userId,$batchId); if (isset($temp[$tableName])) { return $temp[$tableName]; } return false; } public function exportDataStructure($filter, $defaultSearch, $user, $ids, $tableName,$currencyId,$userId,$batchId) { // dd($batchId); $headerArray = []; $dataArray = []; $headerArray['id'] = '#'; $dataArray["created_at"] = [ 'index' => 'created_at', 'status' => false, 'type' => 'date', ]; $headerArray["created_at"] = 'Order Date'; $viewableColumns = TouchDB::getAllByModel(CsrRetirementDetail::class) ->whereNotIn('column_name', ['created_at', 'updated_at', 'user_id', 'eth_address_id', 'old_retire_amount', 'token_id']) ->pluck('column_name') ->toArray(); array_unshift($viewableColumns, 'username', 'user_wallet_address', 'type'); $viewableColumns[] = 'certificate_name'; $retirementHeaderArray = []; $retirementDataArray = []; $retirementHeaderArray['index'] = '#'; foreach ($viewableColumns as $column) { $header = ($column == 'type') ? 'Token' : ucwords(str_replace('_', ' ', $column ?? '')); // Set the header with the appropriate label $retirementHeaderArray[$column] = $header; $type = 'string'; if ($column == 'retire_date' || $column == 'retire_confirm_date' || $column == 'last_update') { $type = 'date'; } else if ($column == 'retire_state') { $type = 'number'; } $retirementDataArray[$column] = [ 'index' => $column, 'status' => false, 'type' => $type, ]; } $currencyIdReport = $currencyId; $withdrawId = Session::get('withdrawIds'); if (!is_array($withdrawId)) { $withdrawIds = explode(',', $withdrawId); } if($userId != ''){ $userId = decrypt($userId); } $temp = [ 'users' => [ 'query' => $tableName == 'users' ? User::where('status', '!=', 'inactive')->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('created_at', '>=', $startDate) ->whereDate('created_at', '<=', $endDate); } else if ($key == 'role') { $q->whereHas('roles', function ($query) use ($item) { $query->where('name', [$item]); }); } else if ($key == 'first_name') { $q->where(function ($query) use ($item) { $query->whereRaw("CONCAT(first_name, ' ', last_name) LIKE ?", ["%{$item}%"]); }); } else { $q->where($key, 'like', '%' . $item . '%'); } } } })->with('roles')->wherehas('roles', function ($q) { // ----- Not Allowed Roles $q->whereNotIn('name', [ 'member', 'event-manager', 'event-supervisor', 'content-manager' ]); })->orderBy('id', 'desc') : [], 'page' => new User, 'header' => ['id' => '#', 'email' => 'Email', 'first_name' => 'Name', 'role' => 'Role', 'created_at' => 'Created At'], 'data' => [ 'role' => [ 'index' => "roles[0]['name']", 'status' => false, 'type' => 'string', ], 'email' => [ 'index' => "email", 'status' => false, 'type' => 'string', ], 'first_name' => [ 'index' => "first_name", 'status' => false, 'type' => 'string', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ], ], ], 'users_archived' => [ 'query' => $tableName == 'users_archived' ? User::where('status', 'inactive')->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('created_at', '>=', $startDate) ->whereDate('created_at', '<=', $endDate); } else if ($key == 'role') { $q->whereHas('roles', function ($query) use ($item) { $query->where('name', [$item]); }); } else if ($key == 'first_name') { $q->where(function ($query) use ($item) { $query->whereRaw("CONCAT(first_name, ' ', last_name) LIKE ?", ["%{$item}%"]); }); } else { $q->where($key, 'like', '%' . $item . '%'); } } } })->with('roles')->wherehas('roles', function ($q) { // ----- Not Allowed Roles $q->whereNotIn('name', [ 'member', 'event-manager', 'event-supervisor', 'content-manager' ]); })->orderBy('id', 'desc') : [], 'page' => new User, 'header' => ['id' => '#', 'email' => 'Email', 'first_name' => 'Name', 'role' => 'Role', 'created_at' => 'Created At'], 'data' => [ 'role' => [ 'index' => "roles[0]['name']", 'status' => false, 'type' => 'string', ], 'email' => [ 'index' => "email", 'status' => false, 'type' => 'string', ], 'first_name' => [ 'index' => "first_name", 'status' => false, 'type' => 'string', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ], ], ], 'transaction' => [ 'query' => $tableName == 'transaction' ? Transaction::with('user', 'currency') ->where('corp_approved', 1) ->when(count($filter), function ($query) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate); } else if ($key == 'first_name' || $key == 'last_name' || $key == 'username' || $key == 'email' || $key == 'is_active') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } else if ($key == 'full_name') { $query->whereHas('user', function ($query) use ($item) { $query->whereRaw("CONCAT(first_name, ' ', last_name) LIKE ?", ["%{$item}%"]); }); } elseif ($key == 'week') { if (preg_match('/^\d{4}\/\d{1,2}$/', $item)) { list($year, $week) = explode('/', $item); $query->whereYear('created_at', $year) ->where(DB::raw('WEEK(created_at, 1)'), $week); } elseif (preg_match('/^\d{4}$/', $item)) { $query->whereYear('created_at', $item); } elseif (preg_match('/^\d{1,2}$/', $item)) { $query->where(DB::raw('WEEK(created_at, 1)'), $item); } } elseif ($key == 'csr_initial') { $query->where($key, $item); } elseif ($key == 'csr_amount') { $query->where($key, $item); }elseif($key == 'deliveryType'){ $query->where('type', 'like', '%' . $item . '%'); }elseif($key == 'deliveryStatus'){ $query->where('corp_approved', 1); } else if ($key == 'type') { $query->whereHas('currency', function ($query) use ($item, $key) { $query->where($key, [$item]); }); } else { $query->where($key, 'like', '%' . $item . '%'); } } } })->orderBy('id', 'desc') : [], 'page' => new Transaction(), 'header' => ['id' => '#', 'username' => 'Username', 'full_name'=> 'Name','type' => 'Token', 'reference_no' => 'Reference', 'pool_ref' => 'Pool Reference','deliveryType' => 'Delivery Type','deliveryStatus' => 'Delivery Status', 'csr_initial' => 'CSR Initial Amount', 'csr_amount' => 'CSR Delivered', 'delivery_week' => 'Delivery Week', 'created_at' => 'Created At'], 'data' => [ 'type' => [ 'index' => "currency", 'relation' => true, 'relationKey' => 'type', 'status' => false, 'type' => 'string', ], 'username' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'username', 'status' => false, 'type' => 'string', ], 'full_name' => [ 'index' => "full_name", 'status' => false, 'type' => 'string', ], 'reference_no' => [ 'index' => "reference_no", 'status' => false, 'type' => 'string', ], 'pool_ref' => [ 'index' => "pool_ref", 'status' => false, 'type' => 'string', ], 'deliveryType' => [ 'index' => "type", 'status' => false, 'type' => 'string', ], 'deliveryStatus' => [ 'index' => "Delivered", 'status' => false, 'type' => 'string', ], 'csr_initial' => [ 'index' => "csr_initial", 'status' => false, 'type' => 'string', ], 'csr_amount' => [ 'index' => "csr_amount", 'status' => false, 'type' => 'string', ], 'delivery_week' => [ 'index' => "delivery_week", 'status' => false, 'type' => 'string', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ], ], ], 'sa_order_invoice' => [ 'query' => $tableName == 'sa_order_invoice' ? Order::query()->with(['user', 'user.profile.introducedBy', 'currency']) ->orderBy('id', 'desc') ->where('archived_status', '=', Order::UNARCHIVED) ->when(count($filter), function ($query) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate); } elseif ($key == 'invoice_date') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('invoice_date', '>=', $startDate)->whereDate('invoice_date', '<=', $endDate); } elseif ($key === 'price' || $key === 'amount' || $key === 'po_vat_amount' || $key === 'po_net_amount' || $key === 'po_gross_amount' || $key === 'vat_amount' || $key === 'net_amount' || $key === 'gross_amount') { $item = str_replace(",", "", $item); $query->where($key, (int) $item); } elseif ($key === 'frequency') { $query->where($key, $item); } elseif ($key === 'first_name' || $key === 'last_name' || $key === 'email' || $key === 'username') { $query->whereHas("user", function ($q) use ($item, $key) { $q->where($key, 'like', '%' . $item . '%'); }); } elseif ($key === 'introduced_by') { $query->whereHas("user.profile.introducedBy", function ($q) use ($item, $key) { $q->where('username', 'like', '%' . $item . '%'); }); } elseif ($key == 'type') { $query->whereHas('currency', function ($query) use ($item, $key) { $query->where($key, [$item]); }); } else { $query->where($key, 'like', '%' . $item . '%'); } } } }) : [], 'page' => new Order, 'header' => ['counter' => '#', 'id' => 'Order Id', 'created_at' => 'Order Date', 'invoice_no' => 'Invoice No', 'invoice_date' => 'Invoice Date', 'payment_status' => 'Payment Status', 'price' => 'Price', 'amount' => 'Amount', 'username' => 'Username', 'first_name' => 'First Name', 'last_name' => 'Last Name', 'email' => 'Email', 'type' => 'Currency', 'introduced_by' => 'Sponsor Name'], 'data' => [ 'id' => [ 'index' => "id", 'status' => false, 'type' => 'number', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ], 'invoice_no' => [ 'index' => "invoice_no", 'status' => false, 'type' => 'string', ], 'invoice_date' => [ 'index' => "invoice_date", 'status' => false, 'type' => 'date', ], 'frequency' => [ 'index' => "frequency", 'status' => false, 'type' => 'string', ], 'payment_status' => [ 'index' => "payment_status", 'status' => false, 'type' => 'string', ], 'price' => [ 'index' => "price", 'status' => false, 'type' => 'number', ], 'amount' => [ 'index' => "amount", 'status' => false, 'type' => 'number', ], 'net_amount' => [ 'index' => "net_amount", 'status' => false, 'type' => 'number', ], 'username' => [ 'index' => "user", 'status' => false, 'relation' => true, 'relationKey' => 'username', 'type' => 'string', ], 'first_name' => [ 'index' => "user", 'status' => false, 'relation' => true, 'relationKey' => 'first_name', 'type' => 'string', ], 'last_name' => [ 'index' => "user", 'status' => false, 'relation' => true, 'relationKey' => 'last_name', 'type' => 'string', ], 'email' => [ 'index' => "user", 'status' => false, 'relation' => true, 'relationKey' => 'email', 'type' => 'string', ], 'type' => [ 'index' => "currency", 'status' => false, 'relation' => true, 'relationKey' => 'type', 'type' => 'string', ], 'introduced_by' => [ 'index' => "introduced_by", 'status' => false, 'type' => 'string', ], ], ], 'invoice_report' => [ 'query' => $tableName == 'invoice_report' ? Order::query()->with(['user', 'user.profile.introducedBy','currency','user.companies','user.useraddress','user.useraddress.country']) ->orderBy('id', 'desc') ->where('payment_status', '=', 'paid') ->when(count($filter), function ($query) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate); } elseif ($key == 'invoice_date') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('invoice_date', '>=', $startDate)->whereDate('invoice_date', '<=', $endDate); } elseif ($key === 'price' || $key === 'amount' || $key === 'po_vat_amount' || $key === 'po_net_amount' || $key === 'po_gross_amount' || $key === 'vat_amount' || $key === 'net_amount' || $key === 'gross_amount') { $item = str_replace(",", "", $item); $query->where($key, (int) $item); } elseif ($key === 'frequency') { $query->where($key, $item); } elseif ($key === 'first_name' || $key === 'last_name' || $key === 'email' || $key === 'username') { $query->whereHas("user", function ($q) use ($item, $key) { $q->where($key, 'like', '%' . $item . '%'); }); } elseif ($key === 'introduced_by') { $query->whereHas("user.profile.introducedBy", function ($q) use ($item, $key) { $q->where('username', 'like', '%' . $item . '%'); }); } elseif ($key === 'business_name' || $key === 'european_vat_number') { $query->whereHas("user.companies", function ($q) use ($item, $key) { $q->where($key, 'like', '%' . $item . '%'); }); } elseif ($key === 'address_1' || $key === 'address_2' || $key === 'postal_code' || $key === 'city') { $query->whereHas("user.useraddress", function ($q) use ($item, $key) { $q->where($key, 'like', '%' . $item . '%'); }); } elseif ($key === 'country_id') { $query->whereHas("user.useraddress.country", function ($q) use ($item, $key) { $q->where('country_name', 'like', '%' . $item . '%'); }); } elseif ($key === 'state_id') { $query->whereHas("user.useraddress.state", function ($q) use ($item, $key) { $q->where('name', 'like', '%' . $item . '%'); }); } elseif ($key == 'type') { $query->whereHas('currency', function ($query) use ($item, $key) { $query->where($key, [$item]); }); } else { $query->where($key, 'like', '%' . $item . '%'); } } } }) : [], 'page' => new Order, 'header' => ['counter' => '#', 'reference_no' => 'PO Number', 'created_at' => 'Date', 'invoice_no' => 'Invoice No', 'invoice_date' => 'Invoice Date', 'payment_status' => 'Payment Status', 'username' => 'Username', 'first_name' => 'First Name', 'last_name' => 'Last Name', 'email' => 'Email','introduced_by' => 'Sponsor Name','type' => 'Token', 'net_amount' => 'Net Amount','vat_amount' => 'Vat Amount','gross_amount' => 'Gross Amount','european_vat_number' => 'Vat Number','business_name' => 'Business Name','country_id' => 'Country','state_id' => 'Region / State / Province','city' => 'City','postal_code' => 'Postcode/ZIP code','address_1' => 'Address 1','address_2' => 'Address 2'], 'data' => [ 'reference_no' => [ 'index' => "reference_no", 'status' => false, 'type' => 'string', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ], 'invoice_no' => [ 'index' => "invoice_no", 'status' => false, 'type' => 'string', ], 'invoice_date' => [ 'index' => "invoice_date", 'status' => false, 'type' => 'date', ], 'payment_status' => [ 'index' => "payment_status", 'status' => false, 'type' => 'string', ], 'username' => [ 'index' => "user", 'status' => false, 'relation' => true, 'relationKey' => 'username', 'type' => 'string', ], 'first_name' => [ 'index' => "user", 'status' => false, 'relation' => true, 'relationKey' => 'first_name', 'type' => 'string', ], 'last_name' => [ 'index' => "user", 'status' => false, 'relation' => true, 'relationKey' => 'last_name', 'type' => 'string', ], 'email' => [ 'index' => "user", 'status' => false, 'relation' => true, 'relationKey' => 'email', 'type' => 'string', ], 'introduced_by' => [ 'index' => "introduced_by", 'status' => false, 'type' => 'string', ], 'type' => [ 'index' => "currency", 'status' => false, 'relation' => true, 'relationKey' => 'type', 'type' => 'string', ], 'net_amount' => [ 'index' => "net_amount", 'status' => false, 'type' => 'number', ], 'vat_amount' => [ 'index' => "vat_amount", 'status' => false, 'type' => 'number', ], 'gross_amount' => [ 'index' => "gross_amount", 'status' => false, 'type' => 'number', ], 'european_vat_number' => [ 'index' => "european_vat_number", 'status' => false, 'type' => 'string', ], 'business_name' => [ 'index' => "business_name", 'status' => false, 'type' => 'string', ], 'country_id' => [ 'index' => "country_id", 'status' => false, 'type' => 'string', ], 'state_id' => [ 'index' => "state_id", 'status' => false, 'type' => 'string', ], 'city' => [ 'index' => "city", 'status' => false, 'type' => 'string', ], 'postal_code' => [ 'index' => "postal_code", 'status' => false, 'type' => 'string', ], 'address_1' => [ 'index' => "address_1", 'status' => false, 'type' => 'string', ], 'address_2' => [ 'index' => "address_2", 'status' => false, 'type' => 'string', ], ], ], 'sa_order_invoice_dashboard' => [ 'query' => $tableName == 'sa_order_invoice_dashboard' ? Order::query()->where('user_id',$userId)->with(['user', 'user.profile.introducedBy', 'currency']) ->orderBy('id', 'desc') ->when(count($filter), function ($query) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at_order_date') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate); }elseif ($key == 'invoice_date') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('invoice_date', '>=', $startDate)->whereDate('invoice_date', '<=', $endDate); } elseif ($key === 'price' || $key === 'amount' || $key === 'po_vat_amount' || $key === 'po_net_amount' || $key === 'po_gross_amount' || $key === 'vat_amount' || $key === 'net_amount' || $key === 'gross_amount') { $item = str_replace(",", "", $item); $query->where($key, (int) $item); } elseif ($key === 'frequency') { $query->where($key, $item); }elseif($key == 'type'){ $query->whereHas('currency', function ($query) use ($item,$key) { $query->where($key, [$item]); }); } elseif($key == 'payment_status'){ $query->where($key, $item); } else { $query->where($key, 'like', '%' . $item . '%'); } } } }) : [], 'page' => new Order, 'header' => ['counter' => '#', 'created_at_order_date' => 'Order Date', 'invoice_no' => 'Invoice', 'invoice_date' => 'Invoice Date','payment_status' => 'Status','reference_no' => 'Order #', 'price' => 'Price', 'amount' => 'Total','net_amount' => '(€)Kgs', 'type' => 'Token'], 'data' => [ 'id' => [ 'index' => "id", 'status' => false, 'type' => 'number', ], 'created_at_order_date' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ], 'invoice_date' => [ 'index' => "invoice_date", 'status' => false, 'type' => 'date', ], 'invoice_no' => [ 'index' => "invoice_no", 'status' => false, 'type' => 'string', ], 'reference_no' => [ 'index' => "reference_no", 'status' => false, 'type' => 'string', ], 'frequency' => [ 'index' => "frequency", 'status' => false, 'type' => 'string', ], 'payment_status' => [ 'index' => "payment_status", 'status' => false, 'type' => 'string', ], 'price' => [ 'index' => "price", 'status' => false, 'type' => 'number', ], 'amount' => [ 'index' => "amount", 'status' => false, 'type' => 'number', ], 'net_amount' => [ 'index' => "net_amount", 'status' => false, 'type' => 'number', ], 'type' => [ 'index' => "currency", 'status' => false, 'relation' => true, 'relationKey' => 'type', 'type' => 'string', ] ], ], 'user_wallet_report' => [ 'query' => $tableName == 'user_wallet_report' ? User::role(['member'])->where('is_active', '!=', 2) ->withSum(['walletTransactions as pending_withdrawal' => function($q) use ($currencyId){ $q->whereIn('status', [2, 5]); $q->where('type', 'Withdraw'); $q->where('currency_id', $currencyId); }], 'amount') ->withSum(['walletTransactions as total_withdrawal' => function($q) use ($currencyId){ $q->where('type', 'Withdraw'); $q->where('currency_id', $currencyId); }], 'amount') ->withSum(['walletTransactions as approved_withdrawal' => function($q) use ($currencyId){ $q->where('status', 1); $q->where('type', 'Withdraw'); $q->where('currency_id', $currencyId); }], 'amount') ->withSum(['walletTransactions as total_deposit' => function($q) use ($currencyId){ $q->where('type', 'Deposit'); $q->where('currency_id', $currencyId); }], 'amount') ->withSum(['walletTransactions as approved_deposit' => function($q) use ($currencyId){ $q->where('status', 1); $q->where('type', 'Deposit'); $q->where('currency_id', $currencyId); }], 'amount') ->withSum(['transactions as total_issued' => function($q) use ($currencyId){ $q->where('corp_approved', 0); $q->where('currency_id', $currencyId); }],'csr_amount') ->withSum(['transactions as total_delivered' => function($q) use ($currencyId) { $q->where('corp_approved', 1); $q->where('currency_id', $currencyId); }],'csr_amount') ->withSum(['transactions as total_redemptions' => function($q) use ($currencyId){ $q->where('corp_approved','!=',3); $q->where('currency_id', $currencyId); }],'csr_amount') ->withSum(['transactions as pending_redemptions' =>function($q) use ($currencyId){ $q->where('currency_id', $currencyId); $q->where('corp_approved',0); }],'csr_amount') ->addSelect([ 'total_wallet_balance' => function ($query) { $query->selectRaw('COALESCE(total_redemptions, 0) - COALESCE(total_delivered, 0) + COALESCE(approved_deposit, 0)'); } ]) ->addSelect([ 'available_balance' => function ($query) { $query->selectRaw('COALESCE(approved_deposit, 0) - COALESCE(pending_withdrawal, 0) - COALESCE(approved_withdrawal, 0)'); } ]) ->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if($key == 'pending_withdrawal'){ $q->havingRaw('ROUND(COALESCE(pending_withdrawal, 0), 2) = ROUND(?, 2)', [$item]); }else if($key == 'total_withdrawal'){ $q->havingRaw('ROUND(COALESCE(total_withdrawal, 0), 2) = ROUND(?, 2)', [$item]); }else if($key == 'pending_deposit'){ $q->havingRaw('ROUND(COALESCE(pending_deposit, 0), 2) = ROUND(?, 2)', [$item]); }else if($key == 'total_deposit'){ $q->havingRaw('ROUND(COALESCE(total_deposit, 0), 2) = ROUND(?, 2)', [$item]); }else if($key == 'pending_redemptions'){ $q->havingRaw('ROUND(COALESCE(pending_redemptions, 0), 2) = ROUND(?, 2)', [$item]); }else if($key == 'total_redemptions'){ $q->havingRaw('ROUND(COALESCE(total_redemptions, 0), 2) = ROUND(?, 2)', [$item]); }else if($key == 'total_wallet_balance'){ $q->havingRaw('ROUND(COALESCE(total_redemptions, 0) - COALESCE(total_delivered, 0) + COALESCE(approved_deposit, 0) ,2) = ROUND(?, 2)', [$item]); }else if($key == 'available_wallet_balance'){ $q->havingRaw('ROUND(COALESCE(approved_deposit, 0) - COALESCE(pending_withdrawal, 0) - COALESCE(approved_withdrawal, 0), 2) = ROUND(?, 2)', [$item]); }else { $q->where($key, 'like', '%' . $item . '%'); } } } })->orderBy('id', 'desc') : [], 'page' => new User, 'header' => ['id' => '#', 'username' => 'Username', 'email' => 'Email', 'total_wallet_balance' => 'Total Wallet Balance', 'available_wallet_balance' => 'Available Wallet Balance', 'total_withdrawal' => 'Total Withdrawal', 'pending_withdrawal' => 'Pending Withdrawal', 'total_deposit' => 'Total Deposit', 'pending_deposit' => 'Pending Deposit' , 'total_redemptions' => 'Total Redemptions','pending_redemptions'=>'Pending Redemptions'], 'data' => [ 'username' => [ 'index' => "username", 'status' => false, 'type' => 'string', ], 'email' => [ 'index' => "email", 'status' => false, 'type' => 'string', ], 'total_wallet_balance' => [ 'index' => "total_wallet_balance", 'status' => false, 'type' => 'string', ], 'available_wallet_balance' => [ 'index' => "available_balance", 'status' => false, 'type' => 'string', ], 'total_withdrawal' => [ 'index' => "total_withdrawal", 'status' => false, 'type' => 'string', ], 'pending_withdrawal' => [ 'index' => "pending_withdrawal", 'status' => false, 'type' => 'string', ], 'total_deposit' => [ 'index' => "total_deposit", 'status' => false, 'type' => 'string', ], 'pending_deposit' => [ 'index' => "pending_deposit", 'status' => false, 'type' => 'string', ], 'total_redemptions' => [ 'index' => "total_redemptions", 'status' => false, 'type' => 'string', ], 'pending_redemptions' => [ 'index' => "pending_redemptions", 'status' => false, 'type' => 'string', ], ], ], 'withdrawals_report' => [ 'query' => $tableName == 'withdrawals_report' ? User::whereHas('walletTransactions', function ($q) { $q->where('type', 'Withdraw'); })->role(['member'])->where('is_active', '!=', 2) ->withSum(['walletTransactions as total_withdrawal' => function($q) use ($currencyId){ $q->where('type', 'Withdraw'); $q->where('currency_id', $currencyId); }], 'amount') ->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'fullname') { $q->where(function ($q) use ($item) { $q->whereRaw("CONCAT(first_name, ' ', last_name) LIKE ?", ["%{$item}%"]); }); } else if($key == 'total_withdrawal'){ $q->havingRaw('ROUND(COALESCE(total_withdrawal, 0), 2) = ROUND(?, 2)', [$item]); }else { $q->where($key, 'like', '%' . $item . '%'); } } } })->havingRaw('ROUND(COALESCE(total_withdrawal, 0), 2) > 0')->orderBy('id', 'desc') : [], 'page' => new User, 'header' => ['id' => '#', 'email' => 'Email','username' => 'Username', 'fullname' => 'Fullname', 'total_withdrawal' => 'CSR Amount'], 'data' => [ 'email' => [ 'index' => "email", 'status' => false, 'type' => 'string', ], 'username' => [ 'index' => "username", 'status' => false, 'type' => 'string', ], 'fullname' => [ 'index' => "fullname", 'status' => false, 'type' => 'string', ], 'total_withdrawal' => [ 'index' => "total_withdrawal", 'status' => false, 'type' => 'string', ], ], ], 'sa_order_invoice_archive' => [ 'query' => $tableName == 'sa_order_invoice_archive' ? Order::query()->with(['user.profile.introducedBy', 'currency']) ->orderBy('id', 'desc') ->where('archived_status', '=', Order::ARCHIVED) ->when(count($filter), function ($query) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate); } elseif ($key == 'invoice_date') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('invoice_date', '>=', $startDate)->whereDate('invoice_date', '<=', $endDate); } elseif ($key === 'price' || $key === 'amount' || $key === 'po_vat_amount' || $key === 'po_net_amount' || $key === 'po_gross_amount' || $key === 'vat_amount' || $key === 'net_amount' || $key === 'gross_amount') { $item = str_replace(",", "", $item); $query->where($key, (int) $item); } elseif ($key === 'frequency') { $query->where($key, $item); } elseif ($key === 'first_name' || $key === 'last_name' || $key === 'email' || $key === 'username') { $query->whereHas("user", function ($q) use ($item, $key) { $q->where($key, 'like', '%' . $item . '%'); }); } elseif ($key === 'introduced_by') { $query->whereHas("user.profile.introducedBy", function ($q) use ($item, $key) { $q->where('username', 'like', '%' . $item . '%'); }); } elseif ($key == 'type') { $query->whereHas('currency', function ($query) use ($item, $key) { $query->where($key, [$item]); }); } else { $query->where($key, 'like', '%' . $item . '%'); } } } }) : [], 'page' => new Order, 'header' => ['counter' => '#', 'id' => 'Order Id', 'created_at' => 'Order Date', 'invoice_no' => 'Invoice No', 'invoice_date' => 'Invoice Date', 'payment_status' => 'Payment Status', 'price' => 'Price', 'amount' => 'Amount', 'username' => 'Username', 'first_name' => 'First Name', 'last_name' => 'Last Name', 'email' => 'Email', 'type' => 'Currency', 'introduced_by' => 'Sponsor Name'], 'data' => [ 'id' => [ 'index' => "id", 'status' => false, 'type' => 'number', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ], 'invoice_no' => [ 'index' => "invoice_no", 'status' => false, 'type' => 'string', ], 'invoice_date' => [ 'index' => "invoice_date", 'status' => false, 'type' => 'date', ], 'frequency' => [ 'index' => "frequency", 'status' => false, 'type' => 'string', ], 'payment_status' => [ 'index' => "payment_status", 'status' => false, 'type' => 'string', ], 'price' => [ 'index' => "price", 'status' => false, 'type' => 'number', ], 'amount' => [ 'index' => "amount", 'status' => false, 'type' => 'number', ], 'username' => [ 'index' => "user", 'status' => false, 'relation' => true, 'relationKey' => 'username', 'type' => 'string', ], 'first_name' => [ 'index' => "user", 'status' => false, 'relation' => true, 'relationKey' => 'first_name', 'type' => 'string', ], 'last_name' => [ 'index' => "user", 'status' => false, 'relation' => true, 'relationKey' => 'last_name', 'type' => 'string', ], 'email' => [ 'index' => "user", 'status' => false, 'relation' => true, 'relationKey' => 'email', 'type' => 'string', ], 'type' => [ 'index' => "currency", 'status' => false, 'relation' => true, 'relationKey' => 'type', 'type' => 'string', ], 'introduced_by' => [ 'index' => "introduced_by", 'status' => false, 'type' => 'string', ], ], ], 'sm_account_detail' => [ 'query' => $tableName == 'sm_account_detail' ? BankAccount::latest()->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != '') { if ($key == 'status') { if (strtolower($item) == 'active') { $q->where('status', 1); } else { $q->where('status', 0); } } else { $q->where($key, 'like', '%' . $item . '%'); } } } }) : [], 'page' => new BankAccount, 'header' => ['index' => '#', 'account_holder' => 'Account Holder', 'bic' => 'BIC', 'bank_code' => 'Bank Code', 'iban' => 'IBAN', 'bank_name' => 'Bank Name', 'is_active' => 'Status', 'bank_address' => 'Bank Address'], 'data' => [ 'account_holder' => [ 'index' => "account_holder", 'status' => false, 'type' => 'string', ], 'bic' => [ 'index' => "bic", 'status' => false, 'type' => 'string', ], 'bank_code' => [ 'index' => "bank_code", 'status' => false, 'type' => 'string', ], 'iban' => [ 'index' => "iban", 'status' => false, 'type' => 'string', ], 'bank_name' => [ 'index' => "bank_name", 'status' => false, 'type' => 'string', ], 'is_active' => [ 'index' => "is_active", 'status' => false, 'type' => 'string', ], 'bank_address' => [ 'index' => "bank_address", 'status' => false, 'type' => 'string', ], ], ], 'sm_account_detail_archive' => [ 'query' => $tableName == 'sm_account_detail_archive' ? BankAccount::onlyTrashed()->latest()->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != '') { if ($key == 'status') { if (strtolower($item) == 'active') { $q->where('status', 1); } else { $q->where('status', 0); } } else { $q->where($key, 'like', '%' . $item . '%'); } } } }) : [], 'page' => new BankAccount(), 'header' => ['index' => '#', 'account_holder' => 'Account Holder', 'bic' => 'BIC', 'bank_code' => 'Bank Code', 'iban' => 'IBAN', 'bank_name' => 'Bank Name', 'is_active' => 'Status', 'bank_address' => 'Bank Address'], 'data' => [ 'account_holder' => [ 'index' => "account_holder", 'status' => false, 'type' => 'string', ], 'bic' => [ 'index' => "bic", 'status' => false, 'type' => 'string', ], 'bank_code' => [ 'index' => "bank_code", 'status' => false, 'type' => 'string', ], 'iban' => [ 'index' => "iban", 'status' => false, 'type' => 'string', ], 'bank_name' => [ 'index' => "bank_name", 'status' => false, 'type' => 'string', ], 'is_active' => [ 'index' => "is_active", 'status' => false, 'type' => 'string', ], 'bank_address' => [ 'index' => "bank_address", 'status' => false, 'type' => 'string', ], ], ], 'redemption' => [ 'query' => $tableName == 'redemption' ? Transaction::with('user', 'currency') ->when(count($filter), function ($query) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate); } else if ($key == 'first_name' || $key == 'last_name' || $key == 'username' || $key == 'email' || $key == 'is_active') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } else if ($key == 'full_name') { $query->whereHas('user', function ($query) use ($item) { $query->whereRaw("CONCAT(first_name, ' ', last_name) LIKE ?", ["%{$item}%"]); }); } elseif ($key == 'csr_initial') { $query->where($key, $item); } elseif ($key == 'csr_amount') { $query->where($key, $item); } elseif ($key == 'delivered_type') { $query->where('type', 'like', '%' . $item . '%'); } else if ($key == 'type') { $query->whereHas('currency', function ($query) use ($item, $key) { $query->where($key, [$item]); }); } else { $query->where($key, 'like', '%' . $item . '%'); } } } })->orderBy('id', 'desc') : [], 'page' => new Transaction(), 'header' => ['id' => '#', 'username' => 'Username', 'type' => 'Currency', 'reference_no' => 'Reference No', 'delivered_type' => 'Type', 'corp_approved' => 'Corp Approved', 'csr_initial' => 'Amount Initial', 'csr_amount' => 'Amount Due', 'delivery_week' => 'Delivery Week', 'created_at' => 'Created At', 'notes' => 'Notes'], 'data' => [ 'username' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'username', 'status' => false, 'type' => 'string', ], 'type' => [ 'index' => "currency", 'relation' => true, 'relationKey' => 'type', 'status' => false, 'type' => 'string', ], 'reference_no' => [ 'index' => "reference_no", 'status' => false, 'type' => 'string', ], 'delivered_type' => [ 'index' => "type", 'status' => false, 'type' => 'string', ], 'corp_approved' => [ 'index' => "corp_approved", 'status' => false, 'type' => 'string', ], 'csr_initial' => [ 'index' => "csr_initial", 'status' => false, 'type' => 'string', ], 'csr_amount' => [ 'index' => "csr_amount", 'status' => false, 'type' => 'string', ], 'delivery_week' => [ 'index' => "delivery_week", 'status' => false, 'type' => 'string', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ], 'notes' => [ 'index' => "notes", 'status' => false, 'type' => 'string', ], ], ], 'redemption_dashboard' => [ 'query' => $tableName == 'redemption_dashboard' ? Transaction::where('user_id',$userId)->with('user', 'currency') ->when(count($filter), function ($query) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate); } elseif ($key == 'csr_initial') { $query->where($key, $item); } elseif ($key == 'csr_amount') { $query->where($key, $item); } elseif ($key == 'delivered_type') { $query->where('type', 'like', '%' . $item . '%'); } else if ($key == 'type') { $query->whereHas('currency', function ($query) use ($item, $key) { $query->where($key, [$item]); }); } else { $query->where($key, 'like', '%' . $item . '%'); } } } })->orderBy('id', 'desc') : [], 'page' => new Transaction(), 'header' => ['id' => '#', 'username' => 'Username', 'type' => 'Currency', 'reference_no' => 'Reference No', 'delivered_type' => 'Type','created_at_red_dist_date' => 'Created At' ,'corp_approved' => 'Corp Approved', 'csr_initial' => 'Amount Initial', 'csr_amount' => 'Amount Due', 'delivery_week' => 'Delivery Week', 'created_at' => 'Created At', 'notes' => 'Notes'], 'data' => [ 'username' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'username', 'status' => false, 'type' => 'string', ], 'type' => [ 'index' => "currency", 'relation' => true, 'relationKey' => 'type', 'status' => false, 'type' => 'string', ], 'reference_no' => [ 'index' => "reference_no", 'status' => false, 'type' => 'string', ], 'delivered_type' => [ 'index' => "type", 'status' => false, 'type' => 'string', ], 'created_at_red_dist_date' => [ 'index' => "created_at", 'status' => false, 'type' => 'string', ], 'corp_approved' => [ 'index' => "corp_approved", 'status' => false, 'type' => 'string', ], 'csr_initial' => [ 'index' => "csr_initial", 'status' => false, 'type' => 'string', ], 'csr_amount' => [ 'index' => "csr_amount", 'status' => false, 'type' => 'string', ], 'delivery_week' => [ 'index' => "delivery_week", 'status' => false, 'type' => 'string', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ], 'notes' => [ 'index' => "notes", 'status' => false, 'type' => 'string', ], ], ], 'wallet_transaction' => [ 'query' => $tableName == 'wallet_transaction' ? WalletTransaction::with('user', 'user_wallet_address', 'currency') ->whereIn('id', $withdrawIds) ->when(count($filter), function ($query) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate); } else if ($key == 'first_name') { $query->whereHas('user', function ($query) use ($item) { $query->whereRaw("CONCAT(first_name, ' ', last_name) LIKE ?", ["%{$item}%"]); }); } else if ($key == 'type') { $query->whereHas('currency', function ($query) use ($item, $key) { $query->where($key, [$item]); }); } else { $query->where($key, 'like', '%' . $item . '%'); } } } })->orderBy('id', 'desc') : [], 'page' => new WalletTransaction, 'header' => ['counter' => '#', 'username' => 'Username', 'type' => 'Currency', 'amount' => 'Due Amount', 'meta_data' => 'Eth Address', 'email' => 'Email', 'created_at' => 'Date'], 'data' => [ 'username' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'username', 'status' => false, 'type' => 'string', ], 'type' => [ 'index' => "currency", 'relation' => true, 'relationKey' => 'type', 'status' => false, 'type' => 'string', ], 'amount' => [ 'index' => "amount", 'status' => false, 'type' => 'string', ], 'meta_data' => [ 'index' => "meta_data", 'status' => false, 'type' => 'string', ], 'email' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'email', 'status' => false, 'type' => 'string', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ] ], ], 'wallet_transaction_main' => [ 'query' => $tableName == 'wallet_transaction_main' ? WalletTransaction::with('user', 'user_wallet_address', 'amplivoUser', 'amplivoUser.member', 'currency') ->where('type', 'Withdraw') ->when(count($filter), function ($query) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('created_at', '>=', $startDate) ->whereDate('created_at', '<=', $endDate); } else if ($key == 'first_name') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } elseif ($key === 'rank') { $userId = AmplivoUser::whereHas("member", function ($innerQuery) use ($item,$key) { $innerQuery->where($key, 'like', $item . '%'); })->pluck('external_id'); $query->whereIntegerInRaw('user_id',$userId); } else if ($key == 'last_name') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } else if ($key == 'username') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } else if ($key == 'email') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } else if ($key == 'receive_amount') { $query->whereRaw('(amount - fee) = ?', [$item]); } else if ($key == 'user_wallet_address') { $query->whereHas('user_wallet_address', function ($query) use ($item) { $query->where('address', 'like', '%' . $item . '%'); }); } else if ($key == 'type') { $query->whereHas('currency', function ($query) use ($item, $key) { $query->where($key, [$item]); }); } else if ($key == 'batch_id') { $query->where($key, $item); } else { $query->where($key, 'like', '%' . $item . '%'); } } } })->orderBy('id', 'desc') : [], 'page' => new WalletTransaction, 'header' => ['counter' => '#', 'status' => 'Status', 'username' => 'Username', 'type' => 'Token', 'batch_id'=>'Withdrawal Batch Id','reference' => 'Withdrawal Id', 'first_name' => 'First Name', 'rank' => 'Star Rank', 'amount' => 'Withdrawal Amount', 'fee' => 'Withdrawal Fee', 'receive_amount' => 'Received Amount', 'user_wallet_address' => 'CSR Addresses', 'email' => 'Email', 'created_at' => 'Date'], 'data' => [ 'status' => [ 'index' => "status", 'status' => false, 'type' => 'string', ], 'username' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'username', 'status' => false, 'type' => 'string', ], 'type' => [ 'index' => "currency", 'relation' => true, 'relationKey' => 'type', 'status' => false, 'type' => 'string', ], 'batch_id' => [ 'index' => "batch_id", 'status' => false, 'type' => 'string', ], 'reference' => [ 'index' => "reference", 'status' => false, 'type' => 'string', ], 'first_name' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'first_name', 'status' => false, 'type' => 'string', ], 'rank' => [ 'index' => "amplivoUser.member", 'relation' => true, 'relationKey' => 'rank', 'status' => false, 'type' => 'string', ], 'amount' => [ 'index' => "amount", 'status' => false, 'type' => 'string', ], 'fee' => [ 'index' => "fee", 'status' => false, 'type' => 'string', ], 'receive_amount' => [ 'index' => "receive_amount", 'status' => false, 'type' => 'string', ], 'user_wallet_address' => [ 'index' => "user_wallet_address", 'status' => false, 'type' => 'string', ], 'email' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'email', 'status' => false, 'type' => 'string', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ] ], ], 'wallet_transaction_withdrawal' => [ 'query' => $tableName == 'wallet_transaction_withdrawal' ? WalletTransaction::with('user', 'user_wallet_address', 'amplivoUser', 'amplivoUser.member', 'currency') ->where('type', 'Withdraw') ->where('status', 1) ->where('transaction_type', 0) ->when(count($filter), function ($query) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('created_at', '>=', $startDate) ->whereDate('created_at', '<=', $endDate); } else if ($key == 'first_name') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } elseif ($key === 'rank') { $userId = AmplivoUser::whereHas("member", function ($innerQuery) use ($item,$key) { $innerQuery->where($key, 'like', $item . '%'); })->pluck('external_id'); $query->whereIntegerInRaw('user_id',$userId); } else if ($key == 'last_name') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } else if ($key == 'username') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } else if ($key == 'email') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } else if ($key == 'receive_amount') { $query->whereRaw('(amount - fee) = ?', [$item]); } else if ($key == 'user_wallet_address') { $query->whereHas('user_wallet_address', function ($query) use ($item) { $query->where('address', 'like', '%' . $item . '%'); }); } else if ($key == 'type') { $query->whereHas('currency', function ($query) use ($item, $key) { $query->where($key, [$item]); }); } else { $query->where($key, 'like', '%' . $item . '%'); } } } })->orderBy('id', 'desc') : [], 'page' => new WalletTransaction, 'header' => ['counter' => '#','type' => 'Token','batch_id' => 'Withdrawal Batch ID','reference' => 'Withdraw Id','username' => 'Username', 'email' => 'Email','rank' => 'Rank','user_wallet_address' => 'Address','transactionHash' => 'Transaction hash','amount' => 'Withdrawal Amount','fee' => 'Withdrawal Fee', 'receive_amount' => 'Received Amount', 'created_at' => 'Requested Date','updated_at' => 'Approval'], 'data' => [ 'batch_id' => [ 'index' => "batch_id", 'status' => false, 'type' => 'string', ], 'username' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'username', 'status' => false, 'type' => 'string', ], 'type' => [ 'index' => "currency", 'relation' => true, 'relationKey' => 'type', 'status' => false, 'type' => 'string', ], 'reference' => [ 'index' => "reference", 'status' => false, 'type' => 'string', ], 'first_name' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'first_name', 'status' => false, 'type' => 'string', ], 'rank' => [ 'index' => "amplivoUser.member", 'relation' => true, 'relationKey' => 'rank', 'status' => false, 'type' => 'string', ], 'amount' => [ 'index' => "amount", 'status' => false, 'type' => 'string', ], 'fee' => [ 'index' => "fee", 'status' => false, 'type' => 'string', ], 'receive_amount' => [ 'index' => "receive_amount", 'status' => false, 'type' => 'string', ], 'user_wallet_address' => [ 'index' => "user_wallet_address", 'status' => false, 'type' => 'string', ], 'transactionHash' => [ 'index' => "transactionHash", 'status' => false, 'type' => 'string', ], 'email' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'email', 'status' => false, 'type' => 'string', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ], 'updated_at' => [ 'index' => "updated_at", 'status' => false, 'type' => 'date', ] ], ], 'completed_withdrawals_batch_wise' => [ 'query' => $tableName == 'completed_withdrawals_batch_wise' ? WithdrawalBatch:: when(count($filter), function ($query) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('created_at', '>=', $startDate) ->whereDate('created_at', '<=', $endDate); }else if ($key == 'amountOfCSR') { $query->where('total_amount', $item); } elseif ($key == 'noOfWithdrawal') { // Convert string to count by counting commas and adding 1 $query->havingRaw("(LENGTH(wallet_transaction_ids) - LENGTH(REPLACE(wallet_transaction_ids, ',', '')) + 1) = ?", [$item]); } else { $query->where($key, 'like', '%' . $item . '%'); } } } })->orderBy('id', 'desc') : [], 'page' => new WithdrawalBatch, 'header' => ['batchId' => 'Batch Id','noOfWithdrawal' => 'No of Withdrawal','amountOfCSR' => 'Amount Of CSR','transaction_hash' => 'Transaction Hash' ,'created_at' => 'Created At'], 'data' => [ 'batchId' => [ 'index' => "id", 'status' => false, 'type' => 'string', ], 'noOfWithdrawal' => [ 'index' => "wallet_transaction_ids", 'status' => false, 'type' => 'string', ], 'amountOfCSR' => [ 'index' => "total_amount", 'status' => false, 'type' => 'string', ], 'transaction_hash' => [ 'index' => "transaction_hash", 'status' => false, 'type' => 'string', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ] ], ], 'member_to_member_transfer' => [ 'query' => $tableName == 'member_to_member_transfer' ? WalletTransaction::with('user','currency') ->where('type', 'Withdraw')->where('transaction_type', 1) ->when(count($filter), function ($query) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('created_at', '>=', $startDate) ->whereDate('created_at', '<=', $endDate); } else if ($key == 'updated_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('updated_at', '>=', $startDate) ->whereDate('updated_at', '<=', $endDate); }else if ($key == 'fromUserEmail') { $query->whereHas('user', function ($query) use ($item) { $query->where('email', 'like', '%' . $item . '%'); }); } else if ($key == 'amount' || $key == 'fee') { $query->where($key, $item); }else if ($key == 'description') { $query->where('meta_data', 'like', '%' . $item . '%'); }else if ($key == 'toUserEmail') { $query->whereIn( \DB::raw("JSON_UNQUOTE(JSON_EXTRACT(meta_data, '$.transfer_id'))"), function ($subQuery) use ($item) { $subQuery->select('id') ->from('users') ->where('email', 'like', '%' . $item . '%'); } ); }else if($key == 'type'){ $query->whereHas('currency', function ($query) use ($item,$key) { $query->where($key, [$item]); }); } else { $query->where($key, 'like', '%' . $item . '%'); } } } })->orderBy('id', 'desc') : [], 'page' => new WalletTransaction, 'header' => ['counter' => '#','type' => 'Token','reference' => 'Reference No', 'fromUserEmail' => 'From Member' , 'toUserEmail' =>'To Member', 'amount' => 'Amount','description' => 'Short Description', 'created_at' => 'Date'], 'data' => [ 'type' => [ 'index' => "currency", 'relation' => true, 'relationKey' => 'type', 'status' => false, 'type' => 'string', ], 'reference' => [ 'index' => "reference", 'status' => false, 'type' => 'string', ], 'amount' => [ 'index' => "amount", 'status' => false, 'type' => 'string', ], 'toUserEmail' => [ 'index' => "toUserEmail", 'status' => false, 'type' => 'string', ], 'description' => [ 'index' => "description", 'status' => false, 'type' => 'string', ], 'fromUserEmail' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'email', 'status' => false, 'type' => 'string', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ] ], ], 'wallet_transaction_cancel_withdrawal' => [ 'query' => $tableName == 'wallet_transaction_cancel_withdrawal' ? WalletTransaction::with('user', 'user_wallet_address', 'amplivoUser', 'amplivoUser.member', 'currency')->where('type', 'Withdraw')->where('status', 6) ->when(count($filter), function ($query) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('created_at', '>=', $startDate) ->whereDate('created_at', '<=', $endDate); } else if ($key == 'first_name') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } elseif ($key === 'rank') { $userId = AmplivoUser::whereHas("member", function ($innerQuery) use ($item,$key) { $innerQuery->where($key, 'like', $item . '%'); })->pluck('external_id'); $query->whereIntegerInRaw('user_id',$userId); } else if ($key == 'last_name') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } else if ($key == 'username') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } else if ($key == 'email') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } else if ($key == 'receive_amount') { $query->whereRaw('(amount - fee) = ?', [$item]); }else if ($key == 'amount' || $key == 'fee') { $query->where($key, $item); }else if ($key == 'transactionHash') { $query->where('meta_data', 'like', '%' . $item . '%'); }else if ($key == 'reason') { $query->where('meta_data', 'like', '%' . $item . '%'); }else if ($key == 'user_wallet_address') { $query->whereHas('user_wallet_address', function ($query) use ($item) { $query->where('address', 'like', '%' . $item . '%'); }); } else if ($key == 'type') { $query->whereHas('currency', function ($query) use ($item, $key) { $query->where($key, [$item]); }); } else { $query->where($key, 'like', '%' . $item . '%'); } } } })->orderBy('updated_at','desc') : [], 'page' => new WalletTransaction, 'header' => ['id' => '#','type' => 'Token','reference' => 'Withdrawal Id','username' => 'Username', 'email' => 'Email','rank' => 'Rank','user_wallet_address' => 'CSR Addresses','reason' => 'Rejection Reason','transactionHash' => 'Transaction hash','amount' => 'Withdrawal Amount','fee' => 'Withdrawal Fee', 'receive_amount' => 'Received Amount', 'created_at' => 'Withdrawal Date','updated_at' => 'Cancel Date'], 'data' => [ 'type' => [ 'index' => "currency", 'relation' => true, 'relationKey' => 'type', 'status' => false, 'type' => 'string', ], 'reference' => [ 'index' => "reference", 'status' => false, 'type' => 'string', ], 'username' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'username', 'status' => false, 'type' => 'string', ], 'email' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'email', 'status' => false, 'type' => 'string', ], 'rank' => [ 'index' => "amplivoUser.member", 'relation' => true, 'relationKey' => 'rank', 'status' => false, 'type' => 'string', ], 'user_wallet_address' => [ 'index' => "user_wallet_address", 'status' => false, 'type' => 'string', ], 'reason' => [ 'index' => "reason", 'status' => false, 'type' => 'string', ], 'transactionHash' => [ 'index' => "transactionHash", 'status' => false, 'type' => 'string', ], 'amount' => [ 'index' => "amount", 'status' => false, 'type' => 'string', ], 'fee' => [ 'index' => "fee", 'status' => false, 'type' => 'string', ], 'receive_amount' => [ 'index' => "receive_amount", 'status' => false, 'type' => 'string', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ], 'updated_at' => [ 'index' => "updated_at", 'status' => false, 'type' => 'date', ] ], ], 'withdrawal_batch_wise' => [ 'query' => $tableName == 'withdrawal_batch_wise' ? WalletTransaction::with('user', 'user_wallet_address', 'amplivoUser', 'amplivoUser.member', 'currency') ->where('batch_id',$batchId ) ->where('type', 'Withdraw') ->where('status', '!=', 2) ->when(count($filter), function ($query) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('created_at', '>=', $startDate) ->whereDate('created_at', '<=', $endDate); } else if ($key == 'first_name') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } elseif ($key === 'rank') { $userId = AmplivoUser::whereHas("member", function ($innerQuery) use ($item,$key) { $innerQuery->where($key, 'like', $item . '%'); })->pluck('external_id'); $query->whereIntegerInRaw('user_id',$userId); } else if ($key == 'last_name') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } else if ($key == 'username') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } else if ($key == 'email') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } else if ($key == 'receive_amount') { $query->whereRaw('(amount - fee) = ?', [$item]); } else if ($key == 'user_wallet_address') { $query->whereHas('user_wallet_address', function ($query) use ($item) { $query->where('address', 'like', '%' . $item . '%'); }); } else if ($key == 'type') { $query->whereHas('currency', function ($query) use ($item, $key) { $query->where($key, [$item]); }); } else { $query->where($key, 'like', '%' . $item . '%'); } } } })->orderBy('id', 'desc') : [], 'page' => new WalletTransaction, 'header' => ['type' => 'Currency','batch_id' => 'Withdrawal Batch ID','reference' => 'Withdraw Id','username' => 'Username', 'email' => 'Email','rank' => 'Rank','user_wallet_address' => 'CSR Addresses','transaction_hash' => 'Transaction hash','amount' => 'Withdrawal Amount','fee' => 'Withdrawal Fee', 'receive_amount' => 'Received Amount', 'created_at' => 'Withdrawal Date','updated_at' => 'Last Update','status' => 'status'], 'data' => [ 'status' => [ 'index' => "status", 'status' => false, 'type' => 'string', ], 'batch_id' => [ 'index' => "batch_id", 'status' => false, 'type' => 'string', ], 'username' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'username', 'status' => false, 'type' => 'string', ], 'type' => [ 'index' => "currency", 'relation' => true, 'relationKey' => 'type', 'status' => false, 'type' => 'string', ], 'reference' => [ 'index' => "reference", 'status' => false, 'type' => 'string', ], 'first_name' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'first_name', 'status' => false, 'type' => 'string', ], 'rank' => [ 'index' => "amplivoUser.member", 'relation' => true, 'relationKey' => 'rank', 'status' => false, 'type' => 'string', ], 'amount' => [ 'index' => "amount", 'status' => false, 'type' => 'string', ], 'fee' => [ 'index' => "fee", 'status' => false, 'type' => 'string', ], 'receive_amount' => [ 'index' => "receive_amount", 'status' => false, 'type' => 'string', ], 'user_wallet_address' => [ 'index' => "user_wallet_address", 'status' => false, 'type' => 'string', ], 'transaction_hash' => [ 'index' => "transaction_hash", 'status' => false, 'type' => 'string', ], 'email' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'email', 'status' => false, 'type' => 'string', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ], 'updated_at' => [ 'index' => "updated_at", 'status' => false, 'type' => 'date', ], ], ], 'wallet_transaction_withdrawal_dashboard' => [ 'query' => $tableName == 'wallet_transaction_withdrawal_dashboard' ? WalletTransaction::query()->with('user', 'user_wallet_address', 'currency') ->where('type', 'Withdraw')->where('transaction_type', 0) ->where('user_id', $userId) ->when(count($filter), function ($query) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at_with_date') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('created_at', '>=', $startDate) ->whereDate('created_at', '<=', $endDate); } else if ($key == 'receive_amount') { $query->whereRaw('(amount - fee) = ?', [$item]); } else if ($key == 'user_wallet_address') { $query->whereHas('user_wallet_address', function ($query) use ($item) { $query->where('address', 'like', '%' . $item . '%'); }); }else if ($key == 'transaction_hash') { $query->where('meta_data', 'like', '%' . $item . '%'); } else if ($key == 'amount' || $key == 'fee') { $query->where($key, $item); }else if($key == 'type'){ $query->whereHas('currency', function ($query) use ($item,$key) { $query->where($key, [$item]); }); } else { $query->where($key, 'like', '%' . $item . '%'); } } } })->orderBy('id', 'desc') : [], 'page' => new WalletTransaction, 'header' => ['counter' => '#','created_at_with_date' => 'Created At', 'amount' => 'Amount','type' => 'Token','fee' => 'Fee','receive_amount' => 'Delivered Amount', 'user_wallet_address' => 'Destination', 'reference' => 'Transaction Reference','transaction_hash' => 'Transaction Hash','status' => 'Status'], 'data' => [ 'status' => [ 'index' => "status", 'status' => false, 'type' => 'string', ], 'type' => [ 'index' => "currency", 'relation' => true, 'relationKey' => 'type', 'status' => false, 'type' => 'string', ], 'reference' => [ 'index' => "reference", 'status' => false, 'type' => 'string', ], 'amount' => [ 'index' => "amount", 'status' => false, 'type' => 'string', ], 'fee' => [ 'index' => "fee", 'status' => false, 'type' => 'string', ], 'receive_amount' => [ 'index' => "receive_amount", 'status' => false, 'type' => 'string', ], 'user_wallet_address' => [ 'index' => "user_wallet_address", 'status' => false, 'type' => 'string', ], 'transaction_hash' => [ 'index' => "transaction_hash", 'status' => false, 'type' => 'string', ], 'created_at_with_date' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ] ], ], 'deposit_main' => [ 'query' => $tableName == 'deposit_main' ? WalletTransaction::with('user', 'user_wallet_address', 'amplivoUser', 'amplivoUser.member', 'currency') ->where('type', 'Deposit') ->when(count($filter), function ($query) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('created_at', '>=', $startDate) ->whereDate('created_at', '<=', $endDate); } else if ($key == 'first_name') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } else if ($key == 'last_name') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } else if ($key == 'username') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } else if ($key == 'email') { $query->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } else if ($key == 'transaction_hash') { $query->where('meta_data', 'like', '%' . $item . '%'); } else if ($key == 'user_wallet_address') { $query->whereHas('user_wallet_address', function ($query) use ($item) { $query->where('address', 'like', '%' . $item . '%'); }); } else if ($key == 'type') { $query->whereHas('currency', function ($query) use ($item, $key) { $query->where($key, [$item]); }); } else if ($key == 'amount' || $key == 'fee') { $query->where($key, $item); } else { $query->where($key, 'like', '%' . $item . '%'); } } } })->orderBy('created_at', 'desc') : [], 'page' => new WalletTransaction, 'header' => ['counter' => '#', 'status' => 'Status', 'username' => 'Username', 'type' => 'Token', 'reference' => 'Deposit Id', 'amount' => 'Deposit Amount', 'user_wallet_address' => 'Address', 'transaction_hash' => 'Transaction Hash', 'email' => 'Email', 'created_at' => 'Date Requested'], 'data' => [ 'status' => [ 'index' => "status", 'status' => false, 'type' => 'string', ], 'username' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'username', 'status' => false, 'type' => 'string', ], 'type' => [ 'index' => "currency", 'relation' => true, 'relationKey' => 'type', 'status' => false, 'type' => 'string', ], 'reference' => [ 'index' => "reference", 'status' => false, 'type' => 'string', ], 'amount' => [ 'index' => "amount", 'status' => false, 'type' => 'string', ], 'user_wallet_address' => [ 'index' => "user_wallet_address", 'status' => false, 'type' => 'string', ], 'transaction_hash' => [ 'index' => "transaction_hash", 'status' => false, 'type' => 'string', ], 'email' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'email', 'status' => false, 'type' => 'string', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ] ], ], 'wallet_transaction_deposit_dashboard' => [ 'query' => $tableName == 'wallet_transaction_deposit_dashboard' ? WalletTransaction::with('currency') ->where('wallet_transaction.type', 'Deposit') // Specify table name ->where('user_id', $userId) ->when(count($filter), function ($query) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at_dep_date') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $query->whereDate('created_at', '>=', $startDate) ->whereDate('created_at', '<=', $endDate); } else if ($key == 'receive_amount') { $query->whereRaw('(amount - fee) = ?', [$item]); } else if ($key == 'user_wallet_address') { $query->whereHas('user_wallet_address', function ($query) use ($item) { $query->where('address', 'like', '%' . $item . '%'); }); } else if ($key == 'amount' || $key == 'fee') { $query->where($key, $item); } else if ($key == 'transaction_hash') { $query->where('meta_data', 'like', '%' . $item . '%'); }else if($key == 'type'){ $query->whereHas('currency', function ($query) use ($item,$key) { $query->where($key, [$item]); }); } else { $query->where($key, 'like', '%' . $item . '%'); } } } })->orderBy('wallet_transaction.created_at', 'desc') : [], 'page' => new WalletTransaction, 'header' => ['id' => '#', 'created_at_dep_date' => 'Created At','amount' => 'Amount','type' => 'Token','reference' => 'Reference', 'transaction_hash' => 'Transaction Id','status' => 'Status'], 'data' => [ 'status' => [ 'index' => "status", 'status' => false, 'type' => 'string', ], 'type' => [ 'index' => "currency", 'relation' => true, 'relationKey' => 'type', 'status' => false, 'type' => 'string', ], 'reference' => [ 'index' => "reference", 'status' => false, 'type' => 'string', ], 'amount' => [ 'index' => "amount", 'status' => false, 'type' => 'string', ], 'transaction_hash' => [ 'index' => "transaction_hash", 'status' => false, 'type' => 'string', ], 'created_at_dep_date' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ] ], ], 'users_sa' => [ 'query' => $tableName == 'users_sa' ? User::role(['member'])->with('roles', 'profile') ->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate); } else if ($key == 'date_of_birth') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereHas('profile', function ($query) use ($item, $key, $startDate, $endDate) { $query->whereDate('date_of_birth', '>=', $startDate)->whereDate('date_of_birth', '<=', $endDate); }); } else if ($key == 'first_name') { $q->where(function ($query) use ($item) { $query->whereRaw("CONCAT(first_name, ' ', last_name) LIKE ?", ["%{$item}%"]); }); } else if ($key == 'phone' || $key == 'gender' || $key == 'date_of_birth') { $q->whereHas('profile', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } else { $q->where($key, 'like', '%' . $item . '%'); } } } })->where('is_active', '!=', 2)->orderBy('id', 'desc') : [], 'page' => new User, 'header' => ['id' => '#', 'username' => 'Username', 'first_name' => 'Name', 'email' => 'Email','last_login_at' => 'Last Login' ,'created_at' => 'Registered At', 'status' => 'Status'], 'data' => [ 'username' => [ 'index' => "username", 'status' => false, 'type' => 'string', ], 'first_name' => [ 'index' => "first_name", 'status' => false, 'type' => 'string', ], 'email' => [ 'index' => "email", 'status' => false, 'type' => 'string', ], 'last_login_at' => [ 'index' => "last_login_at", 'status' => false, 'type' => 'date', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ], 'status' => [ 'index' => "status", 'status' => false, 'type' => 'string', ], ], ], 'users_sa_archived' => [ 'query' => $tableName == 'users_sa_archived' ? User::role(['member'])->with('roles', 'profile') ->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate); } else if ($key == 'first_name') { $q->where(function ($query) use ($item) { $query->whereRaw("CONCAT(first_name, ' ', last_name) LIKE ?", ["%{$item}%"]); }); } else if ($key == 'phone' || $key == 'gender' || $key == 'date_of_birth') { $q->whereHas('profile', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); } else { $q->where($key, 'like', '%' . $item . '%'); } } } })->where('is_active', 2)->orderBy('id', 'desc') : [], 'page' => new User, 'header' => ['id' => '#', 'username' => 'Username', 'first_name' => 'Full Name', 'email' => 'Email', 'phone' => 'Phone', 'gender' => 'Gender', 'date_of_birth' => 'Date of Birth', 'created_at' => 'Created At', 'status' => 'Status'], 'data' => [ 'username' => [ 'index' => "username", 'status' => false, 'type' => 'string', ], 'first_name' => [ 'index' => "first_name", 'status' => false, 'type' => 'string', ], 'email' => [ 'index' => "email", 'status' => false, 'type' => 'string', ], 'phone' => [ 'index' => "phone", 'status' => false, 'type' => 'string', ], 'gender' => [ 'index' => "gender", 'status' => false, 'type' => 'string', ], 'date_of_birth' => [ 'index' => "date_of_birth", 'status' => false, 'type' => 'string', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ], 'status' => [ 'index' => "status", 'status' => false, 'type' => 'string', ], ], ], 'activity_log' => [ 'query' => $tableName == 'activity_log' ? Activity::with(['causer'])->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate); } else if ($key == 'causer_id') { $userData = User::where('name', 'like', '%' . $item . '%')->pluck('id'); $q->whereIn('causer_id', $userData); } else if ($key == 'counter') { $q->where('id', $item); } else { $q->where($key, 'like', '%' . $item . '%'); } } } })->latest() : [], 'header' => ['counter' => '#', 'log_name' => 'Activity Type', 'description' => 'Activity', 'causer_id' => 'User', 'created_at' => 'Activity Time'], 'data' => [ 'log_name' => [ 'index' => "log_name", 'status' => false, 'type' => 'string', ], 'description' => [ 'index' => "description", 'status' => false, 'type' => 'string', ], 'causer_id' => [ 'index' => "causer", 'relation' => true, 'relationKey' => 'name', 'status' => false, 'type' => 'string', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'datetime', ], ], ], 'activity_log_dashboard' => [ 'query' => $tableName == 'activity_log_dashboard' ? Activity::with(['causer'])->where('causer_id', Auth::id())->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate); } else if ($key == 'causer_id') { $userData = User::where('first_name', 'like', '%' . $item . '%')->get()->pluck('id'); $q->whereIn('causer_id', $userData); } else if ($key == 'counter') { $q->where('id', $item); } else if ($key == 'role') { continue; } else { $q->where($key, 'like', '%' . $item . '%'); } } } })->latest()->take(50) : [], 'header' => ['counter' => '#', 'log_name' => 'Activity Type', 'description' => 'Activity', 'causer_id' => 'User', 'created_at' => 'Activity Time'], 'data' => [ 'log_name' => [ 'index' => "log_name", 'status' => false, 'type' => 'string', ], 'description' => [ 'index' => "description", 'status' => false, 'type' => 'string', ], 'causer_id' => [ 'index' => "causer_id", 'relationKey' => 'name', 'status' => false, 'type' => 'string', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'datetime', ], ], ], 'activity_log_my' => [ 'query' => $tableName == 'activity_log_my' ? Activity::with(['causer'])->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate); } else if ($key == 'causer_id') { $userData = User::where('first_name', 'like', '%' . $item . '%')->pluck('id'); $q->whereIn('causer_id', $userData); } else if ($key == 'counter') { $q->where('id', $item); } else { $q->where($key, 'like', '%' . $item . '%'); } } } })->latest()->where('causer_id', $user->id) : [], 'header' => ['counter' => '#', 'log_name' => 'Activity Type', 'description' => 'Activity', 'causer_id' => 'User', 'created_at' => 'Activity Time'], 'data' => [ 'log_name' => [ 'index' => "log_name", 'status' => false, 'type' => 'string', ], 'description' => [ 'index' => "description", 'status' => false, 'type' => 'string', ], 'causer_id' => [ 'index' => "causer", 'relation' => true, 'relationKey' => 'name', 'status' => false, 'type' => 'string', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'datetime', ], ], ], 'su_tokens' => [ 'query' => $tableName == 'su_tokens' ? Currencies::whereNull('deleted_at') ->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'name') { $q->where(DB::raw("lower(CONCAT(`symbol`,' ', `type`))"), 'like', '%' . strtolower($item) . '%'); } elseif ($key == 'status') { $q->where('status', $item); } else { $q->where($key, 'like', '%' . $item . '%'); } } } }) : [], 'page' => new Currencies(), 'header' => ['counter' => '#', 'type' => 'Name', 'value' => 'Value', 'address' => 'Address', 'status' => 'Status'], 'data' => [ 'type' => [ 'index' => "type", 'status' => false, 'type' => 'string', ], 'value' => [ 'index' => "value", 'status' => false, 'type' => 'string', ], 'address' => [ 'index' => "address", 'status' => false, 'type' => 'string', ], 'status' => [ 'index' => "status", 'status' => false, 'type' => 'string', ], ], ], 'su_tokens_archived' => [ 'query' => $tableName == 'su_tokens_archived' ? Currencies::onlyTrashed() ->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'name') { $q->where(DB::raw("lower(CONCAT(`symbol`,' ', `type`))"), 'like', '%' . strtolower($item) . '%'); } else { $q->where($key, 'like', '%' . $item . '%'); } } } }) : [], 'page' => new Currencies(), 'header' => ['counter' => '#', 'type' => 'Name', 'value' => 'Value', 'address' => 'Address', 'status' => 'Status'], 'data' => [ 'type' => [ 'index' => "type", 'status' => false, 'type' => 'string', ], 'value' => [ 'index' => "value", 'status' => false, 'type' => 'string', ], 'address' => [ 'index' => "address", 'status' => false, 'type' => 'string', ], 'status' => [ 'index' => "status", 'status' => false, 'type' => 'number', ], ], ], 'sa_csr_retirement' => [ 'query' => $tableName == 'sa_csr_retirement' ? CsrRetirementDetail::query()->with('user', 'userWallet', 'currency') ->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'retire_date') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('retire_date', '>=', $startDate)->whereDate('retire_date', '<=', $endDate); } else if ($key == 'retire_confirm_date') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('retire_confirm_date', '>=', $startDate)->whereDate('retire_confirm_date', '<=', $endDate); } else if ($key == 'last_update') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('last_update', '>=', $startDate)->whereDate('last_update', '<=', $endDate); } else if ($key == 'username') { $q->whereHas('user', function ($query) use ($item, $key) { $query->where('username', 'like', '%' . $item . '%'); }); } else if ($key == 'user_wallet_address') { $q->whereHas('userWallet', function ($query) use ($item, $key) { $query->where('address', 'like', '%' . $item . '%'); }); } else if ($key == 'type') { $q->whereHas('currency', function ($query) use ($item, $key) { $query->where($key, [$item]); }); } else { $q->where($key, 'like', '%' . $item . '%'); } } } })->orderBy('id', 'desc') : [], 'page' => new CsrRetirementDetail, 'header' => $retirementHeaderArray, 'data' => $retirementDataArray, ], 'sa_csr_retirement_dashboard' => [ 'query' => $tableName == 'sa_csr_retirement_dashboard' ? CsrRetirementDetail::query()->where('user_id',$userId)->with('user', 'userWallet', 'currency') ->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'retire_date') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('retire_date', '>=', $startDate)->whereDate('retire_date', '<=', $endDate); } else if ($key == 'retire_confirm_date') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('retire_confirm_date', '>=', $startDate)->whereDate('retire_confirm_date', '<=', $endDate); } else if ($key == 'last_update') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('last_update', '>=', $startDate)->whereDate('last_update', '<=', $endDate); } else if ($key == 'username') { $q->whereHas('user', function ($query) use ($item, $key) { $query->where('username', 'like', '%' . $item . '%'); }); } else if ($key == 'user_wallet_address') { $q->whereHas('userWallet', function ($query) use ($item, $key) { $query->where('address', 'like', '%' . $item . '%'); }); } else if ($key == 'type') { $q->whereHas('currency', function ($query) use ($item, $key) { $query->where($key, [$item]); }); } else { $q->where($key, 'like', '%' . $item . '%'); } } } })->orderBy('id', 'desc') : [], 'page' => new CsrRetirementDetail, 'header' => $retirementHeaderArray, 'data' => $retirementDataArray, ], 'country_settings_sm' => [ 'query' => $tableName == 'country_settings_sm' ? Country::orderBy('country_name')->with('languages') ->orderByDesc('is_active') ->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate); } else if ($key == 'languages.name') { $q->whereHas('languages', function ($q1) use ($item) { $q1->where('name', 'like', '%' . $item . '%'); }); } else { $q->where($key, 'like', '%' . $item . '%'); } } } }) : [], 'header' => ['index' => "#", 'country_name' => 'Country Name', 'country_code' => 'Country Code','phonecode' => 'Phone Code', 'languages.name' => 'Language'], 'data' => [ 'country_name' => [ 'index' => "country_name", 'status' => false, 'type' => 'string', ], 'country_code' => [ 'index' => "country_code", 'status' => false, 'type' => 'string', ], 'phonecode' => [ 'index' => "phonecode", 'status' => false, 'type' => 'string', ], 'languages.name' => [ 'index' => "language_id", 'status' => false, 'type' => 'string', ], ], ], 'country_settings_sm_archive' => [ 'query' => $tableName == 'country_settings_sm_archive' ? Country::onlyTrashed()->orderBy('country_name')->with('languages') ->orderByDesc('is_active') ->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate); } else if ($key == 'languages.name') { $q->whereHas('languages', function ($q1) use ($item) { $q1->where('name', 'like', '%' . $item . '%'); }); } else { $q->where($key, 'like', '%' . $item . '%'); } } } }) : [], 'header' => ['index' => "#", 'country_name' => 'Country Name', 'country_code' => 'Country Code', 'languages.name' => 'Language'], 'data' => [ 'country_name' => [ 'index' => "country_name", 'status' => false, 'type' => 'string', ], 'country_code' => [ 'index' => "country_code", 'status' => false, 'type' => 'string', ], 'languages.name' => [ 'index' => "language_id", 'status' => false, 'type' => 'string', ], ], ], 'product_static_option' => [ 'query' => $tableName == 'product_static_option' ? ProductStaticOption::orderBy('title') ->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate); } else { $q->where($key, 'like', '%' . $item . '%'); } } } }) : [], 'header' => ['index' => "#", 'title' => 'Title', 'price' => 'Price'], 'data' => [ 'title' => [ 'index' => "title", 'status' => false, 'type' => 'string', ], 'price' => [ 'index' => "price", 'status' => false, 'type' => 'string', ], ], ], 'product_static_option_archive' => [ 'query' => $tableName == 'product_static_option_archive' ? ProductStaticOption::onlyTrashed()->orderBy('title') ->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('created_at', '>=', $startDate)->whereDate('created_at', '<=', $endDate); } else { $q->where($key, 'like', '%' . $item . '%'); } } } }) : [], 'header' => ['index' => "#", 'title' => 'title', 'price' => 'Price'], 'data' => [ 'title' => [ 'index' => "title", 'status' => false, 'type' => 'string', ], 'price' => [ 'index' => "price", 'status' => false, 'type' => 'string', ], ], ], 'sa_csr_retirement_setting' => [ 'query' => $tableName == 'sa_csr_retirement_setting' ? UserCompany::with('user','reviewBy')->whereNotNull('company_url')->whereNotNull('company_logo')->latest() ->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'updated_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('updated_at', '>=', $startDate)->whereDate('updated_at', '<=', $endDate); }else if($key == 'email' || $key == 'username') { $q->whereHas('user', function ($query) use ($item, $key) { $query->where($key, 'like', '%' . $item . '%'); }); }else if ($key == 'name') { $q->whereHas('user', function ($query) use ($item) { $query->whereRaw("CONCAT(first_name, ' ', last_name) LIKE ?", ["%{$item}%"]); }); }else if($key == 'reviewed_by') { $q->whereHas('reviewBy', function ($query) use ($item, $key) { $query->where('username', 'like', '%' . $item . '%'); }); }else{ $q->where($key, 'like', '%' . $item . '%'); } } } }) : [], 'header' => ['counter' => 'Id', 'username' => 'Username' ,'name' => 'Name' , 'email' => 'Email', 'company_url' => 'Company url', 'company_logo' => 'Company logo', 'rejected_message' => 'Reject Message','updated_at' => 'Last Action Date','reviewed_by' => 'Reviewed By' , 'company_status' => 'Status'], 'data' => [ 'username' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'username', 'status' => false, 'type' => 'string', ], 'name' => [ 'index' => "name", 'status' => false, 'type' => 'string', ], 'email' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'email', 'status' => false, 'type' => 'string', ], 'company_url' => [ 'index' => "company_url", 'status' => false, 'type' => 'string', ], 'company_logo' => [ 'index' => "company_logo", 'status' => false, 'type' => 'string', ], 'rejected_message' => [ 'index' => "rejected_message", 'status' => false, 'type' => 'string', ], 'updated_at' => [ 'index' => "updated_at", 'status' => false, 'type' => 'string', ], 'reviewed_by' => [ 'index' => "reviewBy", 'relation' => true, 'relationKey' => 'username', 'status' => false, 'type' => 'string', ], 'company_status' => [ 'index' => "company_status", 'status' => false, 'type' => 'string', ], ], ], 'sm_csr_circulations' => [ 'query' => $tableName == 'sm_csr_circulations' ? CSRCirculation::when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'type') { $q->whereHas('currency', function ($query) use ($item, $key) { $query->where($key, [$item]); }); } else { $q->where($key, 'like', '%' . $item . '%'); } } } })->where('status', 1) : [], 'page' => new CSRCirculation, 'header' => ['id' => '#', 'description' => 'Description', 'address' => 'Address', 'type' => 'Token'], 'data' => [ 'description' => [ 'index' => "description", 'status' => false, 'type' => 'string', ], 'address' => [ 'index' => "address", 'status' => false, 'type' => 'string', ], 'type' => [ 'index' => "currency", 'relation' => true, 'relationKey' => 'type', 'status' => false, 'type' => 'string', ], ], ], 'sm_csr_circulations_archived' => [ 'query' => $tableName == 'sm_csr_circulations_archived' ? CSRCirculation::when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { $q->where($key, 'like', '%' . $item . '%'); } })->where('status', 0) : [], 'page' => new CSRCirculation, 'header' => ['id' => '#', 'description' => 'Description', 'address' => 'Address'], 'data' => [ 'description' => [ 'index' => "description", 'status' => false, 'type' => 'string', ], 'address' => [ 'index' => "address", 'status' => false, 'type' => 'string', ], ], ], 'su_languages' => [ 'query' => $tableName == 'su_languages' ? Language::with('translator', 'translatorManger')->where('status', '!=', 2)->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'translatorManager') { $translatorManagerId = User::where('username', $item)->pluck('id')->toArray(); $q->whereIn('translate_manager_id', $translatorManagerId); } else if ($key == 'translator') { $translatorId = User::where('username', $item)->pluck('id')->toArray(); $q->whereIn('translator_id', $translatorId); } else if ($key == 'shortName') { $q->where('short_name', 'like', '%' . $item . '%'); } else { $q->where($key, 'like', '%' . $item . '%'); } } } })->latest()->orderBy('id', 'desc') : [], 'page' => new Language, 'header' => ['id' => '#', 'name' => 'Name', 'shortName' => 'shortName', 'translatorManager' => 'Translator Manager', 'translator' => 'Translator'], 'data' => [ 'name' => [ 'index' => "name", 'status' => false, 'type' => 'string', ], 'shortName' => [ 'index' => "short_name", 'status' => false, 'type' => 'string', ], 'translatorManager' => [ 'index' => "translatorManger", 'relation' => true, 'relationKey' => 'username', 'status' => false, 'type' => 'string', ], 'translator' => [ 'index' => "translator", 'relation' => true, 'relationKey' => 'username', 'status' => false, 'type' => 'string', ], ], ], 'su_language_archive' => [ 'query' => $tableName == 'su_language_archive' ? Language::with('translator', 'translatorManger')->where('status', 2)->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($item != "") { if ($key == 'TranslatorManager') { $translatorManagerId = User::where('first_name', 'like', '%' . $item . '%')->pluck('id')->toArray(); $q->whereIn('translate_manager', $translatorManagerId); } else if ($key == 'Translator') { $translatorId = User::where('first_name', 'like', '%' . $item . '%')->pluck('id')->toArray(); $q->whereIn('user_id', $translatorId); } else if ($key == 'ShortName') { $q->where('short_name', 'like', '%' . $item . '%'); } else { $q->where($key, 'like', '%' . $item . '%'); } } } })->latest()->orderBy('id', 'desc') : [], 'page' => new Language, 'header' => ['id' => '#', 'Name' => 'Name', 'ShortName' => 'Short Name', 'TranslatorManager' => 'Translator Manager', 'Translator' => 'Translator'], 'data' => [ 'Name' => [ 'index' => "name", 'status' => false, 'type' => 'string', ], 'ShortName' => [ 'index' => "short_name", 'status' => false, 'type' => 'string', ], 'TranslatorManager' => [ 'index' => "translate_manager", 'status' => false, 'type' => 'string', ], 'Translator' => [ 'index' => "flag", 'status' => false, 'type' => 'string', ], ], ], 'minting_csr25' => [ 'query' => $tableName == 'minting_csr25' ? MintingCsr25::with('user') ->when(count($filter), function ($q) use ($filter) { foreach ($filter as $key => $item) { if ($key == 'created_at') { $dates = explode(' - ', $item); $startDate = createFromFormatCustom($dates[0]); $endDate = createFromFormatCustom($dates[1]); $q->whereDate('created_at', '>=', $startDate) ->whereDate('created_at', '<=', $endDate); } elseif ($key == 'created_by') { $q->whereHas('user', function ($query) use ($item, $key) { $query->where('first_name', 'LIKE', '%' . trim($item) . '%') ->whereOr('last_name', 'LIKE', '%' . trim($item) . '%'); }); } else { $q->where($key, 'like', '%' . $item . '%'); } } })->latest()->orderBy('id', 'desc') : [], 'page' => new MintingCsr25, 'header' => ['index' => '#', 'address' => 'Address', 'contract_address' => 'Contract Address', 'transaction_hash' => 'Transaction Hash', 'amount' => 'Amount', 'username' => 'Created By', 'created_at' => 'Created At'], 'data' => [ 'address' => [ 'index' => "address", 'status' => false, 'type' => 'string', ], 'contract_address' => [ 'index' => "contract_address", 'status' => false, 'type' => 'string', ], 'transaction_hash' => [ 'index' => "transaction_hash", 'status' => false, 'type' => 'string', ], 'amount' => [ 'index' => "amount", 'status' => false, 'type' => 'string', ], 'username' => [ 'index' => "user", 'relation' => true, 'relationKey' => 'username', 'status' => false, 'type' => 'string', ], 'created_at' => [ 'index' => "created_at", 'status' => false, 'type' => 'date', ], ], ], ]; return $temp; } public function sendEmail($folder, $file, $user) { $details = [ 'name' => $user->fisrt_name . ' ' . $user->last_name, 'email' => $user->email, 'file' => $file, 'folder' => $folder, ]; try { Mail::to($user)->send(new JobEmail($details)); } catch (Exception $exception) { reportLog($exception); } } /** * @throws Exception */ public function zipfile($filter, $defaultSearch, $columns, $keys, $table, $user, $type, $ids,$currencyId,$userId,$batchId) { $fieldsTable = $this->exportData($filter, $defaultSearch, $table, $user, $ids,$currencyId,$userId,$batchId); $investorShareLog = $fieldsTable['query']->get(); $page = $fieldsTable['page']->pageName ?? 'Logs'; if ($table == 'activity_log_my' || $table == 'activity_log' || $table == 'activity_log_dashboard') { $page = 'My Logs'; } else if ($table == 'sa_csr_retirement_setting') { $page = 'Review Logo & Url'; } else if ($table == 'country_settings_sm' || $table == 'country_settings_sm_archive') { $page = 'Countries'; } else if ($table == 'transaction') { $page = 'Transaction'; } else if ($table == 'redemption' || $table == 'redemption_dashboard') { $page = 'Redemption'; } else if ($table == 'deposit_main') { $page = 'Deposits'; }else if($table == 'user_wallet_report'){ $page = 'User Wallet Report'; }else if($table == 'product_static_option' || $table == 'product_static_option_archive'){ $page = 'Product Static option'; }else if($table == 'wallet_transaction_withdrawal' || $table == 'withdrawal_batch_wise'){ $page = 'Withdrawals'; }else if($table == 'wallet_transaction_withdrawal_dashboard'){ $page = 'Withdrawals'; }else if($table == 'invoice_report'){ $page = 'Invoice Report'; }else if($table == 'withdrawals_report'){ $page = 'Withdrawals Report'; }else if($table == ''){ $page = 'Withdrawals Report'; } if (!File::exists(public_path() . "/files")) { File::makeDirectory(public_path() . "/files"); } $date = Carbon::now()->format('Ymd'); $pass = substr(str_shuffle("0123456789abcdefghijklmnopqrstvwxyz"), 0, 8); if (!File::exists(public_path() . "/files" . "/" . $pass)) { File::makeDirectory(public_path() . "/files" . "/" . $pass); } $time = 'files' . "/" . $pass . '/' . config('app.name') . '-' . $page . '-' . $date . '.csv'; $filename = public_path() . '/' . $time; $file = fopen($filename, 'a+'); fputcsv($file, $columns); $counter = 1; foreach ($investorShareLog as $mainKey => $investment) { $row = $this->dataFormet($fieldsTable, $investment, $counter, $table); $temp = array(); foreach ($keys as $itm) { if ($itm != 'id') { if ($itm == 'index') { $temp[] = $row['counter']; } else { $temp[] = $row[$itm] ?? ''; } } else { $temp[] = $row['counter']; } } fputcsv($file, $temp); $counter++; } fclose($file); if ($type == 'zip') { $tempFilePath = public_path() . '/files' . '/' . $pass; $zip = Zip::create(public_path() . '/files' . '/' . $pass . '/' . config('app.name') . '-' . $page . '-' . $date . '.zip'); $zip->add($tempFilePath . '/' . config('app.name') . '-' . $page . '-' . $date . '.csv'); $zip->close(); } $log = 'Exported ' . $type . ' file of ' . $page; saveLog($log, $user, [], "Export"); return ['folder' => $tempFilePath, 'file' => config('app.name') . '-' . $page . '-' . $date . '.zip']; } public function clearData() { $directory = 'files'; $files = Storage::disk('publicfolder')->directories($directory); $hours = getSiteSettings('download_file_delete_time'); $hours = -1 * $hours; $date = strtotime(Carbon::now()->addHours($hours)); foreach ($files as $file) { $temp = filectime(public_path() . '/' . $file); if ($temp < $date) { $subFiles = Storage::disk('publicfolder')->files($file); if (count($subFiles) == 1) { foreach ($subFiles as $item) { $fileName = basename($item); if (str_contains($fileName, '.csv')) { $log = 'Deleted ' . $fileName; saveLog($log, null, [], "Deleted"); } } } else { foreach ($subFiles as $item) { $fileName = basename($item); if (str_contains($fileName, '.zip')) { $log = 'Deleted ' . $fileName; saveLog($log, null, [], "Deleted"); } } } File::deleteDirectory(public_path($file)); } } } }