181 lines
6.3 KiB
PHP
181 lines
6.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models;
|
|
use App\Utilities\ApiCalls;
|
|
use Session;
|
|
use Illuminate\Pagination\LengthAwarePaginator;
|
|
use GuzzleHttp\Client;
|
|
|
|
class ClientsTrafficController extends Controller
|
|
{
|
|
public function indexNew(){
|
|
$search = $request->input('search');
|
|
$client_id = session('current_user.org_id');
|
|
$clients_url = "messages/client/$client_id?page=0&size=20&sort=createdAt,desc";
|
|
$result = ApiCalls::CurlGet($clients_url);
|
|
$result_arr = json_decode($result);
|
|
|
|
$items = collect($result_arr->content); // Convert API array to Collection
|
|
|
|
if ($search) {
|
|
$items = $items->filter(function ($item) use ($search) {
|
|
return stripos($item['name'], $search) !== false;
|
|
});
|
|
}
|
|
$currentPage = Paginator::resolveCurrentPage() ?: 1;
|
|
$perPage = $result_arr->size;
|
|
$currentPageItems = $items->slice(($currentPage - 1) * $perPage, $perPage)->all();
|
|
|
|
$paginatedItems = new LengthAwarePaginator(
|
|
$currentPageItems,
|
|
$items->count(),
|
|
$perPage,
|
|
$currentPage,
|
|
['path' => $request->url(), 'query' => $request->query()]
|
|
);
|
|
}
|
|
public function index(){
|
|
//dump(session('current_user'));
|
|
$client_id = session('current_user.org_id');
|
|
$clients_url = "messages/client/$client_id?page=0&size=20&sort=createdAt,desc";
|
|
$result = ApiCalls::CurlGet($clients_url);
|
|
$result_arr = json_decode($result);
|
|
// dump($result_arr);
|
|
$data = [
|
|
'page_title' => 'SMS Traffic',
|
|
'traffic_arr' => $result_arr
|
|
];
|
|
return view('client-traffic.index-test', $data);
|
|
}
|
|
public function indexTabulator(Request $request){
|
|
$client = new Client();
|
|
|
|
$page = $request->input('page', 0); // Note: This API seems 0-indexed
|
|
$size = $request->input('size', 20);
|
|
/*
|
|
$response = $client->request('GET', 'http://62.171.149.214:9990/api/messages/client/1?page=0&size=20&sort=createdAt,desc', [
|
|
'query' => [
|
|
'page' => $page,
|
|
'size' => $size,
|
|
],
|
|
'headers' => [
|
|
'Accept' => 'application/json',
|
|
]
|
|
]);
|
|
|
|
$data = json_decode($response->getBody(), true);
|
|
|
|
*/
|
|
$client_id = session('current_user.org_id');
|
|
$clients_url = "messages/client/$client_id?page=0&size=20&sort=createdAt,desc";
|
|
$result = ApiCalls::CurlGet($clients_url);
|
|
// $content_only = collect($result['content'])->toArray();
|
|
$data = json_decode($result, true);
|
|
|
|
// dd($data['content']);
|
|
|
|
return response()->json($data);
|
|
// return response()->json([
|
|
// 'last_page' => $data['totalPages'],
|
|
// 'data' => $data['content'],
|
|
// 'total' => $data['totalElements']
|
|
// ]);
|
|
}
|
|
public function getClientApps(){
|
|
$client_id = session('current_user.org_id');
|
|
|
|
$apps_url = "applications/client/$client_id?page=0&size=20&sort=createdAt,desc";
|
|
$result = ApiCalls::CurlGet($apps_url);
|
|
$result_arr = json_decode($result);
|
|
$data = [
|
|
'page_title' => 'Applications',
|
|
'apps_arr' => $result_arr
|
|
];
|
|
return view('client-traffic.client-apps', $data);
|
|
}
|
|
|
|
|
|
public function smsForm(){
|
|
//check if client has an app
|
|
|
|
$data = [
|
|
'page_title' => 'Send SMS',
|
|
];
|
|
return view('client-traffic.send-sms', $data);
|
|
|
|
}
|
|
public function store(Request $request){
|
|
//233244982690,233553175995,233204040805
|
|
$this->validate($request, [
|
|
'message' => 'required',
|
|
'sender_id' => 'required|max:11',
|
|
'recipients_file'=> 'mimes:csv,txt|max:4096',
|
|
'pasted' => 'sometimes',
|
|
]);
|
|
$recipients_arr = [];
|
|
|
|
if ($request->filled('pasted')) {
|
|
$pasted_arr = explode(",", $request->pasted);
|
|
foreach ($pasted_arr as $value) {
|
|
if (ctype_digit($value) && (strlen($value) == 11 || strlen($value) == 12)) {
|
|
$recipients_arr[] = trim($value);
|
|
}
|
|
else{
|
|
continue;
|
|
}
|
|
|
|
}
|
|
}
|
|
if ($request->hasFile('recipients_file')) {
|
|
$file = fopen($request->file('recipients_file'), 'r');
|
|
$data = fgetcsv($file, 1000, ',');
|
|
foreach ($data as $value) {
|
|
$recipients_arr[] = trim($value);
|
|
}
|
|
fclose($file);
|
|
}
|
|
$recipients_arr = array_unique($recipients_arr);
|
|
|
|
$client_id = session('current_user.org_id');
|
|
|
|
foreach ($recipients_arr as $phone) {
|
|
$payload = [
|
|
'from' => $request->sender_id,
|
|
'to' => $phone,
|
|
'refId' => uniqid('cmlportal_'),
|
|
'message' => $request->message
|
|
];
|
|
\Log::info('Payload details ' . json_encode($payload));
|
|
$send_sms_url = "sms/send";
|
|
$result = ApiCalls::CurlPost(json_encode($payload), $send_sms_url);
|
|
\Log::info('Message Successfully submitted ' . $result);
|
|
}
|
|
Session::flash('success_message', 'Message successfully submitted for delivery!');
|
|
return redirect("send-sms");
|
|
}
|
|
public function newAppStore(Request $request){
|
|
|
|
$this->validate($request, [
|
|
'application_name' => 'required',
|
|
'orgId' => 'required',
|
|
'application_type'=> 'required',
|
|
]);
|
|
$payload['name'] = $request->application_name;
|
|
$payload['type'] = $request->application_type;
|
|
$payload['orgId'] = $request->orgId;
|
|
|
|
$create_application_url = "applications";
|
|
$result = ApiCalls::CurlPost(json_encode($payload), $create_application_url);
|
|
\Log::info('Application creation request ' . json_encode($payload));
|
|
\Log::info('Application Successfully created ' . $result);
|
|
$result_arr = json_decode($result, true);
|
|
//save application in a db
|
|
|
|
$retval = Models\ClientApplication::create($result_arr);
|
|
return response()->json(json_decode($result, true));
|
|
}
|
|
}
|