543 lines
25 KiB
PHP
543 lines
25 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models;
|
|
use Session;
|
|
use Excel;
|
|
use App\Imports\SenderidImport;
|
|
use Illuminate\Support\Facades\File;
|
|
|
|
class SenderIdController extends Controller
|
|
{
|
|
public function index(){
|
|
$senderid_arr = new Models\SenderId;
|
|
// $senderid_arr = $senderid_arr->with('modified_by_info', 'network_info', 'created_by_info')->orderBy('senderid', 'ASC')->paginate(15);
|
|
// dd($senderid_arr);
|
|
$data = [
|
|
'page_title' => 'Sender IDs',
|
|
// 'senderid_arr' => $senderid_arr,
|
|
'current_user' => session('current_user')
|
|
];
|
|
return view('senderid.index', $data);
|
|
}
|
|
public function getSenderIdsJsonBak(Request $request)
|
|
{
|
|
#$this->log_query();
|
|
$senderid_arr = \DB::table('sender_ids')
|
|
->join('staff_members AS staffcreate', 'staffcreate.id', '=', 'sender_ids.created_by')
|
|
->join('staff_members AS staffmodify', 'staffmodify.id', '=', 'sender_ids.last_modified_by')
|
|
// ->join('network_operators', 'network_operators.id', '=', 'sender_ids.network_id')
|
|
// ->join('clients', 'clients.id', '=', 'sender_ids.client_id')
|
|
->select('sender_ids.id', 'mno_name', 'supplier_name', 'sender_ids.senderid', 'sender_ids.status', 'sender_ids.remarks', 'staffcreate.name As createdBy','sender_ids.direct_mno', 'staffmodify.name AS modifiedBy')
|
|
->orderBy('sender_ids.senderid', 'ASC')
|
|
->paginate(15);
|
|
|
|
if($request->has('keyword')){
|
|
|
|
$queries = [];
|
|
$keyword = $request->keyword;
|
|
$request->session()->put('current_user.senderid_keyword', $keyword);
|
|
$queries['keyword'] = $keyword;
|
|
$senderid_arr = \DB::table('sender_ids')
|
|
->join('staff_members AS staffcreate', 'staffcreate.id', '=', 'sender_ids.created_by')
|
|
->join('staff_members AS staffmodify', 'staffmodify.id', '=', 'sender_ids.last_modified_by')
|
|
// ->join('network_operators', 'network_operators.id', '=', 'sender_ids.network_id')
|
|
// ->join('clients', 'clients.id', '=', 'sender_ids.client_id')
|
|
->select('sender_ids.id', 'mno_name', 'supplier_name', 'sender_ids.senderid', 'sender_ids.status', 'sender_ids.remarks', 'staffcreate.name As createdBy', 'sender_ids.direct_mno', 'staffmodify.name AS modifiedBy')
|
|
->whereRaw("sender_ids.senderid LIKE '%$keyword%' OR sender_ids.status LIKE '%$keyword%' OR mno_name LIKE '%$keyword%' OR supplier_name LIKE '%$keyword%' OR staffcreate.name LIKE '%$keyword%' OR staffmodify.name LIKE '%$keyword%' OR sender_ids.direct_mno LIKE '%$keyword%'")
|
|
->orderBy('sender_ids.senderid', 'ASC')
|
|
->paginate(15)->appends($queries);
|
|
}
|
|
return response()->json($senderid_arr);
|
|
}
|
|
function getSenderIdsJson(Request $request){
|
|
$query = \DB::table('sender_ids')
|
|
->join('staff_members AS staffcreate', 'staffcreate.id', '=', 'sender_ids.created_by')
|
|
->join('staff_members AS staffmodify', 'staffmodify.id', '=', 'sender_ids.last_modified_by')
|
|
->select(
|
|
'sender_ids.id',
|
|
'mno_name',
|
|
'supplier_name',
|
|
'sender_ids.senderid',
|
|
'sender_ids.status',
|
|
'sender_ids.remarks',
|
|
'staffcreate.name AS createdBy',
|
|
'sender_ids.direct_mno',
|
|
'staffmodify.name AS modifiedBy'
|
|
);
|
|
|
|
// 2. Handle Tabulator's Column Header Filters
|
|
if ($request->has('filter')) {
|
|
$filters = $request->input('filter');
|
|
|
|
// Map the Tabulator JS fields to the actual database table columns
|
|
$columnMap = [
|
|
'createdBy' => 'staffcreate.name',
|
|
'modifiedBy' => 'staffmodify.name',
|
|
'mno_name' => 'mno_name', // Add table prefixes here if needed
|
|
'supplier_name' => 'supplier_name'
|
|
];
|
|
|
|
foreach ($filters as $filter) {
|
|
$field = $filter['field'];
|
|
$value = $filter['value'];
|
|
|
|
// Determine the correct DB column. Default to sender_ids table to avoid 'ambiguous column' errors
|
|
$dbColumn = $columnMap[$field] ?? 'sender_ids.' . $field;
|
|
|
|
// Securely bind the value using Laravel's active record (prevents SQL injection)
|
|
$query->where($dbColumn, 'LIKE', '%' . $value . '%');
|
|
}
|
|
}
|
|
|
|
// 3. Handle your existing Global Keyword Search (if you still have a global search box)
|
|
if ($request->has('keyword')) {
|
|
$keyword = $request->input('keyword');
|
|
$request->session()->put('current_user.senderid_keyword', $keyword);
|
|
|
|
// Group the OR conditions in a closure so they don't break the Tabulator filters above
|
|
$query->where(function($q) use ($keyword) {
|
|
$q->where('sender_ids.senderid', 'LIKE', "%{$keyword}%")
|
|
->orWhere('sender_ids.status', 'LIKE', "%{$keyword}%")
|
|
->orWhere('mno_name', 'LIKE', "%{$keyword}%")
|
|
->orWhere('supplier_name', 'LIKE', "%{$keyword}%")
|
|
->orWhere('staffcreate.name', 'LIKE', "%{$keyword}%")
|
|
->orWhere('staffmodify.name', 'LIKE', "%{$keyword}%")
|
|
->orWhere('sender_ids.direct_mno', 'LIKE', "%{$keyword}%");
|
|
});
|
|
}
|
|
|
|
// 4. Order and fetch the final Paginated results
|
|
$query->orderBy('sender_ids.senderid', 'ASC');
|
|
|
|
// Grab Tabulator's requested page size, default to 15
|
|
$perPage = $request->input('size', 15);
|
|
$senderid_arr = $query->paginate($perPage);
|
|
|
|
// If using the global keyword, append it to the pagination links
|
|
if ($request->has('keyword')) {
|
|
$senderid_arr->appends(['keyword' => $request->keyword]);
|
|
}
|
|
return response()->json($senderid_arr);
|
|
}
|
|
public function create()
|
|
{
|
|
#$network_arr = Models\NetworkOps::pluck('name','country');
|
|
|
|
$networks = \DB::table('network_operators')->Select(\DB::raw('concat(name, " (", country, ")") AS networkvalue, concat(name, " (", country, ")") AS network'))->orderBy('network')->get()->toArray();
|
|
$network_arr = array_pluck($networks, 'network', 'networkvalue');
|
|
$direct_mno_arr = ['YES' => 'YES', 'NO' => 'NO'];
|
|
|
|
// dd($network_arr);
|
|
#$network_arr = array_combine($network_arr, $network_arr);
|
|
|
|
|
|
// $clients = Models\Client::pluck('name', 'name');
|
|
$clients = \DB::table('clients')->Select(\DB::raw('concat(name, " (", country, ")") AS clientvalue, concat(name, " (", country, ")") AS client'))->orderBy('client')->get()->toArray();
|
|
$client_arr = array_pluck($clients, 'client', 'clientvalue');
|
|
$staffmembers = Models\StaffMember::pluck('name', 'id');
|
|
#$status = ['Pending' => 'Pending', 'Inactive' => 'Inactive', 'Approved' => 'Approved'];
|
|
#$status = ['Applied to MNO', 'Applied to Aggregator', 'Approved on MNO', 'Approved on Aggregator', 'Active', 'InActive'];
|
|
$status = [
|
|
'Applied to MNO' => 'Applied to MNO',
|
|
'Applied to Aggregator' => 'Applied to Aggregator',
|
|
'Approved on MNO' => 'Approved on MNO',
|
|
'Approved on Aggregator' => 'Approved on Aggregator',
|
|
'Active' => 'Active',
|
|
'Inactive' => 'InActive'
|
|
];
|
|
|
|
$data = [
|
|
'page_title' => 'Create Sender ID',
|
|
'network_arr' => $network_arr,
|
|
'status' => $status,
|
|
'clients' => $client_arr,
|
|
'direct_mno_arr' => $direct_mno_arr,
|
|
'staffmembers' => $staffmembers
|
|
];
|
|
// dd($data);
|
|
return view('senderid.create', $data);
|
|
}
|
|
public function showuploadform(){
|
|
$data = [
|
|
'page_title' => 'Upload Sender IDs',
|
|
];
|
|
return view('senderid.uploadbulk', $data);
|
|
}
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function store(Request $request)
|
|
{
|
|
$request->validate([
|
|
'senderid' => 'required|max:11',
|
|
'mno_name' => 'required_if:direct_mno,YES',
|
|
'supplier_name' => 'required_if:direct_mno,NO',
|
|
'status' => 'required',
|
|
'remarks' => 'sometimes',
|
|
]);
|
|
// dump($request->all());
|
|
/*
|
|
$check_duplicate = Models\SenderId::where('senderid', $request->senderid)
|
|
->where('mno_name', $request->mno_name)
|
|
->first();
|
|
*/
|
|
|
|
$check_duplicate = Models\SenderId::where('senderid', $request->senderid)->first();
|
|
// dd($check_duplicate);
|
|
if ($check_duplicate) {
|
|
// code...
|
|
if ($request->direct_mno == 'YES' && $check_duplicate->direct_mno == 'YES') {
|
|
if ($request->mno_name == $check_duplicate->mno_name) {
|
|
return redirect()->back()->withInput()->withErrors("Sender ID already exist for " . $request->mno_name );
|
|
}
|
|
}
|
|
if ($request->direct_mno == 'NO' && $check_duplicate->direct_mno == 'NO') {
|
|
if ($request->supplier_name == $check_duplicate->supplier_name) {
|
|
return redirect()->back()->withInput()->withErrors("Sender ID already exist for " . $request->supplier_name );
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
// dd('foo stop');
|
|
// if($check_duplicate){
|
|
// return redirect()->back()->withInput()->withErrors("Sender ID already exist for " . $request->mno_name );
|
|
// }
|
|
|
|
$senderid_arr = $request->except('_token');
|
|
$senderid_arr['created_by'] = session('current_user.id');
|
|
$senderid_arr['last_modified_by'] = session('current_user.id');
|
|
$senderid_arr['remarks'] = $request->remarks ?? '';
|
|
$senderid_arr['direct_mno'] = $request->direct_mno;
|
|
|
|
|
|
// dd($senderid_arr);
|
|
$result = Models\SenderId::create($senderid_arr);
|
|
|
|
/*
|
|
if ($request->direct_mno == 'NO') {
|
|
$mno_world_wide = Models\Worldwidemno::find($request->network_id);
|
|
// code... save in the network ops with status as non-direct ... user createOrUpdate method
|
|
$network_ops_arr['name'] = $mno_world_wide->network;
|
|
$network_ops_arr['country'] = $mno_world_wide->country;
|
|
$network_ops_arr['name'] = $mno_world_wide->network;
|
|
$network_ops_arr['direct_business'] = 'NO'; // $mno_world_wide->network;
|
|
$result = Models\NetworkOps::updateOrCreate(['name' => $mno_world_wide->network, 'country' => $mno_world_wide->country, 'direct_business' => 'NO'], $network_ops_arr);
|
|
$senderid_arr['network_id'] = $result->id;
|
|
}
|
|
//validate senderid with same client and same network
|
|
// $result = Models\SenderId::create($senderid_arr);
|
|
$result = Models\SenderId::updateOrCreate([
|
|
'network_id' => $senderid_arr['network_id'],
|
|
'client_id' => $senderid_arr['client_id'],
|
|
'senderid' => $senderid_arr['senderid']
|
|
], $senderid_arr);
|
|
*/
|
|
|
|
#save services this has been moved to the main client table
|
|
//$retval = $this->store_services($request->services, $result->id);
|
|
// dd('foo bar');
|
|
Session::flash('success_message', 'Sender ID successfully added');
|
|
return redirect(url('senderids'));
|
|
}
|
|
public function uploadstore(Request $request)
|
|
{
|
|
$request->validate([
|
|
'senderid_file' => 'required|max:6000|mimes:xlx,xlsx',
|
|
]);
|
|
|
|
|
|
$request->session()->put('current_user.rejected_rows_filename', '');
|
|
|
|
// dump($request->all());
|
|
$networks = \DB::table('network_operators')->Select(\DB::raw('concat(name, " (", country, ")") AS networkvalue, concat(name, " (", country, ")") AS network'))->orderBy('network')->get()->toArray();
|
|
|
|
$network_arr = array_pluck($networks, 'network', 'networkvalue');
|
|
|
|
$clients = \DB::table('clients')->Select(\DB::raw('concat(name, " (", country, ")") AS clientvalue, concat(name, " (", country, ")") AS client'))->orderBy('client')->get()->toArray();
|
|
$client_arr = array_pluck($clients, 'client', 'clientvalue');
|
|
|
|
if (!$request->hasFile('senderid_file') && !$request->senderid_file->isValid() ) {
|
|
Session::flash('error_message', 'File could not be loaded');
|
|
return redirect()->back();
|
|
}
|
|
$file = $request->senderid_file;
|
|
$filename = "erp_" . time() . str_random(6) . "." . $request->senderid_file->extension();
|
|
$request->senderid_file->storeAs('general_files', $filename, 'public');
|
|
|
|
$stored_file = public_path('documents/general_files/'.$filename);
|
|
$extracted_arr = Excel::toArray(new SenderidImport, $stored_file);
|
|
// dd($extracted_arr[0]);
|
|
$row_count = $extracted_arr[0];
|
|
$main = [];
|
|
$count = 0;
|
|
$senderid_arr = [];
|
|
$rejected_rows = [];
|
|
$rejected_rows_filename = public_path('documents/general_files/'. $filename . "_rejected_rows.txt");
|
|
foreach ($extracted_arr[0] as $key => $value) {
|
|
if ($value['senderid'] == null) {
|
|
file_put_contents($rejected_rows_filename, json_encode($value) . PHP_EOL, FILE_APPEND);
|
|
continue;
|
|
}
|
|
if ($value['direct_mno'] == "YES" && $value['mno_name'] == null) {
|
|
file_put_contents($rejected_rows_filename, json_encode($value) . PHP_EOL, FILE_APPEND);
|
|
continue;
|
|
}
|
|
if ($value['direct_mno'] == "NO" && $value['supplier_name'] == null) {
|
|
file_put_contents($rejected_rows_filename, json_encode($value) . PHP_EOL, FILE_APPEND);
|
|
continue;
|
|
}
|
|
if ($value['direct_mno'] == "YES" && in_array($value['mno_name'], $network_arr) == true) {
|
|
file_put_contents($rejected_rows_filename, json_encode($value) . PHP_EOL, FILE_APPEND);
|
|
continue;
|
|
}
|
|
if ($value['direct_mno'] == "NO" && in_array($value['supplier_name'], $client_arr) == true) {
|
|
file_put_contents($rejected_rows_filename, json_encode($value) . PHP_EOL, FILE_APPEND);
|
|
continue;
|
|
}
|
|
$check_duplicate_mno = Models\SenderId::where('senderid', $value['senderid'])
|
|
->where('mno_name', $value['mno_name'])
|
|
->first();
|
|
$check_duplicate_client = Models\SenderId::where('senderid', $value['senderid'])
|
|
->where('supplier_name', $value['supplier_name'])
|
|
->first();
|
|
|
|
if ($check_duplicate_mno && $value['direct_mno'] == "YES") {
|
|
file_put_contents($rejected_rows_filename, json_encode($value) . PHP_EOL, FILE_APPEND);
|
|
continue;
|
|
}
|
|
if ($check_duplicate_client && $value['direct_mno'] == "NO") {
|
|
file_put_contents($rejected_rows_filename, json_encode($value) . PHP_EOL, FILE_APPEND);
|
|
continue;
|
|
}
|
|
if (strtoupper($value['direct_mno']) == 'YES') {
|
|
// dd('foo bar');
|
|
$senderid_arr['senderid'] = $value['senderid'];
|
|
$senderid_arr['mno_name'] = $value['mno_name'];
|
|
$senderid_arr['status'] = $value['status'];
|
|
$senderid_arr['created_by'] = session('current_user.id');
|
|
$senderid_arr['last_modified_by'] = session('current_user.id');
|
|
$senderid_arr['remarks'] = $value['remarks'];
|
|
$senderid_arr['direct_mno'] = 'YES';
|
|
}
|
|
else{
|
|
$senderid_arr['senderid'] = $value['senderid'];
|
|
$senderid_arr['supplier_name'] = $value['supplier_name'];
|
|
$senderid_arr['status'] = $value['status'];
|
|
$senderid_arr['created_by'] = session('current_user.id');
|
|
$senderid_arr['last_modified_by'] = session('current_user.id');
|
|
$senderid_arr['remarks'] = $value['remarks'];
|
|
$senderid_arr['direct_mno'] = 'NO';
|
|
}
|
|
|
|
// dd($senderid_arr);
|
|
$result = Models\SenderId::create($senderid_arr);
|
|
// dd($retval);
|
|
|
|
}
|
|
|
|
$request->session()->put('current_user.rejected_rows_filename', $filename . "_rejected_rows.txt");
|
|
$rejected = file($rejected_rows_filename);
|
|
|
|
// dump(session('current_user.rejected_rows_filename'));
|
|
// dd('the end');
|
|
Session::flash('success_message', 'Bulk Sender ID successfully uploaded, review the report file!');
|
|
return redirect(url('senderids'));
|
|
}
|
|
public function getUploadReport($name){
|
|
$file = public_path('documents/general_files/') . $name;
|
|
$headers = ['Content-Type' => 'text/plain '];
|
|
return \Response::download($file, 'Sender ID Upload Report.xlsx', $headers);
|
|
}
|
|
public function getSampleFile(){
|
|
$file = public_path('helper_documents/senderid_sample_file.xlsx');
|
|
$headers = ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'];
|
|
return \Response::download($file, 'Sender ID Sample Upload File.xlsx', $headers);
|
|
}
|
|
public function edit($id){
|
|
$senderid = Models\SenderId::findOrFail($id);
|
|
//dd($senderid);
|
|
|
|
|
|
$networks = \DB::table('network_operators')->Select(\DB::raw('concat(name, " (", country, ")") AS networkvalue, concat(name, " (", country, ")") AS network'))->orderBy('network')->get()->toArray();
|
|
$network_arr = array_pluck($networks, 'network', 'networkvalue');
|
|
$direct_mno_arr = ['YES' => 'YES', 'NO' => 'NO'];
|
|
// dd($network_arr);
|
|
|
|
$clients = \DB::table('clients')->Select(\DB::raw('concat(name, " (", country, ")") AS clientvalue, concat(name, " (", country, ")") AS client'))->orderBy('client')->get()->toArray();
|
|
$client_arr = array_pluck($clients, 'client', 'clientvalue');
|
|
$staffmembers = Models\StaffMember::pluck('name', 'id');
|
|
// $status = ['Pending' => 'Pending', 'Inactive' => 'Inactive', 'Approved' => 'Approved'];
|
|
$status = [
|
|
'Applied to MNO' => 'Applied to MNO',
|
|
'Applied to Aggregator' => 'Applied to Aggregator',
|
|
'Approved on MNO' => 'Approved on MNO',
|
|
'Approved on Aggregator' => 'Approved on Aggregator',
|
|
'Active' => 'Active',
|
|
'Inactive' => 'InActive'
|
|
];
|
|
|
|
// $data = [
|
|
// 'page_title' => 'Create Sender ID',
|
|
// 'network_arr' => $network_arr, G*385058081508uq
|
|
// 'status' => $status,
|
|
// 'clients' => $clients,
|
|
// 'senderid' => $senderid,
|
|
// 'direct_mno_arr' => $direct_mno_arr,
|
|
// 'staffmembers' => $staffmembers
|
|
// ];
|
|
$data = [
|
|
'page_title' => 'Edit Sender ID',
|
|
'network_arr' => $network_arr,
|
|
'status' => $status,
|
|
'clients' => $client_arr,
|
|
'senderid' => $senderid,
|
|
'direct_mno_arr' => $direct_mno_arr,
|
|
'staffmembers' => $staffmembers
|
|
];
|
|
|
|
return view('senderid.edit', $data);
|
|
}
|
|
public function update(Request $request, $id)
|
|
{
|
|
|
|
$request->validate([
|
|
'senderid' => 'required|max:11',
|
|
'mno_name' => 'required_if:direct_mno,YES',
|
|
'supplier_name' => 'required_if:direct_mno,NO',
|
|
'status' => 'required',
|
|
'remarks' => 'sometimes',
|
|
]);
|
|
// dd($request->all());
|
|
$senderid = Models\SenderId::findOrFail($id);
|
|
|
|
$senderid->senderid = $request->senderid;
|
|
$senderid->mno_name = $request->mno_name ?? '';
|
|
$senderid->status = $request->status;
|
|
$senderid->supplier_name = $request->supplier_name ?? '';
|
|
$senderid->remarks = $request->remarks;
|
|
$senderid->direct_mno = $request->direct_mno;
|
|
$senderid->last_modified_by = session('current_user.id');
|
|
|
|
// if ($request->direct_mno == 'NO') {
|
|
// $mno_world_wide = Models\Worldwidemno::find($request->network_id);
|
|
// // code... save in the network ops with status as non-direct ... user createOrUpdate method
|
|
// $network_ops_arr['name'] = $mno_world_wide->network;
|
|
// $network_ops_arr['country'] = $mno_world_wide->country;
|
|
// $network_ops_arr['name'] = $mno_world_wide->network;
|
|
// $network_ops_arr['direct_business'] = 'NO'; // $mno_world_wide->network;
|
|
// $result = Models\NetworkOps::updateOrCreate(['name' => $mno_world_wide->network, 'country' => $mno_world_wide->country, 'direct_business' => 'NO'], $network_ops_arr);
|
|
// $senderid->network_id = $result->id;
|
|
// }
|
|
|
|
|
|
$senderid->save();
|
|
|
|
Session::flash('success_message', 'Sender ID successfully Updated');
|
|
return redirect(url('senderids'));
|
|
}
|
|
public function direct_store(Request $request)
|
|
{
|
|
$request->validate([
|
|
'senderid' => 'required|max:11',
|
|
'network_id' => 'required',
|
|
'status' => 'required',
|
|
'remarks' => 'sometimes',
|
|
]);
|
|
$senderid_arr = $request->except('_token');
|
|
$senderid_arr['created_by'] = session('current_user.id');
|
|
$senderid_arr['last_modified_by'] = session('current_user.id');
|
|
$senderid_arr['remarks'] = $request->remarks ?? '';
|
|
|
|
|
|
$result = Models\SenderId::create($senderid_arr);
|
|
|
|
|
|
if($result){
|
|
return response()->json([ 'code' => 1, 'result' => 'success']);
|
|
}
|
|
else {
|
|
return response()->json([ 'code' => 3, 'msg' => 'Request could not be handled at this time']);
|
|
}
|
|
}
|
|
|
|
public function exportSenderIdCsv(){
|
|
$fileName = 'senderid_list.csv';
|
|
$users = Models\SenderId::all()->toArray(); // Adjust model as needed
|
|
|
|
$headers = [
|
|
'Content-Type' => 'text/csv',
|
|
'Content-Disposition' => "attachment; filename=\"$fileName\"",
|
|
'Pragma' => 'no-cache',
|
|
'Cache-Control' => 'must-revalidate, post-check=0, pre-check=0',
|
|
'Expires' => '0',
|
|
];
|
|
|
|
$keyword = session('current_user.senderid_keyword');
|
|
// dd(request('keyword'));
|
|
// dd($keyword);
|
|
request()->session()->put('current_user.senderid_keyword', null);
|
|
// dump($keyword);
|
|
$senderid_arr = \DB::table('sender_ids')
|
|
->join('staff_members AS staffcreate', 'staffcreate.id', '=', 'sender_ids.created_by')
|
|
->join('staff_members AS staffmodify', 'staffmodify.id', '=', 'sender_ids.last_modified_by')
|
|
->select('sender_ids.id', 'mno_name', 'supplier_name', 'sender_ids.senderid', 'sender_ids.status', 'sender_ids.remarks', 'staffcreate.name As createdBy', 'sender_ids.direct_mno', 'staffmodify.name AS modifiedBy')
|
|
->whereRaw("sender_ids.senderid LIKE '%$keyword%' OR sender_ids.status LIKE '%$keyword%' OR mno_name LIKE '%$keyword%' OR supplier_name LIKE '%$keyword%' OR staffcreate.name LIKE '%$keyword%' OR staffmodify.name LIKE '%$keyword%' OR sender_ids.direct_mno LIKE '%$keyword%'")
|
|
->orderBy('sender_ids.senderid', 'ASC')
|
|
->get()->toArray();
|
|
|
|
// dd($senderid_arr);
|
|
|
|
# add headers for each column in the CSV download
|
|
array_unshift($senderid_arr, array_keys((array)$senderid_arr[0]));
|
|
|
|
$callback = function() use ($senderid_arr){
|
|
$file_handle = fopen('php://output', 'w');
|
|
foreach ($senderid_arr as $row) {
|
|
$row = (array)$row;
|
|
fputcsv($file_handle, $row);
|
|
}
|
|
fclose($file_handle);
|
|
};
|
|
|
|
// return Response::stream($callback, 200, $headers);
|
|
return response()->stream($callback, 200, $headers);
|
|
|
|
|
|
|
|
// $callback = function() use ($senderid_arr) {
|
|
// $file = fopen('php://output', 'w');
|
|
// // Add CSV headers
|
|
// fputcsv($file, array_keys($senderid_arr[0]));
|
|
// // Add data rows
|
|
// foreach ($senderid_arr as $row) {
|
|
// fputcsv($file, $row);
|
|
// }
|
|
// fclose($file);
|
|
|
|
// };
|
|
|
|
// return response()->stream($callback, 200, $headers);
|
|
}
|
|
|
|
|
|
public function getMNOList($type){
|
|
if ($type == 'YES') {
|
|
$data_arr = \DB::table('network_operators')->Select(\DB::raw('id, concat(name, " (", country, ")") AS name'))->orderBy('country')->get()->toArray();
|
|
}
|
|
elseif ($type == 'NO') {
|
|
$data_arr = \DB::table('mno_world_wide')->Select(\DB::raw('id, concat(network, " (", country, ")") AS name'))->orderBy('country')->get()->toArray();
|
|
}
|
|
else{
|
|
return response()->json(['code' => 3, 'msg' => 'invalid request']);
|
|
}
|
|
return response()->json(['code' => 1, 'msg' => 'success', 'result' => $data_arr]);
|
|
}
|
|
}
|