| Server IP : 13.235.167.51 / Your IP : 216.73.217.116 Web Server : Apache System : Linux machinox-server 6.17.0-1013-aws #13~24.04.1-Ubuntu SMP Fri Apr 24 21:36:58 UTC 2026 aarch64 User : root ( 0) PHP Version : 8.2.29 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/app.machinox.in/app/Http/Controllers/Admin/ |
Upload File : |
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Advertisement;
use App\Models\BoostAd;
use App\Models\ContactQuery;
use App\Models\MachineEnquiry;
use App\Models\Operator;
use App\Models\Transaction;
use App\Models\User;
use Carbon\Carbon;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class ReportsController extends Controller
{
public function getReports(Request $request, $type)
{
try {
$export = $request->get('export', 'csv');
$keyword = $request->get('keyword');
$status = $request->get('status');
$catId = $request->get('cat_id');
$sort_by = $request->get('sort_by', 'transactions.created_at');
$order_by = $request->get('order_by', 'desc');
$trxType = $request->get('trx_type');
$is_block = $request->get('is_block');
$startDate = Carbon::parse($request->get('start_date'));
$endDate = Carbon::parse($request->get('end_date'));
// -----------------------
// SMART DATE FILTER LOGIC
// -----------------------
$applyDateFilter = function ($query, $column) use ($startDate, $endDate, $request) {
$hasStart = $request->filled('start_date');
$hasEnd = $request->filled('end_date');
if ($hasStart && $hasEnd) {
return $query->whereBetween($column, [
$startDate->startOfDay(),
$endDate->endOfDay()
]);
}
if ($hasStart) {
return $query->where($column, '>=', $startDate->startOfDay());
}
if ($hasEnd) {
return $query->where($column, '<=', $endDate->endOfDay());
}
return $query;
};
switch ($type) {
// -------------------------------------
// APP USERS
// -------------------------------------
case 'APP_USERS':
$query = User::query()
->select([
'name',
'email',
'mobile_number',
'dial_code',
DB::raw("CASE WHEN is_operator = 1 THEN 'Yes' ELSE 'No' END AS is_operator"),
'created_at as registered_on'
])
->when($keyword, function ($query) use ($keyword) {
$query->where(function ($q) use ($keyword) {
$q->where('name', 'LIKE', "%$keyword%")
->orWhere('email', 'LIKE', "%$keyword%")
->orWhere('mobile_number', 'LIKE', "%$keyword%");
});
})
->when($is_block, function ($query) use ($is_block){
$query->where('is_block', true);
});
$applyDateFilter($query, 'created_at');
$query->orderBy('created_at', 'desc');
$fileName = 'App_Users_Report';
$message = trans('messages.APP_USERS_FETCHED');
break;
// -------------------------------------
// CUSTOMERS
// -------------------------------------
case 'CUSTOMERS':
$query = User::query()
->join('operators', 'operators.user_id', '=', 'users.id')
->select([
'users.name',
'users.email',
'users.mobile_number',
'users.created_at as joined_on'
])
->where('users.is_operator', false)
->when($keyword, function ($query) use ($keyword) {
$query->where(function ($q) use ($keyword) {
$q->where('users.name', 'LIKE', "%$keyword%")
->orWhere('users.email', 'LIKE', "%$keyword%")
->orWhere('users.mobile_number', 'LIKE', "%$keyword%");
});
});
$applyDateFilter($query, 'users.created_at');
$query->orderBy('users.created_at', 'desc');
$fileName = 'Customers_Report';
$message = trans('messages.CUSTOMERS_FETCHED');
break;
// -------------------------------------
// OPERATORS
// -------------------------------------
case 'OPERATORS':
$query = User::query()
->join('operators', 'operators.user_id', '=', 'users.id')
->select([
'users.name as operator_name',
'users.email',
'users.mobile_number',
DB::raw("CONCAT(operators.exp_year, ' Years ', operators.exp_month, ' Months') AS experience"),
'operators.technical_skills',
'users.created_at as joined_on'
])
->where('users.is_operator', true)
->when($keyword, function ($query) use ($keyword) {
$query->where(function ($q) use ($keyword) {
$q->where('users.name', 'LIKE', "%$keyword%")
->orWhere('users.email', 'LIKE', "%$keyword%")
->orWhere('users.mobile_number', 'LIKE', "%$keyword%");
});
});
$applyDateFilter($query, 'users.created_at');
$query->orderBy('users.created_at', 'desc');
$fileName = 'Operators_Report';
$message = trans('messages.OPERATORS_FETCHED');
break;
// -------------------------------------
// JOB SEEKERS
// -------------------------------------
case 'JOB_SEEKERS':
$query = Operator::query()
->join('users', 'users.id', '=', 'operators.user_id')
->select([
'users.name as user_name',
'users.email as user_email',
'users.mobile_number as mobile',
DB::raw("CONCAT(operators.exp_year, ' Years ', operators.exp_month, ' Months') AS experience"),
'operators.technical_skills',
'operators.open_to_work',
'operators.created_at as registered_on'
])
->where('open_to_work', true)
->when($keyword, function ($query) use ($keyword) {
$query->where(function ($q) use ($keyword) {
$q->where('users.name', 'LIKE', "%$keyword%")
->orWhere('users.email', 'LIKE', "%$keyword%")
->orWhere('users.mobile_number', 'LIKE', "%$keyword%");
});
});
$applyDateFilter($query, 'operators.created_at');
$query->orderBy('operators.created_at', 'desc');
$fileName = 'Job_Seekers_Report';
$message = trans('messages.JOB_SEEKERS_FETCHED');
break;
// -------------------------------------
// SELL / RENT ADS
// -------------------------------------
case 'SELL':
case 'RENT':
$query = Advertisement::query()
->join('users', 'users.id', '=', 'advertisements.user_id')
->select([
'users.name as user_name',
'advertisements.title',
'advertisements.advertise_type',
'advertisements.price',
'advertisements.status',
'advertisements.created_at as posted_on'
])
->where('advertise_type', strtoupper($type))
->where('is_draft', false)
->when($catId, fn($q) => $q->where('machine_type_id', $catId))
->when($status, fn($q) => $q->where('status', $status));
$applyDateFilter($query, 'advertisements.created_at');
$query->orderBy('advertisements.created_at', 'desc');
$fileName = ucfirst(strtolower($type)) . '_Advertisements_Report';
$message = trans('messages.' . strtoupper($type) . '_ADS_FETCHED');
break;
// -------------------------------------
// MACHINE ENQUIRY
// -------------------------------------
case 'MACHINE_ENQUIRY':
$query = MachineEnquiry::query()
->join('users', 'users.id', '=', 'machine_enquiries.user_id')
->select([
'users.name as user_name',
'users.email as user_email',
'users.mobile_number as user_mobile',
'machine_enquiries.brand_name',
'machine_enquiries.equipment_name',
'machine_enquiries.model',
'machine_enquiries.capacity',
'machine_enquiries.address',
'machine_enquiries.created_at as enquiry_date',
])
->whereNull('users.deleted_at')
->when($keyword, function ($query) use ($keyword) {
$query->where(function ($q) use ($keyword) {
$q->where('brand_name', 'LIKE', "%$keyword%")
->orWhere('equipment_name', 'LIKE', "%$keyword%")
->orWhere('model', 'LIKE', "%$keyword%")
->orWhere('capacity', 'LIKE', "%$keyword%")
->orWhereHas('user', function ($userQuery) use ($keyword) {
$userQuery->where('name', 'LIKE', "%$keyword%")
->orWhere('email', 'LIKE', "%$keyword%")
->orWhere('mobile_number', 'LIKE', "%$keyword%");
});
});
});
$applyDateFilter($query, 'machine_enquiries.created_at');
$query->orderBy('machine_enquiries.created_at', 'desc');
$fileName = 'Machine_Enquiries_Report';
$message = trans('messages.MACHINE_ENQUIRY_FETCHED');
break;
// -------------------------------------
// CUSTOMER QUERIES
// -------------------------------------
case 'CUSTOMER_QUERIES':
$query = ContactQuery::query()
->select([
'name as contact_name',
'email as contact_email',
'mobile_number as contact_mobile',
'message',
'status',
'feedback',
'created_at as submitted_on',
])
->when($keyword, function ($query) use ($keyword) {
$query->where(function ($q) use ($keyword) {
$q->where('name', 'LIKE', "%$keyword%")
->orWhere('message', 'LIKE', "%$keyword%");
});
})
->when($status, fn($q) => $q->where('status', $status));
$applyDateFilter($query, 'created_at');
$query->orderBy('created_at', 'desc');
$fileName = 'Customer_Queries_Report';
$message = trans('messages.CUSTOMER_QUERIES_FETCHED');
break;
// -------------------------------------
// BOOSTED ADS
// -------------------------------------
case 'BOOSTED_ADS':
$query = BoostAd::query()
->join('advertisements', 'advertisements.id', '=', 'boost_ads.ad_id')
->join('users', 'users.id', '=', 'advertisements.user_id')
->select([
'advertisements.title as ad_title',
'advertisements.advertise_type',
'users.name as user_name',
'boost_ads.state',
'boost_ads.start_date',
'boost_ads.end_date',
'boost_ads.created_at as boosted_on'
]);
$applyDateFilter($query, 'boost_ads.created_at');
$query->orderBy('boost_ads.created_at', 'desc');
$fileName = 'Boosted_Ads_Report';
$message = trans('messages.BOOSTED_ADS_FETCHED');
break;
// -------------------------------------
// TRANSACTIONS
// -------------------------------------
case 'TRANSACTIONS':
$query = Transaction::query()
->join('users', 'users.id', '=', 'transactions.user_id')
->select([
'transactions.cust_trx_id',
'users.name as user_name',
'transactions.type',
'transactions.trx_id',
'transactions.razorpay_payment_id',
'transactions.trx_amount',
'transactions.currency',
'transactions.payment_status',
'transactions.created_at as transaction_date'
])
->where('trx_status', 'SUCCESS')
->when($keyword, function ($query) use ($keyword) {
$query->where(function ($q) use ($keyword) {
$q->whereHas('plans', function ($planQuery) use ($keyword) {
$planQuery->where('type', 'LIKE', "%$keyword%")
->orWhere('duration', 'LIKE', "%$keyword%");
})
->orWhere('status', 'LIKE', "%$keyword%")
->orWhere('trx_status', 'LIKE', "%$keyword%")
->orWhere('cust_trx_id', 'LIKE', "%$keyword%")
->orWhere('trx_id', 'LIKE', "%$keyword%");
});
});
$applyDateFilter($query, 'transactions.created_at');
$list = $query->orderBy($sort_by, $order_by)
->get()
->map(function ($item) {
if (in_array($item->type, ['NEW', 'RENEW', 'UPGRADE'], true)) {
$item->type = 'SUBSCRIPTION';
}
return $item;
});
if ($trxType) {
$list = $list->where('type', $trxType)->values();
}
if ($export === 'pdf') {
return $this->exportDetailedPDF($list, 'Transactions_Report');
}
return $this->exportDetailedCSV($list, 'Transactions_Report');
default:
return $this->sendError(trans('messages.INVALID_REPORT_TYPE'));
}
$records = $query->get();
if ($export === 'pdf') {
return $this->exportDetailedPDF($records, $fileName);
}
return $this->exportDetailedCSV($records, $fileName);
} catch (Exception $e) {
return $this->sendError($e->getMessage());
}
}
// public function getReports(Request $request, $type)
// {
// try {
// $export = $request->get('export', 'csv');
// $keyword = $request->get('keyword');
// $status = $request->get('status');
// $catId = $request->get('cat_id');
// $sort_by = $request->get('sort_by', 'transactions.created_at');
// $order_by = $request->get('order_by', 'desc');
// $trxType = $request->get('trx_type');
// $startDate = Carbon::parse($request->get('start_date', now()->startOfMonth()));
// $endDate = Carbon::parse($request->get('end_date', now()));
// $applyDateFilter = function ($query, $column) use ($startDate, $endDate, $request) {
// $hasStart = $request->filled('start_date');
// $hasEnd = $request->filled('end_date');
// if ($hasStart && $hasEnd) {
// return $query->whereBetween($column, [
// $startDate->startOfDay(),
// $endDate->endOfDay()
// ]);
// }
// if ($hasStart) {
// return $query->where($column, '>=', $startDate->startOfDay());
// }
// if ($hasEnd) {
// return $query->where($column, '<=', $endDate->endOfDay());
// }
// return $query;
// };
// switch ($type) {
// case 'APP_USERS':
// $query = User::query()
// ->select([
// 'name',
// 'email',
// 'mobile_number',
// 'dial_code',
// 'created_at as registered_on'
// ])
// ->when($keyword, function ($query) use ($keyword) {
// $query->where(function ($q) use ($keyword) {
// $q->where('name', 'LIKE', '%' . $keyword . '%')
// ->orWhere('email', 'LIKE', '%' . $keyword . '%')
// ->orWhere('mobile_number', 'LIKE', '%' . $keyword . '%');
// });
// })
// ->whereBetween('created_at', [$startDate->startOfDay(), $endDate->endOfDay()])
// ->orderBy('created_at', 'desc');
// $fileName = 'App_Users_Report';
// $message = trans('messages.APP_USERS_FETCHED');
// break;
// case 'CUSTOMERS':
// $query = User::query()
// ->join('operators', 'operators.user_id', '=', 'users.id')
// ->select([
// 'users.name',
// 'users.email',
// 'users.mobile_number',
// 'users.created_at as joined_on'
// ])
// ->where('users.is_operator', false)
// ->when($keyword, function ($query) use ($keyword) {
// $query->where(function ($q) use ($keyword) {
// $q->where('users.name', 'LIKE', '%' . $keyword . '%')
// ->orWhere('users.email', 'LIKE', '%' . $keyword . '%')
// ->orWhere('users.mobile_number', 'LIKE', '%' . $keyword . '%');
// });
// })
// ->whereBetween('users.created_at', [$startDate->startOfDay(), $endDate->endOfDay()])
// ->orderBy('users.created_at', 'desc');
// $fileName = 'Customers_Report';
// $message = trans('messages.CUSTOMERS_FETCHED');
// break;
// case 'OPERATORS':
// $query = User::query()
// ->join('operators', 'operators.user_id', '=', 'users.id')
// ->select([
// 'users.name as operator_name',
// 'users.email',
// 'users.mobile_number',
// DB::raw("CONCAT(operators.exp_year, ' Years ', operators.exp_month, ' Months') as experience"),
// 'operators.technical_skills',
// 'users.created_at as joined_on'
// ])
// ->where('users.is_operator', true)
// ->when($keyword, function ($query) use ($keyword) {
// $query->where(function ($q) use ($keyword) {
// $q->where('users.name', 'LIKE', '%' . $keyword . '%')
// ->orWhere('users.email', 'LIKE', '%' . $keyword . '%')
// ->orWhere('users.mobile_number', 'LIKE', '%' . $keyword . '%');
// });
// })
// ->whereBetween('users.created_at', [$startDate->startOfDay(), $endDate->endOfDay()])
// ->orderBy('users.created_at', 'desc');
// $fileName = 'Operators_Report';
// $message = trans('messages.OPERATORS_FETCHED');
// break;
// case 'JOB_SEEKERS':
// $query = Operator::query()
// ->join('users', 'users.id', '=', 'operators.user_id')
// ->select([
// 'users.name as user_name',
// 'users.email as user_email',
// 'users.mobile_number as mobile',
// DB::raw("CONCAT(operators.exp_year, ' Years ', operators.exp_month, ' Months') as experience"),
// 'operators.technical_skills',
// 'operators.open_to_work',
// 'operators.created_at as registered_on'
// ])
// ->where('open_to_work', true)
// ->when($keyword, function ($query) use ($keyword) {
// $query->where(function ($q) use ($keyword) {
// $q->where('users.name', 'LIKE', '%' . $keyword . '%')
// ->orWhere('users.email', 'LIKE', '%' . $keyword . '%')
// ->orWhere('users.mobile_number', 'LIKE', '%' . $keyword . '%');
// });
// })
// ->whereBetween('operators.created_at', [$startDate->startOfDay(), $endDate->endOfDay()])
// ->orderBy('operators.created_at', 'desc');
// $fileName = 'Job_Seekers_Report';
// $message = trans('messages.JOB_SEEKERS_FETCHED');
// break;
// case 'SELL':
// case 'RENT':
// $query = Advertisement::query()
// ->join('users', 'users.id', '=', 'advertisements.user_id')
// ->select([
// 'users.name as user_name',
// 'advertisements.title',
// 'advertisements.advertise_type',
// 'advertisements.price',
// 'advertisements.status',
// 'advertisements.created_at as posted_on'
// ])
// ->where('advertise_type', strtoupper($type))
// ->where('is_draft', false)
// ->when($catId, function ($query) use ($catId) {
// $query->where('machine_type_id', $catId);
// })
// ->when($status, function ($query) use ($status) {
// $query->where('status', $status);
// })
// ->whereBetween('advertisements.created_at', [$startDate->startOfDay(), $endDate->endOfDay()])
// ->orderBy('advertisements.created_at', 'desc');
// $fileName = ucfirst(strtolower($type)) . '_Advertisements_Report';
// $message = trans('messages.' . strtoupper($type) . '_ADS_FETCHED');
// break;
// case 'MACHINE_ENQUIRY':
// $query = MachineEnquiry::query()
// ->join('users', 'users.id', '=', 'machine_enquiries.user_id')
// ->select([
// 'users.name as user_name',
// 'users.email as user_email',
// 'users.mobile_number as user_mobile',
// 'machine_enquiries.brand_name',
// 'machine_enquiries.equipment_name',
// 'machine_enquiries.model',
// 'machine_enquiries.capacity',
// 'machine_enquiries.address',
// 'machine_enquiries.created_at as enquiry_date',
// ])
// ->when($keyword, function ($query) use ($keyword) {
// $query->where(function ($q) use ($keyword) {
// $q->where('brand_name', 'LIKE', '%' . $keyword . '%')
// ->orWhere('equipment_name', 'LIKE', '%' . $keyword . '%')
// ->orWhere('model', 'LIKE', '%' . $keyword . '%')
// ->orWhere('capacity', 'LIKE', '%' . $keyword . '%')
// ->orWhereHas('user', function ($userQuery) use ($keyword) {
// $userQuery->where('name', 'LIKE', '%' . $keyword . '%')
// ->orWhere('email', 'LIKE', '%' . $keyword . '%')
// ->orWhere('mobile_number', 'LIKE', '%' . $keyword . '%');
// });
// });
// })
// ->whereBetween('machine_enquiries.created_at', [$startDate->startOfDay(), $endDate->endOfDay()])
// ->orderBy('machine_enquiries.created_at', 'desc');
// $fileName = 'Machine_Enquiries_Report';
// $message = trans('messages.MACHINE_ENQUIRY_FETCHED');
// break;
// case 'CUSTOMER_QUERIES':
// $query = ContactQuery::query()
// ->select([
// 'name as contact_name',
// 'email as contact_email',
// 'mobile_number as contact_mobile',
// 'message',
// 'status',
// 'feedback',
// 'created_at as submitted_on',
// ])
// ->when($keyword, function ($query) use ($keyword) {
// $query->where(function ($q) use ($keyword) {
// $q->where('name', 'LIKE', '%' . $keyword . '%')
// ->orWhere('message', 'LIKE', '%' . $keyword . '%');
// });
// })
// ->when($status, fn($q) => $q->where('status', $status))
// ->whereBetween('created_at', [$startDate->startOfDay(), $endDate->endOfDay()])
// ->orderBy('created_at', 'desc');
// $fileName = 'Customer_Queries_Report';
// $message = trans('messages.CUSTOMER_QUERIES_FETCHED');
// break;
// case 'BOOSTED_ADS':
// $query = BoostAd::query()
// ->join('advertisements', 'advertisements.id', '=', 'boost_ads.ad_id')
// ->join('users', 'users.id', '=', 'advertisements.user_id')
// ->select([
// 'advertisements.title as ad_title',
// 'advertisements.advertise_type',
// 'users.name as user_name',
// 'boost_ads.state',
// 'boost_ads.start_date',
// 'boost_ads.end_date',
// 'boost_ads.created_at as boosted_on'
// ])
// ->whereBetween('boost_ads.created_at', [$startDate->startOfDay(), $endDate->endOfDay()])
// ->orderBy('boost_ads.created_at', 'desc');
// $fileName = 'Boosted_Ads_Report';
// $message = trans('messages.BOOSTED_ADS_FETCHED');
// break;
// case 'TRANSACTIONS':
// $query = Transaction::query()
// ->join('users', 'users.id', '=', 'transactions.user_id')
// ->select([
// 'transactions.cust_trx_id',
// 'users.name as user_name',
// 'transactions.type',
// 'transactions.trx_id',
// 'transactions.razorpay_payment_id',
// 'transactions.trx_amount',
// 'transactions.currency',
// 'transactions.payment_status',
// 'transactions.created_at as transaction_date'
// ])
// ->where('trx_status', 'SUCCESS')
// ->when($keyword, function ($query) use ($keyword) {
// $query->where(function ($q) use ($keyword) {
// $q->whereHas('plans', function ($planQuery) use ($keyword) {
// $planQuery->where('type', 'LIKE', '%' . $keyword . '%')
// ->orWhere('duration', 'LIKE', '%' . $keyword . '%');
// })
// ->orWhere('status', 'LIKE', '%' . $keyword . '%')
// ->orWhere('trx_status', 'LIKE', '%' . $keyword . '%')
// ->orWhere('cust_trx_id', 'LIKE', '%' . $keyword . '%')
// ->orWhere('trx_id', 'LIKE', '%' . $keyword . '%');
// });
// })
// ->whereBetween('transactions.created_at', [$startDate->startOfDay(), $endDate->endOfDay()]);
// $list = $query->orderBy($sort_by, $order_by)
// ->get()
// ->map(function ($item) {
// if (in_array($item->type, ['NEW', 'RENEW', 'UPGRADE'], true)) {
// $item->type = 'SUBSCRIPTION';
// }
// return $item;
// });
// if ($trxType) {
// $list = $list->where('type', $trxType)->values();
// }
// if ($export === 'pdf') {
// return $this->exportDetailedPDF($list, 'Transactions_Report');
// }
// return $this->exportDetailedCSV($list, 'Transactions_Report');
// default:
// return $this->sendError(trans('messages.INVALID_REPORT_TYPE'));
// }
// $records = $query->get();
// if ($export === 'pdf') {
// return $this->exportDetailedPDF($records, $fileName);
// }
// return $this->exportDetailedCSV($records, $fileName);
// } catch (Exception $e) {
// return $this->sendError($e->getMessage());
// }
// }
// public function getReports(Request $request, $type)
// {
// try {
// $export = $request->get('export', 'csv');
// $startDate = Carbon::parse($request->get('start_date', now()->startOfMonth()));
// $endDate = Carbon::parse($request->get('end_date', now()));
// switch ($type) {
// case 'APP_USERS':
// $query = User::query()
// ->select([
// 'uuid',
// 'name',
// 'email',
// 'mobile_number',
// 'dial_code',
// 'country_code',
// 'profile_image',
// 'created_at as registered_on'
// ])
// ->whereBetween('created_at', [$startDate->startOfDay(), $endDate->endOfDay()])
// ->orderBy('created_at', 'desc');
// $fileName = 'App_Users_Report';
// $message = trans('messages.APP_USERS_FETCHED');
// break;
// case 'OPERATORS':
// $query = User::query()
// ->join('operators', 'operators.user_id', '=', 'users.id')
// ->select([
// 'users.name as operator_name',
// 'users.email',
// 'users.mobile_number',
// DB::raw("CONCAT(operators.exp_year, ' Years ', operators.exp_month, ' Months') as experience"),
// 'operators.technical_skills',
// 'users.created_at as joined_on'
// ])
// ->where('users.is_operator', true)
// ->whereBetween('users.created_at', [$startDate->startOfDay(), $endDate->endOfDay()])
// ->orderBy('users.created_at', 'desc');
// $fileName = 'Operators_Report';
// $message = trans('messages.OPERATORS_FETCHED');
// break;
// case 'JOB_SEEKERS':
// $query = Operator::query()
// ->join('users', 'users.id', '=', 'operators.user_id')
// ->select([
// 'users.name as user_name',
// 'users.email as user_email',
// 'users.mobile_number as mobile',
// DB::raw("CONCAT(operators.exp_year, ' Years ', operators.exp_month, ' Months') as experience"),
// 'operators.technical_skills',
// 'operators.open_to_work',
// 'operators.created_at as registered_on'
// ])
// ->where('open_to_work', true)
// ->whereBetween('operators.created_at', [$startDate->startOfDay(), $endDate->endOfDay()])
// ->orderBy('operators.created_at', 'desc');
// $fileName = 'Job_Seekers_Report';
// $message = trans('messages.JOB_SEEKERS_FETCHED');
// break;
// case 'SELL':
// case 'RENT':
// $query = Advertisement::query()
// ->join('users', 'users.id', '=', 'advertisements.user_id')
// ->select([
// 'advertisements.uuid',
// 'users.name as user_name',
// 'advertisements.title',
// 'advertisements.advertise_type',
// 'advertisements.price',
// 'advertisements.status',
// 'advertisements.created_at as posted_on'
// ])
// ->where('advertise_type', strtoupper($type))
// ->whereBetween('advertisements.created_at', [$startDate->startOfDay(), $endDate->endOfDay()])
// ->orderBy('advertisements.created_at', 'desc');
// $fileName = ucfirst(strtolower($type)) . '_Advertisements_Report';
// $message = trans('messages.' . strtoupper($type) . '_ADS_FETCHED');
// break;
// case 'MACHINE_ENQUIRY':
// $query = MachineEnquiry::query()
// ->join('users', 'users.id', '=', 'machine_enquiries.user_id')
// ->select([
// 'users.name as user_name',
// 'users.email as user_email',
// 'users.mobile_number as user_mobile',
// 'machine_enquiries.brand_name',
// 'machine_enquiries.equipment_name',
// 'machine_enquiries.model',
// 'machine_enquiries.capacity',
// 'machine_enquiries.address',
// 'machine_enquiries.created_at as enquiry_date',
// ])
// ->whereBetween('machine_enquiries.created_at', [$startDate->startOfDay(), $endDate->endOfDay()])
// ->orderBy('machine_enquiries.created_at', 'desc');
// $fileName = 'Machine_Enquiries_Report';
// $message = trans('messages.MACHINE_ENQUIRY_FETCHED');
// break;
// case 'CUSTOMER_QUERIES':
// $query = ContactQuery::query()
// ->select([
// 'name as contact_name',
// 'email as contact_email',
// 'mobile_number as contact_mobile',
// 'message',
// 'status',
// 'feedback',
// 'created_at as submitted_on',
// ])
// ->whereBetween('created_at', [$startDate->startOfDay(), $endDate->endOfDay()])
// ->orderBy('created_at', 'desc');
// $fileName = 'Customer_Queries_Report';
// $message = trans('messages.CUSTOMER_QUERIES_FETCHED');
// break;
// case 'BOOSTED_ADS':
// $query = BoostAd::query()
// ->join('advertisements', 'advertisements.id', '=', 'boost_ads.ad_id')
// ->join('users', 'users.id', '=', 'advertisements.user_id')
// ->select([
// 'advertisements.title as ad_title',
// 'advertisements.advertise_type',
// 'users.name as user_name',
// 'boost_ads.state',
// 'boost_ads.start_date',
// 'boost_ads.end_date',
// 'boost_ads.created_at as boosted_on'
// ])
// ->whereBetween('boost_ads.created_at', [$startDate->startOfDay(), $endDate->endOfDay()])
// ->orderBy('boost_ads.created_at', 'desc');
// $fileName = 'Boosted_Ads_Report';
// $message = trans('messages.BOOSTED_ADS_FETCHED');
// break;
// case 'TRANSACTIONS':
// $query = Transaction::query()
// ->join('users', 'users.id', '=', 'transactions.user_id')
// ->select([
// 'transactions.cust_trx_id',
// 'users.name as user_name',
// 'transactions.type',
// 'transactions.trx_id',
// 'transactions.razorpay_payment_id',
// 'transactions.trx_amount',
// 'transactions.currency',
// 'transactions.payment_status',
// 'transactions.created_at as transaction_date'
// ])
// ->where('trx_status', 'SUCCESS')
// ->whereBetween('transactions.created_at', [$startDate->startOfDay(), $endDate->endOfDay()])
// ->orderBy('transactions.created_at', 'desc');
// $fileName = 'Transactions_Report';
// $message = trans('messages.TRANSACTIONS_FETCHED');
// break;
// default:
// return $this->sendError(trans('messages.INVALID_REPORT_TYPE'));
// }
// $records = $query->get();
// if ($export === 'pdf') {
// return $this->exportDetailedPDF($records, $fileName);
// }
// return $this->exportDetailedCSV($records, $fileName);
// } catch (Exception $e) {
// return $this->sendError($e->getMessage());
// }
// }
}