after a series of bug fixes plus Non MNO logic for Sender IDs, unfinished leave management and holiday modules

This commit is contained in:
Kwesi Banson Jnr
2025-03-19 10:33:04 +00:00
parent 6cede6d980
commit cf39ff2682
112 changed files with 26812 additions and 496 deletions

View File

@@ -10,6 +10,7 @@ use App\Jobs\SendNewUssdClientEmail;
use App\Jobs\SendUssdClientActiveEmail; use App\Jobs\SendUssdClientActiveEmail;
use App\Jobs\SendNewNotesEmailAlert; use App\Jobs\SendNewNotesEmailAlert;
use App\Jobs\SendOnboardingCompletedEmailAlert; use App\Jobs\SendOnboardingCompletedEmailAlert;
use App\Jobs\SendShortCodeListToFinance;
use App\Http\Requests; use App\Http\Requests;
use Carbon\Carbon; use Carbon\Carbon;
use App\Libs\PaperLessNgx; use App\Libs\PaperLessNgx;
@@ -23,31 +24,8 @@ class ClientsController extends Controller
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function index(){ public function index(){
/*
$currentuser = session('current_user.name');
$user_model = Models\SystemUser::find(session('current_user.id'));
#\Auth::user()->actions;
$actions = $user_model->actions;
dd($actions);
$clientModel = new Models\Client;
$currentuser = session('current_user.name');
$user_model = Models\SystemUser::find(session('current_user.id'));
activity()->performedOn($clientModel)
->causedBy($user_model)
->log($currentuser . ' Opened the Client Module at: ' . date('Y-m-d H:i:s'));
*/
// ->log('viewed');
/*
$client = Models\Client::find(3);
dd($client->client_services);
$client_arr = new Models\Client;
$client_arr = $client_arr->with('auth_user_info','country_info', 'created_by_info')->orderBy('name', 'ASC')->paginate(15);
*/
$data = [ $data = [
'page_title' => 'Clients', 'page_title' => 'Clients',
//'client_arr' => $client_arr,
'current_user' => session('current_user') 'current_user' => session('current_user')
]; ];
return view('client.index-tabulator', $data); return view('client.index-tabulator', $data);
@@ -62,22 +40,15 @@ class ClientsController extends Controller
return view('client.index-rawjs', $data); return view('client.index-rawjs', $data);
} }
public function getClientJson(Request $request){ public function getClientJson(Request $request){
/*
$client_arr = new Models\Client;
$client_arr = $client_arr->with('auth_user_info','country_info', 'created_by_info', 'modified_by_info')->orderBy('name', 'ASC')->paginate(20);
dump($request->all());
$client_arr = $client_arr->with('auth_user_info','country_info', 'created_by_info', 'modified_by_info')
->orderBy('name', 'ASC')->paginate(20);
}
*/
$client_arr = \DB::table('clients') $client_arr = \DB::table('clients')
->join('auth_users AS aumngr', 'aumngr.id', '=', 'clients.auth_user_id') ->join('auth_users AS aumngr', 'aumngr.id', '=', 'clients.auth_user_id')
->join('auth_users AS aumodify', 'aumodify.id', '=', 'clients.last_modified_by') ->join('auth_users AS aumodify', 'aumodify.id', '=', 'clients.last_modified_by')
->join('flags AS flags', 'flags.country', '=', 'clients.country') ->join('flags AS flags', 'flags.country', '=', 'clients.country')
->select('clients.id', 'clients.name', 'clients.status','clients.progress_indicator_score', 'clients.country', 'aumngr.name As accountMgr', 'aumodify.name AS modifiedBy', 'flags.url AS theflag') ->select('clients.id', 'clients.name', 'clients.status','clients.progress_indicator_score', 'clients.country', 'aumngr.name As accountMgr', 'aumodify.name AS modifiedBy', 'flags.url AS theflag')
->orderBy('name', 'ASC') ->orderBy('name', 'ASC')
->paginate(15); ->get();
// ->paginate(15);
if($request->has('keyword')){ if($request->has('keyword')){
$keyword = $request->keyword; $keyword = $request->keyword;
@@ -88,7 +59,8 @@ class ClientsController extends Controller
->select('clients.id','clients.name', 'clients.status', 'clients.progress_indicator_score','clients.country', 'aumngr.name As accountMgr', 'aumodify.name AS modifiedBy', 'flags.url AS theflag') ->select('clients.id','clients.name', 'clients.status', 'clients.progress_indicator_score','clients.country', 'aumngr.name As accountMgr', 'aumodify.name AS modifiedBy', 'flags.url AS theflag')
->whereRaw("clients.name like '%$keyword%' or clients.status like '%$keyword%' OR clients.country like '%$keyword%' OR aumngr.name like '%$keyword%' OR aumodify.name like '%$keyword%' OR clients.progress_indicator_score like '%$keyword%'") ->whereRaw("clients.name like '%$keyword%' or clients.status like '%$keyword%' OR clients.country like '%$keyword%' OR aumngr.name like '%$keyword%' OR aumodify.name like '%$keyword%' OR clients.progress_indicator_score like '%$keyword%'")
->orderBy('name', 'ASC') ->orderBy('name', 'ASC')
->paginate(15); ->get();
// ->paginate(15);
} }
return response()->json($client_arr); return response()->json($client_arr);
@@ -133,7 +105,6 @@ class ClientsController extends Controller
$industries = Models\Industry::orderBy('name', 'ASC')->pluck('name', 'name'); $industries = Models\Industry::orderBy('name', 'ASC')->pluck('name', 'name');
// $industries = Models\Industry::pluck('name', 'name')->orderBy('name', 'ASC'); // $industries = Models\Industry::pluck('name', 'name')->orderBy('name', 'ASC');
$data = [ $data = [
'page_title' => 'Create Client', 'page_title' => 'Create Client',
'countries' => $countries, 'countries' => $countries,
@@ -274,10 +245,9 @@ class ClientsController extends Controller
$notes_arr['highlight'] = 'YES'; $notes_arr['highlight'] = 'YES';
} }
$result = Models\ClientNote::updateOrCreate(['services' => $request->services, 'client_id' => $request->client_id, 'auth_user_id' => $auth_user['id'] ], $notes_arr);
//dd($notes_arr);
$result = Models\ClientNote::create($notes_arr);
// dd($result); // dd($result);
$client = Models\Client::find($request->client_id);
$notes = Models\ClientNote::with('client_info', 'created_by_info')->find($result->id); $notes = Models\ClientNote::with('client_info', 'created_by_info')->find($result->id);
//todo : send emails //todo : send emails
dispatch(new SendNewNotesEmailAlert($notes)); dispatch(new SendNewNotesEmailAlert($notes));
@@ -290,7 +260,7 @@ class ClientsController extends Controller
} }
$user_id = session('current_user.id'); $user_id = session('current_user.id');
$username = session('current_user.name'); $username = session('current_user.name');
$content = "User ID : " . $user_id . " (" . $username . ") Added a new Note"; $content = "User ID : " . $user_id . " (" . $username . ") Added a new Note for : " . $client->name;
$this->logUsersActivity($type = 'staff', $content); $this->logUsersActivity($type = 'staff', $content);
return response()->json($data, 200); return response()->json($data, 200);
} }
@@ -360,9 +330,7 @@ class ClientsController extends Controller
// 'short_code' => 'sometimes|numeric' // 'short_code' => 'sometimes|numeric'
]); ]);
$auth_user = session('current_user'); $auth_user = session('current_user');
// dump($request->has('short_code'));
//dd($request->all());
// dump($request->short_code);
if ($request->short_code !== null) { if ($request->short_code !== null) {
$check = is_numeric($request->short_code); $check = is_numeric($request->short_code);
if ($check == false) { if ($check == false) {
@@ -370,7 +338,7 @@ class ClientsController extends Controller
return response()->json($data, 200); return response()->json($data, 200);
} }
} }
// dd($request->all());
$finance_arr = [ $finance_arr = [
'invoice_number' => $request->invoice_number, 'invoice_number' => $request->invoice_number,
'invoice_amount' => $request->invoice_amount, 'invoice_amount' => $request->invoice_amount,
@@ -384,8 +352,15 @@ class ClientsController extends Controller
if ($request->has('remarks')) { if ($request->has('remarks')) {
$finance_arr['remarks'] = $request->remarks; $finance_arr['remarks'] = $request->remarks;
} }
// dd($finance_arr); $client = Models\Client::find($request->client_id);
$result = Models\ClientPayment::create($finance_arr); $result = Models\ClientPayment::updateOrCreate(['invoice_number' => $request->invoice_number, 'client_id' => $request->client_id, ], $finance_arr);
if ($request->has('short_code')) {
$short_code_list = Models\ClientShortCode::where('client_id', $request->client_id)->get();
$client = Models\Client::find($request->client_id);
$message_body = $auth_user['name'] . " has added a new Short Code ($request->short_code) Payment entry for " . $client->name;
dispatch(new SendShortCodeListToFinance($short_code_list, $message_body, $finance_arr));
}
#$payments = Models\ClientPayment::with('client_info', 'created_by_info')->find($result->id); #$payments = Models\ClientPayment::with('client_info', 'created_by_info')->find($result->id);
if ($result) { if ($result) {
@@ -396,7 +371,7 @@ class ClientsController extends Controller
} }
$user_id = session('current_user.id'); $user_id = session('current_user.id');
$username = session('current_user.name'); $username = session('current_user.name');
$content = "User ID : " . $user_id . " (" . $username . ") Added a payment record"; $content = "User ID : " . $user_id . " (" . $username . ") Added a payment record for : " . $client->name;
$this->logUsersActivity($type = 'staff', $content); $this->logUsersActivity($type = 'staff', $content);
return response()->json($data, 200); return response()->json($data, 200);
} }
@@ -427,7 +402,7 @@ class ClientsController extends Controller
$support_fees_arr['remarks'] = $request->remarks; $support_fees_arr['remarks'] = $request->remarks;
} }
$result = Models\ClientSupportFees::create($support_fees_arr); $result = Models\ClientSupportFees::create($support_fees_arr);
$client = Models\Client::find($request->client_id);
#$payments = Models\ClientPayment::with('client_info', 'created_by_info')->find($result->id); #$payments = Models\ClientPayment::with('client_info', 'created_by_info')->find($result->id);
if ($result) { if ($result) {
$data = ['code' => 1, 'msg' => 'Support Fees Details successfully added']; $data = ['code' => 1, 'msg' => 'Support Fees Details successfully added'];
@@ -437,7 +412,7 @@ class ClientsController extends Controller
} }
$user_id = session('current_user.id'); $user_id = session('current_user.id');
$username = session('current_user.name'); $username = session('current_user.name');
$content = "User ID : " . $user_id . " (" . $username . ") Added a support fees record"; $content = "User ID : " . $user_id . " (" . $username . ") Added a support fees record for : " . $client->name;
$this->logUsersActivity($type = 'staff', $content); $this->logUsersActivity($type = 'staff', $content);
return response()->json($data, 200); return response()->json($data, 200);
} }
@@ -451,15 +426,17 @@ class ClientsController extends Controller
'status' => 'required', 'status' => 'required',
'remarks' => 'required', 'remarks' => 'required',
'launch_date' => 'required', 'launch_date' => 'required',
'expiry_date' => 'required' 'expiry_date' => 'required',
'monthly_fee' => 'sometimes'
]); ]);
// dd($request->all());
$auth_user = session('current_user'); $auth_user = session('current_user');
#$network = Models\NetworkOps::find($request->network); #$network = Models\NetworkOps::find($request->network);
$mnoCountry = $this->getMnoCountry($request->network); // $mnoCountry = $this->getMNO($request->network);
if ($mnoCountry == false) { // if ($mnoCountry == false) {
$data = ['code' => 3, 'msg' => 'Your request could not be handled at this time']; // $data = ['code' => 3, 'msg' => 'Your request could not be handled at this time'];
return response()->json($data, 200); // return response()->json($data, 200);
} // }
/* /*
$networks_raw = [ $networks_raw = [
'AirtelTigo GH' => 'AirtelTigo GH', 'AirtelTigo GH' => 'AirtelTigo GH',
@@ -498,7 +475,7 @@ class ClientsController extends Controller
'name' => $request->name, 'name' => $request->name,
'client_id' => $request->client_id, 'client_id' => $request->client_id,
'network' => $request->network, 'network' => $request->network,
'country' => $mnoCountry, //$network->country, // 'country' => $mnoCountry, //$network->country,
'shortcode' => $request->shortcode, 'shortcode' => $request->shortcode,
'code_type' => $request->code_type, 'code_type' => $request->code_type,
'toll_free' => $request->toll_free, 'toll_free' => $request->toll_free,
@@ -506,13 +483,19 @@ class ClientsController extends Controller
'launch_date' => $request->launch_date, 'launch_date' => $request->launch_date,
'expiry_date' => $request->expiry_date, 'expiry_date' => $request->expiry_date,
'status' => $request->status 'status' => $request->status
]; ];
// dd($shortcode_arr);
if ($request->has('remarks')) { if ($request->has('remarks')) {
$shortcode_arr['remarks'] = $request->remarks; $shortcode_arr['remarks'] = $request->remarks;
} }
if ($request->has('monthly_fee')) {
$shortcode_arr['monthly_fee'] = $request->monthly_fee;
}
$result = Models\ClientShortCode::create($shortcode_arr); $result = Models\ClientShortCode::create($shortcode_arr);
$client = Models\Client::find($request->client_id);
if ($result) { if ($result) {
$data = ['code' => 1, 'msg' => 'ShortCode Details successfully added']; $data = ['code' => 1, 'msg' => 'ShortCode Details successfully added'];
} }
@@ -521,7 +504,7 @@ class ClientsController extends Controller
} }
$user_id = session('current_user.id'); $user_id = session('current_user.id');
$username = session('current_user.name'); $username = session('current_user.name');
$content = "User ID : " . $user_id . " (" . $username . ") Added new short code"; $content = "User ID : " . $user_id . " (" . $username . ") Added new short code for " . $client->name;
$this->logUsersActivity($type = 'staff', $content); $this->logUsersActivity($type = 'staff', $content);
return response()->json($data, 200); return response()->json($data, 200);
} }
@@ -535,6 +518,7 @@ class ClientsController extends Controller
'invoice_date' => 'required', 'invoice_date' => 'required',
'invoice_status' => 'required' 'invoice_status' => 'required'
]); ]);
$auth_user = session('current_user'); $auth_user = session('current_user');
$payment = Models\ClientPayment::findOrFail($request->payment_id); $payment = Models\ClientPayment::findOrFail($request->payment_id);
@@ -542,9 +526,31 @@ class ClientsController extends Controller
$payment->invoice_amount = $request->invoice_amount; $payment->invoice_amount = $request->invoice_amount;
$payment->invoice_date = $request->invoice_date; $payment->invoice_date = $request->invoice_date;
$payment->invoice_status = $request->invoice_status; $payment->invoice_status = $request->invoice_status;
$payment->short_code = ($request->short_code) ? $request->short_code : "";
$payment->services = implode(',', $request->services); $payment->services = implode(',', $request->services);
$result = $payment->save(); $result = $payment->save();
$client = Models\Client::find($request->client_id);
if ($request->has('short_code')) {
$short_code_list = Models\ClientShortCode::where('client_id', $request->client_id)->get();
$finance_arr = [
'invoice_number' => $request->invoice_number,
'invoice_amount' => $request->invoice_amount,
'invoice_date' => $request->invoice_date,
'invoice_status' => $request->invoice_status,
'short_code' => ($request->short_code) ? $request->short_code : "",
'services' => implode(',', $request->services),
'user_id' => $auth_user['id'],
'client_id' => $request->client_id
];
if ($request->has('remarks')) {
$finance_arr['remarks'] = $request->remarks;
}
$message_body = $auth_user['name'] . " has updated a Short Code ($request->short_code) Payment entry for " . $client->name;
#dispatch(new SendShortCodeListToFinance($short_code_list, $message_body, $finance_arr));
}
if ($result) { if ($result) {
$data = ['code' => 1, 'msg' => 'Payment Details successfully updated']; $data = ['code' => 1, 'msg' => 'Payment Details successfully updated'];
} }
@@ -553,8 +559,11 @@ class ClientsController extends Controller
} }
$user_id = session('current_user.id'); $user_id = session('current_user.id');
$username = session('current_user.name'); $username = session('current_user.name');
$content = "User ID : " . $user_id . " (" . $username . ") updated an existing payment record"; $content = "User ID : " . $user_id . " (" . $username . ") updated an existing payment record for " . $client->name;
$this->logUsersActivity($type = 'staff', $content); $this->logUsersActivity($type = 'staff', $content);
return response()->json($data, 200); return response()->json($data, 200);
} }
public function shortCodeUpdate(Request $request){ public function shortCodeUpdate(Request $request){
@@ -564,6 +573,7 @@ class ClientsController extends Controller
'shortcode' => 'required', 'shortcode' => 'required',
'code_type' => 'required', 'code_type' => 'required',
'toll_free' => 'required', 'toll_free' => 'required',
'monthly_fee' => 'sometimes',
'status' => 'required', 'status' => 'required',
'remarks' => 'required', 'remarks' => 'required',
'launch_date' => 'required', 'launch_date' => 'required',
@@ -592,18 +602,21 @@ class ClientsController extends Controller
if ($request->has('remarks')) { if ($request->has('remarks')) {
$shortcode_arr['remarks'] = $request->remarks; $shortcode_arr['remarks'] = $request->remarks;
} }
if ($request->has('monthly_fee')) {
$shortcode_arr['monthly_fee'] = $request->monthly_fee;
}
// $payment = Models\ClientShortCode::findOrFail($request->shortcode_id); // $payment = Models\ClientShortCode::findOrFail($request->shortcode_id);
$result = Models\ClientShortCode::where('id', $request->shortcode_id)->update($shortcode_arr); $result = Models\ClientShortCode::where('id', $request->shortcode_id)->update($shortcode_arr);
if ($result) { if ($result) {
$data = ['code' => 1, 'msg' => 'Payment Details successfully updated']; $data = ['code' => 1, 'msg' => 'Short Code Details successfully updated'];
} }
else{ else{
$data = ['code' => 3, 'msg' => 'Your request could not be handled at this time']; $data = ['code' => 3, 'msg' => 'Your request could not be handled at this time'];
} }
$user_id = session('current_user.id'); $user_id = session('current_user.id');
$username = session('current_user.name'); $username = session('current_user.name');
$content = "User ID : " . $user_id . " (" . $username . ") updated short code enty"; $content = "User ID : " . $user_id . " (" . $username . ") updated short code enty for " . $request->short_code;
$this->logUsersActivity($type = 'staff', $content); $this->logUsersActivity($type = 'staff', $content);
return response()->json($data, 200); return response()->json($data, 200);
} }
@@ -614,7 +627,6 @@ class ClientsController extends Controller
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function show($id){ public function show($id){
//with('short_code_info')->
$showclient = Models\Client::with('service_info', 'country_flag_info', 'auth_user_info', 'short_code_info')->find($id); $showclient = Models\Client::with('service_info', 'country_flag_info', 'auth_user_info', 'short_code_info')->find($id);
//$clientModel = new Models\Client; //$clientModel = new Models\Client;
/* /*
@@ -639,6 +651,12 @@ class ClientsController extends Controller
$service_type_names = Models\Service::pluck('name', 'name'); $service_type_names = Models\Service::pluck('name', 'name');
$show_services = Models\ClientCategory::where('client_id', $id)->get(); $show_services = Models\ClientCategory::where('client_id', $id)->get();
//$networks_raw = ['AirtelTigo GH' => 'AirtelTigo GH','MTN GH' => 'MTN GH', 'Airtel MW' => 'Airtel MW', 'Airtel Zambia' => 'Airtel Zambia', 'TNM MW' => 'TNM MW', 'Airtel MW' => 'Airtel MW']; //$networks_raw = ['AirtelTigo GH' => 'AirtelTigo GH','MTN GH' => 'MTN GH', 'Airtel MW' => 'Airtel MW', 'Airtel Zambia' => 'Airtel Zambia', 'TNM MW' => 'TNM MW', 'Airtel MW' => 'Airtel MW'];
// $networks_raw_two = Models\NetworkOps::pluck('country', 'id');
// dd($networks_raw_two);
$country_networks = \DB::table('network_operators')->Select(\DB::raw('id, concat(name, " (", country, ")") AS network'))->orderBy('network')->pluck('network', 'network');
// $country_networks = \DB::table('network_operators')->Select(\DB::raw('concat(name, " (", country, ")") AS network)')->orderBy('network')->get()->toArray();
// $country_networks = \DB::table('network_operators')->Select(\DB::raw('concat(name, " (", country, ")") AS network)'))->pluck('network', 'network');
$networks_raw = [ $networks_raw = [
'AirtelTigo GH' => 'AirtelTigo GH', 'AirtelTigo GH' => 'AirtelTigo GH',
'MTN GH' => 'MTN GH', 'MTN GH' => 'MTN GH',
@@ -652,12 +670,16 @@ class ClientsController extends Controller
'Orange Kenya' => 'Orange Kenya' 'Orange Kenya' => 'Orange Kenya'
]; ];
//->where('highlight', 'NO') //->where('highlight', 'NO')
$show_notes = Models\ClientNote::with('created_by_info', 'client_info')->where('client_id', $id)->orderBy('id', 'DESC')->get()->take(20); $show_notes = Models\ClientNote::with('created_by_info', 'client_info')->where('client_id', $id)->orderBy('created_at', 'DESC')->get()->take(20);
$show_notes_highlight = Models\ClientNote::with('created_by_info', 'client_info')->where('client_id', $id)->where('highlight', 'YES')->orderBy('created_at', 'DESC')->get()->take(1);
$voice_codes = Models\ClientShortCode::where('client_id', $id)->where('code_type', 'voice')->get(); $voice_codes = Models\ClientShortCode::where('client_id', $id)->where('code_type', 'voice')->get();
$sms_codes = Models\ClientShortCode::where('client_id', $id)->where('code_type', 'sms')->get(); $sms_codes = Models\ClientShortCode::where('client_id', $id)->where('code_type', 'sms')->get();
$ussd_codes = Models\ClientShortCode::where('client_id', $id)->where('code_type', 'ussd')->get(); $ussd_codes = Models\ClientShortCode::where('client_id', $id)->where('code_type', 'ussd')->get();
$recent_payments = Models\ClientPayment::where('client_id', $id)->orderBy('id', 'DESC')->get(); $recent_payments = Models\ClientPayment::where('client_id', $id)->orderBy('id', 'DESC')->get();
$countries = Models\Country::pluck('en_short_name','en_short_name'); $countries = Models\Country::pluck('en_short_name','en_short_name');
// dd($countries);
$networks = Models\NetworkOps::pluck('name', 'id'); $networks = Models\NetworkOps::pluck('name', 'id');
$support_fees = Models\ClientSupportFees::where('client_id', $id)->orderBy('id', 'DESC')->get(); $support_fees = Models\ClientSupportFees::where('client_id', $id)->orderBy('id', 'DESC')->get();
@@ -739,6 +761,7 @@ class ClientsController extends Controller
'service_type' => $service_type, 'service_type' => $service_type,
'service_type_names' => $service_type_names, 'service_type_names' => $service_type_names,
'show_notes' => $show_notes, 'show_notes' => $show_notes,
'show_notes_highlight' => $show_notes_highlight,
'status_bg' => $status_bg, 'status_bg' => $status_bg,
'progress_status_bg' => $progress_status_bg, 'progress_status_bg' => $progress_status_bg,
'voice_codes' => $voice_codes, 'voice_codes' => $voice_codes,
@@ -755,13 +778,17 @@ class ClientsController extends Controller
'support_fees' => $support_fees, 'support_fees' => $support_fees,
'recurring_arr' => $recurring_arr, 'recurring_arr' => $recurring_arr,
'client_sender_ids' => $client_sender_ids, 'client_sender_ids' => $client_sender_ids,
'sender_id_statuses' => $sender_id_statuses 'sender_id_statuses' => $sender_id_statuses,
'country_network_arr' => $country_networks,
'mnos_arr' => ['' => '-- Select Country first --']
]; ];
// dump($client_sender_ids); // dump($client_sender_ids);
// foreach ($client_sender_ids as $value) { // foreach ($client_sender_ids as $value) {
// dd($value->network_info->name); // dd($value->network_info->name);
// } // }
return view('client.show', $data); // dd($data);
// return view('client.show_original_copy', $data);
return view('client.show_test', $data);
} }
public function showReadonly($id){ public function showReadonly($id){
@@ -1109,7 +1136,7 @@ class ClientsController extends Controller
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function update(Requests\UpdateClientRequest $request, $id){ public function update(Requests\UpdateClientRequest $request, $id){
// dump($request->all()); // dd($request->all());
// \DB::connection()->enableQueryLog(); // \DB::connection()->enableQueryLog();
$client_update = Models\Client::find($id); $client_update = Models\Client::find($id);
$paperless = new PaperLessNgx(); $paperless = new PaperLessNgx();
@@ -1155,25 +1182,25 @@ class ClientsController extends Controller
dispatch(new SendOnboardingCompletedEmailAlert($client)); dispatch(new SendOnboardingCompletedEmailAlert($client));
} }
} }
$existing_documents = Models\ClientFile::where('client_id', $id)->get(); $existing_documents = Models\ClientFile::where('client_id', $id)->get();
if ($request->has('document_one') && $request->has('document_one_name')) { if ($request->has('document_one') && $request->has('document_one_name')) {
if ($request->file('document_one')->isValid()) { if ($request->file('document_one')->isValid()) {
$filename = "erp_" . time() . str_random(4) . "." . $request->document_one->extension(); $filename = "erp_" . time() . str_random(4) . "." . $request->document_one->extension();
$request->document_one->storeAs('client_files', $filename, 'public'); $request->document_one->storeAs('client_files', $filename, 'public');
$document_arr['file_path'] = $filename; $document_arr['file_path'] = $filename;
$client_update->name = $request->name; $client_update->name = $request->name;
$store_location = "client_files"; $store_location = "client_files";
$top = $paperless->processPaperlessFile($request->document_one_name, $request->document_one_name, $filename, $store_location); #$top = $paperless->processPaperlessFile($request->document_one_name, $request->document_one_name, $filename, $store_location);
$document_arr['file_extension'] = $request->document_one->extension(); $document_arr['file_extension'] = $request->document_one->extension();
$document_arr['file_reff'] = time() . uniqid(); $document_arr['file_reff'] = time() . uniqid();
$document_arr['name'] = $request->document_one_name; $document_arr['name'] = $request->document_one_name;
$document_arr['created_by'] = session('current_user.id'); $document_arr['created_by'] = session('current_user.id');
//$document_arr['client_id'] = $id; //$document_arr['client_id'] = $id;
$result = Models\ClientFile::create($document_arr, ['client_id' => $id]); //$document_arr,
// $result = Models\ClientNote::updateOrCreate(['services' => $request->services, 'client_id' => $request->client_id, 'auth_user_id' => $auth_user['id'] ], $notes_arr);
$result = Models\ClientFile::updateOrCreate(['client_id' => $id, 'name' => $request->document_one_name], $document_arr);
} }
} }
if ($request->has('document_two') && $request->has('document_two_name')) { if ($request->has('document_two') && $request->has('document_two_name')) {
@@ -1183,7 +1210,7 @@ class ClientsController extends Controller
$document_arr['file_path'] = $filename; $document_arr['file_path'] = $filename;
$client_update->name = $request->name; $client_update->name = $request->name;
$store_location = "client_files"; $store_location = "client_files";
$top = $paperless->processPaperlessFile($request->document_two_name, $request->document_two_name, $filename, $store_location); #$top = $paperless->processPaperlessFile($request->document_two_name, $request->document_two_name, $filename, $store_location);
$document_arr['file_extension'] = $request->document_two->extension(); $document_arr['file_extension'] = $request->document_two->extension();
@@ -1193,7 +1220,7 @@ class ClientsController extends Controller
$document_arr['client_id'] = $id; $document_arr['client_id'] = $id;
// $result = Models\ClientFile::create($document_arr); // $result = Models\ClientFile::create($document_arr);
//$document_arr['client_id'] = $id; //$document_arr['client_id'] = $id;
$result = Models\ClientFile::create($document_arr, ['client_id' => $id]); $result = Models\ClientFile::updateOrCreate(['client_id' => $id, 'name' => $request->document_two_name], $document_arr);
} }
} }
if ($request->has('document_three') && $request->has('document_three_name')) { if ($request->has('document_three') && $request->has('document_three_name')) {
@@ -1204,7 +1231,7 @@ class ClientsController extends Controller
$client_update->name = $request->name; $client_update->name = $request->name;
$store_location = "client_files"; $store_location = "client_files";
$top = $paperless->processPaperlessFile($request->document_three_name, $request->document_three_name, $filename, $store_location); #$top = $paperless->processPaperlessFile($request->document_three_name, $request->document_three_name, $filename, $store_location);
$document_arr['file_extension'] = $request->document_three->extension(); $document_arr['file_extension'] = $request->document_three->extension();
$document_arr['file_reff'] = time() . uniqid(); $document_arr['file_reff'] = time() . uniqid();
@@ -1213,7 +1240,7 @@ class ClientsController extends Controller
$document_arr['client_id'] = $id; $document_arr['client_id'] = $id;
// $result = Models\ClientFile::create($document_arr); // $result = Models\ClientFile::create($document_arr);
//$document_arr['client_id'] = $id; //$document_arr['client_id'] = $id;
$result = Models\ClientFile::create($document_arr, ['client_id' => $id]); $result = Models\ClientFile::updateOrCreate(['client_id' => $id, 'name' => $request->document_three_name], $document_arr);
} }
} }
if ($request->has('other_document') && $request->has('other_document_name')) { if ($request->has('other_document') && $request->has('other_document_name')) {
@@ -1224,19 +1251,18 @@ class ClientsController extends Controller
$client_update->name = $request->name; $client_update->name = $request->name;
$store_location = "client_files"; $store_location = "client_files";
$top = $paperless->processPaperlessFile($request->other_document_name, $request->other_document_name, $filename, $store_location); #$top = $paperless->processPaperlessFile($request->other_document_name, $request->other_document_name, $filename, $store_location);
$document_arr['file_extension'] = $request->other_document->extension(); $document_arr['file_extension'] = $request->other_document->extension();
$document_arr['file_reff'] = time() . uniqid(); $document_arr['file_reff'] = time() . uniqid();
$document_arr['name'] = $request->document_three_name; $document_arr['name'] = ($request->other_document_name == null) ? 'Other Document' : $request->other_document_name;
$document_arr['created_by'] = session('current_user.id'); $document_arr['created_by'] = session('current_user.id');
$document_arr['client_id'] = $id; $document_arr['client_id'] = $id;
$result = Models\ClientFile::create($document_arr); // dd($document_arr);
$result = Models\ClientFile::updateOrCreate(['client_id' => $id, 'name' => $request->other_document_name], $document_arr);
} }
} }
$client_update->name = $request->name; $client_update->name = $request->name;
$client_update->email = $request->email; $client_update->email = $request->email;
$client_update->phone = $request->phone ?? ""; $client_update->phone = $request->phone ?? "";
@@ -1363,16 +1389,15 @@ class ClientsController extends Controller
return true; return true;
} }
public function storeFiles(AddFilesRequest $request){ public function storeFiles(AddFilesRequest $request){
$document_arr = $request->except('document'); $document_arr = $request->except('document');
if ($request->hasFile('document')) { if ($request->hasFile('document')) {
if ($request->file('document')->isValid()) { if ($request->file('document')->isValid()) {
$filename = "erp_" . time() . "." . $request->document->extension(); $filename = "erp_" . time() . "." . $request->document->extension();
$request->document->storeAs('client_files', $filename, 'public'); $request->document->storeAs('client_files', $filename, 'public');
$document_arr['document'] = json_encode([$filename]); $document_arr['document'] = json_encode([$filename]);
} }
} }
$client = Models\Client::find($request->client_id);
$document_arr['file_extension'] = $request->document->extension(); $document_arr['file_extension'] = $request->document->extension();
$document_arr['file_reff'] = time() . uniqid(); $document_arr['file_reff'] = time() . uniqid();
$document_arr['last_modified_by'] = session('current_user.id'); $document_arr['last_modified_by'] = session('current_user.id');
@@ -1385,11 +1410,16 @@ class ClientsController extends Controller
else{ else{
$data = ['code' => 3, 'msg' => 'Your request could not be handled at this time']; $data = ['code' => 3, 'msg' => 'Your request could not be handled at this time'];
} }
$user_id = session('current_user.id');
$username = session('current_user.name');
$content = "User ID : " . $user_id . " (" . $username . ") Document successfully uploaded for " . $client->name;
$this->logUsersActivity($type = 'staff', $content);
return response()->json($data, 200); return response()->json($data, 200);
} }
public function getClientFile($id){ public function getClientFile($id){
$client_file = Models\ClientFile::with('client_info')->findOrFail($id); $client_file = Models\ClientFile::with('client_info')->findOrFail($id);
// dd($client_file);
//PDF file is stored under project/public/download/info.pdf //PDF file is stored under project/public/download/info.pdf
$file = public_path('documents/client_files/') . $client_file->file_path; $file = public_path('documents/client_files/') . $client_file->file_path;
@@ -1425,6 +1455,12 @@ class ClientsController extends Controller
return $string; return $string;
} }
public function getMNO($id){
$mno = Models\NetworkOps::find($id);
return $mno;
}
public function getMnoCountry($network){ public function getMnoCountry($network){
$networks_raw = [ $networks_raw = [
'AirtelTigo GH' => 'AirtelTigo GH', 'AirtelTigo GH' => 'AirtelTigo GH',

View File

@@ -71,11 +71,14 @@ class ContractRenewalReminderController extends Controller
break; break;
} }
} }
if ($difference->days <= 10) { if (isset($difference)) {
$renew_ready['client_name'] = $value->client_info->name; //will review this later
$renew_ready['account_manager_email'] = $value->created_by_info->email; if ($difference->days <= 10) {
$renew_ready['days_to_renew'] = $difference->days; $renew_ready['client_name'] = $value->client_info->name;
dispatch(new SendSupportFeesReminderEmailAlert($renew_ready)); $renew_ready['account_manager_email'] = $value->created_by_info->email;
$renew_ready['days_to_renew'] = $difference->days;
dispatch(new SendSupportFeesReminderEmailAlert($renew_ready));
}
} }
\Log::info('Support Fees Reminder schedule has successfully ran '); \Log::info('Support Fees Reminder schedule has successfully ran ');
if (count($renew_ready) > 0) { if (count($renew_ready) > 0) {

View File

@@ -140,7 +140,7 @@ class GeneralDocumentsController extends Controller
#sendToPaperLess #sendToPaperLess
$store_location = "general_files"; $store_location = "general_files";
$top = $paperless->processPaperlessFile($request->document_one_name, $request->document_one_category, $filename, $store_location); #$top = $paperless->processPaperlessFile($request->document_one_name, $request->document_one_category, $filename, $store_location);
$document_arr['file_extension'] = $request->document_one->extension(); $document_arr['file_extension'] = $request->document_one->extension();
$document_arr['file_reff'] = time() . uniqid(); $document_arr['file_reff'] = time() . uniqid();
@@ -158,7 +158,7 @@ class GeneralDocumentsController extends Controller
#sendToPaperLess #sendToPaperLess
$store_location = "general_files"; $store_location = "general_files";
$top = $paperless->processPaperlessFile($request->document_two_name, $request->document_two_category, $filename, $store_location); #$top = $paperless->processPaperlessFile($request->document_two_name, $request->document_two_category, $filename, $store_location);
$document_arr['file_extension'] = $request->document_two->extension(); $document_arr['file_extension'] = $request->document_two->extension();
$document_arr['file_reff'] = time() . uniqid(); $document_arr['file_reff'] = time() . uniqid();
@@ -176,7 +176,7 @@ class GeneralDocumentsController extends Controller
#sendToPaperLess #sendToPaperLess
$store_location = "general_files"; $store_location = "general_files";
$top = $paperless->processPaperlessFile($request->document_three_name, $request->document_three_category, $filename, $store_location); #$top = $paperless->processPaperlessFile($request->document_three_name, $request->document_three_category, $filename, $store_location);
$document_arr['file_extension'] = $request->document_three->extension(); $document_arr['file_extension'] = $request->document_three->extension();
$document_arr['file_reff'] = time() . uniqid(); $document_arr['file_reff'] = time() . uniqid();

View File

@@ -0,0 +1,13 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HolidaysController extends Controller
{
protected $guarded = array('id');
public $table = "holidays";
}

View File

@@ -0,0 +1,10 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class LeaveManagementController extends Controller
{
//
}

View File

@@ -87,6 +87,17 @@ class NetworkOperatorsController extends Controller
} }
return response()->json($mno_arr); return response()->json($mno_arr);
} }
public function getCountryNetworks(Request $request){
$mno_arr = Models\NetworkOps::where('country', $request->country)->pluck('name', 'id');
// dd(count($mno_arr));
if (count($mno_arr) == 0) {
$data = ['code' => '2', 'msg' => 'No MNOs found in the selected country'];
}
else{
$data = ['code' => '1', 'mnos' => $mno_arr,];
}
return response()->json($data);
}
/** /**
* Show the form for creating a new resource. * Show the form for creating a new resource.
@@ -388,7 +399,7 @@ class NetworkOperatorsController extends Controller
$operator_update->name = $request->name; $operator_update->name = $request->name;
$store_location = "mno_files"; $store_location = "mno_files";
$top = $paperless->processPaperlessFile($request->document_one_name, $request->document_one_category, $filename, $store_location); #$top = $paperless->processPaperlessFile($request->document_one_name, $request->document_one_category, $filename, $store_location);
$document_arr['file_extension'] = $request->document_one->extension(); $document_arr['file_extension'] = $request->document_one->extension();
$document_arr['file_reff'] = time() . uniqid(); $document_arr['file_reff'] = time() . uniqid();
@@ -406,7 +417,7 @@ class NetworkOperatorsController extends Controller
$operator_update->name = $request->name; $operator_update->name = $request->name;
$store_location = "mno_files"; $store_location = "mno_files";
$top = $paperless->processPaperlessFile($request->document_two_name, $request->document_two_category, $filename, $store_location); #$top = $paperless->processPaperlessFile($request->document_two_name, $request->document_two_category, $filename, $store_location);
$document_arr['file_extension'] = $request->document_two->extension(); $document_arr['file_extension'] = $request->document_two->extension();
$document_arr['file_reff'] = time() . uniqid(); $document_arr['file_reff'] = time() . uniqid();
@@ -424,7 +435,7 @@ class NetworkOperatorsController extends Controller
// $operator_update->name = $request->name; // $operator_update->name = $request->name;
$store_location = "mno_files"; $store_location = "mno_files";
$top = $paperless->processPaperlessFile("sliding_rate", 'rates', $filename, $store_location); #$top = $paperless->processPaperlessFile("sliding_rate", 'rates', $filename, $store_location);
$document_arr['file_extension'] = $request->sliding_rate_file->extension(); $document_arr['file_extension'] = $request->sliding_rate_file->extension();

View File

@@ -15,8 +15,38 @@ use Carbon\Carbon;
class ReportsController extends Controller class ReportsController extends Controller{
{ public function overview(){
$document_arr = \DB::table('general_documents')
->select(\DB::raw('count(*) as docs_count, category'))
->groupBy('category')
->get();
$client_docs = \DB::table('client_files')
->join('clients', 'clients.id', '=', 'client_files.client_id')
->select(\DB::raw('count(*) as docs_count, clients.name, client_files.client_id'))
->groupBy('clients.name', 'client_files.client_id')
->get();
$mno_docs = \DB::table('mno_files')
->join('network_operators', 'network_operators.id', '=', 'mno_files.mno_id')
->select(\DB::raw('count(*) as docs_count, network_operators.name, mno_files.mno_id'))
->groupBy('network_operators.name', 'mno_files.mno_id')
->get();
$data = [
'page_title' => 'Report Overview',
// 'vas_clients' => $vas_clients,
// 'domain_clients' => $domain_clients,
// 'recent_clients' => $recent_clients,
// 'user_activities' => $user_activities,
'current_user' => session('current_user'),
// 'client_docs' => $client_docs,
'mno_docs' => $mno_docs
];
return view('reports.overview', $data);
}
public function getRecentClients(){ public function getRecentClients(){
$data = [ $data = [
'page_title' => 'Recent Clients', 'page_title' => 'Recent Clients',
@@ -43,4 +73,70 @@ class ReportsController extends Controller
return response()->json($clients); return response()->json($clients);
} }
public function getUserActivities(){
#$user_activities = Models\UserActivity::where('user_id', '>', '1')->with('userInfo')->orderBy('created_at', 'DESC')->take(5)->get();
$data = [
'page_title' => 'User Activities',
'current_user' => session('current_user')
];
return view('reports.user-activities', $data);
}
public function getUserActivitiesJson(Request $request){
#$user_activities = Models\UserActivity::where('user_id', '>', '1')->with('userInfo')->orderBy('created_at', 'DESC')->take(5)->get();
$user_activities = \DB::table('user_activities')
->join('auth_users', 'auth_users.id', '=', 'user_activities.user_id')
->select('user_activities.id','auth_users.name', 'user_activities.content', 'user_activities.ip_address', 'user_activities.created_at',
'user_activities.updated_at')
->whereRaw("user_activities.type = 'staff'")
->orderBy('user_activities.created_at', 'DESC')
->get();
if($request->has('keyword')){
$keyword = $request->keyword;
$user_activities = \DB::table('user_activities')
->join('auth_users', 'auth_users.id', '=', 'user_activities.user_id')
->select('user_activities.id','auth_users.name', 'user_activities.content', 'user_activities.ip_address', 'user_activities.created_at', 'user_activities.updated_at')
->whereRaw("user_activities.name like '%$keyword%' or user_activities.ip_address like '%$keyword%' OR user_activities.created_at like '%$keyword%' OR user_activities.updated_at like '%$keyword%'")
->orderBy('user_activities.created_at', 'DESC')
->get();
// ->paginate(15);
}
return response()->json($user_activities);
}
public function getAmNewClients(){
// $new_clients = Models\Client::where()
}
public function getAmNewNotes(){
}
public function getClientsByService(){
$data = [
'page_title' => 'Clients By Service',
'current_user' => session('current_user')
];
return view('reports.clients-by-service', $data);
}
public function getClientsByServiceJson(){
$keyword = "USSD";
$clients = \DB::table('clients')
->join('auth_users AS aumngr', 'aumngr.id', '=', 'clients.auth_user_id')
->select('clients.name', 'clients.services', 'clients.status', 'clients.country', 'aumngr.name As accountMgr', 'clients.created_at')
->whereRaw("services like '%$keyword%'")
->orderBy('name', 'ASC')->get();
return response()->json($clients);
}
public function name(){
$list = ['first', 'second', 'third'];
// return $list[2];
print($list[2]);
}
} }

View File

@@ -27,7 +27,7 @@ class SenderIdController extends Controller
->join('staff_members AS staffmodify', 'staffmodify.id', '=', 'sender_ids.last_modified_by') ->join('staff_members AS staffmodify', 'staffmodify.id', '=', 'sender_ids.last_modified_by')
->join('network_operators', 'network_operators.id', '=', 'sender_ids.network_id') ->join('network_operators', 'network_operators.id', '=', 'sender_ids.network_id')
->join('clients', 'clients.id', '=', 'sender_ids.client_id') ->join('clients', 'clients.id', '=', 'sender_ids.client_id')
->select('sender_ids.id', 'clients.name AS clientName', 'network_operators.name AS networkName', 'network_operators.country', 'sender_ids.senderid', 'sender_ids.status', 'sender_ids.network_id', 'network_operators.country','sender_ids.remarks', 'staffcreate.name As createdBy', 'staffmodify.name AS modifiedBy') ->select('sender_ids.id', 'clients.name AS clientName', 'network_operators.name AS networkName', 'network_operators.country', 'sender_ids.senderid', 'sender_ids.status', 'sender_ids.network_id', 'network_operators.country','sender_ids.remarks', 'staffcreate.name As createdBy','sender_ids.direct_mno', 'staffmodify.name AS modifiedBy')
->orderBy('sender_ids.senderid', 'ASC') ->orderBy('sender_ids.senderid', 'ASC')
->paginate(15); ->paginate(15);
@@ -38,8 +38,8 @@ class SenderIdController extends Controller
->join('staff_members AS staffmodify', 'staffmodify.id', '=', 'sender_ids.last_modified_by') ->join('staff_members AS staffmodify', 'staffmodify.id', '=', 'sender_ids.last_modified_by')
->join('network_operators', 'network_operators.id', '=', 'sender_ids.network_id') ->join('network_operators', 'network_operators.id', '=', 'sender_ids.network_id')
->join('clients', 'clients.id', '=', 'sender_ids.client_id') ->join('clients', 'clients.id', '=', 'sender_ids.client_id')
->select('sender_ids.id', 'clients.name AS clientName', 'network_operators.name AS networkName', 'network_operators.country', 'sender_ids.senderid', 'sender_ids.status', 'sender_ids.network_id', 'network_operators.country','sender_ids.remarks', 'staffcreate.name As createdBy', 'staffmodify.name AS modifiedBy') ->select('sender_ids.id', 'clients.name AS clientName', 'network_operators.name AS networkName', 'network_operators.country', 'sender_ids.senderid', 'sender_ids.status', 'sender_ids.network_id', 'network_operators.country','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 network_operators.name LIKE '%$keyword%' OR network_operators.country LIKE '%$keyword%' OR staffcreate.name LIKE '%$keyword%' OR staffmodify.name LIKE '%$keyword%' OR clients.name LIKE '%$keyword%'") ->whereRaw("sender_ids.senderid LIKE '%$keyword%' OR sender_ids.status LIKE '%$keyword%' OR network_operators.name LIKE '%$keyword%' OR network_operators.country LIKE '%$keyword%' OR staffcreate.name LIKE '%$keyword%' OR staffmodify.name LIKE '%$keyword%' OR clients.name LIKE '%$keyword%' OR sender_ids.direct_mno LIKE '%$keyword%'")
->orderBy('sender_ids.senderid', 'ASC') ->orderBy('sender_ids.senderid', 'ASC')
->paginate(15); ->paginate(15);
} }
@@ -51,6 +51,8 @@ class SenderIdController extends Controller
$networks = \DB::table('network_operators')->Select(\DB::raw('id, concat(name, " (", country, ")") AS network'))->orderBy('network')->get()->toArray(); $networks = \DB::table('network_operators')->Select(\DB::raw('id, concat(name, " (", country, ")") AS network'))->orderBy('network')->get()->toArray();
$network_arr = array_pluck($networks, 'network', 'id'); $network_arr = array_pluck($networks, 'network', 'id');
$direct_mno_arr = ['YES' => 'YES', 'NO' => 'NO'];
// dd($network_arr); // dd($network_arr);
#$network_arr = array_combine($network_arr, $network_arr); #$network_arr = array_combine($network_arr, $network_arr);
@@ -61,9 +63,10 @@ class SenderIdController extends Controller
$data = [ $data = [
'page_title' => 'Create Sender ID', 'page_title' => 'Create Sender ID',
'network_arr' => $network_arr, 'network_arr' => [], // $network_arr,
'status' => $status, 'status' => $status,
'clients' => $clients, 'clients' => $clients,
'direct_mno_arr' => $direct_mno_arr,
'staffmembers' => $staffmembers 'staffmembers' => $staffmembers
]; ];
@@ -87,7 +90,16 @@ class SenderIdController extends Controller
$senderid_arr['created_by'] = session('current_user.id'); $senderid_arr['created_by'] = session('current_user.id');
$senderid_arr['last_modified_by'] = session('current_user.id'); $senderid_arr['last_modified_by'] = session('current_user.id');
$senderid_arr['remarks'] = $request->remarks ?? ''; $senderid_arr['remarks'] = $request->remarks ?? '';
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);
}
// dd($senderid_arr);
$result = Models\SenderId::create($senderid_arr); $result = Models\SenderId::create($senderid_arr);
@@ -169,4 +181,18 @@ class SenderIdController extends Controller
return response()->json([ 'code' => 3, 'msg' => 'Request could not be handled at this time']); return response()->json([ 'code' => 3, 'msg' => 'Request could not be handled at this time']);
} }
} }
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]);
}
} }

View File

@@ -26,22 +26,36 @@ class ShortCodesController extends Controller{
->select('code_type', \DB::raw('count(*) as total')) ->select('code_type', \DB::raw('count(*) as total'))
->groupBy('code_type') ->groupBy('code_type')
->get(); ->get();
$networks_raw = [
'AirtelTigo GH' => 'AirtelTigo GH',
'MTN GH' => 'MTN GH',
'Airtel MW' => 'Airtel MW',
'Airtel Zambia' => 'Airtel Zambia',
'TNM MW' => 'TNM MW',
'Airtel MW' => 'Airtel MW',
'Safaricom Kenya' => 'Safaricom Kenya',
'Airtel Kenya' => 'Airtel Kenya',
'Telkom Kenya' => 'Telkom Kenya',
'Orange Kenya' => 'Orange Kenya'
];
sort($networks_raw);
$data = [ $data = [
'page_title' => 'Short Codes', 'page_title' => 'Short Codes',
'type' => 'SMS', 'type' => 'SMS',
'codes_data' => $codes_data, 'codes_data' => $codes_data,
'networks_raw' => array_combine($networks_raw, $networks_raw),
'current_user' => session('current_user') 'current_user' => session('current_user')
]; ];
return view('shortcodes.smsindex', $data); return view('shortcodes.smsindex', $data);
} }
public function getShortCodesJson(Request $request){ public function getShortCodesJson(Request $request){
#$this->log_query(); $this->log_query();
//$codes_data = Models\ClientShortCode::with('client_info', 'update_info')->where('code_type', 'sms')->orderBy('id', 'DESC')->get(); //$codes_data = Models\ClientShortCode::with('client_info', 'update_info')->where('code_type', 'sms')->orderBy('id', 'DESC')->get();
$shortcode_arr = \DB::table('client_short_codes') $shortcode_arr = \DB::table('client_short_codes')
->join('auth_users', 'auth_users.id', '=', 'client_short_codes.last_updated_by') ->join('auth_users', 'auth_users.id', '=', 'client_short_codes.last_updated_by')
->join('clients', 'clients.id', '=', 'client_short_codes.client_id') ->join('clients', 'clients.id', '=', 'client_short_codes.client_id')
->select('client_short_codes.id', 'client_short_codes.name', 'client_short_codes.shortcode', 'clients.name AS clientName', 'client_short_codes.network', 'client_short_codes.toll_free', 'client_short_codes.status', 'client_short_codes.remarks', 'client_short_codes.launch_date', 'client_short_codes.expiry_date', 'client_short_codes.last_updated_by', 'auth_users.name AS modifiedBy') ->select('client_short_codes.id', 'client_short_codes.name', 'client_short_codes.shortcode', 'clients.name AS clientName', 'client_short_codes.network', 'client_short_codes.toll_free', 'client_short_codes.monthly_fee', 'client_short_codes.status', 'client_short_codes.remarks', 'client_short_codes.launch_date', 'client_short_codes.expiry_date', 'client_short_codes.last_updated_by', 'auth_users.name AS modifiedBy')
->where('client_short_codes.code_type', 'sms') ->where('client_short_codes.code_type', 'sms')
->orderBy('client_short_codes.shortcode', 'ASC') ->orderBy('client_short_codes.shortcode', 'ASC')
->paginate(15); ->paginate(15);
@@ -52,8 +66,8 @@ class ShortCodesController extends Controller{
$shortcode_arr = \DB::table('client_short_codes') $shortcode_arr = \DB::table('client_short_codes')
->join('auth_users', 'auth_users.id', '=', 'client_short_codes.last_updated_by') ->join('auth_users', 'auth_users.id', '=', 'client_short_codes.last_updated_by')
->join('clients', 'clients.id', '=', 'client_short_codes.client_id') ->join('clients', 'clients.id', '=', 'client_short_codes.client_id')
->select('client_short_codes.id', 'client_short_codes.name', 'client_short_codes.shortcode', 'clients.name AS clientName', 'client_short_codes.network', 'client_short_codes.toll_free', 'client_short_codes.status', 'client_short_codes.remarks', 'client_short_codes.launch_date', 'client_short_codes.expiry_date', 'client_short_codes.last_updated_by', 'auth_users.name AS modifiedBy') ->select('client_short_codes.id', 'client_short_codes.name', 'client_short_codes.shortcode', 'clients.name AS clientName', 'client_short_codes.network', 'client_short_codes.toll_free', 'client_short_codes.monthly_fee', 'client_short_codes.status', 'client_short_codes.remarks', 'client_short_codes.launch_date', 'client_short_codes.expiry_date', 'client_short_codes.last_updated_by', 'auth_users.name AS modifiedBy')
->whereRaw("code_type = '$code_type' AND (client_short_codes.name LIKE '%$keyword%' OR client_short_codes.shortcode LIKE '%$keyword%' OR client_short_codes.status LIKE '%$keyword%' OR client_short_codes.network LIKE '%$keyword%' OR client_short_codes.toll_free LIKE '%$keyword%' OR client_short_codes.launch_date LIKE '%$keyword%' OR client_short_codes.expiry_date LIKE '%$keyword%' OR clients.name LIKE '%$keyword%' OR auth_users.name LIKE '%$keyword%')") ->whereRaw("code_type = '$code_type' AND (client_short_codes.name LIKE '%$keyword%' OR client_short_codes.shortcode LIKE '%$keyword%' OR client_short_codes.status LIKE '%$keyword%' OR client_short_codes.network LIKE '%$keyword%' OR client_short_codes.toll_free LIKE '%$keyword%' OR client_short_codes.monthly_fee LIKE '%$keyword%' OR client_short_codes.launch_date LIKE '%$keyword%' OR client_short_codes.expiry_date LIKE '%$keyword%' OR clients.name LIKE '%$keyword%' OR auth_users.name LIKE '%$keyword%')")
// ->where('code_type', $code_type) // ->where('code_type', $code_type)
->orderBy('client_short_codes.shortcode', 'ASC') ->orderBy('client_short_codes.shortcode', 'ASC')
->paginate(15); ->paginate(15);
@@ -82,7 +96,7 @@ class ShortCodesController extends Controller{
$shortcode_arr = \DB::table('client_short_codes') $shortcode_arr = \DB::table('client_short_codes')
->join('auth_users', 'auth_users.id', '=', 'client_short_codes.last_updated_by') ->join('auth_users', 'auth_users.id', '=', 'client_short_codes.last_updated_by')
->join('clients', 'clients.id', '=', 'client_short_codes.client_id') ->join('clients', 'clients.id', '=', 'client_short_codes.client_id')
->select('client_short_codes.id', 'client_short_codes.name', 'client_short_codes.shortcode', 'clients.name AS clientName', 'client_short_codes.network', 'client_short_codes.toll_free', 'client_short_codes.status', 'client_short_codes.remarks', 'client_short_codes.launch_date', 'client_short_codes.expiry_date', 'client_short_codes.last_updated_by', 'auth_users.name AS modifiedBy') ->select('client_short_codes.id', 'client_short_codes.name', 'client_short_codes.shortcode', 'clients.name AS clientName', 'client_short_codes.network', 'client_short_codes.toll_free', 'client_short_codes.monthly_fee', 'client_short_codes.status', 'client_short_codes.remarks', 'client_short_codes.launch_date', 'client_short_codes.expiry_date', 'client_short_codes.last_updated_by', 'auth_users.name AS modifiedBy')
->where('client_short_codes.code_type', 'ussd') ->where('client_short_codes.code_type', 'ussd')
->orderBy('client_short_codes.shortcode', 'ASC') ->orderBy('client_short_codes.shortcode', 'ASC')
->paginate(15); ->paginate(15);
@@ -93,8 +107,8 @@ class ShortCodesController extends Controller{
$shortcode_arr = \DB::table('client_short_codes') $shortcode_arr = \DB::table('client_short_codes')
->join('auth_users', 'auth_users.id', '=', 'client_short_codes.last_updated_by') ->join('auth_users', 'auth_users.id', '=', 'client_short_codes.last_updated_by')
->join('clients', 'clients.id', '=', 'client_short_codes.client_id') ->join('clients', 'clients.id', '=', 'client_short_codes.client_id')
->select('client_short_codes.id', 'client_short_codes.name', 'client_short_codes.shortcode', 'clients.name AS clientName', 'client_short_codes.network', 'client_short_codes.toll_free', 'client_short_codes.status', 'client_short_codes.remarks', 'client_short_codes.launch_date', 'client_short_codes.expiry_date', 'client_short_codes.last_updated_by', 'auth_users.name AS modifiedBy') ->select('client_short_codes.id', 'client_short_codes.name', 'client_short_codes.shortcode', 'clients.name AS clientName', 'client_short_codes.network', 'client_short_codes.toll_free', 'client_short_codes.monthly_fee', 'client_short_codes.status', 'client_short_codes.remarks', 'client_short_codes.launch_date', 'client_short_codes.expiry_date', 'client_short_codes.last_updated_by', 'auth_users.name AS modifiedBy')
->whereRaw("code_type = '$code_type' AND (client_short_codes.name LIKE '%$keyword%' OR client_short_codes.shortcode LIKE '%$keyword%' OR client_short_codes.status LIKE '%$keyword%' OR client_short_codes.network LIKE '%$keyword%' OR client_short_codes.toll_free LIKE '%$keyword%' OR client_short_codes.launch_date LIKE '%$keyword%' OR client_short_codes.expiry_date LIKE '%$keyword%' OR clients.name LIKE '%$keyword%' OR auth_users.name LIKE '%$keyword%')") ->whereRaw("code_type = '$code_type' AND (client_short_codes.name LIKE '%$keyword%' OR client_short_codes.shortcode LIKE '%$keyword%' OR client_short_codes.status LIKE '%$keyword%' OR client_short_codes.network LIKE '%$keyword%' OR client_short_codes.toll_free LIKE '%$keyword%' OR client_short_codes.monthly_fee LIKE '%$keyword%' OR client_short_codes.launch_date LIKE '%$keyword%' OR client_short_codes.expiry_date LIKE '%$keyword%' OR clients.name LIKE '%$keyword%' OR auth_users.name LIKE '%$keyword%')")
// ->where('code_type', $code_type) // ->where('code_type', $code_type)
->orderBy('client_short_codes.shortcode', 'ASC') ->orderBy('client_short_codes.shortcode', 'ASC')
->paginate(15); ->paginate(15);
@@ -124,7 +138,7 @@ class ShortCodesController extends Controller{
$shortcode_arr = \DB::table('client_short_codes') $shortcode_arr = \DB::table('client_short_codes')
->join('auth_users', 'auth_users.id', '=', 'client_short_codes.last_updated_by') ->join('auth_users', 'auth_users.id', '=', 'client_short_codes.last_updated_by')
->join('clients', 'clients.id', '=', 'client_short_codes.client_id') ->join('clients', 'clients.id', '=', 'client_short_codes.client_id')
->select('client_short_codes.id', 'client_short_codes.name', 'client_short_codes.shortcode', 'clients.name AS clientName', 'client_short_codes.network', 'client_short_codes.toll_free', 'client_short_codes.status', 'client_short_codes.remarks', 'client_short_codes.launch_date', 'client_short_codes.expiry_date', 'client_short_codes.last_updated_by', 'auth_users.name AS modifiedBy') ->select('client_short_codes.id', 'client_short_codes.name', 'client_short_codes.shortcode', 'clients.name AS clientName', 'client_short_codes.network', 'client_short_codes.toll_free', 'client_short_codes.monthly_fee','client_short_codes.status', 'client_short_codes.remarks', 'client_short_codes.launch_date', 'client_short_codes.expiry_date', 'client_short_codes.last_updated_by', 'auth_users.name AS modifiedBy')
->where('client_short_codes.code_type', 'voice') ->where('client_short_codes.code_type', 'voice')
->orderBy('client_short_codes.shortcode', 'ASC') ->orderBy('client_short_codes.shortcode', 'ASC')
->paginate(15); ->paginate(15);
@@ -135,8 +149,8 @@ class ShortCodesController extends Controller{
$shortcode_arr = \DB::table('client_short_codes') $shortcode_arr = \DB::table('client_short_codes')
->join('auth_users', 'auth_users.id', '=', 'client_short_codes.last_updated_by') ->join('auth_users', 'auth_users.id', '=', 'client_short_codes.last_updated_by')
->join('clients', 'clients.id', '=', 'client_short_codes.client_id') ->join('clients', 'clients.id', '=', 'client_short_codes.client_id')
->select('client_short_codes.id', 'client_short_codes.name', 'client_short_codes.shortcode', 'clients.name AS clientName', 'client_short_codes.network', 'client_short_codes.toll_free', 'client_short_codes.status', 'client_short_codes.remarks', 'client_short_codes.launch_date', 'client_short_codes.expiry_date', 'client_short_codes.last_updated_by', 'auth_users.name AS modifiedBy') ->select('client_short_codes.id', 'client_short_codes.name', 'client_short_codes.shortcode', 'clients.name AS clientName', 'client_short_codes.network', 'client_short_codes.toll_free', 'client_short_codes.monthly_fee', 'client_short_codes.status', 'client_short_codes.remarks', 'client_short_codes.launch_date', 'client_short_codes.expiry_date', 'client_short_codes.last_updated_by', 'auth_users.name AS modifiedBy')
->whereRaw("code_type = '$code_type' AND (client_short_codes.name LIKE '%$keyword%' OR client_short_codes.shortcode LIKE '%$keyword%' OR client_short_codes.status LIKE '%$keyword%' OR client_short_codes.network LIKE '%$keyword%' OR client_short_codes.toll_free LIKE '%$keyword%' OR client_short_codes.launch_date LIKE '%$keyword%' OR client_short_codes.expiry_date LIKE '%$keyword%' OR clients.name LIKE '%$keyword%' OR auth_users.name LIKE '%$keyword%')") ->whereRaw("code_type = '$code_type' AND (client_short_codes.name LIKE '%$keyword%' OR client_short_codes.shortcode LIKE '%$keyword%' OR client_short_codes.status LIKE '%$keyword%' OR client_short_codes.network LIKE '%$keyword%' OR client_short_codes.toll_free LIKE '%$keyword%' OR client_short_codes.monthly_fee LIKE '%$keyword%' OR client_short_codes.launch_date LIKE '%$keyword%' OR client_short_codes.expiry_date LIKE '%$keyword%' OR clients.name LIKE '%$keyword%' OR auth_users.name LIKE '%$keyword%')")
// ->where('code_type', $code_type) // ->where('code_type', $code_type)
->orderBy('client_short_codes.shortcode', 'ASC') ->orderBy('client_short_codes.shortcode', 'ASC')
->paginate(15); ->paginate(15);

View File

@@ -9,6 +9,28 @@ use Session;
class StaffMembersController extends Controller class StaffMembersController extends Controller
{ {
public function index(){ public function index(){
$staff_members_arr = Models\StaffMember::paginate(10);
// dd($staff_members_arr);
$data = [
'page_title' => 'Staff Members',
'staff_members' => $staff_members_arr,
'current_user' => session('current_user')
];
return view('staff_members.index-two', $data);
}
public function profile($staff_member_id){
$staff_member = Models\StaffMember::find($staff_member_id);
// dd($staff_member);
$data = [
'page_title' => 'Staff Profile',
'staff_member' => $staff_member,
'current_user' => session('current_user')
];
return view('staff_members.profile', $data);
}
public function indexOld(){
$staff_members_arr = new Models\StaffMember; $staff_members_arr = new Models\StaffMember;
$data = [ $data = [
'page_title' => 'Staff Members', 'page_title' => 'Staff Members',

View File

@@ -6,9 +6,8 @@ use Illuminate\Http\Request;
use App\Models; use App\Models;
use Spatie\Activitylog\Models\Activity; use Spatie\Activitylog\Models\Activity;
// use Illuminate\Contracts\Mail\Mailer; use Illuminate\Contracts\Mail\Mailer;
use App\Jobs\SendTestEmail;
class UtilityController extends Controller class UtilityController extends Controller
{ {
@@ -17,7 +16,8 @@ class UtilityController extends Controller
} }
public function EmailTest(Mailer $mailer) public function EmailTest(Mailer $mailer)
{ {
dispatch(new SendTestEmail());
/*
$emails = ['kwesi@click-mobile.com', 'kwesi_banson@hotmail.com']; $emails = ['kwesi@click-mobile.com', 'kwesi_banson@hotmail.com'];
$data = [ $data = [
@@ -30,6 +30,20 @@ class UtilityController extends Controller
$message->from('erp@click-mobile.com', 'Click Mobile ERP'); $message->from('erp@click-mobile.com', 'Click Mobile ERP');
$message->to($emails)->subject('New Notes'); $message->to($emails)->subject('New Notes');
}); });
*/
/*
$emails = [
'kwesi@click-mobile.com',
'kwesi_banson@hotmail.com'
];
$data = [];
$top = $mailer->send('emails.test', $data, function ($message) use ($data, $emails) {
$message->from('support@click-mobile.com', 'Click Mobile ERP');
$message->to($emails)->subject('Short Code Invoices');
});
dd($top);
*/
} }
/** /**
* maptest function to display the map view. * maptest function to display the map view.
@@ -37,7 +51,6 @@ class UtilityController extends Controller
* @return Illuminate\View\View * @return Illuminate\View\View
*/ */
public function maptest(){ public function maptest(){
return view('utility.map'); return view('utility.map');
} }
@@ -145,5 +158,71 @@ class UtilityController extends Controller
dump($activity_up->subject); //returns the instance of NewsItem that was created dump($activity_up->subject); //returns the instance of NewsItem that was created
dump($activity_up->changes); dump($activity_up->changes);
} }
public function loadShortCodes(){
$short_codes_file = public_path('misc/client_short_codes.csv');
$codes_arr = file($short_codes_file);
dump($codes_arr);
// "Friendly Name"
// 1 => "Shortcode"
// 2 => "Network"
// 3 => "Client"
// 4 => "Status"
// 0 => "Nexmo"
// 1 => "40520"
// 2 => "Safaricom"
// 3 => "Nexmo"
// 4 => "LIVE\r\n"
$client_arr = [];
foreach ($codes_arr as $row) {
$row_arr = explode(',', $row);
$client_arr['name'] = trim($row_arr[0]);
$client_arr['shortcode'] = trim($row_arr[1]);
$client_arr['network'] = trim($row_arr[2]);
$client_arr['client'] = trim($row_arr[3]);
$client_arr['status'] = trim($row_arr[4]);
dd($client_arr);
}
}
public function getClient($name){
}
public function getNetwork($name){
}
public function processMnoWorldwideFile(){
$file = public_path('helper_documents/mcc_mnc_table.json');
$jsonData = file_get_contents($file);
// Decode the JSON string into an associative array
$dataArray = json_decode($jsonData, true);
if (json_last_error() === JSON_ERROR_NONE) {
$counter = 0;
foreach ($dataArray as $key => $value) {
$result = Models\Worldwidemno::create($value);
$counter++;
}
dump($counter . " Records found and inserted");
} else {
dump('Error decoding JSON: ' . json_last_error_msg());
}
// dd($file);
// $decoded = json_decode($file, true);
// dd($decoded);
}
} }
// https://www.tokyvideo.com/video/sheena-the-queen-of-the-jungle-1984-movie-with-tanya-roberts-ted-wass-donovan-scott // https://www.tokyvideo.com/video/sheena-the-queen-of-the-jungle-1984-movie-with-tanya-roberts-ted-wass-donovan-scott

View File

@@ -0,0 +1,156 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models;
use Session;
class VpnController extends Controller{
public function indexBK(){
$result = Models\VpnConfig::where('partner_type', 'mno')->with('mno_info')->paginate(15);
// dd($result);
$data = [
'page_title' => 'infrastructure: VPN',
'vpn_list' => $result
];
// dd($result);
return view('vpn.index', $data);
}
public function indexBKK(){
$result = Models\VpnConfig::get();
// dd($result);
$data = [
'page_title' => 'infrastructure: VPN',
'vpn_list' => $result
];
return view('vpn.index_test', $data);
}
public function index(){
$data = [
'page_title' => 'Infrastructure: VPN',
'current_user' => session('current_user')
];
return view('vpn.index_rawjs', $data);
}
public function getVpnListJsonRawJs(Request $request){
// dd($request->has('keyword') && $request->keyword == true);
if($request->has('keyword') && $request->keyword == true){
//'vpn_configs.client_id',
$keyword = $request->keyword;
$vpn_list_arr = \DB::table('vpn_configs')
->join('auth_users', 'auth_users.id', '=', 'vpn_configs.user_id')
->join('network_operators', 'network_operators.id', '=', 'vpn_configs.mno_id')
->select('network_operators.id', 'vpn_configs.date_received', 'network_operators.name AS mnoName', 'network_operators.country', 'auth_users.name As username', 'vpn_configs.vpn_device', 'vpn_configs.mno_id', 'vpn_configs.partner_type', 'vpn_configs.remote_peer_ip', 'vpn_configs.local_access_control_list', 'vpn_configs.partner_access_control_list')
->whereRaw("network_operators.name LIKE '%$keyword%' OR vpn_configs.vpn_device LIKE '%$keyword%' OR network_operators.country LIKE '%$keyword%' OR vpn_configs.remote_peer_ip LIKE '%$keyword%' OR vpn_configs.local_access_control_list like '%$keyword%' OR vpn_configs.partner_access_control_list LIKE '%$keyword%'")
->paginate(10);
}
else{
$vpn_list_arr = \DB::table('vpn_configs')
->join('auth_users', 'auth_users.id', '=', 'vpn_configs.user_id')
->join('network_operators', 'network_operators.id', '=', 'vpn_configs.mno_id')
->select('vpn_configs.id', 'vpn_configs.date_received', 'network_operators.name AS mnoName', 'network_operators.country', 'auth_users.name As username', 'vpn_configs.vpn_device', 'vpn_configs.mno_id', 'vpn_configs.partner_type', 'vpn_configs.remote_peer_ip', 'vpn_configs.local_access_control_list', 'vpn_configs.partner_access_control_list')
->paginate(10);
}
return response()->json($vpn_list_arr);
}
public function create(){
$partner_type_arr = ['client' => 'client', 'mno' => 'mno'];
$partners_arr = [];
$services = Models\Service::pluck('name', 'name');
$data = [
'page_title' => 'infrastructure: VPN',
'partner_type_arr' => $partner_type_arr,
'partners_arr' => $partners_arr,
'services_arr' => $services
];
return view('vpn.create', $data);
}
public function edit($id){
$vpn = Models\VpnConfig::find($id);
$partner_type_arr = ['client' => 'client', 'mno' => 'mno'];
$partners_arr = [];
$services = Models\Service::pluck('name', 'name');
$data = [
'vpn' => $vpn,
'page_title' => 'infrastructure: VPN',
'partner_type_arr' => $partner_type_arr,
'partners_arr' => $partners_arr,
'services_arr' => $services
];
return view('vpn.create', $data);
}
public function store(Request $request){
$request->validate([
'partner_type_id' => 'required',
'vpn_device' => 'sometimes',
'remote_peer_ip' => 'required',
'partner_access_control_list' => 'required',
'local_access_control_list' => 'required',
'partner_type' => 'required',
'phase_1_raw_settings' => 'sometimes',
'phase_2_raw_settings' => 'sometimes',
]);
// dd($request->all());
$vpn_configs_arr = $request->except('_token', 'vpn_form');
if ($request->partner_type == 'mno') {
$vpn_configs_arr['mno_id'] = $request->partner_type_id;
}
elseif($request->partner_type == 'client'){
$vpn_configs_arr['client_id'] = $request->partner_type_id;
}
else{
Session::flash('error_message', 'Your request could not be handled at this time. Try again');
return redirect(url('infrastructure/vpn'));
}
$vpn_configs_arr['user_id'] = session('current_user.id');
// dd($vpn_configs_arr);
if ($request->hasFile('vpn_form')) {
if ($request->file('vpn_form')->isValid()) {
$filename = "erp_" . time() . "." . $request->vpn_form->extension();
$request->vpn_form->storeAs('vpn_form_files', $filename, 'public');
$document_arr['vpn_form'] = json_encode([$filename]);
$vpn_configs_arr['partner_vpn_form'] = $filename;
}
}
$result = Models\VpnConfig::create($vpn_configs_arr);
Session::flash('success_message', 'VPN Configs successfully added');
return redirect(url('infrastructure/vpn'));
}
public function getMNOandClient($type){
if ($type == 'mno') {
$data_arr = \DB::table('network_operators')->Select(\DB::raw('id, concat(name, " (", country, ")") AS partner'))->orderBy('name')->get()->toArray();
}
elseif ($type == 'client') {
$data_arr = \DB::table('clients')->Select(\DB::raw('id, concat(name, " (", country, ")") AS partner'))->orderBy('name')->get()->toArray();
}
else{
return response()->json(['code' => 3, 'msg' => 'invalid request']);
}
return response()->json(['code' => 1, 'msg' => 'success', 'result' => $data_arr]);
}
public function getPhaseOneTwo($vpn_list_id){
$vpn = Models\VpnConfig::find($vpn_list_id);
if ($vpn) {
// code...
$data = ['code' => 1, 'msg' => 'success', 'result' => $vpn];
}
else{
$data = ['code' => 3, 'msg' => 'request could not be handled'];
}
return response()->json($data);
}
}

View File

@@ -42,7 +42,7 @@ class NewMnoNotesEmailAlerts implements ShouldQueue
]; ];
\Log::info($note->notes_body); \Log::info($note->notes_body);
$mailer->send('emails.new-mno-notes', $data, function ($message) use ($data, $emails) { $mailer->send('emails.new-mno-notes', $data, function ($message) use ($data, $emails) {
$message->from('support@click-mobile.com', 'Click Mobile ERP'); $message->from('alerts@click-mobile.com', 'Click Mobile ERP');
$message->to($emails)->subject('New Notes on Mobile Operators'); $message->to($emails)->subject('New Notes on Mobile Operators');
}); });
} }

View File

@@ -40,7 +40,7 @@ class SendClientContractRenewalAlert implements ShouldQueue
]; ];
$mailer->send('emails.client_renewal-alert', $data, function ($message) use ($data, $emails) { $mailer->send('emails.client_renewal-alert', $data, function ($message) use ($data, $emails) {
$message->from('support@click-mobile.com', 'Click Mobile ERP'); $message->from('alerts@click-mobile.com', 'Click Mobile ERP');
$message->to($emails)->subject('Client Contract Renewal Alert'); $message->to($emails)->subject('Client Contract Renewal Alert');
}); });
} }

View File

@@ -39,7 +39,7 @@ class SendMnoContractRenewalEmailAlert implements ShouldQueue
'alert_body' => 'Contract for ' . $renewalSet['mno_name'] . ' will expire in ' . $renewalSet['days_to_expire'] . ' days. Take note' 'alert_body' => 'Contract for ' . $renewalSet['mno_name'] . ' will expire in ' . $renewalSet['days_to_expire'] . ' days. Take note'
]; ];
$mailer->send('emails.renewal-alert', $data, function ($message) use ($data, $emails) { $mailer->send('emails.renewal-alert', $data, function ($message) use ($data, $emails) {
$message->from('support@click-mobile.com', 'Click Mobile ERP'); $message->from('alerts@click-mobile.com', 'Click Mobile ERP');
$message->to($emails)->subject('Contract Renewal Alert'); $message->to($emails)->subject('Contract Renewal Alert');
}); });
} }

View File

@@ -31,11 +31,8 @@ class SendNewNotesEmailAlert implements ShouldQueue
public function handle(Mailer $mailer) public function handle(Mailer $mailer)
{ {
$note = $this->note; $note = $this->note;
$emails = ['samuel@click-mobile.com']; $emails = ['samuel@click-mobile.com', 'kwesi@click-mobile.com', 'mansa@click-mobile.com'];
//$note_body = $note->notes_body; //$note_body = $note->notes_body;
$data = [ $data = [
'client' => $note->client_info->name, 'client' => $note->client_info->name,
'created_by' => $note->created_by_info->name, 'created_by' => $note->created_by_info->name,
@@ -46,8 +43,9 @@ class SendNewNotesEmailAlert implements ShouldQueue
\Log::info("New notes for : " . $note->client_info->name); \Log::info("New notes for : " . $note->client_info->name);
\Log::info("New notes triggered by : " . $note->created_by_info->name); \Log::info("New notes triggered by : " . $note->created_by_info->name);
\Log::info($note->notes_body); \Log::info($note->notes_body);
$mailer->send('emails.new-notes', $data, function ($message) use ($data, $emails) { $mailer->send('emails.new-notes', $data, function ($message) use ($data, $emails) {
$message->from('support@click-mobile.com', 'Click Mobile ERP'); $message->from('alerts@click-mobile.com', 'Click Mobile ERP');
$message->to($emails)->subject('New Notes'); $message->to($emails)->subject('New Notes');
}); });
} }

View File

@@ -41,7 +41,7 @@ class SendNewUssdClientEmail implements ShouldQueue
'status' => $status 'status' => $status
]; ];
$mailer->send('emails.new_ussd_client', $data, function ($message) use ($data, $emails) { $mailer->send('emails.new_ussd_client', $data, function ($message) use ($data, $emails) {
$message->from('support@click-mobile.com', 'Click Mobile Account Manager Tracker'); $message->from('alerts@click-mobile.com', 'Click Mobile ERP');
$message->to($emails)->subject('New USSD Client Details'); $message->to($emails)->subject('New USSD Client Details');
}); });

View File

@@ -43,7 +43,7 @@ class SendOnboardingCompletedEmailAlert implements ShouldQueue
'how_we_got' => $client->how_we_got_client 'how_we_got' => $client->how_we_got_client
]; ];
$mailer->send('emails.onboarding_completed', $data, function ($message) use ($data, $emails) { $mailer->send('emails.onboarding_completed', $data, function ($message) use ($data, $emails) {
$message->from('support@click-mobile.com', 'Click Mobile ERP'); $message->from('alerts@click-mobile.com', 'Click Mobile ERP');
$message->to($emails)->subject('Onboarding Completed'); $message->to($emails)->subject('Onboarding Completed');
}); });
} }

View File

@@ -0,0 +1,59 @@
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Contracts\Mail\Mailer;
class SendShortCodeListToFinance implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $short_code_list;
protected $message_body;
protected $finance_arr;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct($short_code_list, $message_body, $finance_arr)
{
$this->short_code_list = $short_code_list;
$this->message_body = $message_body;
$this->finance_arr = $finance_arr;
}
/**
* Execute the job.
*
* @return void
*/
public function handle(Mailer $mailer)
{
$short_code_list = $this->short_code_list;
$message_body = $this->message_body;
$finance_arr = $this->finance_arr;
$emails = [
'samuel@click-mobile.com',
'kwesi@click-mobile.com',
'daniel@click-mobile.com',
'jim@click-mobile.com',
'priscilla@click-mobile.com',
'mansa@click-mobile.com'
];
$data = [
'short_code_list' => $short_code_list,
'message_body' => $message_body,
'finance_arr' => $finance_arr
];
$mailer->send('emails.short_code_payment_alert', $data, function ($message) use ($data, $emails) {
$message->from('alerts@click-mobile.com', 'Click Mobile ERP');
$message->to($emails)->subject('Short Code Invoices');
});
}
}

View File

@@ -45,7 +45,7 @@ class SendSupportFeesReminderEmailAlert implements ShouldQueue
'alert_body' => 'Support fees for ' . $renewalSet['client_name'] . ' will be due in ' . $renewalSet['days_to_renew'] . ' days. Take note' 'alert_body' => 'Support fees for ' . $renewalSet['client_name'] . ' will be due in ' . $renewalSet['days_to_renew'] . ' days. Take note'
]; ];
$mailer->send('emails.supportfees-alert', $data, function ($message) use ($data, $emails) { $mailer->send('emails.supportfees-alert', $data, function ($message) use ($data, $emails) {
$message->from('support@click-mobile.com', 'Click Mobile ERP'); $message->from('alerts@click-mobile.com', 'Click Mobile ERP');
$message->to($emails)->subject('Support Fees Reminder'); $message->to($emails)->subject('Support Fees Reminder');
}); });
} }

View File

@@ -0,0 +1,44 @@
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Contracts\Mail\Mailer;
class SendTestEmail implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Create a new job instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Execute the job.
*
* @return void
*/
public function handle(Mailer $mailer)
{
$emails = [
'kwesi@click-mobile.com',
'kwesi_banson@hotmail.com',
'mansa@click-mobile.com'
];
$data = [];
$mailer->send('emails.test', $data, function ($message) use ($data, $emails) {
$message->from('alerts@click-mobile.com', 'Click Mobile ERP');
$message->to($emails)->subject('Short Code Invoices');
});
}
}

View File

@@ -41,7 +41,7 @@ class SendUssdClientActiveEmail implements ShouldQueue
'status' => $status 'status' => $status
]; ];
$mailer->send('emails.active_ussd_client', $data, function ($message) use ($data, $emails) { $mailer->send('emails.active_ussd_client', $data, function ($message) use ($data, $emails) {
$message->from('support@click-mobile.com', 'Click Mobile Account Manager Tracker'); $message->from('alerts@click-mobile.com', 'Click Mobile ERP');
$message->to($emails)->subject('New USSD Client Details'); $message->to($emails)->subject('New USSD Client Details');
}); });

View File

@@ -11,9 +11,9 @@ class ClientNote extends Model
protected $guarded = array('id'); protected $guarded = array('id');
protected static $logUnguarded = true; protected static $logUnguarded = true;
public function getActivitylogOptions(): LogOptions{ // public function getActivitylogOptions(): LogOptions{
return LogOptions::defaults()->logUnguarded(); // return LogOptions::defaults()->logUnguarded();
} // }
public function client_info(){ public function client_info(){
return $this->hasOne('App\Models\Client', 'id', 'client_id'); return $this->hasOne('App\Models\Client', 'id', 'client_id');

10
app/Models/Holiday.php Normal file
View File

@@ -0,0 +1,10 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Holiday extends Model
{
//
}

View File

@@ -0,0 +1,12 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class LeaveManagement extends Model
{
protected $guarded = array('id');
public $table = "leave_management";
}

20
app/Models/VpnConfig.php Normal file
View File

@@ -0,0 +1,20 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class VpnConfig extends Model
{
protected $guarded = ['id'];
public function client_info(){
return $this->hasOne('App\Models\Client', 'id', 'client_id');
}
public function mno_info(){
return $this->hasOne('App\Models\NetworkOps', 'id', 'mno_id');
}
public function userInfo(){
return $this->hasOne('App\Models\SystemUser', 'id', 'user_id');
}
}

View File

@@ -0,0 +1,11 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Worldwidemno extends Model
{
protected $guarded = array('id');
public $table = "mno_world_wide";
}

View File

@@ -13,16 +13,17 @@ class AppServiceProvider extends ServiceProvider
*/ */
public function boot() public function boot()
{ {
$monolog = \Log::getMonolog(); // $monolog = \Log::getMonolog();
//new --- > xoxp-677819906294-675678554016-693747277911-5166bcbb9a5fc3d5434b42a10c4d358a //new --- > xoxp-677819906294-675678554016-693747277911-5166bcbb9a5fc3d5434b42a10c4d358a
//old ---> xoxp-677819906294-675678554016-720956680656-4a6b5d0fcb00e9e0512c14341d3a7563 //old ---> xoxp-677819906294-675678554016-720956680656-4a6b5d0fcb00e9e0512c14341d3a7563
/* //clickml_erp_ntfy
$slackHandler = new \Monolog\Handler\SlackHandler('xoxp-677819906294-675678554016-693747277911-5166bcbb9a5fc3d5434b42a10c4d358a', '#click_erp_notify', 'Monolog', true, null, \Monolog\Logger::ERROR); //click_erp_notify
$slackHandler = new \Monolog\Handler\SlackHandler('xoxp-677819906294-675678554016-693747277911-5166bcbb9a5fc3d5434b42a10c4d358a', '#click_erp_notify', 'Monolog', true, null, \Monolog\Logger::INFO); // $slackHandler = new \Monolog\Handler\SlackHandler('xoxp-677819906294-675678554016-693747277911-5166bcbb9a5fc3d5434b42a10c4d358a', '#clickml_erp_ntfy', 'Monolog', true, null, \Monolog\Logger::ERROR);
$slackHandler = new \Monolog\Handler\SlackHandler('xoxp-677819906294-675678554016-693747277911-5166bcbb9a5fc3d5434b42a10c4d358a', '#click_erp_notify', 'Monolog', true, null, \Monolog\Logger::DEBUG); // $slackHandler = new \Monolog\Handler\SlackHandler('xoxp-677819906294-675678554016-693747277911-5166bcbb9a5fc3d5434b42a10c4d358a', '#clickml_erp_ntfy', 'Monolog', true, null, \Monolog\Logger::INFO);
// $slackHandler = new \Monolog\Handler\SlackHandler('xoxp-677819906294-675678554016-693747277911-5166bcbb9a5fc3d5434b42a10c4d358a', '#clickml_erp_ntfy', 'Monolog', true, null, \Monolog\Logger::DEBUG);
// $monolog->pushHandler($slackHandler);
$monolog->pushHandler($slackHandler);
*/
} }
/** /**

2
info.md Normal file
View File

@@ -0,0 +1,2 @@
- Balance notifications

View File

@@ -1,8 +0,0 @@
INSERT INTO `client_notes` (`id`, `client_id`, `services`, `auth_user_id`, `notes_body`, `highlight`, `created_at`, `updated_at`)
VALUES
(955, '229', 'A2P', 15, 'A bilateral prepaid agreement has been signed by both Click Mobile and Telxio Networks.\r\nThe next step is to exchange tech forms for the interconnection.', 'NO', '2024-03-11 11:34:14', '2024-03-11 11:34:14');
INSERT INTO `client_notes` (`id`, `client_id`, `services`, `auth_user_id`, `notes_body`, `highlight`, `created_at`, `updated_at`)
VALUES
(954, '229', 'A2P', 15, 'A bilateral prepaid agreement has been signed by both Click Mobile and Telxio.\r\nThe next stepp is to excahnge tech forms for the interconnection.', 'NO', '2024-03-11 08:00:02', '2024-03-11 08:00:02');

View File

@@ -1,7 +1,22 @@
# Leave management
- apply for leave
- approve/deny leave
- view leave days
- list staff on leave with return dates
## Leave Management Config Table
- id
- staff_type (director, standard)
- allocated_leave_days
- current_year
-
# Holidays
- list all holidays by country/general
- send holiday reminders
- Use the calender
# Onboarding process # Onboarding process
Thank you sir, Thank you sir,
Has it been uploaded on the ERP Has it been uploaded on the ERP
@@ -34,7 +49,18 @@ Comments
1. Charity suggested we link clients with Sender IDs to avoid having to enter Sender IDS on a separate page 1. Charity suggested we link clients with Sender IDs to avoid having to enter Sender IDS on a separate page
2. Charity and the team also suggested it would be good for us country managers to have more options on the ERP. Country documents should also have an option to add expiry dates. Have the same notes function under countries just like AMs.
2. Charity and the team also suggested it would be good for us country managers to have more options on the ERP. Country documents should also have an option to add expiry dates. Have the same notes function under countries just like AMs. --- ask for clarifications on the invoices
3. Charity also suggested that we have a feature that sends emails to AMs to remind them of the invoices. Since invoices have validity period to say to be paid after so an so date, it should be used to send reminders to alert AMs to followup on payments. Dont know if it makes sense. 3. Charity also suggested that we have a feature that sends emails to AMs to remind them of the invoices. Since invoices have validity period to say to be paid after so an so date, it should be used to send reminders to alert AMs to followup on payments. Dont know if it makes sense.
4. I have asked Kwesi if we could have a page on the ERP that displays all activities rather than just on the home page. Also suggested that we be able to click on some activities like when AM leaves a note, we should be able to open and view that note. 4. I have asked Kwesi if we could have a page on the ERP that displays all activities rather than just on the home page. Also suggested that we be able to click on some activities like when AM leaves a note, we should be able to open and view that note.
5. The other suggestion was to have an option to view all clients instead of just showing 15 clients per page, have an option to view 15, view 50. view 100. view all. that way will be able to download XLSX/PDF for all clients if we view all. currently it only downloads 15 clients of that particular page
5. The other suggestion was to have an option to view all clients instead of just showing 15 clients per page, have an option to view 15, view 50. view 100. view all. that way will be able to download XLSX/PDF for all clients if we view all. currently it only downloads 15 clients of that particular page - done
## Mansa
- Reports on new clients
- reports on new notes
- @exoscutter

View File

@@ -14,6 +14,34 @@
$('#textbox1').val(this.checked); $('#textbox1').val(this.checked);
}); });
*/ */
function matchCustom(params, data) {
// If there are no search terms, return all of the data
if ($.trim(params.term) === '') {
return data;
}
// Do not display the item if there is no 'text' property
if (typeof data.text === 'undefined') {
return null;
}
// `params.term` should be the term that is used for searching
// `data.text` is the text that is displayed for the data object
if (data.text.indexOf(params.term) > -1) {
var modifiedData = $.extend({}, data, true);
modifiedData.text += ' (matched)';
// You can return modified objects from here
// This includes matching the `children` how you want in nested data sets
return modifiedData;
}
// Return `null` if the term should not be displayed
return null;
}
$('#shortCodeCountry').select2({
matcher: matchCustom
});
$('.progressIndicatorCheckbox').on('change', function() { $('.progressIndicatorCheckbox').on('change', function() {
// From the other examples // From the other examples
// console.log('finker'); // console.log('finker');
@@ -23,8 +51,45 @@
$('#textbox1').val(sure.toString()); $('#textbox1').val(sure.toString());
} }
}); });
$("select#shortCodeCountry").change(function(){
var shortCodeCountry = $(this).val();
var theToken = "{{ csrf_token }}";
$.ajax({
type: "POST",
url: base_url + '/mnos/getCountryNetworks',
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
data: {"country" : shortCodeCountry },
cache: false,
beforeSend: function () {
console.log('loader here');
//show a loader here
//$('#district').html('<img src="../../img/loading.gif" alt="" width="24" height="24">');
},
success: function(data) {
console.log(data.mnos);
// var jason = JSON.parse(data);
if (data.code === 1) {
var actionPoint = $('#networks').empty();
console.log(actionPoint);
$.each(data.mnos, function(key, value) {
console.log(id);
console.log(row);
//$('#networks').append($("<option />").val(row.id).text(row.name));
});
}
else {
console.log(data);
$.alert(data.msg);
}
},
fail : function(errordata){
console.log(errordata);å
}
});
});
$('select').select2(); $('select').select2();
$('#myDatepicker2').datetimepicker({ $('#myDatepicker2').datetimepicker({
format: 'YYYY-MM-DD', format: 'YYYY-MM-DD',
@@ -68,7 +133,6 @@
}); });
$('#createSenderIdBtn').click(function(evt){ $('#createSenderIdBtn').click(function(evt){
evt.preventDefault(); evt.preventDefault();
console.log('Heere at the wall');
$('#newSenderIdFormModal').modal('show'); $('#newSenderIdFormModal').modal('show');
}); });
@@ -92,6 +156,7 @@
contentType: false, contentType: false,
async: false, async: false,
success: function (data){ success: function (data){
console.log(data);
if (data.code === 1) { if (data.code === 1) {
// console.log(theIDD); // console.log(theIDD);
$('#paymentIdEdit').val(theIDD); $('#paymentIdEdit').val(theIDD);
@@ -99,6 +164,7 @@
$('#invoiceNumberEdit').val(data.result.invoice_number); $('#invoiceNumberEdit').val(data.result.invoice_number);
$('#invoiceAmountEdit').val(data.result.invoice_amount); $('#invoiceAmountEdit').val(data.result.invoice_amount);
$('#invoiceDateEdit').val(data.result.invoice_date); $('#invoiceDateEdit').val(data.result.invoice_date);
$('#financeShortCodeEdit').val(data.result.short_code);
$('#invoiceStatusEdit').val(data.result.invoice_status).change(); $('#invoiceStatusEdit').val(data.result.invoice_status).change();
$('#remarksEdit').val(data.result.remarks); $('#remarksEdit').val(data.result.remarks);
$('#financePaymentsEditForm').modal('show'); $('#financePaymentsEditForm').modal('show');
@@ -141,6 +207,7 @@
$('#shortCodeTypeEdit').val(data.result.code_type); $('#shortCodeTypeEdit').val(data.result.code_type);
$('#shortCodeEdit').val(data.result.shortcode); $('#shortCodeEdit').val(data.result.shortcode);
$('#tollFreeEdit').val(data.result.toll_free).change(); $('#tollFreeEdit').val(data.result.toll_free).change();
$('#monthlyFeeEdit').val(data.result.monthly_fee);
$('#launchDateEdit').val(data.result.launch_date); $('#launchDateEdit').val(data.result.launch_date);
$('#expiryDateEdit').val(data.result.expiry_date); $('#expiryDateEdit').val(data.result.expiry_date);
$('#codeStatusEdit').val(data.result.status).change(); $('#codeStatusEdit').val(data.result.status).change();

36
public/assets/js/senderid.js vendored Normal file
View File

@@ -0,0 +1,36 @@
$(document).ready(function(){
$('#directMno').change(function(tve){
tve.preventDefault();
// var theIDD = $(this).siblings('.shortCodeEntryRowId').val();
var directMnoSelection = $(this).val();
$.ajax({
type: "GET",
url: base_url + '/senderids/get-mno-list/' + directMnoSelection,
processData: false,
contentType: false,
async: false,
success: function (data){
if (data.code === 1) {
$('#networkName').empty();
$.each(data.result, function(id, row) {
// console.log(row);
$('#networkName').append($("<option />").val(row.id).text(row.name));
});
}
else if (data.code > 1) {
$.alert({
title: 'Alert!',
content: data.msg,
});
}
else {
$.alert({
title: 'Alert!',
content: 'Your request could not be handled. Try again !',
});
}
}
});
});
});

44
public/assets/js/vpn_configs.js vendored Normal file
View File

@@ -0,0 +1,44 @@
$(document).ready(function(){
$('#dateReceived').datetimepicker({
format: 'YYYY-MM-DD'
});
$('#partnerType').change(function(tve){
tve.preventDefault();
// var theIDD = $(this).siblings('.shortCodeEntryRowId').val();
var selectedPartnerType = $(this).val();
$.ajax({
type: "GET",
url: base_url + '/infrastructure/get-vpn-partner-list/' + selectedPartnerType,
processData: false,
contentType: false,
async: false,
success: function (data){
if (data.code === 1) {
$('#partnerTypeID').empty();
$.each(data.result, function(id, row) {
// console.log(row);
$('#partnerTypeID').append($("<option />").val(row.id).text(row.partner));
});
// $('#partnerTypeIDd').val(data.result).change();
// $('#codeStatusEdit').val(data.result.status).change();
// $('#network').val(data.result.network).change();
}
else if (data.code > 1) {
$.alert({
title: 'Alert!',
content: data.msg,
});
}
else {
$.alert({
title: 'Alert!',
content: 'Your request could not be handled. Try again !',
});
}
}
});
});
});

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

View File

@@ -0,0 +1,103 @@
calldate,clid,src,dst,dcontext,channel,dstchannel,lastapp,lastdata,duration,billsec,disposition,amaflags,accountcode,uniqueid,userfield,did,cnum,cnam,outbound_cnum,outbound_cnam,dst_cnam,recordingfile,linkedid,peeraccount,sequence
12/29/24 19:52,"""0887767109"" <0887767109>",887767109,801,ext-local,SIP/TNM_In-000012d2,SIP/801-000012d3,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",57,55,ANSWERED,3,,1735494760,,3093,887767109,887767109,,,,,1735494760,,4850
12/29/24 19:52,"""0899297585"" <0899297585>",899297585,801,ext-local,SIP/TNM_In-000012ce,SIP/801-000012cf,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",167,84,ANSWERED,3,,1735494739,,3093,899297585,899297585,,,,,1735494739,,4846
12/29/24 19:50,"""0899158759"" <0899158759>",899158759,801,ext-local,SIP/TNM_In-000012a0,SIP/801-000012a1,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",95,27,ANSWERED,3,,1735494647,,3093,899158759,899158759,,,,,1735494647,,4799
12/29/24 19:50,"""0880709225"" <0880709225>",880709225,801,ext-local,SIP/TNM_In-0000129e,SIP/801-0000129f,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",64,1,ANSWERED,3,,1735494644,,3093,880709225,880709225,,,,,1735494644,,4797
12/29/24 19:49,"""0885900665"" <0885900665>",885900665,801,ext-local,SIP/TNM_In-0000128e,SIP/801-0000128f,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",136,76,ANSWERED,3,,1735494575,,3093,885900665,885900665,,,,,1735494575,,4781
12/29/24 19:47,"""0894554922"" <0894554922>",894554922,801,ext-local,SIP/TNM_In-00001268,SIP/801-00001269,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",148,52,ANSWERED,3,,1735494477,,3093,894554922,894554922,,,,,1735494477,,4742
12/29/24 19:47,"""0886366792"" <0886366792>",886366792,801,ext-local,SIP/TNM_In-00001260,SIP/801-00001261,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",101,92,ANSWERED,3,,1735494457,,3093,886366792,886366792,,,,,1735494457,,4734
12/29/24 19:46,"""0885822517"" <0885822517>",885822517,801,ext-local,SIP/TNM_In-00001250,SIP/801-00001251,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",8,3,ANSWERED,3,,1735494392,,3093,885822517,885822517,,,,,1735494392,,4718
12/29/24 19:46,"""0885398255"" <0885398255>",885398255,801,ext-local,SIP/TNM_In-0000124e,SIP/801-0000124f,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",31,27,ANSWERED,3,,1735494390,,3093,885398255,885398255,,,,,1735494390,,4716
12/29/24 19:44,"""0893972425"" <0893972425>",893972425,801,ext-local,SIP/TNM_In-00001238,SIP/801-00001239,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",94,33,ANSWERED,3,,1735494295,,3093,893972425,893972425,,,,,1735494295,,4693
12/29/24 19:44,"""0886207444"" <0886207444>",886207444,801,ext-local,SIP/TNM_In-00001232,SIP/801-00001233,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",160,40,ANSWERED,3,,1735494286,,3093,886207444,886207444,,,,,1735494286,,4687
12/29/24 19:43,"""0881642040"" <0881642040>",881642040,801,ext-local,SIP/TNM_In-0000121a,SIP/801-0000121b,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",116,78,ANSWERED,3,,1735494224,,3093,881642040,881642040,,,,,1735494224,,4663
12/29/24 19:43,"""0882660355"" <0882660355>",882660355,801,ext-local,SIP/TNM_In-00001218,SIP/801-00001219,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",39,2,ANSWERED,3,,1735494218,,3093,882660355,882660355,,,,,1735494218,,4661
12/29/24 19:42,"""0881642040"" <0881642040>",881642040,801,ext-local,SIP/TNM_In-0000120e,SIP/801-0000120f,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",42,36,ANSWERED,3,,1735494135,,3093,881642040,881642040,,,,,1735494135,,4651
12/29/24 19:42,"""0893455004"" <0893455004>",893455004,801,ext-local,SIP/TNM_In-0000120c,SIP/801-0000120d,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",7,1,ANSWERED,3,,1735494127,,3093,893455004,893455004,,,,,1735494127,,4649
12/29/24 19:41,"""0885900665"" <0885900665>",885900665,801,ext-local,SIP/TNM_In-00001208,SIP/801-00001209,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",21,10,ANSWERED,3,,1735494108,,3093,885900665,885900665,,,,,1735494108,,4645
12/29/24 19:41,"""0885252779"" <0885252779>",885252779,801,ext-local,SIP/TNM_In-000011fa,SIP/801-000011fb,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",152,68,ANSWERED,3,,1735494075,,3093,885252779,885252779,,,,,1735494075,,4631
12/29/24 19:40,"""0887767109"" <0887767109>",887767109,801,ext-local,SIP/TNM_In-000011ec,SIP/801-000011ed,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",87,13,ANSWERED,3,,1735494012,,3093,887767109,887767109,,,,,1735494012,,4617
12/29/24 19:39,"""0899838714"" <0899838714>",899838714,801,ext-local,SIP/TNM_In-000011dc,SIP/801-000011dd,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",97,61,ANSWERED,3,,1735493976,,3093,899838714,899838714,,,,,1735493976,,4601
12/29/24 19:39,"""0886017458"" <0886017458>",886017458,801,ext-local,SIP/TNM_In-000011d6,SIP/801-000011d7,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",49,13,ANSWERED,3,,1735493953,,3093,886017458,886017458,,,,,1735493953,,4595
12/29/24 19:38,"""0887918050"" <0887918050>",887918050,801,ext-local,SIP/TNM_In-000011d2,SIP/801-000011d3,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",67,2,ANSWERED,3,,1735493919,,3093,887918050,887918050,,,,,1735493919,,4591
12/29/24 19:38,"""0893972425"" <0893972425>",893972425,801,ext-local,SIP/TNM_In-000011c8,SIP/801-000011c9,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",89,14,ANSWERED,3,,1735493883,,3093,893972425,893972425,,,,,1735493883,,4581
12/29/24 19:37,"""0886695068"" <0886695068>",886695068,801,ext-local,SIP/TNM_In-000011bc,SIP/801-000011bd,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",87,70,ANSWERED,3,,1735493858,,3093,886695068,886695068,,,,,1735493858,,4569
12/29/24 19:37,"""0899519250"" <0899519250>",899519250,801,ext-local,SIP/TNM_In-000011b8,SIP/801-000011b9,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",27,23,ANSWERED,3,,1735493845,,3093,899519250,899519250,,,,,1735493845,,4565
12/29/24 19:32,"""0882089732"" <0882089732>",882089732,801,ext-local,SIP/TNM_In-0000118e,SIP/801-0000118f,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",89,61,ANSWERED,3,,1735493562,,3093,882089732,882089732,,,,,1735493562,,4523
12/29/24 19:32,"""0889388507"" <0889388507>",889388507,801,ext-local,SIP/TNM_In-0000118c,SIP/801-0000118d,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",41,30,ANSWERED,3,,1735493556,,3093,889388507,889388507,,,,,1735493556,,4521
12/29/24 19:32,"""0897569188"" <0897569188>",897569188,801,ext-local,SIP/TNM_In-0000118a,SIP/801-0000118b,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",39,10,ANSWERED,3,,1735493521,,3093,897569188,897569188,,,,,1735493521,,4518
12/29/24 19:29,"""0888968330"" <0888968330>",888968330,801,ext-local,SIP/TNM_In-00001170,SIP/801-00001171,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",4,3,ANSWERED,3,,1735493348,,3093,888968330,888968330,,,,,1735493348,,4492
12/29/24 19:28,"""0885252779"" <0885252779>",885252779,801,ext-local,SIP/TNM_In-00001166,SIP/801-00001167,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",71,43,ANSWERED,3,,1735493330,,3093,885252779,885252779,,,,,1735493330,,4482
12/29/24 19:27,"""0899310448"" <0899310448>",899310448,801,ext-local,SIP/TNM_In-0000115e,SIP/801-0000115f,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",30,3,ANSWERED,3,,1735493225,,3093,899310448,899310448,,,,,1735493225,,4474
12/29/24 19:26,"""0899450145"" <0899450145>",899450145,801,ext-local,SIP/TNM_In-0000115c,SIP/801-0000115d,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",29,24,ANSWERED,3,,1735493214,,3093,899450145,899450145,,,,,1735493214,,4472
12/29/24 19:25,"""0885868384"" <0885868384>",885868384,801,ext-local,SIP/TNM_In-0000115a,SIP/801-0000115b,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",20,17,ANSWERED,3,,1735493110,,3093,885868384,885868384,,,,,1735493110,,4470
12/29/24 19:25,"""0882188136"" <0882188136>",882188136,801,ext-local,SIP/TNM_In-00001158,SIP/801-00001159,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",94,61,ANSWERED,3,,1735493105,,3093,882188136,882188136,,,,,1735493105,,4468
12/29/24 19:20,"""0885739933"" <0885739933>",885739933,801,ext-local,SIP/TNM_In-0000114a,SIP/801-0000114b,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",74,55,ANSWERED,3,,1735492828,,3093,885739933,885739933,,,,,1735492828,,4452
12/29/24 19:18,"""0882415110"" <0882415110>",882415110,801,ext-local,SIP/TNM_In-0000113c,SIP/801-0000113d,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",65,60,ANSWERED,3,,1735492726,,3093,882415110,882415110,,,,,1735492726,,4438
12/29/24 19:17,"""0894724051"" <0894724051>",894724051,801,ext-local,SIP/TNM_In-00001138,SIP/801-00001139,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",58,18,ANSWERED,3,,1735492660,,3093,894724051,894724051,,,,,1735492660,,4433
12/29/24 19:17,"""0885037770"" <0885037770>",885037770,801,ext-local,SIP/TNM_In-00001130,SIP/801-00001131,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",65,61,ANSWERED,3,,1735492623,,3093,885037770,885037770,,,,,1735492623,,4425
12/29/24 19:15,"""0886623019"" <0886623019>",886623019,801,ext-local,SIP/TNM_In-0000111e,SIP/801-0000111f,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",65,58,ANSWERED,3,,1735492533,,3093,886623019,886623019,,,,,1735492533,,4407
12/29/24 19:15,"""0882415110"" <0882415110>",882415110,801,ext-local,SIP/TNM_In-0000111c,SIP/801-0000111d,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",19,16,ANSWERED,3,,1735492528,,3093,882415110,882415110,,,,,1735492528,,4405
12/29/24 19:14,"""0899840897"" <0899840897>",899840897,801,ext-local,SIP/TNM_In-00001114,SIP/801-00001115,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",4,2,ANSWERED,3,,1735492480,,3093,899840897,899840897,,,,,1735492480,,4397
12/29/24 19:14,"""0882199621"" <0882199621>",882199621,801,ext-local,SIP/TNM_In-00001112,SIP/801-00001113,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",19,9,ANSWERED,3,,1735492479,,3093,882199621,882199621,,,,,1735492479,,4395
12/29/24 19:14,"""0884523013"" <0884523013>",884523013,801,ext-local,SIP/TNM_In-0000110e,SIP/801-0000110f,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",16,14,ANSWERED,3,,1735492452,,3093,884523013,884523013,,,,,1735492452,,4391
12/29/24 19:11,"""0893245079"" <0893245079>",893245079,801,ext-local,SIP/TNM_In-000010fe,SIP/801-000010ff,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",88,49,ANSWERED,3,,1735492280,,3093,893245079,893245079,,,,,1735492280,,4375
12/29/24 19:10,"""0899607324"" <0899607324>",899607324,801,ext-local,SIP/TNM_In-000010f8,SIP/801-000010f9,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",43,32,ANSWERED,3,,1735492249,,3093,899607324,899607324,,,,,1735492249,,4369
12/29/24 19:10,"""0882188136"" <0882188136>",882188136,801,ext-local,SIP/TNM_In-000010f4,SIP/801-000010f5,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",25,19,ANSWERED,3,,1735492220,,3093,882188136,882188136,,,,,1735492220,,4365
12/29/24 19:09,"""0894542275"" <0894542275>",894542275,801,ext-local,SIP/TNM_In-000010f2,SIP/801-000010f3,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",13,3,ANSWERED,3,,1735492170,,3093,894542275,894542275,,,,,1735492170,,4363
12/29/24 19:09,"""0899841516"" <0899841516>",899841516,801,ext-local,SIP/TNM_In-000010f0,SIP/801-000010f1,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",16,8,ANSWERED,3,,1735492161,,3093,899841516,899841516,,,,,1735492161,,4361
12/29/24 18:54,"""0894139395"" <0894139395>",894139395,801,ext-local,SIP/TNM_In-000010de,SIP/801-000010df,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",3,2,ANSWERED,3,,1735491269,,3093,894139395,894139395,,,,,1735491269,,4343
12/29/24 18:54,"""0887056885"" <0887056885>",887056885,801,ext-local,SIP/TNM_In-000010dc,SIP/801-000010dd,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",61,52,ANSWERED,3,,1735491268,,3093,887056885,887056885,,,,,1735491268,,4341
12/29/24 18:48,"""0889445998"" <0889445998>",889445998,801,ext-local,SIP/TNM_In-000010b6,SIP/801-000010b7,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",53,20,ANSWERED,3,,1735490932,,3093,889445998,889445998,,,,,1735490932,,4302
12/29/24 18:48,"""0899495878"" <0899495878>",899495878,801,ext-local,SIP/TNM_In-000010b4,SIP/801-000010b5,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",37,17,ANSWERED,3,,1735490922,,3093,899495878,899495878,,,,,1735490922,,4300
12/29/24 18:47,"""0894788427"" <0894788427>",894788427,801,ext-local,SIP/TNM_In-000010aa,SIP/801-000010ab,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",63,42,ANSWERED,3,,1735490841,,3093,894788427,894788427,,,,,1735490841,,4289
12/29/24 18:46,"""0894676810"" <0894676810>",894676810,801,ext-local,SIP/TNM_In-000010a4,SIP/801-000010a5,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",47,33,ANSWERED,3,,1735490806,,3093,894676810,894676810,,,,,1735490806,,4283
12/29/24 18:38,"""0882060983"" <0882060983>",882060983,801,ext-local,SIP/TNM_In-00001072,SIP/801-00001073,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",83,63,ANSWERED,3,,1735490313,,3093,882060983,882060983,,,,,1735490313,,4233
12/29/24 18:32,"""0881383815"" <0881383815>",881383815,801,ext-local,SIP/TNM_In-0000104e,SIP/801-0000104f,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",86,76,ANSWERED,3,,1735489942,,3093,881383815,881383815,,,,,1735489942,,4197
12/29/24 18:32,"""0887456514"" <0887456514>",887456514,801,ext-local,SIP/TNM_In-0000104c,SIP/801-0000104d,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",7,3,ANSWERED,3,,1735489928,,3093,887456514,887456514,,,,,1735489928,,4195
12/29/24 18:32,"""0897239693"" <0897239693>",897239693,801,ext-local,SIP/TNM_In-0000104a,SIP/801-0000104b,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",24,4,ANSWERED,3,,1735489924,,3093,897239693,897239693,,,,,1735489924,,4193
12/29/24 18:23,"""0880978134"" <0880978134>",880978134,801,ext-local,SIP/TNM_In-00001026,SIP/801-00001027,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",64,59,ANSWERED,3,,1735489417,,3093,880978134,880978134,,,,,1735489417,,4157
12/29/24 18:22,"""0881383815"" <0881383815>",881383815,801,ext-local,SIP/TNM_In-00001024,SIP/801-00001025,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",16,10,ANSWERED,3,,1735489378,,3093,881383815,881383815,,,,,1735489378,,4155
12/29/24 18:15,"""0884413618"" <0884413618>",884413618,801,ext-local,SIP/TNM_In-00001019,SIP/801-0000101a,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",60,50,ANSWERED,3,,1735488935,,3093,884413618,884413618,,,,,1735488935,,4144
12/29/24 18:13,"""0894676810"" <0894676810>",894676810,801,ext-local,SIP/TNM_In-00001015,SIP/801-00001016,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",40,34,ANSWERED,3,,1735488782,,3093,894676810,894676810,,,,,1735488782,,4140
12/29/24 18:13,"""0882794555"" <0882794555>",882794555,801,ext-local,SIP/TNM_In-00001013,SIP/801-00001014,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",120,74,ANSWERED,3,,1735488780,,3093,882794555,882794555,,,,,1735488780,,4138
12/29/24 18:08,"""0884050295"" <0884050295>",884050295,801,ext-local,SIP/TNM_In-0000100b,SIP/801-0000100c,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",68,60,ANSWERED,3,,1735488508,,3093,884050295,884050295,,,,,1735488508,,4129
12/29/24 18:08,"""0897700681"" <0897700681>",897700681,801,ext-local,SIP/TNM_In-00001009,SIP/801-0000100a,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",6,2,ANSWERED,3,,1735488502,,3093,897700681,897700681,,,,,1735488502,,4126
12/29/24 18:08,"""0893564498"" <0893564498>",893564498,801,ext-local,SIP/TNM_In-00001003,SIP/801-00001004,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",12,3,ANSWERED,3,,1735488485,,3093,893564498,893564498,,,,,1735488485,,4120
12/29/24 18:07,"""0883516272"" <0883516272>",883516272,801,ext-local,SIP/TNM_In-00000ffd,SIP/801-00000ffe,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",10,1,ANSWERED,3,,1735488450,,3093,883516272,883516272,,,,,1735488450,,4114
12/29/24 17:59,"""0894676810"" <0894676810>",894676810,801,ext-local,SIP/TNM_In-00000ff1,SIP/801-00000ff2,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",38,33,ANSWERED,3,,1735487940,,3093,894676810,894676810,,,,,1735487940,,4101
12/29/24 17:55,"""0899201172"" <0899201172>",899201172,801,ext-local,SIP/TNM_In-00000fe3,SIP/801-00000fe4,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",67,61,ANSWERED,3,,1735487738,,3093,899201172,899201172,,,,,1735487738,,4087
12/29/24 17:53,"""0894676810"" <0894676810>",894676810,801,ext-local,SIP/TNM_In-00000fdf,SIP/801-00000fe0,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",38,32,ANSWERED,3,,1735487606,,3093,894676810,894676810,,,,,1735487606,,4083
12/29/24 17:48,"""0888028532"" <0888028532>",888028532,801,ext-local,SIP/TNM_In-00000fd7,SIP/801-00000fd8,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",73,65,ANSWERED,3,,1735487311,,3093,888028532,888028532,,,,,1735487311,,4075
12/29/24 17:47,"""0894676810"" <0894676810>",894676810,801,ext-local,SIP/TNM_In-00000fd5,SIP/801-00000fd6,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",45,41,ANSWERED,3,,1735487222,,3093,894676810,894676810,,,,,1735487222,,4073
12/29/24 17:47,"""0888028532"" <0888028532>",888028532,801,ext-local,SIP/TNM_In-00000fd3,SIP/801-00000fd4,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",72,16,ANSWERED,3,,1735487220,,3093,888028532,888028532,,,,,1735487220,,4071
12/29/24 17:44,"""0893718304"" <0893718304>",893718304,801,ext-local,SIP/TNM_In-00000fd1,SIP/801-00000fd2,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",86,81,ANSWERED,3,,1735487084,,3093,893718304,893718304,,,,,1735487084,,4069
12/29/24 17:41,"""0881185415"" <0881185415>",881185415,801,ext-local,SIP/TNM_In-00000fcd,SIP/801-00000fce,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",116,60,ANSWERED,3,,1735486890,,3093,881185415,881185415,,,,,1735486890,,4065
12/29/24 17:40,"""0884325666"" <0884325666>",884325666,801,ext-local,SIP/TNM_In-00000fc7,SIP/801-00000fc8,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",84,54,ANSWERED,3,,1735486837,,3093,884325666,884325666,,,,,1735486837,,4059
12/29/24 17:40,"""0893718304"" <0893718304>",893718304,801,ext-local,SIP/TNM_In-00000fc5,SIP/801-00000fc6,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",32,31,ANSWERED,3,,1735486823,,3093,893718304,893718304,,,,,1735486823,,4057
12/29/24 17:37,"""0883699380"" <0883699380>",883699380,801,ext-local,SIP/TNM_In-00000fbb,SIP/801-00000fbc,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",63,57,ANSWERED,3,,1735486620,,3093,883699380,883699380,,,,,1735486620,,4047
12/29/24 17:35,"""0885877899"" <0885877899>",885877899,801,ext-local,SIP/TNM_In-00000fb5,SIP/801-00000fb6,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",60,53,ANSWERED,3,,1735486500,,3093,885877899,885877899,,,,,1735486500,,4041
12/29/24 17:26,"""0881567540"" <0881567540>",881567540,801,ext-local,SIP/TNM_In-00000fa7,SIP/801-00000fa8,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",64,58,ANSWERED,3,,1735485979,,3093,881567540,881567540,,,,,1735485979,,4027
12/29/24 17:24,"""0893084937"" <0893084937>",893084937,801,ext-local,SIP/TNM_In-00000fa3,SIP/801-00000fa4,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",47,42,ANSWERED,3,,1735485845,,3093,893084937,893084937,,,,,1735485845,,4023
12/29/24 17:23,"""0888644290"" <0888644290>",888644290,801,ext-local,SIP/TNM_In-00000fa1,SIP/801-00000fa2,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",79,31,ANSWERED,3,,1735485792,,3093,888644290,888644290,,,,,1735485792,,4021
12/29/24 17:22,"""0894085069"" <0894085069>",894085069,801,ext-local,SIP/TNM_In-00000f9d,SIP/801-00000f9e,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",52,49,ANSWERED,3,,1735485779,,3093,894085069,894085069,,,,,1735485779,,4017
12/29/24 17:22,"""0893084937"" <0893084937>",893084937,801,ext-local,SIP/TNM_In-00000f9b,SIP/801-00000f9c,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",58,1,ANSWERED,3,,1735485778,,3093,893084937,893084937,,,,,1735485778,,4015
12/29/24 17:22,"""0888051117"" <0888051117>",888051117,801,ext-local,SIP/TNM_In-00000f97,SIP/801-00000f98,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",45,14,ANSWERED,3,,1735485722,,3093,888051117,888051117,,,,,1735485722,,4011
12/29/24 17:18,"""0880533007"" <0880533007>",880533007,801,ext-local,SIP/TNM_In-00000f8d,SIP/801-00000f8e,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",89,84,ANSWERED,3,,1735485539,,3093,880533007,880533007,,,,,1735485539,,3999
12/29/24 17:17,"""0886332856"" <0886332856>",886332856,801,ext-local,SIP/TNM_In-00000f80,SIP/801-00000f81,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",64,59,ANSWERED,3,,1735485449,,3093,886332856,886332856,,,,,1735485449,,3986
12/29/24 17:15,"""0889707210"" <0889707210>",889707210,801,ext-local,SIP/TNM_In-00000f7c,SIP/801-00000f7d,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",62,57,ANSWERED,3,,1735485348,,3093,889707210,889707210,,,,,1735485348,,3982
12/29/24 17:09,"""0886332856"" <0886332856>",886332856,801,ext-local,SIP/TNM_In-00000f79,SIP/801-00000f7a,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",39,33,ANSWERED,3,,1735484951,,3093,886332856,886332856,,,,,1735484951,,3979
12/29/24 17:06,"""0888644290"" <0888644290>",888644290,801,ext-local,SIP/TNM_In-00000f73,SIP/801-00000f74,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",56,51,ANSWERED,3,,1735484792,,3093,888644290,888644290,,,,,1735484792,,3973
12/29/24 15:55,"""0893549454"" <0893549454>",893549454,801,ext-local,SIP/TNM_In-00000f62,SIP/801-00000f63,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",88,80,ANSWERED,3,,1735480515,,3093,893549454,893549454,,,,,1735480515,,3956
12/29/24 15:54,"""0893549454"" <0893549454>",893549454,801,ext-local,SIP/TNM_In-00000f60,SIP/801-00000f61,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",33,0,ANSWERED,3,,1735480445,,3093,893549454,893549454,,,,,1735480445,,3954
12/29/24 15:53,"""0899934835"" <0899934835>",899934835,801,ext-local,SIP/TNM_In-00000f5e,SIP/801-00000f5f,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",38,33,ANSWERED,3,,1735480434,,3093,899934835,899934835,,,,,1735480434,,3952
12/29/24 15:52,"""0894167270"" <0894167270>",894167270,801,ext-local,SIP/TNM_In-00000f5b,SIP/801-00000f5c,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",15,9,ANSWERED,3,,1735480370,,3093,894167270,894167270,,,,,1735480370,,3949
12/29/24 15:51,"""0889465153"" <0889465153>",889465153,801,ext-local,SIP/TNM_In-00000f53,SIP/801-00000f54,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",39,18,ANSWERED,3,,1735480315,,3093,889465153,889465153,,,,,1735480315,,3941
12/29/24 15:51,"""0899092065"" <0899092065>",899092065,801,ext-local,SIP/TNM_In-00000f55,SIP/801-00000f56,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",6,2,ANSWERED,3,,1735480315,,3093,899092065,899092065,,,,,1735480315,,3943
12/29/24 15:51,"""0894167270"" <0894167270>",894167270,801,ext-local,SIP/TNM_In-00000f51,SIP/801-00000f52,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",17,14,ANSWERED,3,,1735480311,,3093,894167270,894167270,,,,,1735480311,,3939
12/29/24 15:51,"""0881290872"" <0881290872>",881290872,801,ext-local,SIP/TNM_In-00000f4f,SIP/801-00000f50,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",5,1,ANSWERED,3,,1735480283,,3093,881290872,881290872,,,,,1735480283,,3937
12/29/24 15:49,"""0894167270"" <0894167270>",894167270,801,ext-local,SIP/TNM_In-00000f4a,SIP/801-00000f4b,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",19,3,ANSWERED,3,,1735480185,,3093,894167270,894167270,,,,,1735480185,,3932
12/29/24 15:49,"""0883671730"" <0883671730>",883671730,801,ext-local,SIP/TNM_In-00000f48,SIP/801-00000f49,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",25,22,ANSWERED,3,,1735480167,,3093,883671730,883671730,,,,,1735480167,,3930
12/29/24 15:48,"""0880060939"" <0880060939>",880060939,801,ext-local,SIP/TNM_In-00000f43,SIP/801-00000f44,Dial,"SIP/801,,HhtrIb(func-apply-sipheaders^s^1)",13,8,ANSWERED,3,,1735480095,,3093,880060939,880060939,,,,,1735480095,,3925
,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,3395,,,,,,,,,,,,,,,

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,992 @@
"country";"operator";"mcc";"mnc";"operatorid"
"Afghanistan","Afghan Wireless Communication Company (AWCC)","412","1","431"
"Afghanistan","Etisalat Afghanistan","412","50","642"
"Afghanistan","MTN Afghanistan","412","40","416"
"Afghanistan","Roshan","412","20","432"
"Albania","ALBtelecom Albania","276","3","665"
"Albania","Plus Communication","276","4","1118"
"Albania","Telekom Albania","276","1","98"
"Albania","Vodafone Albania","276","2","346"
"Algeria","Algerie Telecom (Mobilis)","603","1","15"
"Algeria","Ooredoo","603","3","386"
"Algeria","Orascom Telecom (Djezzy)","603","2","385"
"American Samoa","Blue Sky Communications","544","11","590"
"Andorra","Andorra Telecom (Servei De Tele. DAndorra)","213","3","433"
"Angola","Movicel Angola","631","4","1137"
"Angola","Unitel Angola","631","2","434"
"Anguilla","Digicel Anguilla","365","50","441"
"Anguilla","FLOW Anguilla (ex-C&W)","365","840","440"
"Anguilla","Weblinks","365","10","995"
"Antigua and Barbuda","APUA PCS","344","30","403"
"Antigua and Barbuda","Digicel Antigua","344","930","997"
"Antigua and Barbuda","FLOW Antigua (LIME - CWC)","344","920","643"
"Argentina","Claro (Cti Pcs) Argentina","722","310","186"
"Argentina","Default (Unallocated Prefixes)","722","999","1328"
"Argentina","Hutchison Telecommunications","722","35","690"
"Argentina","Movistar Argentina","722","7","348"
"Argentina","Nextel Argentina","722","2","689"
"Argentina","Telecom Personal","722","34","347"
"Armenia","Beeline","283","1","120"
"Armenia","Karabakh Telecom","283","4","902"
"Armenia","Ucom (Orange)","283","10","699"
"Armenia","VivaCell (MTS)","283","5","442"
"Aruba","Digicel Aruba","363","20","443"
"Aruba","SETAR","363","1","444"
"Australia","Optus Mobile","505","2","202"
"Australia","Telstra","505","1","204"
"Australia","Vodafone Hutchison Australia","505","3","203"
"Austria","A1 Telekom","232","1","160"
"Austria","Hutchison 3","232","10","351"
"Austria","Hutchison 3 (ex-Orange)","232","5","162"
"Austria","Magenta Telekom (ex-T-Mobile)","232","3","161"
"Austria","Tele.ring","232","7","159"
"Azerbaijan","Azercell","400","1","312"
"Azerbaijan","Azerfon (Nar Mobile)","400","4","648"
"Azerbaijan","Bakcell","400","2","313"
"Bahamas","Bahamas Telecommunications Company","364","39","446"
"Bahrain","Batelco","426","1","308"
"Bahrain","VIVA (STC Bahrain)","426","4","1039"
"Bahrain","Zain Bahrain","426","2","447"
"Bangladesh","Airtel","470","7","450"
"Bangladesh","Banglalink","470","3","448"
"Bangladesh","Citycell","470","5","1325"
"Bangladesh","Grameenphone","470","1","255"
"Bangladesh","Robi (Axiata)","470","2","429"
"Bangladesh","TeleTalk","470","4","449"
"Barbados","Digicel Barbados","342","750","402"
"Barbados","Flow Barbados (LIME - CWC)","342","600","639"
"Belarus","life:)","257","4","615"
"Belarus","MTS Belarus","257","2","614"
"Belarus","Velcom Belarus","257","1","121"
"Belgium","Base","206","20","77"
"Belgium","Orange (Mobistar)","206","10","78"
"Belgium","Proximus (ex-Belgacom)","206","1","76"
"Belgium","Telenet","206","5","1382"
"Belize","Digi Belize","702","67","411"
"Benin","BBCOM","616","4","596"
"Benin","Glo Benin","616","5","692"
"Benin","Libercom","616","1","27"
"Benin","Moov Benin (Etisalat)","616","2","592"
"Benin","MTN Benin (Spacetel)","616","3","589"
"Bermuda","Cellular One Bermuda","350","0","1053"
"Bermuda","Digicel Bermuda","350","1","8"
"Bermuda","M3 Wireless (Mobility)","350","2","352"
"Bhutan","B-Mobile Bhutan Telecom","402","11","451"
"Bolivia","Entel Bolivia","736","2","453"
"Bolivia","Tigo Bolivia","736","3","452"
"Bolivia","Viva Bolivia (ex-Nuevatel)","736","1","193"
"Bosnia and Herzegovina","BH Telecom Bosnia and Herzegovina","218","90","136"
"Bosnia and Herzegovina","HT Eronet Bosnia and Herzegovina","218","3","137"
"Bosnia and Herzegovina","m:tel Bosnia and Herzegovina","218","5","138"
"Botswana","BTC Mobile (beMobile)","652","4","1117"
"Botswana","Mascom Wireless","652","1","61"
"Botswana","Orange","652","2","62"
"Brazil","Algar Telecom Brazil","724","33","1401"
"Brazil","Brasil Telecom","724","16","1402"
"Brazil","Claro Brazil","724","5","1398"
"Brazil","Default (Unallocated Prefixes)","724","999","1304"
"Brazil","Nextel Brazil","724","0","1396"
"Brazil","Oi Brazil","724","31","1403"
"Brazil","Sercomtel Celular","724","15","1400"
"Brazil","TIM Brazil","724","2","1397"
"Brazil","Vivo Brazil","724","6","1399"
"Brunei Darussalam","DST Communications","528","11","219"
"Brunei Darussalam","Progresif Brunei (B-Mobile)","528","2","220"
"Bulgaria","A1 Bulgaria (M-Tel)","284","1","107"
"Bulgaria","Telenor Bulgaria","284","5","356"
"Bulgaria","Vivacom","284","3","390"
"Burkina Faso","Onatel Burkina Faso","613","1","597"
"Burkina Faso","Orange Burkina Faso (Airtel)","613","2","406"
"Burkina Faso","Telecel Burkina Faso","613","3","598"
"Burundi","Econet","642","1","468"
"Burundi","Econet (ex-Leo)","642","82","49"
"Burundi","LaCell","642","7","1308"
"Burundi","Lumitel (Viettel) Burundi","642","8","1309"
"Burundi","Onatel","642","3","1307"
"Burundi","Tempo (Africell)","642","2","469"
"Cambodia","Cellcard (Mobitel)","456","1","250"
"Cambodia","Metfone (ex-Beeline) Cambodia","456","9","1370"
"Cambodia","Metfone Cambodia","456","8","1107"
"Cambodia","qb (Cambodia Advance Communications)","456","4","976"
"Cambodia","Smart Mobile","456","2","251"
"Cambodia","Yes Cambodia (ex-Excell)","456","11","1371"
"Cameroon","MTN Cameroon","624","1","32"
"Cameroon","Orange Cameroon","624","2","33"
"Canada","Airtel Wireless","302","290","1330"
"Canada","Bell Mobility Inc","302","610","905"
"Canada","Dryden Mobility","302","380","1331"
"Canada","Fido Solutions","302","370","903"
"Canada","First Networks Operations","302","350","906"
"Canada","Freedom Mobile Canada","302","490","1145"
"Canada","ICE Wireless","302","620","1333"
"Canada","Mobilicity","302","320","1329"
"Canada","MTS","302","655","1334"
"Canada","Rogers Wireless Canada","302","720","904"
"Canada","SaskTel Wireless","302","680","1054"
"Canada","tbaytel","302","656","1335"
"Canada","Telus Canada","302","360","1108"
"Canada","Videotron","302","500","1332"
"Cape Verde Islands","CV Movel","625","1","34"
"Cape Verde Islands","T+ Telecomunicacoes","625","2","1001"
"Cayman Islands","Digicel Cayman","346","6","471"
"Cayman Islands","Flow Cayman Islands (CWC)","346","140","470"
"Central African Republic","Azur RCA","623","4","669"
"Central African Republic","Moov Centrafrique (A-Cell)","623","1","668"
"Central African Republic","Orange Central African Republic","623","3","670"
"Central African Republic","Telecel Centrafrique","623","2","31"
"Chad","Airtel Chad","622","1","408"
"Chad","Tigo Chad","622","3","666"
"Chile","Claro Chile","730","3","475"
"Chile","Entel","730","1","474"
"Chile","Entel PCS","730","10","188"
"Chile","Falabella Movil","730","200","1383"
"Chile","Movistar Chile","730","2","476"
"Chile","Telefonica Del Sur","730","6","1143"
"Chile","Virgin Mobile(Tribe)","730","13","1142"
"Chile","VTR","730","8","1114"
"Chile","WOM (Nextel)","730","9","1115"
"China","China Mobile","460","0","253"
"China","China Telecom","460","3","979"
"China","China Unicom","460","1","252"
"Colombia","Claro (Comcel)","732","101","478"
"Colombia","Movistar","732","102","479"
"Colombia","Tigo","732","103","477"
"Comoros/Mayotte","HURI","654","1","480"
"Congo","Airtel (ex-Warid) Congo","629","7","1002"
"Congo","Airtel Congo","629","1","37"
"Congo","Azur Congo","629","2","1341"
"Congo","MTN Congo","629","10","599"
"Congo, Democratic Republic of the","Africell DRC","630","90","1343"
"Congo, Democratic Republic of the","Airtel DRC","630","2","600"
"Congo, Democratic Republic of the","Orange (ex-Tigo) DRC","630","89","602"
"Congo, Democratic Republic of the","Orange DRC","630","86","601"
"Congo, Democratic Republic of the","Supercell Congo","630","5","603"
"Congo, Democratic Republic of the","Vodacom DRC","630","1","604"
"Congo, Democratic Republic of the","Yozma Timeturns","630","991","1342"
"Cook Islands","Vodafone Cook Islands","548","1","481"
"Costa Rica","Claro Costa Rica","712","3","1135"
"Costa Rica","kolbi (ICE) Costa Rica","712","1","482"
"Costa Rica","Movistar Costa Rica","712","4","1136"
"Croatia","A1 (ex-Vipnet)","219","10","132"
"Croatia","Tele2 Croatia","219","2","430"
"Croatia","Telekom Croatia","219","1","133"
"Cuba","Cubacel","368","1","358"
"Cyprus","CYTA (Vodafone)","280","1","101"
"Cyprus","MTN Cyprus (Areeba)","280","10","359"
"Cyprus","PrimeTel","280","20","1315"
"Czech Republic","O2","230","2","150"
"Czech Republic","T-Mobile","230","1","151"
"Czech Republic","U:fon","230","4","1358"
"Czech Republic","Vodafone","230","3","152"
"Denmark","3 Denmark","238","6","360"
"Denmark","Barablu Mobile","238","7","909"
"Denmark","Bibob","238","995","1393"
"Denmark","Call me","238","997","1395"
"Denmark","CBB Mobil Denmark","238","991","1389"
"Denmark","Companymobile","238","994","1392"
"Denmark","FONET","238","990","1387"
"Denmark","Fullrate","238","993","1391"
"Denmark","Lebara Denmark","238","996","1394"
"Denmark","Lycamobile Denmark","238","12","1134"
"Denmark","TDC Mobil","238","1","166"
"Denmark","Telenor (ex-Tele2) Denmark","238","77","908"
"Denmark","Telenor Denmark","238","2","167"
"Denmark","Telia Denmark","238","20","169"
"Denmark","Telmore","238","992","1390"
"Djibouti","Djibouti Telecom (Evatis)","638","1","409"
"Dominica","Digicel Dominica","366","20","484"
"Dominica","FLOW Dominica (LIME - CWC)","366","110","483"
"Dominican Republic","Altice (ex-Orange)","370","1","10"
"Dominican Republic","Altice (ex-Tricom)","370","3","980"
"Dominican Republic","Claro","370","2","631"
"Dominican Republic","Viva","370","4","981"
"Ecuador","Claro (Conecel S.A.)","740","1","413"
"Ecuador","CNT Mobile (Alegro)","740","2","1133"
"Ecuador","Movistar (Otecel S.A.)","740","0","935"
"Egypt","Etisalat Egypt","602","3","620"
"Egypt","Orange Egypt (ex-Mobinil)","602","1","12"
"Egypt","Vodafone Egypt","602","2","11"
"El Salvador","Claro (CTE)","706","1","182"
"El Salvador","Digicel","706","2","485"
"El Salvador","Intelfon (RED)","706","5","1055"
"El Salvador","Movistar","706","4","486"
"El Salvador","Tigo (Telemovil)","706","3","487"
"Equatorial Guinea","GETESA (Orange)","627","1","35"
"Eritrea","Eritel","657","1","488"
"Estonia","Elisa Estonia","248","2","117"
"Estonia","Tele2 Estonia","248","3","116"
"Estonia","Telia Estonia (EMT)","248","1","115"
"Eswatini","SPTC","653","1","1352"
"Eswatini","Swazi MTN","653","10","63"
"Ethiopia","ETMTN","636","1","361"
"Falkland Islands","Sure Falkland Islands","750","1","489"
"Faroe Islands","Faroese Telecom","288","1","66"
"Faroe Islands","Hey Faroe Islands","288","2","362"
"Fiji","Digicel Fiji","542","2","1127"
"Fiji","Vodafone Fiji","542","1","221"
"Finland","Alcom","244","14","105"
"Finland","DNA","244","3","104"
"Finland","Elisa","244","5","106"
"Finland","Saunalahti","244","21","982"
"Finland","Telia","244","91","102"
"France","Bouygues Telecom","208","20","81"
"France","Default (Unallocated Prefixes)","208","999","1124"
"France","Iliad - Free Mobile","208","15","1138"
"France","LycaMobile France","208","25","1380"
"France","NRJ Mobile","208","26","1381"
"France","Orange France","208","1","80"
"France","SFR","208","10","79"
"France","Transatel Mobile","208","22","1378"
"France","Virgin Mobile (OMEA)","208","23","1379"
"French Guiana","Digicel French Guiana","742","20","1024"
"French Guiana","Orange Caribe French Guiana","742","1","1023"
"French Guiana","Outremer Telecom French Guiana","742","2","1022"
"French Polynesia","VINI","547","20","627"
"Gabon","Airtel Gabon","628","3","490"
"Gabon","Azur Gabon","628","4","1321"
"Gabon","Gabon Telecom (ex-Libertis)","628","1","36"
"Gabon","Gabon Telecom (ex-Moov)","628","2","634"
"Gambia","Africell","607","2","491"
"Gambia","Comium","607","3","936"
"Gambia","Gamcel","607","1","492"
"Gambia","Qcell","607","4","937"
"Georgia","Beeline","282","4","910"
"Georgia","Geocell","282","1","314"
"Georgia","Magticom","282","2","315"
"Georgia","Magtifix","282","3","1318"
"Georgia","Silknet","282","5","1319"
"Germany","Debitel","262","901","1386"
"Germany","Dolphin Telecom","262","12","957"
"Germany","E-Plus","262","3","180"
"Germany","Group3G","262","14","955"
"Germany","Lycamobile Germany","262","43","1385"
"Germany","MobilCom","262","13","956"
"Germany","O2","262","7","181"
"Germany","OnePhone","262","20","1384"
"Germany","T-Mobile Germany","262","1","178"
"Germany","Vistream","262","16","954"
"Germany","Vodafone Germany","262","2","179"
"Ghana","Airtel Ghana","620","6","656"
"Ghana","Expresso","620","4","1056"
"Ghana","Globacom","620","7","1131"
"Ghana","MTN Ghana","620","1","30"
"Ghana","Tigo Ghana","620","3","493"
"Ghana","Vodafone Ghana","620","2","494"
"Gibraltar","Gibtel","266","1","87"
"Greece","Cosmote","202","1","70"
"Greece","Q Telecom","202","9","345"
"Greece","Vodafone Greece","202","5","69"
"Greece","Wind Greece","202","10","68"
"Greenland","TELE Greenland","290","1","67"
"Grenada","Digicel Grenada","352","30","496"
"Grenada","Flow (C&W) Grenada","352","110","495"
"Guadeloupe","Dauphin","340","8","1320"
"Guadeloupe","Digicel Guadeloupe","340","20","1030"
"Guadeloupe","Orange Caraibes Guadeloupe","340","1","1029"
"Guadeloupe","Outremer Telecom Guadeloupe","340","2","1028"
"Guadeloupe","Telcell (Saint Martin et Saint Barthelemy Telcell Sarl)","340","3","1031"
"Guam","Docomo Pacific (Hafatel)","535","470","498"
"Guam","iConnect","535","260","1119"
"Guam","IT&E Overseas (IT&E Wireless)","535","32","499"
"Guam","Pulse Mobile (GTA Wireless)","535","140","500"
"Guam","Wave Runner (i CAN_GSM)","535","250","501"
"Guatemala","Claro Guatemala","704","1","503"
"Guatemala","Telefonica Guatemala (Movistar)","704","3","504"
"Guatemala","Tigo Guatemala (Comcel)","704","2","502"
"Guinea","Cellcom Guinea","611","5","1057"
"Guinea","MTN Guinea","611","4","505"
"Guinea","Orange Guinea","611","1","506"
"Guinea","Sotelgui (Lagui)","611","2","22"
"Guinea","Telecel Guinea","611","3","507"
"Guinea-Bissau","Guinetel","632","7","508"
"Guinea-Bissau","MTN Guinea-Bissau (Spacetel)","632","2","509"
"Guinea-Bissau","Orange Bissau","632","3","637"
"Guyana","Digicel Guyana","738","1","510"
"Guyana","Telephone Guyana (Cellink)","738","2","511"
"Haiti","Digicel (ex-Voila) Haiti","372","1","512"
"Haiti","Digicel Haiti","372","2","625"
"Haiti","Natcom","372","3","938"
"Honduras","Claro Honduras ","708","1","514"
"Honduras","Digicel Honduras","708","99","677"
"Honduras","Hondutel","708","30","513"
"Honduras","Tigo Honduras (Celtel)","708","2","515"
"Hong Kong","China Motion Mobile","454","9","916"
"Hong Kong","CITIC Telecom 1616","454","1","914"
"Hong Kong","CSL","454","0","912"
"Hong Kong","SmarTone Mobile","454","6","915"
"Hong Kong","Three","454","3","245"
"Hong Kong","TruPhone","454","8","243"
"Hungary","Telekom","216","30","109"
"Hungary","Telenor","216","1","108"
"Hungary","Vodafone","216","70","110"
"Iceland","Hringidan (IMC Viking)","274","4","939"
"Iceland","IceCell","274","7","941"
"Iceland","Nova","274","11","943"
"Iceland","Null-Niu","274","6","940"
"Iceland","Siminn","274","1","97"
"Iceland","Vodafone Iceland","274","2","96"
"India","Aircel Ltd.","404","42","748"
"India","Aircel Ltd. (Aircel -Chennai)","404","41","862"
"India","Aircell Digilink India","404","17","887"
"India","All Operators (new Prefixes)","404","999","1121"
"India","Bharat Sanchar Nigam Limited (CellOne - Andhra Pradesh)","404","73","864"
"India","Bharat Sanchar Nigam Limited (CellOne - Assam)","404","38","866"
"India","Bharat Sanchar Nigam Limited (CellOne - Bihar)","404","75","865"
"India","Bharat Sanchar Nigam Limited (CellOne - Chennai)","404","64","867"
"India","Bharat Sanchar Nigam Limited (CellOne - Gujarat)","404","57","870"
"India","Bharat Sanchar Nigam Limited (CellOne - Himachal Pradesh)","404","51","868"
"India","Bharat Sanchar Nigam Limited (CellOne - Jammu & Kashmir)","404","62","873"
"India","Bharat Sanchar Nigam Limited (CellOne - Karnataka)","404","71","874"
"India","Bharat Sanchar Nigam Limited (CellOne - Kerala)","404","72","875"
"India","Bharat Sanchar Nigam Limited (CellOne - Madhya Pradesh)","404","58","871"
"India","Bharat Sanchar Nigam Limited (CellOne - Maharashtra)","404","66","878"
"India","Bharat Sanchar Nigam Limited (CellOne - North East)","404","77","877"
"India","Bharat Sanchar Nigam Limited (CellOne - Orissa)","404","76","876"
"India","Bharat Sanchar Nigam Limited (CellOne - Punjab)","404","53","869"
"India","Bharat Sanchar Nigam Limited (CellOne - Rajasthan)","404","59","872"
"India","Bharat Sanchar Nigam Limited (CellOne - Uttar Pradesh West)","404","54","879"
"India","Bharat Sanchar Nigam Limited (CellOne - West Bengal)","404","74","829"
"India","Bharat Sanchar Nigam Limited (CellOne - Kolkata)","404","81","831"
"India","Bharat Sanchar Nigam Limited (CellOne - Tamil Nadu)","404","80","832"
"India","Bharat Sanchar Nigam Limited (CellOne - Uttar Pradesh East)","404","55","741"
"India","Bharat Sanchar Nigam Ltd (BSNL)","404","34","830"
"India","Bharti Airtel Ltd (Airtel - Andhra Pradesh Circle)","404","49","744"
"India","Bharti Airtel Ltd (Airtel - Chennai)","404","40","890"
"India","Bharti Airtel Ltd (Airtel - Delhi)","404","10","806"
"India","Bharti Airtel Ltd (Airtel - Gujarat)","404","98","759"
"India","Bharti Airtel Ltd (Airtel - Haryana)","404","96","761"
"India","Bharti Airtel Ltd (Airtel - Himachal Pradesh Circle)","404","3","825"
"India","Bharti Airtel Ltd (Airtel - Karnataka)","404","45","802"
"India","Bharti Airtel Ltd (Airtel - Kerala)","404","95","762"
"India","Bharti Airtel Ltd (Airtel - Kolkata)","404","31","833"
"India","Bharti Airtel Ltd (Airtel - Madhya Pradesh)","404","93","764"
"India","Bharti Airtel Ltd (Airtel - Maharashtra)","404","90","805"
"India","Bharti Airtel Ltd (Airtel - Mumbai Metro)","404","92","782"
"India","Bharti Airtel Ltd (Airtel - Punjab)","404","2","813"
"India","Bharti Airtel Ltd (Airtel - Rajasthan)","404","70","740"
"India","Bharti Airtel Ltd (Airtel - Tamil Nadu)","404","94","763"
"India","Bharti Airtel Ltd (Airtel - Uttar Pradesh West))","404","97","760"
"India","Bharti Airtel Ltd (North East)","404","16","886"
"India","BPL Mobile Communications Ltd","404","21","774"
"India","Dishnet Wireless Ltd (Aircel - Assam)","404","29","882"
"India","Dishnet Wireless Ltd (Aircel - Himachal Pradesh)","404","35","900"
"India","Dishnet Wireless Ltd (Aircel - Jammu & Kashmir)","404","37","816"
"India","Dishnet Wireless Ltd (Aircel - Kolkata)","404","91","749"
"India","Dishnet Wireless Ltd (Aircel - North East)","404","33","750"
"India","Dishnet Wireless Ltd (Aircel - Orissa)","404","28","889"
"India","Escorts Telecom","404","82","901"
"India","Escotel Mobile Communications","404","12","765"
"India","FASCEL","404","5","803"
"India","Hutchinson Essar South Ltd.","404","13","784"
"India","IDEA Cellular","404","22","817"
"India","IDEA Cellular Ltd (Escotel - Kerala)","404","19","881"
"India","IDEA Cellular Ltd (Escotel - Uttar Pradesh West)","404","56","770"
"India","IDEA Cellular Ltd (IDEA - Andhra Pradesh)","404","7","789"
"India","IDEA Cellular Ltd (IDEA - Delhi)","404","4","781"
"India","IDEA Cellular Ltd (IDEA - Gujarat)","404","24","812"
"India","IDEA Cellular Ltd (IDEA - Madhya Pradesh)","404","78","804"
"India","IDEA Cellular Ltd (IDEA - Rajasthan)","404","87","771"
"India","IDEA Cellular Ltd (IDEA - Uttar Pradesh East)","404","89","818"
"India","IDEA Cellular Ltd (Spice Telecom - Karnataka)","404","44","893"
"India","Mahanagar Telephone Nigam - Mumbai","404","69","807"
"India","Mahanagar Telephone Nigam Ltd (MTNL)","404","68","808"
"India","MTS Rajasthan - CDMA","404","0","801"
"India","Reliance Communications Ltd (Assam)","404","9","880"
"India","Reliance Communications Ltd (Himachal Pradesh Circle)","404","18","888"
"India","Reliance Communications Ltd (Kolkata)","404","83","798"
"India","Reliance Communications Ltd (Madhya Pradesh)","404","67","797"
"India","Reliance Communications Ltd (North East)","404","50","885"
"India","Reliance Communications Ltd (Orissa Circle)","404","52","891"
"India","Reliance Communications Ltd (West Bengal)","404","85","799"
"India","Reliance Telecom (Bihar & Jharkhand)","404","36","796"
"India","Spice Communications Pvt Ltd","404","14","819"
"India","Sterling Cellular","404","11","758"
"India","TATA Indicom","404","25","775"
"India","Usha Martin Telecom","404","30","753"
"India","Vodafone Essar Cellular Limited (Vodafone - Maharashtra & Goa)","404","27","743"
"India","Vodafone Essar Cellular Ltd (Vodafone - Kerala)","404","46","776"
"India","Vodafone Essar Cellular Ltd (Vodafone - Tamil Nadu)","404","43","800"
"India","Vodafone Essar Digilink Ltd (Vodafone - Rajasthan)","404","60","788"
"India","Vodafone Essar Digilink Ltd (Vodafone - Uttar Pradesh East)","404","15","767"
"India","Vodafone Essar Ltd (Vodafone - Mumbai)","404","20","823"
"India","Vodafone Essar South","404","1","766"
"India","Vodafone Essar South Ltd (Vodafone - Chennai)","404","84","863"
"India","Vodafone Essar South Ltd (Vodafone - Karnataka)","404","86","783"
"India","Vodafone Essar South Ltd (Vodafone - Punjab)","404","88","768"
"India2","Bharti Airtel Ltd (Airtel - Assam)","405","56","747"
"India2","Bharti Airtel Ltd (Airtel - Bihar)","405","52","739"
"India2","Bharti Airtel Ltd (Airtel - Jammu & Kashmir)","405","55","884"
"India2","Bharti Airtel Ltd (Airtel - Orissa)","405","53","754"
"India2","Bharti Airtel Ltd (Airtel - Uttar Pradesh East)","405","54","745"
"India2","Bharti Airtel Ltd (Airtel - West Bengal)","405","51","752"
"India2","Dishnet Wireless Ltd (Aircel - Andhra Pradesh)","405","801","814"
"India2","Dishnet Wireless Ltd (Aircel - Delhi Metro)","405","800","815"
"India2","Dishnet Wireless Ltd (Aircel - Karnataka)","405","803","824"
"India2","Dishnet Wireless Ltd (Aircel - Kerala Service Telecom Area)","405","809","898"
"India2","Dishnet Wireless Ltd (Aircel - Maharashtra & Goa)","405","804","895"
"India2","Dishnet Wireless Ltd (Aircel - Mumbai Metro)","405","805","827"
"India2","Dishnet Wireless Ltd (Aircel - Rajasthan)","405","806","896"
"India2","Dishnet Wireless Ltd (Aircel - Uttar Pradesh East)","405","810","826"
"India2","Dishnet Wireless Ltd (Aircel - Uttar Pradesh West)","405","811","899"
"India2","IDEA Cellular Ltd (IDEA - Behar)","405","70","820"
"India2","IDEA Cellular Ltd (IDEA - Mumbai)","405","799","809"
"India2","IDEA Cellular Ltd (IDEA - Orissa)","405","850","861"
"India2","IDEA Cellular Ltd (IDEA - Tamilnadu Inc Chennai)","405","852","811"
"India2","Reliance Communications Ltd (Andhra Pradesh)","405","1","795"
"India2","Reliance Communications Ltd (Delhi)","405","5","746"
"India2","Reliance Communications Ltd (Gujarat)","405","6","737"
"India2","Reliance Communications Ltd (Haryana)","405","7","834"
"India2","Reliance Communications Ltd (Jammu & Kashmir)","405","9","835"
"India2","Reliance Communications Ltd (Karnataka)","405","10","778"
"India2","Reliance Communications Ltd (Kerala)","405","11","791"
"India2","Reliance Communications Ltd (Maharashtra)","405","13","769"
"India2","Reliance Communications Ltd (Mumbai)","405","15","772"
"India2","Reliance Communications Ltd (Punjab)","405","18","792"
"India2","Reliance Communications Ltd (Rajasthan)","405","19","793"
"India2","Reliance Communications Ltd (Tamil Nadu)","405","20","794"
"India2","Reliance Communications Ltd (Uttar Pradesh East)","405","21","773"
"India2","Reliance Communications Ltd (Uttar Pradesh West)","405","22","828"
"India2","Tata Teleservices Ltd (Tata Indicom - Andhra Pradesh)","405","25","755"
"India2","Tata Teleservices Ltd (Tata Indicom - Bihar)","405","27","836"
"India2","Tata Teleservices Ltd (Tata Indicom - Delhi)","405","29","780"
"India2","Tata Teleservices Ltd (Tata Indicom - Gujarat)","405","30","837"
"India2","Tata Teleservices Ltd (Tata Indicom - Haryana)","405","31","838"
"India2","Tata Teleservices Ltd (Tata Indicom - Himachal Pradesh)","405","32","785"
"India2","Tata Teleservices Ltd (Tata Indicom - Karnataka)","405","34","756"
"India2","Tata Teleservices Ltd (Tata Indicom - Kerala)","405","35","779"
"India2","Tata Teleservices Ltd (Tata Indicom - Kolkata)","405","36","839"
"India2","Tata Teleservices Ltd (Tata Indicom - Madhya Pradesh)","405","38","810"
"India2","Tata Teleservices Ltd (Tata Indicom - Maharashtra)","405","37","777"
"India2","Tata Teleservices Ltd (Tata Indicom - Mumbai)","405","39","790"
"India2","Tata Teleservices Ltd (Tata Indicom - Orissa)","405","41","787"
"India2","Tata Teleservices Ltd (Tata Indicom - Punjab)","405","42","840"
"India2","Tata Teleservices Ltd (Tata Indicom - Rajasthan)","405","43","786"
"India2","Tata Teleservices Ltd (Tata Indicom - Tamil Nadu)","405","44","751"
"India2","Tata Teleservices Ltd (Tata Indicom - Uttar Pradesh East)","405","45","841"
"India2","Tata Teleservices Ltd (Tata Indicom - Uttar Pradesh West)","405","46","842"
"India2","Tata Teleservices Ltd (Tata Indicom - West Bengal)","405","47","843"
"India2","Unitech Wireless Limited (uninor - Andhra Pradesh)","405","819","856"
"India2","Unitech Wireless Limited (uninor - Karnataka)","405","820","857"
"India2","Unitech Wireless Limited (uninor - Kerala)","405","821","858"
"India2","Unitech Wireless Limited (uninor - Uttar Pradesh West)","405","818","855"
"India2","Videocon Datacom (Assam)","405","824","859"
"India2","Videocon Datacom (Madhya Pradesh)","405","834","860"
"India2","Vodafone Essar South Limited (Vodafone - UP West)","405","66","742"
"India2","Vodafone Essar South Limited (Vodafone - West Bengal)","405","67","738"
"India2","Vodafone Essar Spacetel Ltd (Vodafone - Assam)","405","751","821"
"India2","Vodafone Essar Spacetel Ltd (Vodafone - Bihar)","405","752","757"
"India2","Vodafone Essar Spacetel Ltd (Vodafone - Himachal Pradesh)","405","754","892"
"India2","Vodafone Essar Spacetel Ltd (Vodafone - Jammu & Kashmir)","405","750","897"
"India2","Vodafone Essar Spacetel Ltd (Vodafone - Madhya Pradesh)","405","756","822"
"India2","Vodafone Essar Spacetel Ltd (Vodafone - NorthEast)","405","755","894"
"India2","Vodafone Essar Spacetel Ltd (Vodafone - Orissa)","405","753","883"
"India2","Vodafone Madhya Pradesh","405","68","1112"
"Indonesia","AXIS","510","8","683"
"Indonesia","Ceria","510","27","1339"
"Indonesia","Esia","510","99","1340"
"Indonesia","Flexi (Telkom Indonesia)","510","7","1337"
"Indonesia","Indosat Ooredoo","510","1","206"
"Indonesia","PSN (PT Pasifik Satelit Nusantara)","510","0","1313"
"Indonesia","Smartfren","510","9","1338"
"Indonesia","StarOne (Indosat)","510","3","1336"
"Indonesia","Telkomsel","510","10","205"
"Indonesia","Three Indonesia","510","89","682"
"Indonesia","XL Axiata","510","11","207"
"International Networks","AeroMobile","901","14","1105"
"International Networks","Antartica","901","13","1130"
"International Networks","Asia Cellular Satellite (ACeS)","901","0","946"
"International Networks","Inmarsat Satellite","901","11","947"
"International Networks","Maritime Communications Partner","901","12","1103"
"International Networks","SITA","901","15","945"
"International Networks","Thuraya","901","5","944"
"Iran","KFZO (TKC)","432","14","392"
"Iran","MCI","432","11","393"
"Iran","MTCE","432","19","394"
"Iran","MTN (Irancell)","432","35","516"
"Iran","Taliya","432","32","428"
"Iraq","Asia Cell (Ooredoo)","418","5","417"
"Iraq","Itisaluna","418","62","1375"
"Iraq","KorekTel","418","40","438"
"Iraq","Mobitel","418","45","1376"
"Iraq","Omnnea","418","92","1374"
"Iraq","SanaTel","418","8","439"
"Iraq","Zain Iraq","418","20","437"
"Ireland","Eir Mobile (ex-Meteor)","272","3","93"
"Ireland","Tesco Mobile","272","11","1109"
"Ireland","Three","272","5","517"
"Ireland","Three (O2)","272","2","94"
"Ireland","Vodafone","272","1","95"
"Israel","Cellcom Israel","425","2","329"
"Israel","Hot Mobile Israel","425","7","923"
"Israel","Jawwal Palestine","425","5","307"
"Israel","Ooredoo Palestine (Wataniya)","425","6","679"
"Israel","Partner Israel (Orange)","425","1","306"
"Israel","Pelephone Israel","425","3","652"
"Italy","Three Italy","222","99","143"
"Italy","TIM Italy","222","1","141"
"Italy","Vodafone Italy","222","10","142"
"Italy","Wind Italy","222","88","140"
"Ivory Coast","GreenN","612","6","686"
"Ivory Coast","KoZ (Comium)","612","4","685"
"Ivory Coast","Moov","612","2","645"
"Ivory Coast","MTN","612","5","24"
"Ivory Coast","Orange","612","3","25"
"Jamaica","Digicel Jamaica","338","50","427"
"Jamaica","Flow Jamaica (LIME - CWC)","338","180","425"
"Japan","KDDI","440","7","1060"
"Japan","NTT DoCoMo","440","1","518"
"Japan","SoftBank Mobile","440","20","364"
"Japan","Y!mobile","440","0","948"
"Jordan","Orange Jordan","416","77","298"
"Jordan","Umniah","416","3","396"
"Jordan","Zain Jordan","416","1","299"
"Kazakhstan","Altel","401","7","1347"
"Kazakhstan","Beeline Kazakhstan","401","1","227"
"Kazakhstan","Kazakhtelecom","401","8","1346"
"Kazakhstan","Kcell","401","2","226"
"Kazakhstan","Tele2 Kazakhstan","401","77","949"
"Kenya","Airtel Kenya (ex-Econet)","639","5","675"
"Kenya","Airtel Kenya (Zain)","639","3","42"
"Kenya","Safaricom","639","2","41"
"Kenya","Telkom Kenya (Orange)","639","7","674"
"Kiribati","ATHKL","545","9","519"
"Korea North","Korea Posts and Telecommunications","467","3","1007"
"Korea North","Koryolink","467","192","1061"
"Korea, Republic of","Korea Telecom","450","2","365"
"Korea, Republic of","LG U+","450","6","1008"
"Korea, Republic of","SK Telecom","450","5","563"
"Kuwait","Ooredoo","419","3","300"
"Kuwait","Viva","419","4","663"
"Kuwait","Zain (ex-MTC)","419","2","301"
"Kyrgyzstan","Beeline (Sky Mobile)","437","1","316"
"Kyrgyzstan","Fonex","437","3","1324"
"Kyrgyzstan","MegaCom","437","5","520"
"Kyrgyzstan","O!","437","9","1062"
"Laos","Beeline Laos","457","8","415"
"Laos","ETL Laos","457","2","951"
"Laos","Lao Telecom","457","1","950"
"Laos","Unitel Laos","457","3","1063"
"Latvia","Bite Latvia","247","5","521"
"Latvia","LMT Latvia","247","1","113"
"Latvia","Tele2 Latvia","247","2","114"
"Latvia","Triatel Latvia","247","3","1064"
"Lebanon","ALFA","415","1","296"
"Lebanon","MTC Touch","415","3","297"
"Lesotho","Econet Ezi-Cel","651","2","522"
"Lesotho","Vodacom Lesotho","651","1","523"
"Liberia","Comium Liberia","618","4","526"
"Liberia","LiberCell","618","2","1065"
"Liberia","Lonestar Cell (MTN)","618","1","527"
"Liberia","Orange Liberia (ex-Cellcom)","618","7","524"
"Libya","Al Madar (Orbit)","606","1","17"
"Libya","Libyana Mobile","606","0","528"
"Liechtenstein","7acht Liechtenstein (ex-Orange)","295","2","158"
"Liechtenstein","FL1 Liechtenstein (ex-Mobilkom)","295","5","155"
"Liechtenstein","Swisscom Liechtenstein","295","1","157"
"Liechtenstein","Tele2 Liechtenstein","295","77","156"
"Lithuania","Bite","246","2","112"
"Lithuania","Tele2","246","3","366"
"Lithuania","Telia (ex-Omnitel)","246","1","111"
"Luxembourg","Orange Luxembourg (ex-VOXmobile)","270","99","367"
"Luxembourg","POST Luxembourg (ex-LuxGSM)","270","1","91"
"Luxembourg","Tango Luxembourg","270","77","92"
"Macau","3 Macau","455","3","248"
"Macau","CTM Macau","455","1","249"
"Macau","Smartone Macau","455","0","529"
"Madagascar","Airtel Madagascar","646","1","53"
"Madagascar","Orange Madagascar","646","2","52"
"Madagascar","Sacel Madagascar","646","3","953"
"Madagascar","Telma Mobile (Telecel)","646","4","952"
"Malawi","Airtel Malawi (Celtel)","650","10","60"
"Malawi","TNM (Telekom Networks Malawi)","650","1","368"
"Malaysia","Celcom Axiata","502","19","200"
"Malaysia","DiGi Telecommunications","502","16","198"
"Malaysia","Maxis Mobile","502","12","196"
"Malaysia","U Mobile","502","18","986"
"Maldives"," Ooredoo Malvides","472","2","530"
"Maldives","Dhiraagu","472","1","295"
"Mali","Malitel (Sotelma)","610","1","405"
"Mali","Orange Mali","610","2","593"
"Malta","epic Malta (ex-Vodafone)","278","1","100"
"Malta","Go Mobile","278","21","99"
"Malta","Melita","278","77","924"
"Martinique","Digicel Antilles Martinique","341","20","1027"
"Martinique","Orange Caraibe Mobiles Martinique","341","1","1026"
"Martinique","Outremer Telecom Martinique","341","2","1025"
"Mauritania","Chinguitel","609","2","9"
"Mauritania","Mattel","609","1","20"
"Mauritania","Mauritel Mobiles","609","10","21"
"Mauritius","CHiLi Mauritius (MTML)","617","2","1066"
"Mauritius","Emtel Mauritius","617","10","29"
"Mauritius","My.T Mauritius","617","1","28"
"Mexico","AT&T Mexico","334","4","1067"
"Mexico","AT&T Mexico (ex-Nextel)","334","1","1116"
"Mexico","Movistar Mexico","334","3","400"
"Mexico","Telcel Mexico","334","2","369"
"Micronesia, Federated States of","FSM Telecom","550","1","531"
"Moldova","MoldCell","259","2","119"
"Moldova","Orange Moldova","259","1","118"
"Moldova","Unite - IDC ","259","3","1068"
"Monaco","Monaco Telecom","212","1","123"
"Mongolia","MobiCom Mongolia","428","99","310"
"Mongolia","Skytel Mongolia","428","91","1069"
"Mongolia","Unitel Mongolia","428","88","618"
"Montenegro","MTEL","297","3","660"
"Montenegro","Telekom Montenegro","297","2","661"
"Montenegro","Telenor Montenegro","297","1","1357"
"Montserrat","Flow Montserrat","354","860","532"
"Morocco","IAM","604","1","13"
"Morocco","Orange Morocco (ex-Meditel)","604","0","14"
"Morocco","WANA","604","2","622"
"Mozambique","Mcel Mozambique","643","1","50"
"Mozambique","Movitel Mozambique","643","3","1377"
"Mozambique","Vodacom Mozambique","643","4","533"
"Myanmar","MPT","414","1","534"
"Namibia","MTC Namibia","649","1","59"
"Namibia","TN Mobile Namibia (ex-Cell One)","649","3","621"
"Nauru","Digicel","536","1","1314"
"Nepal","Ncell Nepal","429","2","607"
"Nepal","Nepal Telecom (NTC)","429","1","419"
"Nepal","Nepal Telecom (NTC) (CDMA)","429","3","1323"
"Nepal","Smart Nepal","429","4","1317"
"Nepal","United Telecom Limited","429","0","1316"
"Netherlands","Blyk","204","3","1044"
"Netherlands","Elephant Talk","204","5","1041"
"Netherlands","KPN","204","8","71"
"Netherlands","Lycamobile Netherlands","204","9","1038"
"Netherlands","Orange Netherlands","204","20","75"
"Netherlands","T-Mobile Netherlands","204","16","73"
"Netherlands","Tele2 Netherlands","204","2","688"
"Netherlands","Teleena Holding","204","7","1040"
"Netherlands","Telfort","204","12","74"
"Netherlands","Vectone Netherlands","204","6","1450"
"Netherlands","Vodafone Netherlands","204","4","72"
"Netherlands Antilles","Chippie (UTS)","362","91","535"
"Netherlands Antilles","Digicel Netherlands Antilles","362","69","537"
"Netherlands Antilles","Telcell Netherlands Antilles","362","51","195"
"New Caledonia","Mobilis New Caledonia","546","1","222"
"New Zealand","Spark (ex-Telecom)","530","5","680"
"New Zealand","Two Degrees Mobile","530","24","928"
"New Zealand","Vodafone New Zealand","530","1","212"
"Nicaragua","Claro","710","21","1032"
"Nicaragua","Movistar","710","30","649"
"Nicaragua","Sercom (Enitel)","710","73","412"
"Niger","Airtel Niger","614","2","407"
"Niger","Moov Niger","614","3","595"
"Niger","Niger Telecoms","614","1","594"
"Niger","Orange Niger","614","4","929"
"Nigeria","9mobile (ex-Etisalat) Nigeria","621","60","659"
"Nigeria","Airtel Nigeria","621","20","324"
"Nigeria","Glo Mobile Nigeria","621","50","398"
"Nigeria","MTN Nigeria","621","30","325"
"Nigeria","Multilinks Nigeria","621","0","641"
"Nigeria","Visafone Nigeria","621","25","664"
"North Macedonia","Telekom","294","1","139"
"North Macedonia","Vip","294","3","644"
"North Macedonia","Vip (ex-one)","294","2","363"
"Norway","Phonero","242","7","989"
"Norway","TDC Mobile","242","8","1070"
"Norway","Telenor","242","1","174"
"Norway","Telia","242","5","173"
"Norway","Telia (ex-Netcom)","242","2","541"
"Norway","Telia (ex-Tele2)","242","4","988"
"Oman","Omantel","422","2","304"
"Oman","Ooredoo","422","3","543"
"Pakistan","Jazz Pakistan (ex-Mobilink)","410","1","291"
"Pakistan","Jazz Pakistan (ex-Warid)","410","7","371"
"Pakistan","Telenor Pakistan","410","6","401"
"Pakistan","Ufone (Pak Telecom)","410","3","292"
"Pakistan","Zong (Paktel)","410","4","611"
"Palau","Palau Mobile Corporation","552","80","544"
"Palau","Palau National Communications Corporation","552","1","1072"
"Panama","Cable & Wireless Panama","714","1","545"
"Panama","Claro Panama","714","3","1034"
"Panama","Digicel Panama","714","4","1033"
"Panama","Movistar Panama","714","20","546"
"Papua New Guinea","Bmobile - Vodafone","537","1","547"
"Papua New Guinea","Digicel Papua New Guinea","537","3","990"
"Paraguay","Claro Paraguay","744","2","585"
"Paraguay","Personal Paraguay","744","5","587"
"Paraguay","Tigo Paraguay (Telecel)","744","4","588"
"Paraguay","VOX Paraguay","744","1","586"
"Peru","Claro Peru","716","10","183"
"Peru","Entel Peru (Nextel)","716","7","687"
"Peru","Movistar Peru","716","6","184"
"Philippines","Globe Telecom","515","2","209"
"Philippines","SMART Communications","515","3","210"
"Philippines","Sun Cellular","515","5","624"
"Poland","Nordisk Poland","260","11","1074"
"Poland","Orange Poland","260","3","175"
"Poland","P4 (Play)","260","6","629"
"Poland","Polkomtel (PLUS)","260","1","177"
"Poland","Sferia","260","10","1073"
"Poland","T-Mobile Poland (ex-Era)","260","2","176"
"Portugal","MEO","268","6","90"
"Portugal","NOS (ex-Optimus)","268","3","89"
"Portugal","Vodafone","268","1","88"
"Puerto Rico","AT&T Mobility","330","30","959"
"Puerto Rico","Claro","330","110","960"
"Puerto Rico","Open Mobile (PR Wireless)","330","0","1372"
"Puerto Rico","Sprint","330","20","961"
"Puerto Rico","T-Mobile","330","120","962"
"Qatar"," Ooredoo Qatar","427","1","309"
"Qatar","Vodafone Qatar","427","2","694"
"Reunion","Only Reunion (Outremer)","647","2","930"
"Reunion","Orange Reunion","647","0","54"
"Reunion","SFR Reunion","647","10","55"
"Romania","Digi.mobil (RDS)","226","5","654"
"Romania","Orange","226","10","144"
"Romania","Telekom (ex. Cosmote)","226","3","146"
"Romania","Vodafone","226","1","145"
"Romania","Zapp Mobile","226","4","623"
"Russian Federation","Baykalwestcom","250","12","231"
"Russian Federation","Beeline","250","99","237"
"Russian Federation","ETK","250","5","230"
"Russian Federation","MegaFon","250","2","233"
"Russian Federation","MOTIV","250","35","931"
"Russian Federation","MTS","250","1","225"
"Russian Federation","NCC","250","3","234"
"Russian Federation","NTC (New Telephone Company)","250","16","232"
"Russian Federation","Rostelecom","250","17","229"
"Russian Federation","Skylink","250","6","1344"
"Russian Federation","SMARTS","250","7","224"
"Russian Federation","Tambov GSM","250","38","1345"
"Russian Federation","Tele2","250","20","702"
"Russian Federation","Yota","250","11","1076"
"Rwanda","Airtel","635","14","1305"
"Rwanda","Airtel (ex-Tigo)","635","13","1306"
"Rwanda","MTN Rwanda","635","10","548"
"Saint Kitts and Nevis","FLOW St.Kitts and Nevis (LIME - CWC)","356","110","1140"
"Saint Lucia","Digicel Saint Lucia","358","50","633"
"Saint Lucia","Flow (C&W) Saint Lucia","358","110","632"
"Saint Vincent and the Grenadines","Flow (C&W) Saint Vincent and the Grenadines","360","110","1141"
"Samoa","Bluesky (SamoaTe)l","549","27","635"
"Samoa","Digicel Samoa","549","1","636"
"San Marino","Telecom San Marino","292","1","1078"
"Sao Tome and Principe","CSTmovel","626","1","549"
"Saudi Arabia","Mobily (ex. Etisalat)","420","3","550"
"Saudi Arabia","STC (Al Jawal)","420","1","302"
"Saudi Arabia","Zain","420","4","653"
"Senegal","Expresso","608","3","1079"
"Senegal","Free (ex-Tigo)","608","2","19"
"Senegal","Orange (ex-Sonatel)","608","1","18"
"Serbia, Republic of","mts Serbia","220","3","129"
"Serbia, Republic of","Telenor Serbia","220","1","128"
"Serbia, Republic of","VIP Mobile","220","5","640"
"Seychelles","Airtel Seychelles","633","10","39"
"Seychelles","Cable & Wireless Seychelles","633","1","38"
"Seychelles","MediaTech","633","2","551"
"Sierra Leone","Africell","619","3","553"
"Sierra Leone","Comium","619","4","552"
"Sierra Leone","Mobitel","619","25","1355"
"Sierra Leone","Orange (ex-Airtel)","619","1","372"
"Singapore","Grid Communications","525","12","1365"
"Singapore","M1","525","3","215"
"Singapore","SingTel","525","1","214"
"Singapore","StarHub Mobile","525","5","213"
"Slovakia","O2","231","6","676"
"Slovakia","Orange","231","1","154"
"Slovakia","Slovak Telekom (ex. T-Mobile)","231","2","153"
"Slovenia","A1 Slovenia (ex-Si.mobil)","293","40","135"
"Slovenia","T-2 Slovenia","293","64","932"
"Slovenia","Telekom Slovenia (ex-Mobitel)","293","41","134"
"Slovenia","Telemach Slovenia (ex-Tusmobil)","293","70","373"
"Solomon Islands","Our Telekom - Solomon Telekom Company","540","1","556"
"Somalia","Golis","637","30","557"
"Somalia","Hormuud Telecom","637","25","558"
"Somalia","Nationlink","637","10","559"
"Somalia","SolTelco","637","19","1080"
"Somalia","Somafone","637","4","560"
"Somalia","SomTel","637","71","673"
"Somalia","Telcom Somalia","637","82","672"
"Somalia","Telesom","637","1","561"
"South Africa","8ta (Telkom)","655","2","1123"
"South Africa","CELL C","655","7","327"
"South Africa","MTN South Africa","655","10","65"
"South Africa","Vodacom South Africa","655","1","64"
"South Sudan","Gemtel","659","3","1361"
"South Sudan","MTN South Sudan","659","2","1360"
"South Sudan","Sudani South Sudan","659","7","1364"
"South Sudan","Vivacell South Sudan","659","4","1362"
"South Sudan","Zain South Sudan","659","6","1363"
"Spain","Barablu","214","23","1351"
"Spain","DigiMobil","214","22","1349"
"Spain","Euskaltel","214","8","1081"
"Spain","Lleida.net","214","26","1086"
"Spain","LycaMobile Spain","214","25","1350"
"Spain","Mobil R","214","17","1084"
"Spain","Movistar Spain","214","7","86"
"Spain","ONO","214","18","1085"
"Spain","Orange (ex-Jazztel)","214","21","1120"
"Spain","Orange Spain","214","3","85"
"Spain","Parlem (ex-FonYou)","214","20","1110"
"Spain","Simyo","214","19","1348"
"Spain","Telecable","214","16","1083"
"Spain","Vodafone Spain","214","1","84"
"Spain","Yoigo (MasMovil)","214","4","83"
"Sri Lanka","Airtel","413","5","1087"
"Sri Lanka","Dialog Axiata","413","2","294"
"Sri Lanka","Etisalat","413","3","293"
"Sri Lanka","Hutch","413","8","1088"
"Sri Lanka","Mobitel","413","1","374"
"Sudan","Canar Telecom","634","5","1359"
"Sudan","MTN Sudan","634","2","564"
"Sudan","Sudani One","634","7","1035"
"Sudan","Zain Sudan","634","1","40"
"Suriname","Digicel Suriname","746","3","647"
"Suriname","Telesur","746","2","565"
"Sweden","Djuice Mobile Sweden","240","9","975"
"Sweden","Spinbox","240","14","1089"
"Sweden","Swefour","240","10","968"
"Sweden","Tele2 Sweden","240","7","170"
"Sweden","Telenor Sweden","240","8","171"
"Sweden","Telia Sweden","240","1","172"
"Sweden","Three Sweden","240","2","375"
"Sweden","Unknown Network","240","20","970"
"Sweden","Unknown Network","240","3","966"
"Sweden","Unknown Network","240","17","969"
"Sweden","Unknown Network","240","16","1091"
"Sweden","Unknown Network","240","34","1132"
"Sweden","Unknown Network","240","15","1090"
"Switzerland","BebbiCell","228","51","1092"
"Switzerland","Salt (ex-Orange)","228","3","148"
"Switzerland","Sunrise","228","2","147"
"Switzerland","Swisscom Mobile","228","1","149"
"Switzerland","Tele4U (Sunrise)","228","8","566"
"Syrian Arab Republic","MTN Syria","417","2","376"
"Syrian Arab Republic","Syriatel","417","1","377"
"Taiwan","APTG (Asia Pacific Telecom)","466","5","1139"
"Taiwan","Chunghwa Telecom","466","92","256"
"Taiwan","Far EasTone","466","1","257"
"Taiwan","T Star (ex-VIBO) Taiwan","466","89","260"
"Taiwan","Taiwan Mobile","466","97","258"
"Tajikistan","Babilon Mobile","436","4","994"
"Tajikistan","Beeline","436","5","667"
"Tajikistan","Megafon","436","3","993"
"Tajikistan","Tcell","436","1","992"
"Tanzania, United Republic of","Airtel (ex-Zain)","640","5","44"
"Tanzania, United Republic of","Tigo (ex-Mic)","640","2","43"
"Tanzania, United Republic of","Vodacom","640","4","45"
"Tanzania, United Republic of","Zantel","640","3","606"
"Thailand","AIS","520","1","218"
"Thailand","DTAC","520","18","216"
"Thailand","TOT 3G","520","15","570"
"Thailand","True Move","520","99","569"
"Timor-Leste","Timor Telecom","514","2","1093"
"Togo","Moov Togo","615","3","571"
"Togo","Togo Cell","615","1","26"
"Tonga","Digicel Tonga","539","88","1388"
"Tonga","Digicel Tonga (Tonfon)","539","43","572"
"Tonga","U-Call","539","1","573"
"Trinidad and Tobago","bmobile (Telecommunications Services Trinidad and Tobago - TSTT)","374","12","378"
"Trinidad and Tobago","Digicel Trinidad and Tobago","374","130","574"
"Tunisia"," Ooredoo Tunisia","605","3","387"
"Tunisia","Orange Tunisia","605","1","1051"
"Tunisia","Tunisie Telecom","605","2","16"
"Turkey","Turk Telekom (ex-Avea)","286","3","263"
"Turkey","Turk Telekom (ex-Avea)","286","4","379"
"Turkey","Turkcell","286","1","261"
"Turkey","Vodafone Turkey","286","2","262"
"Turkmenistan","MTS","438","1","311"
"Turkmenistan","TM-Cell (Altyn Asyr)","438","2","575"
"Turks and Caicos Islands","Digicel","376","50","1094"
"Turks and Caicos Islands","Flow (C&W)","376","350","576"
"Uganda","Africell (ex-Orange)","641","14","1111"
"Uganda","Airtel","641","1","47"
"Uganda","Airtel (ex-Warid)","641","22","1095"
"Uganda","MTN","641","10","48"
"Uganda","UTL (Telecom Limited)","641","11","46"
"Ukraine","3Mob","255","7","933"
"Ukraine","CDMA Ukraine","255","23","1326"
"Ukraine","Golden Telecom","255","5","124"
"Ukraine","Intertelecom","255","4","1327"
"Ukraine","Kyivstar","255","3","126"
"Ukraine","Kyivstar (ex-Beeline)","255","2","127"
"Ukraine","Lifecell","255","6","577"
"Ukraine","PEOPLEnet","255","21","934"
"Ukraine","Vodafone (ex-MTS)","255","1","125"
"United Arab Emirates","du","424","3","578"
"United Arab Emirates","Etisalat","424","2","305"
"United Kingdom","BT","234","0","1009"
"United Kingdom","Cable & Wireless UK","234","7","1018"
"United Kingdom","Cloud9","234","18","1014"
"United Kingdom","EE (ex-Orange)","234","33","319"
"United Kingdom","EE (ex-TMobile)","234","30","323"
"United Kingdom","Jersey Airtel","234","3","1011"
"United Kingdom","Jersey Telecom","234","50","322"
"United Kingdom","Lycamobile","234","26","1017"
"United Kingdom","Manx Telecom","234","58","389"
"United Kingdom","O2","234","10","163"
"United Kingdom","Sure Mobile Guernsey","234","55","320"
"United Kingdom","Three","234","20","321"
"United Kingdom","Unknown Network","234","17","1019"
"United Kingdom","Unknown Network","234","75","1016"
"United Kingdom","Unknown Network","234","16","1013"
"United Kingdom","Unknown Network","234","19","1015"
"United Kingdom","Unknown Network","234","8","1012"
"United Kingdom","Vectone Mobile","234","1","1010"
"United Kingdom","Vodafone","234","15","165"
"Unknown Country","Unknown Operator","100","999","1567"
"Uruguay","Antel (Ancel)","748","1","382"
"Uruguay","Claro (CTI Movil)","748","10","579"
"Uruguay","Movistar","748","7","580"
"USA","Advantage Cellular","310","880","735"
"USA","Airadigm Communications","310","640","717"
"USA","Alaska Digitel","310","430","1096"
"USA","All Operators (New Prefixes)","310","999","1122"
"USA","Alltel Communications Inc","310","590","712"
"USA","AT&T Mobility (Dobson)","310","560","727"
"USA","AT&T Mobility USA","310","410","709"
"USA","Caprock Cellular","310","830","725"
"USA","Cellcom USA","310","600","1097"
"USA","Cellular One of NE Arizona","310","320","716"
"USA","Centennial Wireless","310","30","713"
"USA","Choice Wireless","310","630","731"
"USA","Cincinnati Bell Wireless","310","420","728"
"USA","Corr Wireless Communications","310","80","734"
"USA","Cricket Communications","310","16","711"
"USA","Globalstar USA","310","970","730"
"USA","Iowa Wireless Services","310","770","719"
"USA","Keystone Wireless","310","690","729"
"USA","Mohave Wireless","310","350","723"
"USA","Oklahoma Western Telephone Company","310","540","732"
"USA","PTSI","310","760","720"
"USA","T-Mobile (SunCom)","310","490","715"
"USA","T-Mobile USA","310","260","707"
"USA","TMP Corporation","310","460","1037"
"USA","Unicel Rural Cellular Corporation","310","890","714"
"USA","Union Telephone Company","310","20","708"
"USA","United Wireless Communications","310","440","721"
"USA","Verizon Wireless","310","12","706"
"USA","XIT Cellular","310","950","724"
"Uzbekistan","Beeline","434","4","383"
"Uzbekistan","Perfectum Mobile","434","6","1100"
"Uzbekistan","Ucell","434","5","317"
"Uzbekistan","UMS (MTS)","434","7","384"
"Vanuatu","Digicel Vanuatu","541","5","1101"
"Vanuatu","Telecom Vanuatu","541","1","581"
"Venezuela","Digitel Venezuela","734","2","189"
"Venezuela","Movilnet","734","6","657"
"Venezuela","Movistar Venezuela","734","4","655"
"Vietnam","Gmobile (Beeline) Vietnam","452","7","1106"
"Vietnam","I-Telecom","452","8","1312"
"Vietnam","MobiFone Vietnam","452","1","240"
"Vietnam","S-Fone (SPT)","452","3","1310"
"Vietnam","Vietnamobile (HTC)","452","5","1144"
"Vietnam","Viettel Mobile","452","4","582"
"Vietnam","Viettel Mobile (EVNTelecom)","452","6","1311"
"Vietnam","VinaPhone","452","2","241"
"Virgin Islands British","Caribbean Cellular Telephone","348","570","466"
"Virgin Islands British","Digicel British Virgin Islands","348","770","1000"
"Virgin Islands British","Flow (C&W) British Virgin Islands","348","170","999"
"Yemen","MTN Yemen (Spacetel)","421","2","380"
"Yemen","Sabafon","421","1","303"
"Yemen","Sabafon (CDMA)","421","901","1052"
"Yemen","Y Telecom (Y HiTS UNITEL)","421","4","964"
"Yemen","Yemen Mobile (CDMA)","421","3","1322"
"Zambia","Airtel Zambia","645","1","51"
"Zambia","MTN Zambia","645","2","584"
"Zambia","ZAMTEL","645","3","583"
"Zimbabwe","Econet Zimbabwe","648","4","58"
"Zimbabwe","NetOne Zimbabwe","648","1","56"
"Zimbabwe","Telecel Zimbabwe","648","3","57"
Can't render this file because it contains an unexpected character in line 2 and column 13.

View File

@@ -0,0 +1,38 @@
Nexmo,40520,Safaricom,Nexmo,LIVE
Nexmo,40520,Airtel,Nexmo,LIVE
Geopoll,7117,TNM,Geopoll,LIVE
Geopoll,7117,Airtel,Geopoll,LIVE
Geopoll Ghana,2130,MTN,Geopoll Ghana,LIVE
Geopoll Ghana,2130,AT,Geopoll Ghana,LIVE
Geopoll Ghana,2130,,Geopoll Ghana,LIVE
Click Apps (Zampira),451,TNM,Click Apps (Zampira),LIVE
Black and Green,361,TNM,Black and Green,LIVE
Click Apps,3093,TNM,Click Apps,LIVE
Chancaro,2553,TNM,Chancaro,LIVE
Geopoll Mo,17878,Orange Botswana,Geopoll Mo,LIVE
Click Apps (Infobox),288,Orange Botswana,Click Apps (Infobox),LIVE
Inforbip Local,8855,TNM,Inforbip Local,LIVE
Inforbip Local,8855,Airtel,Inforbip Local,LIVE
Geopoll ZM,5155,Airtel Zambia,Geopoll ZM,LIVE
LWB Call Centre,253,TNM,LWB Call Centre,LIVE
LWB Call Centre,253,Airtel,LWB Call Centre,LIVE
Click Apps,3039,TNM,Click Apps,LIVE
Click Apps(ACB),113,TNM,Click Apps(ACB),LIVE
Click Apps(Predict),13178,Orange Botswana,Click Apps(Predict),LIVE
Connect Mobile Comm Local,16644,Orange Botswana,Connect Mobile Comm Local,LIVE
Messagebird,22763,Airtel,Messagebird,LIVE
Messagebird,22763,Safaricom,Messagebird,LIVE
Click Apps,3031,TNM,Click Apps,LIVE
Mhealth,321,TNM,Mhealth,LIVE
Kirusa,4242,TNM,Kirusa,LIVE
Inforbip Local,322,TNM,Inforbip Local,LIVE
Inforbip Local,322,Airtel,Inforbip Local,LIVE
Click Apps,102,TNM,Click Apps,LIVE
Monsato,569,TNM,Monsato,LIVE
Nitel,256,TNM,Nitel,LIVE
Premier,885,TNM,Premier,LIVE
Premier,885,Airtel,Premier,LIVE
CloudCom,6061,TELECEL,CloudCom,LIVE
CloudCom,6061,AT,CloudCom,LIVE
Routemobility,7658,TELECEL,Routemobility,LIVE
Routemobility,7658,AT,Routemobility,LIVE
1 Nexmo 40520 Safaricom Nexmo LIVE
2 Nexmo 40520 Airtel Nexmo LIVE
3 Geopoll 7117 TNM Geopoll LIVE
4 Geopoll 7117 Airtel Geopoll LIVE
5 Geopoll Ghana 2130 MTN Geopoll Ghana LIVE
6 Geopoll Ghana 2130 AT Geopoll Ghana LIVE
7 Geopoll Ghana 2130 Geopoll Ghana LIVE
8 Click Apps (Zampira) 451 TNM Click Apps (Zampira) LIVE
9 Black and Green 361 TNM Black and Green LIVE
10 Click Apps 3093 TNM Click Apps LIVE
11 Chancaro 2553 TNM Chancaro LIVE
12 Geopoll Mo 17878 Orange Botswana Geopoll Mo LIVE
13 Click Apps (Infobox) 288 Orange Botswana Click Apps (Infobox) LIVE
14 Inforbip Local 8855 TNM Inforbip Local LIVE
15 Inforbip Local 8855 Airtel Inforbip Local LIVE
16 Geopoll ZM 5155 Airtel Zambia Geopoll ZM LIVE
17 LWB Call Centre 253 TNM LWB Call Centre LIVE
18 LWB Call Centre 253 Airtel LWB Call Centre LIVE
19 Click Apps 3039 TNM Click Apps LIVE
20 Click Apps(ACB) 113 TNM Click Apps(ACB) LIVE
21 Click Apps(Predict) 13178 Orange Botswana Click Apps(Predict) LIVE
22 Connect Mobile Comm Local 16644 Orange Botswana Connect Mobile Comm Local LIVE
23 Messagebird 22763 Airtel Messagebird LIVE
24 Messagebird 22763 Safaricom Messagebird LIVE
25 Click Apps 3031 TNM Click Apps LIVE
26 Mhealth 321 TNM Mhealth LIVE
27 Kirusa 4242 TNM Kirusa LIVE
28 Inforbip Local 322 TNM Inforbip Local LIVE
29 Inforbip Local 322 Airtel Inforbip Local LIVE
30 Click Apps 102 TNM Click Apps LIVE
31 Monsato 569 TNM Monsato LIVE
32 Nitel 256 TNM Nitel LIVE
33 Premier 885 TNM Premier LIVE
34 Premier 885 Airtel Premier LIVE
35 CloudCom 6061 TELECEL CloudCom LIVE
36 CloudCom 6061 AT CloudCom LIVE
37 Routemobility 7658 TELECEL Routemobility LIVE
38 Routemobility 7658 AT Routemobility LIVE

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View File

@@ -54,7 +54,7 @@
<div class="x_title"> <div class="x_title">
<h2> Clients </h2> <h2> Clients </h2>
<div class="pull-right"> <div class="pull-right">
<a class="btn btn-primary btn-sm" href="{!! url('clients/create') !!}"><i class="fa fa-plus-circle"></i> Add Client</a> <a class="btn btn-primary btn-sm" href="{!! url('clients/create') !!}"><i class="fa fa-plus-circle"></i> Add Client</a>
</div> </div>
<div class="clearfix"></div> <div class="clearfix"></div>
@@ -90,9 +90,11 @@
} }
var table = new Tabulator("#clientsTable", { var table = new Tabulator("#clientsTable", {
ajaxURL: "clients/all", ajaxURL: "clients/all",
paginationSize: 15, paginationSize: 10,
paginationSizeSelector: true,
paginationSizeSelector:[5, 10, 25, 50, 100, 200],
layout: "fitColumns", layout: "fitColumns",
pagination: "remote", pagination: "local",
selectable: false, selectable: false,
printAsHtml: true, printAsHtml: true,
ajaxLoaderLoading: $('#logo_spinner').html(), ajaxLoaderLoading: $('#logo_spinner').html(),
@@ -109,18 +111,18 @@
sorter: "string", sorter: "string",
}, },
/* /*
{ title:"Onboarding Progress Score", { title:"Onboarding Progress Score",
field:"progress_indicator_score", field:"progress_indicator_score",
sorter:"number", sorter:"number",
hozAlign:"left", hozAlign:"left",
formatter:"progress", formatter:"progress",
width:200, width:200,
editable:true editable:true
}, },
*/ */
{ title:"Onboarding %", { title:"Onboarding %",
field:"progress_indicator_score", field:"progress_indicator_score",
sorter:"number", sorter:"number",
}, },
{ {
title: "Status", title: "Status",
@@ -167,15 +169,15 @@
orientation:"portrait", //set page orientation to portrait orientation:"portrait", //set page orientation to portrait
title:"Click Mobile - Clients", //add title to report title:"Click Mobile - Clients", //add title to report
}); });
}); });
$('#keywordField').on('keyup', function(){ $('#keywordField').on('keyup', function(){
console.log('up'); console.log('up');
var keyword = $(this).val(); var keyword = $(this).val();
table.setData("clients/all?keyword=" + keyword); table.setData("clients/all?keyword=" + keyword);
}); });
}); });
</script> </script>

View File

@@ -0,0 +1,118 @@
<div class="modal fade" id="newShortCodeFormModal" tabindex="-1" role="dialog" aria-labelledby="paymentModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<!-- <h4 class="modal-title">Default Modal</h4> -->
<h5 class="modal-title text-center" id="paymentModalLabelHeading">New Short Code Form</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div id="notifyArea" class="alert alert-danger hidden"></div>
<form class="form-vertical" method="POST" id="shortCodeForm" action="{{ url('clients/shortcodes_store') }}">
{{ csrf_field() }}
<input type="hidden" name="client_id" id="clientID" value="{{ $showclient->id }}">
<input type="hidden" name="code_type" id="shortCodeType">
<div class="row">
<div class="form-group" >
<div class="col-md-12" style="padding-bottom: 5px;">
<label for="name">Friendly Name *</label>
<input type="text" class="form-control" name="name" id="name" required >
</div>
</div>
<div class="form-group">
<div class="col-md-12" style="padding-bottom: 5px">
<label for="networks">Country *</label>
{!! Form::select('country', $countries, null, ['class' => 'form-control' , 'id' => 'shortCodeCountry', 'required' => 'required', 'style' => 'width: 100%']) !!}
</div>
</div>
<div class="form-group">
<div class="col-md-12" style="padding-bottom: 5px">
<label for="networks">Network *</label>
<!-- 'multiple'=> 'true', -->
{!! Form::select('network', $mnos_arr, null, ['class' => 'form-control' , 'id' => 'networks', 'required' => 'required', 'style' => 'width: 100%']) !!}
</div>
</div>
<div class="form-group" >
<div class="col-md-12" style="padding-bottom: 5px;">
<label for="shortCode">Code *</label>
<input type="number" class="form-control" name="shortcode" id="shortCode" required >
</div>
</div>
<div class="form-group">
<div class="col-md-12" style="padding-bottom: 5px">
<label for="tollFree">Toll Free</label>
<select name="toll_free" id="tollFree" class="form-control" required style="width: 100%;">
<option value="YES">YES</option>
<option value="NO">NO</option>
</select>
</div>
</div>
<div class="form-group">
<div class="col-md-12" style="padding-bottom: 5px">
<label for="monthlyFee">Monthly Fee</label>
<input type="number" class="form-control" name="monthly_fee" id="monthlyFee" >
</div>
</div>
<div class="form-group">
<div class="col-md-6">
<div class='input-group date' id='myDatepicker22' style="padding-bottom: 5px;">
<label for="launchDate">Launch Date</label>
<input type="text" class="form-control" name="launch_date" id="launchDate" required >
<div class="input-group-addon">
<span class="fa fa-calendar"></span>
</div>
</div>
</div>
<div class="col-md-6">
<div class='input-group date' id='myDatepicker223' style="padding-bottom: 5px;">
<label for="expiryDate">Expiry Date</label>
<input type="text" class="form-control" name="expiry_date" id="expiryDate" required >
<div class="input-group-addon">
<span class="fa fa-calendar"></span>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-12" style="padding-bottom: 5px">
<label for="codeStatus">Status</label>
<select id="codeStatus" name="status" class="form-control" required style="width: 100%;">
<option value="LIVE">Live</option>
<option value="PENDING">Pending</option>
<option value="TESTING">Testing</option>
<option value="INACTIVE">Inactive </option>
</select>
</div>
</div>
<div class="form-group" >
<div class="col-md-12" style="padding-bottom: 5px;">
<label for="remarks">Remarks</label>
<input type="text" class="form-control" name="remarks" id="remarks"></textarea>
</div>
</div>
<div class="form-group" style="margin-bottom: 0.2rem; padding-bottom: 5px; padding-top: 5px;">
<div class="col-md-12" style="padding-bottom: 10px;">
<button type="submit" class="btn btn-success btn-block updateBtn"> <i class="fa fa-send"></i> Submit</button>
</div>
</div>
<div class="form-group" style="margin-bottom: 0.5rem; padding-bottom: 5px; padding-top: 5px;">
<div class="col-md-12">
<button type="button" class="btn btn-dark btn-block" data-dismiss="modal"><i class="fa fa-close"></i> Close</button>
</div>
</div>
</div>
</form>
</div>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</div>
<!-- /.modal -->

View File

@@ -25,8 +25,7 @@
<div class="form-group"> <div class="form-group">
<div class="col-md-12" style="padding-bottom: 5px"> <div class="col-md-12" style="padding-bottom: 5px">
<label for="networks">Network *</label> <label for="networks">Network *</label>
<!-- 'multiple'=> 'true', --> {!! Form::select('network', $country_network_arr, null, ['class' => 'form-control' , 'id' => 'networks', 'placeholder'=>'Select Network ' , 'required' => 'required' , 'style' => 'width: 100%']) !!}
{!! Form::select('network', $networks_raw, null, ['class' => 'form-control' , 'id' => 'networks', 'required' => 'required', 'style' => 'width: 100%']) !!}
</div> </div>
</div> </div>
<div class="form-group" > <div class="form-group" >
@@ -44,6 +43,12 @@
</select> </select>
</div> </div>
</div> </div>
<div class="form-group">
<div class="col-md-12" style="padding-bottom: 5px">
<label for="monthlyFee">Monthly Fee</label>
<input type="number" class="form-control" name="monthly_fee" id="monthlyFee" >
</div>
</div>
<div class="form-group"> <div class="form-group">
<div class="col-md-6"> <div class="col-md-6">
<div class='input-group date' id='myDatepicker22' style="padding-bottom: 5px;"> <div class='input-group date' id='myDatepicker22' style="padding-bottom: 5px;">

View File

@@ -19,6 +19,12 @@
<label for="financeServicesEdit">Services *</label> <label for="financeServicesEdit">Services *</label>
{!! Form::select('services[]', $service_type_names , old('services'), ['class' => 'form-control' , 'id' => 'financeServicesEdit', 'required' => 'required', 'multiple'=> 'true', 'style' => 'width: 100%']) !!} {!! Form::select('services[]', $service_type_names , old('services'), ['class' => 'form-control' , 'id' => 'financeServicesEdit', 'required' => 'required', 'multiple'=> 'true', 'style' => 'width: 100%']) !!}
</div> </div>
</div>
<div class="form-group" >
<div class="col-md-12" style="padding-bottom: 5px;">
<label for="shortCodeEdit">Short Code</label>
<input type="text" class="form-control" name="short_code" id="financeShortCodeEdit" required >
</div>
</div> </div>
<div class="form-group" > <div class="form-group" >
<div class="col-md-12" style="padding-bottom: 5px;"> <div class="col-md-12" style="padding-bottom: 5px;">

View File

@@ -45,6 +45,12 @@
</select> </select>
</div> </div>
</div> </div>
<div class="form-group">
<div class="col-md-12" style="padding-bottom: 5px">
<label for="monthlyFeeEdit">Monthly Fee</label>
<input type="number" class="form-control" name="monthly_fee" id="monthlyFeeEdit" >
</div>
</div>
<div class="form-group"> <div class="form-group">
<div class="col-md-6"> <div class="col-md-6">
<div class='input-group date' id='myDatepicker22Edit' style="padding-bottom: 5px;"> <div class='input-group date' id='myDatepicker22Edit' style="padding-bottom: 5px;">

View File

@@ -23,8 +23,20 @@
@foreach ($client_sender_ids as $row) @foreach ($client_sender_ids as $row)
<tr class="even pointer"> <tr class="even pointer">
<td class="mes-td col-md-2">{{ $row->senderid }} </td> <td class="mes-td col-md-2">{{ $row->senderid }} </td>
<td class="col-md-2">{{ $row->network_info->name }}</td> <td class="col-md-2">
<td class="col-md-2">{{ $row->network_info->country }}</td> <?php
if(isset($row->network_info->name)){
echo $row->network_info->name;
}
?>
</td>
<td class="col-md-2">
<?php
if(isset($row->network_info->country)){
echo $row->network_info->country;
}
?>
</td>
<td class="col-md-1"><span class="label label-<?php echo ($row->status == 'Approved') ? 'success' : 'warning'; ?>"> {{ $row->status }}</span></td> <td class="col-md-1"><span class="label label-<?php echo ($row->status == 'Approved') ? 'success' : 'warning'; ?>"> {{ $row->status }}</span></td>
<td class="col-md-2">{{ $row->created_by_info->name }}</td> <td class="col-md-2">{{ $row->created_by_info->name }}</td>
<td class="mes-td col-md-2" style="width: 100px;">{{ $row->remarks }}</td> <td class="mes-td col-md-2" style="width: 100px;">{{ $row->remarks }}</td>

View File

@@ -8,6 +8,7 @@
<th class="column-title">Code</th> <th class="column-title">Code</th>
<th class="column-title">Network</th> <th class="column-title">Network</th>
<th class="column-title">Toll Free</th> <th class="column-title">Toll Free</th>
<th class="column-title">MOnthly Free</th>
<th class="column-title">Status</th> <th class="column-title">Status</th>
<th class="column-title">Remarks</th> <th class="column-title">Remarks</th>
<th class="column-title">Launch Date</th> <th class="column-title">Launch Date</th>
@@ -29,6 +30,7 @@
<td class="mes-td col-md-1 text-danger"><b>{{ $row->shortcode }}</b></td> <td class="mes-td col-md-1 text-danger"><b>{{ $row->shortcode }}</b></td>
<td class="mes-td col-md-2">{{ $row->network }}</td> <td class="mes-td col-md-2">{{ $row->network }}</td>
<td class="mes-td col-md-1">{{ strtoupper($row->toll_free) }}</td> <td class="mes-td col-md-1">{{ strtoupper($row->toll_free) }}</td>
<td class="mes-td col-md-1">{{ strtoupper($row->monthly_fee) }}</td>
<td class="mes-td col-md-1"> <td class="mes-td col-md-1">
<!-- style='color:#3FB449; font-weight:bold;' <!-- style='color:#3FB449; font-weight:bold;'
dump($row->status) dump($row->status)

View File

@@ -8,6 +8,7 @@
<th class="column-title">Code</th> <th class="column-title">Code</th>
<th class="column-title">Network</th> <th class="column-title">Network</th>
<th class="column-title">Toll Free</th> <th class="column-title">Toll Free</th>
<th class="column-title">Monthly Fee</th>
<th class="column-title">Status</th> <th class="column-title">Status</th>
<th class="column-title">Launch Date</th> <th class="column-title">Launch Date</th>
<th class="column-title">Renewal Date</th> <th class="column-title">Renewal Date</th>
@@ -28,11 +29,12 @@
<td class="mes-td col-md-1">{{ $row->shortcode }}</td> <td class="mes-td col-md-1">{{ $row->shortcode }}</td>
<td class="mes-td col-md-2">{{ $row->network }}</td> <td class="mes-td col-md-2">{{ $row->network }}</td>
<td class="mes-td col-md-1">{{ $row->toll_free }}</td> <td class="mes-td col-md-1">{{ $row->toll_free }}</td>
<td class="mes-td col-md-1">{{ $row->monthly_fee }}</td>
<td class="mes-td col-md-1">{{ $row->status }}</td> <td class="mes-td col-md-1">{{ $row->status }}</td>
<td class="mes-td col-md-1" style="width: 100px;">{{ date('d-m-Y', strtotime($row->launch_date)) }}</td> <td class="mes-td col-md-1" style="width: 100px;">{{ date('d-m-Y', strtotime($row->launch_date)) }}</td>
<td class="mes-td col-md-1" style="width: 100px;"> <td class="mes-td col-md-1" style="width: 100px;">
@if($row->expiry_date == false) @if($row->expiry_date == false)
{{ "No found"}} {{ "Not found"}}
@else @else
{{ date('d-m-Y', strtotime($row->expiry_date)) }} {{ date('d-m-Y', strtotime($row->expiry_date)) }}
@endif @endif

View File

@@ -8,6 +8,7 @@
<th class="column-title">Code</th> <th class="column-title">Code</th>
<th class="column-title">Network/Country</th> <th class="column-title">Network/Country</th>
<th class="column-title">Toll Free</th> <th class="column-title">Toll Free</th>
<th class="column-title">MOnthly Fee</th>
<th class="column-title">Status</th> <th class="column-title">Status</th>
<!-- <th class="column-title">Remarks</th> --> <!-- <th class="column-title">Remarks</th> -->
<th class="column-title">Launch Date</th> <th class="column-title">Launch Date</th>
@@ -29,6 +30,7 @@
<td class="mes-td col-md-1">{{ $row->shortcode }}</td> <td class="mes-td col-md-1">{{ $row->shortcode }}</td>
<td class="mes-td col-md-2">{{ $row->network }}</td> <td class="mes-td col-md-2">{{ $row->network }}</td>
<td class="mes-td col-md-1">{{ $row->toll_free }}</td> <td class="mes-td col-md-1">{{ $row->toll_free }}</td>
<td class="mes-td col-md-1">{{ $row->monthly_fee }}</td>
<td class="mes-td col-md-1">{{ $row->status }}</td> <td class="mes-td col-md-1">{{ $row->status }}</td>
<td class="mes-td col-md-1" style="width: 100px;">{{ date('d-m-Y', strtotime($row->launch_date)) }}</td> <td class="mes-td col-md-1" style="width: 100px;">{{ date('d-m-Y', strtotime($row->launch_date)) }}</td>
<td class="mes-td col-md-1" style="width: 100px;"> <td class="mes-td col-md-1" style="width: 100px;">

View File

@@ -8,6 +8,7 @@
<th class="column-title">Code</th> <th class="column-title">Code</th>
<th class="column-title">Network/Country</th> <th class="column-title">Network/Country</th>
<th class="column-title">Toll Free</th> <th class="column-title">Toll Free</th>
<th class="column-title">MOnthly Fee</th>
<th class="column-title">Status</th> <th class="column-title">Status</th>
<th class="column-title">Launch Date</th> <th class="column-title">Launch Date</th>
<th class="column-title">Expiry Date</th> <th class="column-title">Expiry Date</th>
@@ -28,6 +29,7 @@
<td class="mes-td col-md-1">{{ $row->shortcode }}</td> <td class="mes-td col-md-1">{{ $row->shortcode }}</td>
<td class="mes-td col-md-2">{{ $row->network }}</td> <td class="mes-td col-md-2">{{ $row->network }}</td>
<td class="mes-td col-md-1">{{ $row->toll_free }}</td> <td class="mes-td col-md-1">{{ $row->toll_free }}</td>
<td class="mes-td col-md-1">{{ $row->monthly_fee }}</td>
<td class="mes-td col-md-1">{{ $row->status }}</td> <td class="mes-td col-md-1">{{ $row->status }}</td>
<td class="mes-td col-md-1" style="width: 100px;">{{ date('d-m-Y', strtotime($row->launch_date)) }}</td> <td class="mes-td col-md-1" style="width: 100px;">{{ date('d-m-Y', strtotime($row->launch_date)) }}</td>
<td class="mes-td col-md-1" style="width: 100px;"> <td class="mes-td col-md-1" style="width: 100px;">

View File

@@ -42,6 +42,9 @@
@include('commons.notifications') @include('commons.notifications')
</div> </div>
<div class="x_content"> <div class="x_content">
<div class="col-md-12">
</div>
<div class="col-md-3 col-sm-3 col-xs-12 profile_left"> <div class="col-md-3 col-sm-3 col-xs-12 profile_left">
<div class="profile_img"> <div class="profile_img">
<div id="crop-avatar"> <div id="crop-avatar">
@@ -103,254 +106,125 @@
</ul> --> </ul> -->
<!-- end of skills --> <!-- end of skills -->
</div> </div>
<div class="col-md-9 col-sm-9 col-xs-12" style="border: 1px solid; min-height: 500px;"> <div class="col-md-9 col-sm-9 col-xs-12" style="border: 1px solid; min-height: 500px;">
<div class="" role="tabpanel" data-example-id="togglable-tabs"> <div class="row">
<ul id="myTab" class="nav nav-tabs bar_tabs" role="tablist"> <div class="col-md-12">
<li role="presentation" class="active"><a href="#tabCompany" id="company-tab" role="tab" class="text-success" data-toggle="tab" aria-expanded="true">Company</a></li> <div class="" role="tabpanel" data-example-id="togglable-tabs">
<!-- <li role="presentation" class=""><a href="#tabConnection" role="tab" id="connection-tab" data-toggle="tab" aria-expanded="false">Connection</a></li> --> <div class="col-xs-3">
<li role="presentation" class=""><a href="#tabContract" role="tab" id="contract-tab2" class="text-info bg-info" data-toggle="tab" aria-expanded="false">Contract</a></li> <ul id="myTab" class="nav nav-tabs bar_tabs tabs-left" role="tablist">
<li role="presentation" class=""><a href="#tabFinance" role="tab" id="finance-tab2" class="text-success" data-toggle="tab" aria-expanded="false">Finance</a></li> <li role="presentation" class=""><a href="#tabContract" role="tab" id="contract-tab2" class="text-info bg-info" data-toggle="tab" aria-expanded="false">Contract</a></li>
<li role="presentation" class=""><a href="#tabNotes" role="tab" id="notes-tab2" class="text-default" data-toggle="tab" aria-expanded="false">Notes</a></li> <li role="presentation" class=""><a href="#tabFinance" role="tab" id="finance-tab2" class="text-success" data-toggle="tab" aria-expanded="false">Finance</a></li>
<li role="presentation" class=""><a href="#tabSenderIDs" role="tab" id="senderIds-tab2" class="text-warning" data-toggle="tab" aria-expanded="false">Sender IDs</a></li> <li role="presentation" class=""><a href="#tabNotes" role="tab" id="notes-tab2" class="text-default" data-toggle="tab" aria-expanded="false">Notes</a></li>
<li role="presentation" class=""><a href="#tabSmsShortCode" role="tab" id="smsshortcode-tab2" class="text-info" data-toggle="tab" aria-expanded="false">SMS Short Codes</a></li> <li role="presentation" class=""><a href="#tabSenderIDs" role="tab" id="senderIds-tab2" class="text-warning" data-toggle="tab" aria-expanded="false">Sender IDs</a></li>
<li role="presentation" class=""><a href="#tabUssdShortCode" role="tab" id="ussdshortcode-tab2" class="text-success" data-toggle="tab" aria-expanded="false">USSD Short Codes</a></li> <li role="presentation" class=""><a href="#tabSmsShortCode" role="tab" id="smsshortcode-tab2" class="text-info" data-toggle="tab" aria-expanded="false">SMS Short Codes</a></li>
<li role="presentation" class=""><a href="#tabVoiceShortCode" role="tab" id="voiceshortcode-tab2" class="text-warning" data-toggle="tab" aria-expanded="false">Voice Short Codes</a></li> <li role="presentation" class=""><a href="#tabUssdShortCode" role="tab" id="ussdshortcode-tab2" class="text-success" data-toggle="tab" aria-expanded="false">USSD Short Codes</a></li>
</ul> <li role="presentation" class=""><a href="#tabVoiceShortCode" role="tab" id="voiceshortcode-tab2" class="text-warning" data-toggle="tab" aria-expanded="false">Voice Short Codes</a></li>
<div id="myTabContent" class="tab-content"> </ul>
<div role="tabpanel" class="tab-pane fade active in" id="tabCompany" aria-labelledby="company-tab"> </div>
<div class="col-md-4"> <div class="col-xs-9">
<div id="myTabContent" class="tab-content">
<div role="tabpanel" class="tab-pane fade" id="tabConnection" aria-labelledby="connection-tab">
<h4 class="lead"><strong>Connection Details </strong></h4>
<blockquote>
<p>Connection Types : <?php if($showclient->connections) { echo implode(", ", json_decode($showclient->connections, true)); } else {echo "N/A"; } ?></p>
<br>
<h4 class="lead"><strong>Company Details</strong></h4> <p>Partner SMPP Details <br>
<?php //if($showclient->smpp_details) { echo $showclient->smpp_details; } else {echo "N/A"; } ?></p>
<blockquote> </blockquote>
<p>Country : <strong> {{ $showclient->country or "N/A" }}</strong></p>
<p>Company Type : <strong> {{ $showclient->company_type or "N/A" }}</strong></p>
<!-- <p>Products </p> -->
<!-- <p>Products Description</p> -->
<!-- <p>Product Specification</p> -->
<!-- <p>Networks</p> gettype(json_decode($showclient->sender_ids, true )); -->
<p>Requested Sender IDs : <strong> <?php if($showclient->sender_ids) { echo implode(", ", json_decode($showclient->sender_ids, true)); } else {echo "N/A"; } ?></strong></p>
</blockquote>
<h4 class="lead"><strong>Connection Details </strong></h4>
<blockquote>
<p>Connection Types : <em> <?php if($showclient->connections) { echo implode(", ", json_decode($showclient->connections, true)); } else {echo "N/A"; } ?></em></p>
<p>SMPP Username : <em>
<?php if($showclient->smpp_username) { echo $showclient->smpp_username; } else {echo "N/A"; } ?></em></p>
<p>Message Types : <em>
<?php if($showclient->message_types) {
$types_array = json_decode($showclient->message_types);
echo implode(', ', $types_array);
}
else {
echo "N/A";
} ?>
</em>
</p>
</blockquote>
</div>
<div class="col-md-4">
<h4 class="lead"><strong>Support Phone(s)</strong></h4>
@if(!empty($showclient->support_phones))
<blockquote>
<?php
$the_arr = json_decode($showclient->support_phones, true) ?>
<ul>
<?php foreach ($the_arr as $row): ?>
<li>{{ $row }}</li>
<?php endforeach ?>
</ul>
</blockquote>
@else
N/A
@endif
<h4 class="lead"><strong>Support Email(s)</strong></h4>
@if(!empty($showclient->support_emails))
<blockquote>
<?php
$the_arr = json_decode($showclient->support_emails, true) ?>
<ul>
<?php foreach ($the_arr as $row): ?>
<li>{{ $row }}</li>
<?php endforeach ?>
</ul>
</blockquote>
@else
N/A
@endif
@if(!empty($showclient->rate_emails))
<h4 class="lead"><strong>Rates Email(s)</strong></h4>
<blockquote>
<?php
$the_arr = json_decode($showclient->rate_emails, true) ?>
<ul>
<?php foreach ($the_arr as $row): ?>
<li>{{ $row }}</li>
<?php endforeach ?>
</ul>
</blockquote>
@else
N/A
@endif
<h4 class="lead"><strong>Finance Email(s)</strong></h4>
@if(!empty($showclient->finance_email))
<blockquote>
<?php
$the_arr = json_decode($showclient->finance_email, true) ?>
<ul>
<?php foreach ($the_arr as $row): ?>
<li>{{ $row }}</li>
<?php endforeach ?>
</ul>
</blockquote>
@else
N/A
@endif
</div>
<div class="col-md-4">
<h4 class="lead"><strong>Support Skype ID(s)</strong></h4>
@if(!empty($showclient->support_skype))
<blockquote>
<?php
$the_arr = json_decode($showclient->support_skype, true) ?>
<ul>
<?php foreach ($the_arr as $row): ?>
<li>{{ $row }}</li>
<?php endforeach ?>
</ul>
</blockquote>
@else
N/A
@endif
<div class="well">
<h4>How We Got This Client</h4>
<?php echo $showclient->how_we_got_client ?? "N/A" ?>
</div> </div>
<h4>Documents</h4> <div role="tabpanel" class="tab-pane fade" id="tabContract" aria-labelledby="contract-tab">
@if(!$showdocuments->isEmpty() == true) <h4 class="lead"> <strong>Contract Details </strong></h4>
@foreach($showdocuments as $docs) <blockquote>
<p class="url"> <p>Contract Type : <strong> {{ ucfirst($showclient->contract_type) ?? 'N/A'}} </strong><br> </p>
<span class="fs1 text-info" aria-hidden="true" data-icon=""></span>
<a href="{{ url('clients/downloadfile', $docs->id) }}"><i class="fa fa-paperclip"></i> {{ $docs->name }}.{{ $docs->file_extension }}</a>
</p>
@endforeach
@else
<p>No Documents found</p>
@endif
</div>
</div> <p>Contract Validity (Date) : <strong> {{ $showclient->contract_validity or 'N/A'}} </strong></p>
<div role="tabpanel" class="tab-pane fade" id="tabConnection" aria-labelledby="connection-tab"> <p>Contract Auto Renewal : <strong> {{ $showclient->contract_auto_renew or 'N/A'}} </strong></p>
@if($showclient->contract_auto_renew != 'YES')
<h4 class="lead"><strong>Connection Details </strong></h4> <p>Renewal Due : <strong class="text-<?php echo ($highlight_colour == 'none') ? '' : 'danger'; ?> "> {{ $renewal_due }} </strong></p>
<blockquote> @endif
<p>Connection Types : <?php if($showclient->connections) { echo implode(", ", json_decode($showclient->connections, true)); } else {echo "N/A"; } ?></p> </blockquote>
<br> <h4 class="lead"> <strong>Support Fees </strong></h4>
<button type="button" class="btn btn-success btn-sm pull-right" id="addSupportFeesInfoBtn"><i class="fa fa-plus-square"></i> New Support Fee Info</button>
<p>Partner SMPP Details <br>
<?php //if($showclient->smpp_details) { echo $showclient->smpp_details; } else {echo "N/A"; } ?></p>
</blockquote>
</div>
<div role="tabpanel" class="tab-pane fade" id="tabContract" aria-labelledby="contract-tab">
<h4 class="lead"> <strong>Contract Details </strong></h4>
<blockquote>
<p>Contract Type : <strong> {{ ucfirst($showclient->contract_type) ?? 'N/A'}} </strong><br> </p>
<p>Contract Validity (Date) : <strong> {{ $showclient->contract_validity or 'N/A'}} </strong></p>
<p>Contract Auto Renewal : <strong> {{ $showclient->contract_auto_renew or 'N/A'}} </strong></p>
@if($showclient->contract_auto_renew != 'YES')
<p>Renewal Due : <strong class="text-<?php echo ($highlight_colour == 'none') ? '' : 'danger'; ?> "> {{ $renewal_due }} </strong></p>
@endif
</blockquote>
<h4 class="lead"> <strong>Support Fees </strong></h4>
<button type="button" class="btn btn-success btn-sm pull-right" id="addSupportFeesInfoBtn"><i class="fa fa-plus-square"></i> New Support Fee Info</button>
<div class="clearfix"></div>
@include('client.partials.support_fees')
</div>
<div role="tabpanel" class="tab-pane fade" id="tabFinance" aria-labelledby="finance-tab">
<h4 class="lead"><strong>Finance Details </strong></h4>
<button type="button" class="btn btn-success btn-sm pull-right" id="createPaymentBtn"><i class="fa fa-plus-square"></i> New Payment Details</button>
<div class="clearfix"></div>
<hr>
@include('client.partials.recent-payments')
</div>
<div role="tabpanel" class="tab-pane fade" id="tabNotes" aria-labelledby="notes-tab">
<strong><h3> Notes</h3> </strong>
<div class="pull-right">
<!-- {{ url('clients/create-notes') }} -->
<button type="button" class="btn btn-success btn-sm" id="createNotesBtn">New Notes <i class="fa fa-plus-square"></i> </button>
</div>
<div class="clearfix"></div> <div class="clearfix"></div>
<div style="background-color: #dce2e4; height: 400px; overflow: scroll;"> @include('client.partials.support_fees')
<ul class="messages list-group" style="padding: 15px;">
@if($show_notes->isEmpty())
<li style="" class="">No notes found</li>
@else
<?php for ($i = 0; $i < $show_notes->count(); $i++) { ?>
<?php if ($show_notes[$i]->highlight == 'YES'): continue; endif; ?>
<li class="list-group-item list-group-item-<?php echo ($i%2 == 0)? "secondary" : "info"; ?>">
<div class="message_date" style="padding-right: 10px;">
<h3 class="date text-info"><?php echo date('d', strtotime($show_notes[$i]->created_at)); ?></h3>
<p class="month"><?php echo date('M', strtotime($show_notes[$i]->created_at)); ?></p>
<p class="year"><?php echo date('Y', strtotime($show_notes[$i]->created_at)); ?></p>
</div>
<div class="message_wrapper">
<h4 class="heading">{{ $show_notes[$i]->client_info->name }}</h4>
<blockquote class="message"><em>Content : </em> {{ $show_notes[$i]->notes_body }}</blockquote>
<br />
<p class="url">
<span class="fs1 text-info" aria-hidden="true" data-icon=""></span>
<input type="hidden" name="notes_id" class="notesRowId" value="{{ $show_notes[$i]->id }}">
<a href="#" class="notesEditBtn"><i class="fa fa-edit"></i>Account Manager : {{ $show_notes[$i]->created_by_info->name }} </a>
</p>
</div>
</li>
<?php } ?>
@endif
</ul>
</div> </div>
<div role="tabpanel" class="tab-pane fade" id="tabFinance" aria-labelledby="finance-tab">
<h4 class="lead"><strong>Finance Details </strong></h4>
<button type="button" class="btn btn-success btn-sm pull-right" id="createPaymentBtn"><i class="fa fa-plus-square"></i> New Payment Details</button>
<div class="clearfix"></div>
<hr>
@include('client.partials.recent-payments')
</div>
<div role="tabpanel" class="tab-pane fade" id="tabNotes" aria-labelledby="notes-tab">
<strong><h3> Notes</h3> </strong>
<div class="pull-right">
<!-- {{ url('clients/create-notes') }} -->
<button type="button" class="btn btn-success btn-sm" id="createNotesBtn">New Notes <i class="fa fa-plus-square"></i> </button>
</div>
<div class="clearfix"></div>
<div style="background-color: #dce2e4; height: 400px; overflow: scroll;">
<ul class="messages list-group" style="padding: 15px;">
@if($show_notes->isEmpty())
<li style="" class="">No notes found</li>
@else
<?php for ($i = 0; $i < $show_notes->count(); $i++) { ?>
<?php if ($show_notes[$i]->highlight == 'YES'): continue; endif; ?>
<li class="list-group-item list-group-item-<?php echo ($i%2 == 0)? "secondary" : "info"; ?>">
<div class="message_date" style="padding-right: 10px;">
<h3 class="date text-info"><?php echo date('d', strtotime($show_notes[$i]->created_at)); ?></h3>
<p class="month"><?php echo date('M', strtotime($show_notes[$i]->created_at)); ?></p>
<p class="year"><?php echo date('Y', strtotime($show_notes[$i]->created_at)); ?></p>
</div>
<div class="message_wrapper">
<h4 class="heading">{{ $show_notes[$i]->client_info->name }}</h4>
<blockquote class="message"><em>Content : </em> {{ $show_notes[$i]->notes_body }}</blockquote>
<br />
<p class="url">
<span class="fs1 text-info" aria-hidden="true" data-icon=""></span>
<input type="hidden" name="notes_id" class="notesRowId" value="{{ $show_notes[$i]->id }}">
<a href="#" class="notesEditBtn"><i class="fa fa-edit"></i>Account Manager : {{ $show_notes[$i]->created_by_info->name }} </a>
</p>
</div>
</li>
<?php } ?>
@endif
</ul>
</div>
</div>
<div role="tabpanel" class="tab-pane fade" id="tabSenderIDs" aria-labelledby="senderIds-tab">
<h4 class="lead"><strong>Sender IDs </strong></h4>
<button type="button" class="btn btn-success btn-sm pull-right" id="createSenderIdBtn"><i class="fa fa-plus-square"></i> New Sender ID</button>
<div class="clearfix"></div>
@include('client.partials.sender-ids')
</div>
<div role="tabpanel" class="tab-pane fade" id="tabSmsShortCode" aria-labelledby="smsshortcode-tab">
<h4 class="lead"><strong>SMS Short Code </strong></h4>
<button type="button" class="btn btn-success btn-sm pull-right" id="createSmsShortCodeBtn"><i class="fa fa-plus-square"></i> New Short Code</button>
<div class="clearfix"></div>
@include('client.partials.sms-codes')
</div>
<div role="tabpanel" class="tab-pane fade" id="tabUssdShortCode" aria-labelledby="ussdshortcode-tab">
<h4 class="lead"><strong>USSD Short Codes </strong></h4>
<button type="button" class="btn btn-success btn-sm pull-right" id="createUssdShortCodeBtn"><i class="fa fa-plus-square"></i> New Short Code</button>
<div class="clearfix"></div>
@include('client.partials.ussd-codes')
</div>
<div role="tabpanel" class="tab-pane fade" id="tabVoiceShortCode" aria-labelledby="voiceshortcode-tab">
<h4 class="lead"><strong>Voice Short Code </strong></h4>
<button type="button" class="btn btn-success btn-sm pull-right" id="createVoiceShortCodeBtn"><i class="fa fa-plus-square"></i> New Short Code</button>
<div class="clearfix"></div>
@include('client.partials.voice-codes')
</div>
</div>
</div> </div>
<div role="tabpanel" class="tab-pane fade" id="tabSenderIDs" aria-labelledby="senderIds-tab">
<h4 class="lead"><strong>Sender IDs </strong></h4>
<button type="button" class="btn btn-success btn-sm pull-right" id="createSenderIdBtn"><i class="fa fa-plus-square"></i> New Sender ID</button>
<div class="clearfix"></div>
@include('client.partials.sender-ids')
</div> </div>
<div role="tabpanel" class="tab-pane fade" id="tabSmsShortCode" aria-labelledby="smsshortcode-tab"> </div>
<h4 class="lead"><strong>SMS Short Code </strong></h4>
<button type="button" class="btn btn-success btn-sm pull-right" id="createSmsShortCodeBtn"><i class="fa fa-plus-square"></i> New Short Code</button>
<div class="clearfix"></div>
@include('client.partials.sms-codes')
</div>
<div role="tabpanel" class="tab-pane fade" id="tabUssdShortCode" aria-labelledby="ussdshortcode-tab">
<h4 class="lead"><strong>USSD Short Codes </strong></h4>
<button type="button" class="btn btn-success btn-sm pull-right" id="createUssdShortCodeBtn"><i class="fa fa-plus-square"></i> New Short Code</button>
<div class="clearfix"></div>
@include('client.partials.ussd-codes')
</div>
<div role="tabpanel" class="tab-pane fade" id="tabVoiceShortCode" aria-labelledby="voiceshortcode-tab">
<h4 class="lead"><strong>Voice Short Code </strong></h4>
<button type="button" class="btn btn-success btn-sm pull-right" id="createVoiceShortCodeBtn"><i class="fa fa-plus-square"></i> New Short Code</button>
<div class="clearfix"></div>
@include('client.partials.voice-codes')
</div>
</div>
</div> </div>
</div> </div>
</div> </div>

View File

@@ -0,0 +1,415 @@
@extends('layouts.master')
@section('page_title')
@if(isset($page_title))
{{ $page_title }}
@endif
@endsection
@section('css')
<link href="{{ url('public/assets/vendors/iCheck/skins/flat/green.css') }}" rel="stylesheet">
@endsection
@section('content')
@include('client.partials.new_notes')
@include('client.partials.edit-notes')
@include('client.partials.finance')
@include('client.partials.create-shortcodes')
@include('client.partials.edit-shortcodes')
@include('client.partials.edit-finance')
@include('client.partials.progress_indicator_details')
@include('client.partials.support_fees_form')
@include('client.partials.create-senderids')
<?php ?>
<div class="">
<div class="page-title">
<div class="title_left">
</div>
<div class="title_left">
<ol class="breadcrumb">
<li><a href="{!! url('dashboard') !!}">Dashboard</a></li>
<li><a href="{!! url('clients') !!}">Clients</a></li>
<li class="active">Client Details</li>
</ol>
</div>
</div>
<div class="clearfix"></div>
<div class="row">
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="x_panel">
<div class="x_title">
<h2>Client Details </h2>
<div class="clearfix"></div>
@include('commons.notifications')
</div>
<div class="x_content">
<div class="col-md-3 col-sm-3 col-xs-12 profile_left">
<div class="profile_img">
<div id="crop-avatar">
<!-- Current avatar -->
@if($showclient->country_flag_info !== null)
<img class="img-responsives avatar-views" src="{{ url($showclient->country_flag_info->url) }}" alt="Generic Client Icon" title="Country Flag" width="100px">
@else
<img class="img-responsive avatar-view" src="{{ url('public/assets/img/generic-client.png') }}" alt="Generic Client Icon" title="Change the avatar" width="100px">
@endif
</div>
</div>
<h3>{{ $showclient->name }}</h3>
<div class="well" style="border-radius: 25px;">
Click Account Manager <br>
<strong><em> <?php echo $showclient->auth_user_info->name ?? 'N/A' ?> </em></strong>
</div>
<h4>
Status : <span class="label label-{{ $status_bg }}">{{ $showclient->status }}</span>&nbsp;
<span role="button" id="progressIndicatorBtn" class="label label-{{ $progress_status_bg }}"> Progress: {{ $showclient->progress_indicator_score }}%</span>
</h4>
<ul class="list-unstyled user_data">
<li><i class="fa fa-phone user-profile-icon"></i> <?php echo $showclient->phone ?? "N/A"; ?></li>
<li><i class="fa fa-envelope user-profile-icon"></i> <?php echo $showclient->email ?? "N/A"; ?> </li>
<li class="m-top-xs"><i class="fa fa-skype user-profile-icon"></i> <?php echo $showclient->skype_name ?? "N/A"; ?></li>
<li class="m-top-xs"><i class="fa fa-linkedin user-profile-icon"></i> <?php echo $showclient->linkedin_name ?? "N/A"; ?></li>
</ul>
<h5 style="text-decoration: underline;">Highlights</h5>
@if(!$show_notes->isEmpty())
<ul class="legend list-unstyled">
<li>
<p>
<span class="icon"><i class="fa fa-square blue"></i></span> <span class="name">
<?php for ($i = 0; $i < $show_notes->count(); $i++) { ?>
<?php if ($show_notes[$i]->highlight == 'NO'): continue; endif; ?>
<strong> {{ $i+1 . "." }}</strong> {{ $show_notes[$i]->notes_body }}
<?php } ?>
</span>
</p>
</li>
</ul>
@endif
@if(session('current_user.id') == $showclient->auth_user_id)
<a class="btn btn-success" href="{{ url('clients/'. $showclient->id . '/edit') }}"><i class="fa fa-edit m-right-xs"></i> Edit Client</a>
<a class="btn btn-primary" href="{{ url('clients/onboarding', $showclient->id) }}"><i class="fa fa-edit m-right-xs"></i> Onboarding Checklist</a>
@endif
<a class="btn btn-primary" href="{{ url('clients/readonly/'. $showclient->id) }}"><i class="fa fa-eye m-right-xs"></i> Full Details (Readonly)</a>
<br />
<!-- start skills -->
<!-- <h4>Finance</h4>
<ul class="list-unstyled user_data">
<li><i class="fa fa-phone user-profile-icon"></i> [Phone Number here]</li>
<li><i class="fa fa-envelope user-profile-icon"></i> [email here] </li>
<li class="m-top-xs"><i class="fa fa-skype user-profile-icon"></i> [Skype ID Here]</li>
</ul> -->
<!-- end of skills -->
</div>
<div class="col-md-9 col-sm-9 col-xs-12" style="border: 1px solid; min-height: 500px;">
<div class="" role="tabpanel" data-example-id="togglable-tabs">
<ul id="myTab" class="nav nav-tabs bar_tabs" role="tablist">
<li role="presentation" class="active"><a href="#tabCompany" id="company-tab" role="tab" class="text-success" data-toggle="tab" aria-expanded="true">Company</a></li>
<!-- <li role="presentation" class=""><a href="#tabConnection" role="tab" id="connection-tab" data-toggle="tab" aria-expanded="false">Connection</a></li> -->
<li role="presentation" class=""><a href="#tabContract" role="tab" id="contract-tab2" class="text-info bg-info" data-toggle="tab" aria-expanded="false">Contract</a></li>
<li role="presentation" class=""><a href="#tabFinance" role="tab" id="finance-tab2" class="text-success" data-toggle="tab" aria-expanded="false">Finance</a></li>
<li role="presentation" class=""><a href="#tabNotes" role="tab" id="notes-tab2" class="text-default" data-toggle="tab" aria-expanded="false">Notes</a></li>
<li role="presentation" class=""><a href="#tabSenderIDs" role="tab" id="senderIds-tab2" class="text-warning" data-toggle="tab" aria-expanded="false">Sender IDs</a></li>
<li role="presentation" class=""><a href="#tabSmsShortCode" role="tab" id="smsshortcode-tab2" class="text-info" data-toggle="tab" aria-expanded="false">SMS Short Codes</a></li>
<li role="presentation" class=""><a href="#tabUssdShortCode" role="tab" id="ussdshortcode-tab2" class="text-success" data-toggle="tab" aria-expanded="false">USSD Short Codes</a></li>
<li role="presentation" class=""><a href="#tabVoiceShortCode" role="tab" id="voiceshortcode-tab2" class="text-warning" data-toggle="tab" aria-expanded="false">Voice Short Codes</a></li>
</ul>
<div id="myTabContent" class="tab-content">
<div role="tabpanel" class="tab-pane fade active in" id="tabCompany" aria-labelledby="company-tab">
<div class="col-md-4">
<h4 class="lead"><strong>Company Details</strong></h4>
<blockquote>
<p>Country : <strong> {{ $showclient->country or "N/A" }}</strong></p>
<p>Company Type : <strong> {{ $showclient->company_type or "N/A" }}</strong></p>
<!-- <p>Products </p> -->
<!-- <p>Products Description</p> -->
<!-- <p>Product Specification</p> -->
<!-- <p>Networks</p> gettype(json_decode($showclient->sender_ids, true )); -->
<p>Requested Sender IDs : <strong> <?php if($showclient->sender_ids) { echo implode(", ", json_decode($showclient->sender_ids, true)); } else {echo "N/A"; } ?></strong></p>
</blockquote>
<h4 class="lead"><strong>Connection Details </strong></h4>
<blockquote>
<p>Connection Types : <em> <?php if($showclient->connections) { echo implode(", ", json_decode($showclient->connections, true)); } else {echo "N/A"; } ?></em></p>
<p>SMPP Username : <em>
<?php if($showclient->smpp_username) { echo $showclient->smpp_username; } else {echo "N/A"; } ?></em></p>
<p>Message Types : <em>
<?php if($showclient->message_types) {
$types_array = json_decode($showclient->message_types);
echo implode(', ', $types_array);
}
else {
echo "N/A";
} ?>
</em>
</p>
</blockquote>
</div>
<div class="col-md-4">
<h4 class="lead"><strong>Support Phone(s)</strong></h4>
@if(!empty($showclient->support_phones))
<blockquote>
<?php
$the_arr = json_decode($showclient->support_phones, true) ?>
<ul>
<?php foreach ($the_arr as $row): ?>
<li>{{ $row }}</li>
<?php endforeach ?>
</ul>
</blockquote>
@else
N/A
@endif
<h4 class="lead"><strong>Support Email(s)</strong></h4>
@if(!empty($showclient->support_emails))
<blockquote>
<?php
$the_arr = json_decode($showclient->support_emails, true) ?>
<ul>
<?php foreach ($the_arr as $row): ?>
<li>{{ $row }}</li>
<?php endforeach ?>
</ul>
</blockquote>
@else
N/A
@endif
@if(!empty($showclient->rate_emails))
<h4 class="lead"><strong>Rates Email(s)</strong></h4>
<blockquote>
<?php
$the_arr = json_decode($showclient->rate_emails, true) ?>
<ul>
<?php foreach ($the_arr as $row): ?>
<li>{{ $row }}</li>
<?php endforeach ?>
</ul>
</blockquote>
@else
N/A
@endif
<h4 class="lead"><strong>Finance Email(s)</strong></h4>
@if(!empty($showclient->finance_email))
<blockquote>
<?php
$the_arr = json_decode($showclient->finance_email, true) ?>
<ul>
<?php foreach ($the_arr as $row): ?>
<li>{{ $row }}</li>
<?php endforeach ?>
</ul>
</blockquote>
@else
N/A
@endif
</div>
<div class="col-md-4">
<h4 class="lead"><strong>Support Skype ID(s)</strong></h4>
@if(!empty($showclient->support_skype))
<blockquote>
<?php
$the_arr = json_decode($showclient->support_skype, true) ?>
<ul>
<?php foreach ($the_arr as $row): ?>
<li>{{ $row }}</li>
<?php endforeach ?>
</ul>
</blockquote>
@else
N/A
@endif
<div class="well">
<h4>How We Got This Client</h4>
<?php echo $showclient->how_we_got_client ?? "N/A" ?>
</div>
<h4>Documents</h4>
@if(!$showdocuments->isEmpty() == true)
@foreach($showdocuments as $docs)
<p class="url">
<span class="fs1 text-info" aria-hidden="true" data-icon=""></span>
<a href="{{ url('clients/downloadfile', $docs->id) }}"><i class="fa fa-paperclip"></i> {{ $docs->name }}.{{ $docs->file_extension }}</a>
</p>
@endforeach
@else
<p>No Documents found</p>
@endif
</div>
</div>
<div role="tabpanel" class="tab-pane fade" id="tabConnection" aria-labelledby="connection-tab">
<h4 class="lead"><strong>Connection Details </strong></h4>
<blockquote>
<p>Connection Types : <?php if($showclient->connections) { echo implode(", ", json_decode($showclient->connections, true)); } else {echo "N/A"; } ?></p>
<br>
<p>Partner SMPP Details <br>
<?php //if($showclient->smpp_details) { echo $showclient->smpp_details; } else {echo "N/A"; } ?></p>
</blockquote>
</div>
<div role="tabpanel" class="tab-pane fade" id="tabContract" aria-labelledby="contract-tab">
<h4 class="lead"> <strong>Contract Details </strong></h4>
<blockquote>
<p>Contract Type : <strong> {{ ucfirst($showclient->contract_type) ?? 'N/A'}} </strong><br> </p>
<p>Contract Validity (Date) : <strong> {{ $showclient->contract_validity or 'N/A'}} </strong></p>
<p>Contract Auto Renewal : <strong> {{ $showclient->contract_auto_renew or 'N/A'}} </strong></p>
@if($showclient->contract_auto_renew != 'YES')
<p>Renewal Due : <strong class="text-<?php echo ($highlight_colour == 'none') ? '' : 'danger'; ?> "> {{ $renewal_due }} </strong></p>
@endif
</blockquote>
<h4 class="lead"> <strong>Support Fees </strong></h4>
<button type="button" class="btn btn-success btn-sm pull-right" id="addSupportFeesInfoBtn"><i class="fa fa-plus-square"></i> New Support Fee Info</button>
<div class="clearfix"></div>
@include('client.partials.support_fees')
</div>
<div role="tabpanel" class="tab-pane fade" id="tabFinance" aria-labelledby="finance-tab">
<h4 class="lead"><strong>Finance Details </strong></h4>
<button type="button" class="btn btn-success btn-sm pull-right" id="createPaymentBtn"><i class="fa fa-plus-square"></i> New Payment Details</button>
<div class="clearfix"></div>
<hr>
@include('client.partials.recent-payments')
</div>
<div role="tabpanel" class="tab-pane fade" id="tabNotes" aria-labelledby="notes-tab">
<strong><h3> Notes</h3> </strong>
<div class="pull-right">
<!-- {{ url('clients/create-notes') }} -->
<button type="button" class="btn btn-success btn-sm" id="createNotesBtn">New Notes <i class="fa fa-plus-square"></i> </button>
</div>
<div class="clearfix"></div>
<div style="background-color: #dce2e4; height: 400px; overflow: scroll;">
<ul class="messages list-group" style="padding: 15px;">
@if($show_notes->isEmpty())
<li style="" class="">No notes found</li>
@else
<?php for ($i = 0; $i < $show_notes->count(); $i++) { ?>
<?php if ($show_notes[$i]->highlight == 'YES'): continue; endif; ?>
<li class="list-group-item list-group-item-<?php echo ($i%2 == 0)? "secondary" : "info"; ?>">
<div class="message_date" style="padding-right: 10px;">
<h3 class="date text-info"><?php echo date('d', strtotime($show_notes[$i]->created_at)); ?></h3>
<p class="month"><?php echo date('M', strtotime($show_notes[$i]->created_at)); ?></p>
<p class="year"><?php echo date('Y', strtotime($show_notes[$i]->created_at)); ?></p>
</div>
<div class="message_wrapper">
<h4 class="heading">{{ $show_notes[$i]->client_info->name }}</h4>
<blockquote class="message"><em>Content : </em> {{ $show_notes[$i]->notes_body }}</blockquote>
<br />
<p class="url">
<span class="fs1 text-info" aria-hidden="true" data-icon=""></span>
<input type="hidden" name="notes_id" class="notesRowId" value="{{ $show_notes[$i]->id }}">
<a href="#" class="notesEditBtn"><i class="fa fa-edit"></i>Account Manager : {{ $show_notes[$i]->created_by_info->name }} </a>
</p>
</div>
</li>
<?php } ?>
@endif
</ul>
</div>
</div>
<div role="tabpanel" class="tab-pane fade" id="tabSenderIDs" aria-labelledby="senderIds-tab">
<h4 class="lead"><strong>Sender IDs </strong></h4>
<button type="button" class="btn btn-success btn-sm pull-right" id="createSenderIdBtn"><i class="fa fa-plus-square"></i> New Sender ID</button>
<div class="clearfix"></div>
@include('client.partials.sender-ids')
</div>
<div role="tabpanel" class="tab-pane fade" id="tabSmsShortCode" aria-labelledby="smsshortcode-tab">
<h4 class="lead"><strong>SMS Short Code </strong></h4>
<button type="button" class="btn btn-success btn-sm pull-right" id="createSmsShortCodeBtn"><i class="fa fa-plus-square"></i> New Short Code</button>
<div class="clearfix"></div>
@include('client.partials.sms-codes')
</div>
<div role="tabpanel" class="tab-pane fade" id="tabUssdShortCode" aria-labelledby="ussdshortcode-tab">
<h4 class="lead"><strong>USSD Short Codes </strong></h4>
<button type="button" class="btn btn-success btn-sm pull-right" id="createUssdShortCodeBtn"><i class="fa fa-plus-square"></i> New Short Code</button>
<div class="clearfix"></div>
@include('client.partials.ussd-codes')
</div>
<div role="tabpanel" class="tab-pane fade" id="tabVoiceShortCode" aria-labelledby="voiceshortcode-tab">
<h4 class="lead"><strong>Voice Short Code </strong></h4>
<button type="button" class="btn btn-success btn-sm pull-right" id="createVoiceShortCodeBtn"><i class="fa fa-plus-square"></i> New Short Code</button>
<div class="clearfix"></div>
@include('client.partials.voice-codes')
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('javascript')
<script src="{{ url('public/assets/vendors/iCheck/icheck.min.js') }}"></script>
<script src="{{ url('public/assets/js/clientshow.js') }}"></script>
<script type="text/javascript">
// iCheck
$(document).ready(function() {
if ($("input.flat")[0]) {
$(document).ready(function () {
$('input.flat').iCheck({
checkboxClass: 'icheckbox_flat-green',
radioClass: 'iradio_flat-green'
});
});
}
});
// /iCheck
// Table
$('table input').on('ifChecked', function () {
checkState = '';
$(this).parent().parent().parent().addClass('selected');
countChecked();
});
$('table input').on('ifUnchecked', function () {
checkState = '';
$(this).parent().parent().parent().removeClass('selected');
countChecked();
});
var checkState = '';
$('.bulk_action input').on('ifChecked', function () {
checkState = '';
$(this).parent().parent().parent().addClass('selected');
countChecked();
});
$('.bulk_action input').on('ifUnchecked', function () {
checkState = '';
$(this).parent().parent().parent().removeClass('selected');
countChecked();
});
$('.bulk_action input#check-all').on('ifChecked', function () {
checkState = 'all';
countChecked();
});
$('.bulk_action input#check-all').on('ifUnchecked', function () {
checkState = 'none';
countChecked();
});
</script>
@endsection

View File

@@ -0,0 +1,438 @@
@extends('layouts.master')
@section('page_title')
@if(isset($page_title))
{{ $page_title }}
@endif
@endsection
@section('css')
<link href="{{ url('public/assets/vendors/iCheck/skins/flat/green.css') }}" rel="stylesheet">
@endsection
@section('content')
@include('client.partials.new_notes')
@include('client.partials.edit-notes')
@include('client.partials.finance')
@include('client.partials.create-shortcodes')
@include('client.partials.edit-shortcodes')
@include('client.partials.edit-finance')
@include('client.partials.progress_indicator_details')
@include('client.partials.support_fees_form')
@include('client.partials.create-senderids')
<div class="">
<div class="x_content">
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="x_panel">
<div class="x_title">
<h2><i class="fa fa-align-left"></i> Client Details</h2>
<div class="clearfix"></div>
@include('commons.notifications')
</div>
<div class="x_content">
<!-- start accordion -->
<div class="accordion" id="accordion" role="tablist" aria-multiselectable="true">
<div class="panel">
<a class="panel-heading" role="tab" id="headingZero" data-toggle="collapse" data-parent="#accordion" href="#collapseZero" aria-expanded="true" aria-controls="collapseZero">
<h4 class="panel-title">Details Summary</h4>
</a>
<div id="collapseZero" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingZero">
<div class="panel-body">
<div class="col-md-12">
<ul class="stats-overview">
<li>
<span class="name"> Total Payments </span>
<span class="value text-success"> {{ number_format($recent_payments->sum('invoice_amount')) }} </span>
</li>
<li>
<span class="name"> Short Codes </span>
<span class="value text-success">
{{ $ussd_codes->count() + $sms_codes->count() + $voice_codes->count() }}
</span>
</li>
<li class="hidden-phone">
<span class="name"> Sender IDs </span>
<span class="value text-success"> {{ $client_sender_ids->count() }} </span>
</li>
</ul>
</div>
<div class="col-md-5">
<div class="text-centerM">
<div class="profile_img" style="padding-bottom: 5px;">
<div id="crop-avatar">
<!-- Current avatar -->
@if($showclient->country_flag_info !== null)
<!-- <img class="img-responsives avatar-views" src="{{ url($showclient->country_flag_info->url) }}" alt="Generic Client Icon" title="Country Flag" width="100px"> -->
@else
<!-- <img class="img-responsive avatar-view" src="{{ url('public/assets/img/generic-client.png') }}" alt="Generic Client Icon" title="Change the avatar" width="100px"> -->
@endif
</div>
</div>
<p class="text-warning" style="font-size: larger;"><strong>{{ $showclient->name }}</strong></p>
<h4>
Status : <span class="label label-{{ $status_bg }}">{{ $showclient->status }}</span>&nbsp;
<span role="button" id="progressIndicatorBtn" class="label label-{{ $progress_status_bg }}"> Progress: {{ $showclient->progress_indicator_score }}%</span>
</h4>
<div class="">
Client Account Manager : <strong><em> <?php echo $showclient->contact_person ?? 'N/A' ?> </em></strong>
</div>
<div class="">
Click Account Manager : <strong><em> <?php echo $showclient->auth_user_info->name ?? 'N/A' ?> </em></strong>
</div>
<ul class="list-unstyled user_data">
<li>
<i class="fa fa-phone user-profile-icon"></i> <?php echo $showclient->phone ?? "N/A"; ?> | <i class="fa fa-envelope user-profile-icon"></i> <?php echo $showclient->email ?? "N/A"; ?>
</li>
<li>
<i class="fa fa-skype user-profile-icon"></i> <?php echo $showclient->skype_name ?? "N/A"; ?> | <i class="fa fa-linkedin user-profile-icon"></i> <?php echo $showclient->linkedin_name ?? "N/A"; ?>
</li>
</ul>
<ul class="list-unstyled user_data">
<li>Country : <strong> {{ $showclient->country or "N/A" }}</strong> | Company Type : <strong> {{ $showclient->company_type or "N/A" }}</strong></li>
</ul>
@if(session('current_user.id') == $showclient->auth_user_id)
<a class="btn btn-success btn-sm" href="{{ url('clients/'. $showclient->id . '/edit') }}"><i class="fa fa-edit m-right-xs"></i> Edit Client</a>
<a class="btn btn-primary btn-sm" href="{{ url('clients/onboarding', $showclient->id) }}"><i class="fa fa-edit m-right-xs"></i> Checklist</a>
@endif
</div>
</div>
<div class="col-md-4">
<h5 style="text-decoration: underline;">Contract</h5>
<ul class="list-unstyled user_data">
<li>Contract Type : <strong> {{ ucfirst($showclient->contract_type) ?? 'N/A'}} </strong></li>
<li>Contract Validity (Date) : <strong> {{ $showclient->contract_validity or 'N/A'}} </strong></li>
<li>Contract Auto Renewal : <strong> {{ $showclient->contract_auto_renew or 'N/A'}} </strong></li>
</ul>
@if($showclient->contract_auto_renew != 'YES')
<p>Renewal Due : <strong class="text-<?php echo ($highlight_colour == 'none') ? '' : 'danger'; ?> "> {{ $renewal_due }} </strong></p>
@endif
<h5 class="" style="text-decoration: underline;"><strong>Connection Details </strong></h5>
<p>Connection Types : <em> <?php if($showclient->connections) { echo implode(", ", json_decode($showclient->connections, true)); } else {echo "N/A"; } ?></em></p>
<p>SMPP Username : <em>
<?php if($showclient->smpp_username) { echo $showclient->smpp_username; } else {echo "N/A"; } ?></em></p>
<p>Message Types : <em>
<?php if($showclient->message_types) {
$types_array = json_decode($showclient->message_types);
echo implode(', ', $types_array);
}
else {
echo "N/A";
} ?>
</em>
</p>
</div>
<div class="col-md-3">
<h5 style="text-decoration: underline;">Documents</h5>
@if(!$showdocuments->isEmpty() == true)
@foreach($showdocuments as $docs)
<p class="url">
<span class="fs1 text-info" aria-hidden="true" data-icon=""></span>
<a href="{{ url('clients/downloadfile', $docs->id) }}" title="Click to Download"><i class="fa fa-paperclip"></i> {{ $docs->name }}.{{ $docs->file_extension }}</a>
</p>
@endforeach
@else
<p>No Documents uploaded</p>
@endif
<div class="" style="padding-top: 10px;">
<h5 style="text-decoration: underline;">How We Got This Client</h5>
<p class="label label-success">
<?php echo $showclient->how_we_got_client ?? "N/A" ?>
</p>
</div>
</div>
<div class="col-md-12">
<h5>Notes(Highlights)</h5>
<ul class="legend list-unstyled">
<li>
<p>
<span class="icon"><i class="fa fa-square blue"></i></span> <span class="name">
<?php for ($i = 0; $i < $show_notes_highlight->count(); $i++) { ?>
<strong> {{ $i+1 . "." }}</strong>
{{ $show_notes_highlight[$i]->notes_body }}
<?php } ?>
</span>
</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="panel">
<a class="panel-heading collapsed" role="tab" id="headingOne" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="false" aria-controls="collapseOne">
<h3 class="panel-title">Contact & Support Details</h3>
</a>
<div id="collapseOne" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne">
<div class="panel-body">
<div class="row">
<div class="col-md-6">
<h5 class=""><strong>Support Phone(s)</strong></h5>
@if(!empty($showclient->support_phones))
<?php
$the_arr = json_decode($showclient->support_phones, true) ?>
<ul>
<?php foreach ($the_arr as $row): ?>
<li>{{ $row }}</li>
<?php endforeach ?>
</ul>
@else
N/A
@endif
<h5 class=""><strong>Support Email(s)</strong></h5>
@if(!empty($showclient->support_emails))
<?php
$the_arr = json_decode($showclient->support_emails, true) ?>
<ul>
<?php foreach ($the_arr as $row): ?>
<li>{{ $row }}</li>
<?php endforeach ?>
</ul>
@else
N/A
@endif
@if(!empty($showclient->rate_emails))
<h5 class=""><strong>Rates Email(s)</strong></h5>
<?php
$the_arr = json_decode($showclient->rate_emails, true) ?>
<ul>
<?php foreach ($the_arr as $row): ?>
<li>{{ $row }}</li>
<?php endforeach ?>
</ul>
@else
N/A
@endif
</div>
<div class="col-md-6">
<h5 class=""><strong>Finance Email(s)</strong></h5>
@if(!empty($showclient->finance_email))
<?php
$the_arr = json_decode($showclient->finance_email, true) ?>
<ul>
<?php foreach ($the_arr as $row): ?>
<li>{{ $row }}</li>
<?php endforeach ?>
</ul>
@else
N/A
@endif
<h5 class=""><strong>Support Skype ID(s)</strong></h5>
@if(!empty($showclient->support_skype))
<?php
$the_arr = json_decode($showclient->support_skype, true) ?>
<ul>
<?php foreach ($the_arr as $row): ?>
<li>{{ $row }}</li>
<?php endforeach ?>
</ul>
@else
N/A
@endif
</div>
</div>
</div>
</div>
</div>
<div class="panel">
<a class="panel-heading collapsed" role="tab" id="headingTwo" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
<h4 class="panel-title">Support Fees</h4>
</a>
<div id="collapseTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo">
<div class="panel-body">
<h4 class="lead"> <strong>Fees List </strong></h4>
<button type="button" class="btn btn-success btn-sm pull-right" id="addSupportFeesInfoBtn"><i class="fa fa-plus-square"></i> New Support Fee Info</button>
<div class="clearfix"></div>
@include('client.partials.support_fees')
</div>
</div>
</div>
<div class="panel">
<a class="panel-heading collapsed" role="tab" id="headingThree" data-toggle="collapse" data-parent="#accordion" href="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
<h4 class="panel-title">Notes</h4>
</a>
<div id="collapseThree" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingThree">
<div class="panel-body">
<!-- <p><strong>Collapsible Item 3 data</strong></p> -->
<div class="pull-rightMMM">
<button type="button" class="btn btn-success btn-sm" id="createNotesBtn">New Notes <i class="fa fa-plus-square"></i> </button>
</div>
<div class="clearfix"></div>
<div style="background-color: #dce2e4; height: 400px; overflow: scroll;">
<ul class="messages list-group" style="padding: 15px;">
@if($show_notes->isEmpty())
<li style="" class="">No notes found</li>
@else
<?php for ($i = 0; $i < $show_notes->count(); $i++) { ?>
<?php if ($show_notes[$i]->highlight == 'YES'): continue; endif; ?>
<li class="list-group-item list-group-item-<?php echo ($i%2 == 0)? "secondary" : "info"; ?>">
<div class="message_date" style="padding-right: 10px;">
<h3 class="date text-info"><?php echo date('d', strtotime($show_notes[$i]->created_at)); ?></h3>
<p class="month"><?php echo date('M', strtotime($show_notes[$i]->created_at)); ?></p>
<p class="year"><?php echo date('Y', strtotime($show_notes[$i]->created_at)); ?></p>
</div>
<div class="message_wrapper">
<h4 class="heading">{{ $show_notes[$i]->client_info->name }}</h4>
<blockquote class="message"><em>Content : </em> {{ $show_notes[$i]->notes_body }}</blockquote>
<br />
<p class="url">
<span class="fs1 text-info" aria-hidden="true" data-icon=""></span>
<input type="hidden" name="notes_id" class="notesRowId" value="{{ $show_notes[$i]->id }}">
<a href="#" class="notesEditBtn"><i class="fa fa-edit"></i>Account Manager : {{ $show_notes[$i]->created_by_info->name }} </a>
</p>
</div>
</li>
<?php } ?>
@endif
</ul>
</div>
</div>
</div>
</div>
<div class="panel">
<a class="panel-heading collapsed" role="tab" id="headingFour" data-toggle="collapse" data-parent="#accordion" href="#collapseFour" aria-expanded="false" aria-controls="collapseFour">
<h4 class="panel-title">Recent Payments</h4>
</a>
<div id="collapseFour" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingFour">
<div class="panel-body">
<!-- <p><strong>Collapsible Item Four data</strong></p> -->
<button type="button" class="btn btn-success btn-sm pull-rightb" id="createPaymentBtn"><i class="fa fa-plus-square"></i> New Payment Details</button>
<div class="clearfix"></div>
<div class="" style="background-color: #dce2e4; height: 400px; overflow: scroll;">
@include('client.partials.recent-payments')
</div>
</div>
</div>
</div>
<div class="panel">
<a class="panel-heading collapsed" role="tab" id="headingFive" data-toggle="collapse" data-parent="#accordion" href="#collapseFive" aria-expanded="false" aria-controls="collapseFive">
<h4 class="panel-title">Sender IDs</h4>
</a>
<div id="collapseFive" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingFive">
<div class="panel-body">
<!-- <p><strong>Collapsible Item Five data</strong></p> -->
<button type="button" class="btn btn-success btn-sm pull-rightMM" id="createSenderIdBtn"><i class="fa fa-plus-square"></i> New Sender ID</button>
<div class="clearfix"></div>
@include('client.partials.sender-ids')
</div>
</div>
</div>
<div class="panel">
<a class="panel-heading collapsed" role="tab" id="headingSix" data-toggle="collapse" data-parent="#accordion" href="#collapseSix" aria-expanded="false" aria-controls="collapseSix">
<h4 class="panel-title">SMS Short Codes</h4>
</a>
<div id="collapseSix" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingSix">
<div class="panel-body">
<!-- <p><strong>Collapsible Item Six data</strong></p> -->
<button type="button" class="btn btn-success btn-sm pull-rightE" id="createSmsShortCodeBtn"><i class="fa fa-plus-square"></i> New Short Code</button>
<div class="clearfix"></div>
@include('client.partials.sms-codes')
</div>
</div>
</div>
<div class="panel">
<a class="panel-heading collapsed" role="tab" id="headingSeven" data-toggle="collapse" data-parent="#accordion" href="#collapseSeven" aria-expanded="false" aria-controls="collapseSeven">
<h4 class="panel-title">USSD Short Codes</h4>
</a>
<div id="collapseSeven" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingSeven">
<div class="panel-body">
<!-- <h4 class="lead"><strong>USSD Short Codes </strong></h4> -->
<button type="button" class="btn btn-success btn-sm" id="createUssdShortCodeBtn"><i class="fa fa-plus-square"></i> New Short Code</button>
<div class="clearfix"></div>
@include('client.partials.ussd-codes')
</div>
</div>
</div>
<div class="panel">
<a class="panel-heading collapsed" role="tab" id="headingVoice" data-toggle="collapse" data-parent="#accordion" href="#collapseVoice" aria-expanded="false" aria-controls="collapseVoice">
<h4 class="panel-title">Voice Short Codes</h4>
</a>
<div id="collapseVoice" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingVoice">
<div class="panel-body">
<!-- <p><strong>Collapsible Item Voice data</strong></p> -->
<button type="button" class="btn btn-success btn-sm" id="createVoiceShortCodeBtn"><i class="fa fa-plus-square"></i> New Short Code</button>
<div class="clearfix"></div>
@include('client.partials.voice-codes')
</div>
</div>
</div>
</div>
<!-- end of accordion -->
</div>
</div>
</div>
</div>
</div>
@endsection
@section('javascript')
<script src="{{ url('public/assets/vendors/iCheck/icheck.min.js') }}"></script>
<script src="{{ url('public/assets/js/clientshow.js') }}"></script>
<script type="text/javascript">
// iCheck
$(document).ready(function() {
if ($("input.flat")[0]) {
$(document).ready(function () {
$('input.flat').iCheck({
checkboxClass: 'icheckbox_flat-green',
radioClass: 'iradio_flat-green'
});
});
}
});
// /iCheck
// Table
$('table input').on('ifChecked', function () {
checkState = '';
$(this).parent().parent().parent().addClass('selected');
countChecked();
});
$('table input').on('ifUnchecked', function () {
checkState = '';
$(this).parent().parent().parent().removeClass('selected');
countChecked();
});
var checkState = '';
$('.bulk_action input').on('ifChecked', function () {
checkState = '';
$(this).parent().parent().parent().addClass('selected');
countChecked();
});
$('.bulk_action input').on('ifUnchecked', function () {
checkState = '';
$(this).parent().parent().parent().removeClass('selected');
countChecked();
});
$('.bulk_action input#check-all').on('ifChecked', function () {
checkState = 'all';
countChecked();
});
$('.bulk_action input#check-all').on('ifUnchecked', function () {
checkState = 'none';
countChecked();
});
</script>
@endsection

View File

@@ -49,42 +49,7 @@
<div class="row"> <div class="row">
<div class="col-md-3"> <div class="col-md-4">
<div class="x_panel">
<div class="x_title">
<h2 class="blue">Additional Info </h2>
<div class="clearfix"></div>
</div>
<div class="x_content">
<div class="dashboard-widget-content">
<ul class="list-unstyled timeline widget">
@if($user_activities->isEmpty() == false)
@foreach($user_activities as $userrow)
<li>
<div class="block">
<div class="block_content">
<h2 class="title">
<a>{{ $userrow->content }}</a>
</h2>
<div class="byline">
<span>{{ $userrow->activity_time }}</span>
<!-- by <a>Jane Smith</a> -->
</div>
<p class="excerpt"></p>
</div>
</div>
</li>
@endforeach
@endif
</ul>
</div>
</div>
</div>
</div>
<div class="col-md-3">
<div class="x_panel"> <div class="x_panel">
<div class="x_title"> <div class="x_title">
<h2 class="blue">Recent Activities </h2> <h2 class="blue">Recent Activities </h2>
@@ -93,7 +58,6 @@
</div> </div>
<div class="x_content"> <div class="x_content">
<div class="dashboard-widget-content"> <div class="dashboard-widget-content">
<ul class="list-unstyled timeline widget"> <ul class="list-unstyled timeline widget">
@if($user_activities->isEmpty() == false) @if($user_activities->isEmpty() == false)
@foreach($user_activities as $userrow) @foreach($user_activities as $userrow)
@@ -113,13 +77,13 @@
</li> </li>
@endforeach @endforeach
@endif @endif
</ul> </ul>
</div> </div>
<a href="{{ url('reports/useractivities') }}" class="btn btn-link">View More</a>
</div> </div>
</div> </div>
</div> </div>
<div class="col-md-3"> <div class="col-md-4">
<div class="x_panel"> <div class="x_panel">
<div class="x_title"> <div class="x_title">
<h2 class="red">Contracts Expiry Dates </h2> <h2 class="red">Contracts Expiry Dates </h2>
@@ -161,7 +125,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="col-md-3"> <div class="col-md-4">
<div class="x_panel"> <div class="x_panel">
<div class="x_title"> <div class="x_title">
<h2 class="green">Newly Added Clients</h2> <h2 class="green">Newly Added Clients</h2>
@@ -182,7 +146,6 @@
<a class="title" title="View Client Details" href="{{ url('clients', $row->id) }}">{{ $recentrow->name }}</a> <a class="title" title="View Client Details" href="{{ url('clients', $row->id) }}">{{ $recentrow->name }}</a>
<p class="">Company Type : {{ strtoupper($recentrow->company_type) }}</p> <p class="">Company Type : {{ strtoupper($recentrow->company_type) }}</p>
<p class="">Account Manager : {{ strtoupper($recentrow->auth_user_info->name) }}</p> <p class="">Account Manager : {{ strtoupper($recentrow->auth_user_info->name) }}</p>
</div> </div>
</article> </article>
@endforeach @endforeach

View File

@@ -0,0 +1,79 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8">
</head>
<body>
<div class="">
<img src="{!! url('public/assets/img/click-banner.png') !!}" alt="Click Mobile Banner Logo">
</div>
<h2>Short Code Invoice/Payment Alert</h2>
{{ date('F d, Y') }} <br>
Hello Accounts Team,<br>
<p>{{ $message_body }}</p>
<p>Short Code : {{$finance_arr['short_code'] }} </p>
<p>Invoice Date : {{ $finance_arr['invoice_date'] }} </p>
<p>Invoice Number : {{ $finance_arr['invoice_number'] }} </p>
<p>Amount : {{ $finance_arr['invoice_amount'] }} </p>
<p>Status : {{ $finance_arr['invoice_status'] }} </p>
<p>Remarks : {{ $finance_arr['remarks'] }}</p>
<strong>Client Short Short Codes</strong>
<table bgcolor="#ACD13C" width="100%" style="border-style:solid; border-width:1px; border-color:#000000;" cellpadding="2" cellspacing="0">
<tr style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">
<th>Name</th>
<th>Code</th>
<th>Network</th>
<th>Toll Free</th>
<th>Status</th>
<th>Remarks</th>
<th>Launch Date</th>
<th>Renewal Date</th>
</tr>
@if ($short_code_list->isEmpty())
<tr>
<td colspan="12" style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">
No Records found
</td>
</tr>
@else
@foreach ($short_code_list as $row)
<tr>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">
{{ $row->name }}
</td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">
<b>{{ $row->shortcode }}</b>
</td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">
{{ $row->network }}
</td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">
{{ strtoupper($row->toll_free) }}
</td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">
{{ $row->status }}
</td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">
{{ $row->remarks }}
</td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">
{{ date('d-m-Y', strtotime($row->launch_date)) }}</td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">
@if($row->expiry_date == false)
{{ "N/A"}}
@else
{{ date('d-m-Y', strtotime($row->expiry_date)) }}
@endif
</td>
</tr>
@endforeach
@endif
</tbody>
</table>
</body>
</html>

View File

@@ -0,0 +1,69 @@
<table bgcolor="#fff" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td>
<table bgcolor="#bceff7" width="100%" cellpadding="0" cellspacing="0" style="">
<tr>
<th style="border-style:solid; border-width:1px; border-color:#000000;">Name</th>
<th style="border-style:solid; border-width:1px; border-color:#000000;">Code</th>
<th style="border-style:solid; border-width:1px; border-color:#000000;">Network</th>
<th style="border-style:solid; border-width:1px; border-color:#000000;">Toll Free</th>
<th style="border-style:solid; border-width:1px; border-color:#000000;">Status</th>
<th style="border-style:solid; border-width:1px; border-color:#000000;">Remarks</th>
<th style="border-style:solid; border-width:1px; border-color:#000000;">Launch Date</th>
<th style="border-style:solid; border-width:1px; border-color:#000000;">Renewal Date</th>
</tr>
@for ($i = 0; $i < 10; ++$i)
<tr>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;" width="400" >Text goes here
</td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;" width="400">Text goes here
</td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;" width="400">Text goes here
</td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;" width="400">Text goes here
</td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;" width="400" >Text goes here
</td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;" width="400">Text goes here
</td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;" width="400">Text goes here
</td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;" width="400">Text goes here
</td>
</tr>
@endfor
</table>
</td>
</tr>
</table>
<br>
<br>
<table bgcolor="#bceff7" width="100%" style="" cellpadding="2" cellspacing="0">
<tr>
<th style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">Name</th>
<th style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">Code</th>
<th style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">Network</th>
<th style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">Toll Free</th>
<th style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">Status</th>
<th style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">Remarks</th>
<th style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">Launch Date</th>
<th style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">Renewal Date</th>
</tr>
<tr>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">some text</td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;"><b>some text</b></td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">some text</td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">some text</td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">some text</td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">some text</td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">some text</td>
<td style="font-weight: normal; font-size: 0.9em; color: #000000; font-family: Arial,helvetica,sans; padding:0px; text-align:left; border-style:solid; border-width:1px; border-color:#000000;">some text</td>
</tr>
</tbody>
</table>

View File

@@ -0,0 +1,516 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
<!--[if (gte mso 9)|(IE)]>
<xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml>
<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <!-- So that mobile will display zoomed in -->
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- enable media queries for windows phone 8 -->
<meta name="format-detection" content="telephone=no"> <!-- disable auto telephone linking in iOS -->
<meta name="format-detection" content="date=no"> <!-- disable auto date linking in iOS -->
<meta name="format-detection" content="address=no"> <!-- disable auto address linking in iOS -->
<meta name="format-detection" content="email=no"> <!-- disable auto email linking in iOS -->
<meta name="author" content="Simple-Pleb.com">
<title>Name Here</title>
<link href="https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@100;200;300;400;500;600;700;800;900&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap" rel="stylesheet">
<style type="text/css">
/*Basics*/
body {margin:0px !important; padding:0px !important; display:block !important; min-width:100% !important; width:100% !important; -webkit-text-size-adjust:none;}
table {border-spacing:0; mso-table-lspace:0pt; mso-table-rspace:0pt;}
table td {border-collapse: collapse;mso-line-height-rule:exactly;}
td img {-ms-interpolation-mode:bicubic; width:auto; max-width:auto; height:auto; margin:auto; display:block!important; border:0px;}
td p {margin:0; padding:0;}
td div {margin:0; padding:0;}
td a {text-decoration:none; color: inherit;}
/*Outlook*/
.ExternalClass {width: 100%;}
.ExternalClass,.ExternalClass p,.ExternalClass span,.ExternalClass font,.ExternalClass td,.ExternalClass div {line-height:inherit;}
.ReadMsgBody {width:100%; background-color: #ffffff;}
/* iOS BLUE LINKS */
a[x-apple-data-detectors] {color:inherit !important; text-decoration:none !important; font-size:inherit !important; font-family:inherit !important; font-weight:inherit !important; line-height:inherit !important;}
/*Gmail blue links*/
u + #body a {color:inherit;text-decoration:none;font-size:inherit;font-family:inherit;font-weight:inherit;line-height:inherit;}
/*Buttons fix*/
.undoreset a, .undoreset a:hover {text-decoration:none !important;}
.yshortcuts a {border-bottom:none !important;}
.ios-footer a {color:#aaaaaa !important;text-decoration:none;}
/*Responsive*/
@media screen and (max-width: 799px) {
table.row {width: 100%!important;max-width: 100%!important;}
td.row {width: 100%!important;max-width: 100%!important;}
.img-responsive img {width:100%!important;max-width: 100%!important;height: auto!important;margin: auto;}
.center-float {float: none!important;margin:auto!important;}
.center-text{text-align: center!important;}
.container-padding {width: 100%!important;padding-left: 15px!important;padding-right: 15px!important;}
.container-padding10 {width: 100%!important;padding-left: 10px!important;padding-right: 10px!important;}
.hide-mobile {display: none!important;}
.menu-container {text-align: center !important;}
.autoheight {height: auto!important;}
.m-padding-10 {margin: 10px 0!important;}
.m-padding-15 {margin: 15px 0!important;}
.m-padding-20 {margin: 20px 0!important;}
.m-padding-30 {margin: 30px 0!important;}
.m-padding-40 {margin: 40px 0!important;}
.m-padding-50 {margin: 50px 0!important;}
.m-padding-60 {margin: 60px 0!important;}
.m-padding-top10 {margin: 30px 0 0 0!important;}
.m-padding-top15 {margin: 15px 0 0 0!important;}
.m-padding-top20 {margin: 20px 0 0 0!important;}
.m-padding-top30 {margin: 30px 0 0 0!important;}
.m-padding-top40 {margin: 40px 0 0 0!important;}
.m-padding-top50 {margin: 50px 0 0 0!important;}
.m-padding-top60 {margin: 60px 0 0 0!important;}
.m-height10 {font-size:10px!important;line-height:10px!important;height:10px!important;}
.m-height15 {font-size:15px!important;line-height:15px!important;height:15px!important;}
.m-height20 {font-size:20px!important;line-height:20px!important;height:20px!important;}
.m-height25 {font-size:25px!important;line-height:25px!important;height:25px!important;}
.m-height30 {font-size:30px!important;line-height:30px!important;height:30px!important;}
.rwd-on-mobile {display: inline-block!important;padding: 5px;}
.center-on-mobile {text-align: center!important;}
}
</style>
</head>
<body style="margin-top: 0; margin-bottom: 0; padding-top: 0; padding-bottom: 0; width: 100%; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%;" bgcolor="#f0f0f0">
<span class="preheader-text" style="color: transparent; height: 0; max-height: 0; max-width: 0; opacity: 0; overflow: hidden; visibility: hidden; width: 0; display: none; mso-hide: all;"></span>
<div style="display:none; font-size:0px; line-height:0px; max-height:0px; max-width:0px; opacity:0; overflow:hidden; visibility:hidden; mso-hide:all;"></div>
<table border="0" align="center" cellpadding="0" cellspacing="0" width="100%" style="width:100%;max-width:100%;">
<tr><!-- Outer Table -->
<td align="center" bgcolor="#f0f0f0" data-composer>
<table border="0" align="center" cellpadding="0" cellspacing="0" role="presentation" width="100%" style="width:100%;max-width:100%;" >
<!-- lotus-header-18-->
<tr>
<td align="center" bgcolor="#343e9e" class="container-padding">
<!-- Content -->
<table border="0" align="center" cellpadding="0" cellspacing="0" role="presentation" class="row" width="580" style="width:580px;max-width:580px;">
<tr>
<td height="40" style="font-size:40px;line-height:40px;" >&nbsp;</td>
</tr>
<tr >
<td align="center">
<!-- Logo & Webview -->
<table border="0" align="center" cellpadding="0" cellspacing="0" role="presentation" width="100%" style="width:100%;max-width:100%;">
<tr>
<td align="center" class="container-padding">
<!--[if (gte mso 9)|(IE)]><table border="0" cellpadding="0" cellspacing="0" dir="rtl"><tr><td><![endif]-->
<!--[if (gte mso 9)|(IE)]></td><td><![endif]-->
<!-- gap -->
<table border="0" align="right" cellpadding="0" cellspacing="0" role="presentation" class="row" width="20" style="width:20px;max-width:20px;">
<tr>
<td height="20" style="font-size:20px;line-height:20px;">&nbsp;</td>
</tr>
</table>
<!-- gap -->
<!--[if (gte mso 9)|(IE)]></td><td><![endif]-->
<!-- column -->
<table border="0" align="right" cellpadding="0" cellspacing="0" role="presentation" class="row" width="280" style="width:280px;max-width:280px;">
<tr >
<td align="left" class="center-text">
<a href="{{ url('/') }}"><img style="width:72px;border:0px;display: inline!important;" src="" width="72" border="0" alt=""></a>
</td>
</tr>
</table>
<!-- column -->
<!--[if (gte mso 9)|(IE)]></td></tr></table><![endif]-->
</td>
</tr>
</table>
<!-- Logo & Webview -->
</td>
</tr>
<tr >
<td height="40" style="font-size:40px;line-height:40px;" >&nbsp;</td>
</tr>
<tr >
<td align="center" class="center-text">
<img style="width:190px;border:0px;display: inline!important;" src="" width="190" border="0" alt="intro">
</td>
</tr>
<tr >
<td height="40" style="font-size:40px;line-height:40px;" >&nbsp;</td>
</tr>
<tr >
<td class="center-text" align="center" style="font-family:'Roboto Slab',Arial,Helvetica,sans-serif;font-size:42px;line-height:52px;font-weight:400;font-style:normal;color:#FFFFFF;text-decoration:none;letter-spacing:0px;">
<div >
{{ 'Thanks for your payment' }}
</div>
</td>
</tr>
<tr >
<td height="10" style="font-size:10px;line-height:10px;" >&nbsp;</td>
</tr>
<tr >
<td class="center-text" align="center" style="font-family:'Roboto Slab',Arial,Helvetica,sans-serif;font-size:26px;line-height:36px;font-weight:400;font-style:normal;color:#d7e057;text-decoration:none;letter-spacing:0px;">
<div >
{{ 'Attached your receipt' }}.
</div>
</td>
</tr>
<tr >
<td height="20" style="font-size:20px;line-height:20px;" >&nbsp;</td>
</tr>
<tr >
<td class="center-text" align="center" style="font-family:'Poppins',Arial,Helvetica,sans-serif;font-size:16px;line-height:26px;font-weight:300;font-style:normal;color:#FFFFFF;text-decoration:none;letter-spacing:0px;">
<div >
{{ 'Thank you paragraph' }}
</div>
</td>
</tr>
<tr>
<td height="40" style="font-size:40px;line-height:40px;" >&nbsp;</td>
</tr>
</table>
<!-- Content -->
</td>
</tr>
</table>
<table border="0" align="center" cellpadding="0" cellspacing="0" role="presentation" width="100%" style="width:100%;max-width:100%;" >
<!-- lotus-arrow-divider -->
<tr >
<td align="center" bgcolor="#FFFFFF">
<img style="width:50px;border:0px;display: inline!important;" src="" width="50" border="0" alt="arrow">
</td>
</tr>
</table>
<table border="0" align="center" cellpadding="0" cellspacing="0" role="presentation" width="100%" style="width:100%;max-width:100%;" >
<!-- lotus-content-18 -->
<tr>
<td align="center" bgcolor="#FFFFFF" class="container-padding">
<!-- Content -->
<table border="0" align="center" cellpadding="0" cellspacing="0" role="presentation" class="row" width="580" style="width:580px;max-width:580px;">
<tr>
<td height="40" style="font-size:40px;line-height:40px;" >&nbsp;</td>
</tr>
<tr >
<td align="center" bgcolor="#f4f5fa">
<!-- Content -->
<table border="0" align="center" cellpadding="0" cellspacing="0" role="presentation" class="row" width="480" style="width:480px;max-width:480px;">
<tr>
<td height="40" style="font-size:40px;line-height:40px;">&nbsp;</td>
</tr>
<tr>
<td align="center">
<!--[if (gte mso 9)|(IE)]><table border="0" cellpadding="0" cellspacing="0"><tr><td><![endif]-->
<!-- Column -->
<table border="0" align="left" cellpadding="0" cellspacing="0" role="presentation" class="row" width="225" style="width:225px;max-width:225px;">
<tr >
<td class="center-text" align="left" style="font-family:'Roboto Slab',Arial,Helvetica,sans-serif;font-size:20px;line-height:26px;font-weight:400;font-style:normal;color:#343e9e;text-decoration:none;letter-spacing:0px;">
<div >
{{ 90000000 }}:
</div>
</td>
</tr>
<tr >
<td height="10" style="font-size:10px;line-height:10px;">&nbsp;</td>
</tr>
<tr >
<td class="center-text" align="left" style="font-family:'Poppins',Arial,Helvetica,sans-serif;font-size:16px;line-height:24px;font-weight:400;font-style:normal;color:#282828;text-decoration:none;letter-spacing:0px;">
<div >
{{ 90000000}}
</div>
</td>
</tr>
</table>
<!-- Column -->
<!--[if (gte mso 9)|(IE)]></td><td><![endif]-->
<!-- gap -->
<table border="0" align="left" cellpadding="0" cellspacing="0" role="presentation" width="30" style="width:30px;max-width:30px;">
<tr>
<td height="20" style="font-size:20px;line-height:20px;">&nbsp;</td>
</tr>
</table>
<!-- gap -->
<!--[if (gte mso 9)|(IE)]></td><td><![endif]-->
<!-- Column -->
<table border="0" align="left" cellpadding="0" cellspacing="0" role="presentation" class="row" width="225" style="width:225px;max-width:225px;">
<tr >
<td class="center-text" align="left" style="font-family:'Roboto Slab',Arial,Helvetica,sans-serif;font-size:20px;line-height:26px;font-weight:400;font-style:normal;color:#343e9e;text-decoration:none;letter-spacing:0px;">
<div >
{{ 90000000 }}:
</div>
</td>
</tr>
<tr >
<td height="10" style="font-size:10px;line-height:10px;">&nbsp;</td>
</tr>
<tr >
<td class="center-text" align="left" style="font-family:'Poppins',Arial,Helvetica,sans-serif;font-size:16px;line-height:24px;font-weight:400;font-style:normal;color:#282828;text-decoration:none;letter-spacing:0px;">
<div >
{{ 82323232 }}
</div>
</td>
</tr>
</table>
<!-- Column -->
<!--[if (gte mso 9)|(IE)]></td></tr></table><![endif]-->
</td>
</tr>
<tr>
<td height="40" style="font-size:40px;line-height:40px;">&nbsp;</td>
</tr>
</table>
<!-- Content -->
</td>
</tr>
<tr >
<td height="30" style="font-size:30px;line-height:30px;" >&nbsp;</td>
</tr>
<tr >
<td align="center">
<!-- Paragraphs -->
<table border="0" cellspacing="0" cellpadding="0" role="presentation" align="center" class="row" width="480" style="width:480px;max-width:480px;">
<tr>
<td class="center-text" align="center" style="font-family:'Poppins',Arial,Helvetica,sans-serif;font-size:14px;line-height:26px;font-weight:400;font-style:italic;color:#6e6e6e;text-decoration:none;letter-spacing:0px;">
<div >
({{ __('If you have any questions or feedback, just') }} <a href="" style="color:#ed6e7a;text-decoration: underline;">{{ __('reply to this email') }}</a>)
</div>
</td>
</tr>
</table>
<!-- Paragraphs -->
</td>
</tr>
<tr >
<td height="30" style="font-size:30px;line-height:30px;" >&nbsp;</td>
</tr>
<tr >
<td align="center">
<!-- Buttons -->
<table border="0" cellspacing="0" cellpadding="0" role="presentation" align="center" class="center-float">
<tr>
<td align="center" bgcolor="#d6df58" style="border-radius: 6px;">
<!--[if (gte mso 9)|(IE)]>
<table border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td align="center" width="50"></td>
<td align="center" height="50" style="height:50px;">
<![endif]-->
<a href="" target="_blank" style="font-family:'Roboto Slab',Arial,Helvetica,sans-serif;font-size:16px;line-height:19px;font-weight:700;font-style:normal;color:#000000;text-decoration:none;letter-spacing:0px;padding: 20px 50px 20px 50px;display: inline-block;"><span>{{ "download now" }}</span></a>
<!--[if (gte mso 9)|(IE)]>
</td>
<td align="center" width="50"></td>
</tr>
</table>
<![endif]-->
</td>
</tr>
</table>
<!-- Buttons -->
</td>
</tr>
<tr>
<td height="40" style="font-size:40px;line-height:40px;" >&nbsp;</td>
</tr>
</table>
<!-- Content -->
</td>
</tr>
</table>
<table border="0" align="center" cellpadding="0" cellspacing="0" role="presentation" width="100%" style="width:100%;max-width:100%;" >
<!-- lotus-footer-18 -->
<tr>
<td align="center" bgcolor="#f0f0f0" class="container-padding">
<!-- Content -->
<table border="0" align="center" cellpadding="0" cellspacing="0" role="presentation" class="row" width="580" style="width:580px;max-width:580px;">
<tr>
<td height="50" style="font-size:50px;line-height:50px;" >&nbsp;</td>
</tr>
<tr >
<td align="center">
<!-- Social Icons -->
<table border="0" align="center" cellpadding="0" cellspacing="0" role="presentation" width="100%" style="width:100%;max-width:100%;">
<tr>
<td align="center">
<table border="0" align="center" cellpadding="0" cellspacing="0" role="presentation">
<tr>
<td class="rwd-on-mobile" align="center" valign="middle" height="36" style="height: 36px;">
<table border="0" align="center" cellpadding="0" cellspacing="0" role="presentation">
<tr>
<td width="10"></td>
<td align="center">
<a href=""><img style="width:36px;border:0px;display: inline!important;" src="" width="36" border="0" alt="icon"></a>
</td>
<td width="10"></td>
</tr>
</table>
</td>
<td class="rwd-on-mobile" align="center" valign="middle" height="36" style="height: 36px;">
<table border="0" align="center" cellpadding="0" cellspacing="0" role="presentation">
<tr>
<td width="10"></td>
<td align="center">
<a href=""><img style="width:36px;border:0px;display: inline!important;" src="" width="36" border="0" alt="icon"></a>
</td>
<td width="10"></td>
</tr>
</table>
</td>
<td class="rwd-on-mobile" align="center" valign="middle" height="36" style="height: 36px;">
<table border="0" align="center" cellpadding="0" cellspacing="0" role="presentation">
<tr>
<td width="10"></td>
<td align="center">
<a href=""><img style="width:36px;border:0px;display: inline!important;" src="" width="36" border="0" alt="icon"></a>
</td>
<td width="10"></td>
</tr>
</table>
</td>
<td class="rwd-on-mobile" align="center" valign="middle" height="36" style="height: 36px;">
<table border="0" align="center" cellpadding="0" cellspacing="0" role="presentation">
<tr>
<td width="10"></td>
<td align="center">
<a href=""><img style="width:36px;border:0px;display: inline!important;" src="" width="36" border="0" alt="icon"></a>
</td>
<td width="10"></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!-- Social Icons -->
</td>
</tr>
<tr >
<td height="30" style="font-size:30px;line-height:30px;" >&nbsp;</td>
</tr>
<tr >
<td class="center-text" align="center" style="font-family:'Poppins',Arial,Helvetica,sans-serif;font-size:14px;line-height:24px;font-weight:400;font-style:normal;color:#6e6e6e;text-decoration:none;letter-spacing:0px;">
<div >
{{ "address" }}
</div>
</td>
</tr>
<tr >
<td class="center-text" align="center" style="font-family:'Poppins',Arial,Helvetica,sans-serif;font-size:14px;line-height:24px;font-weight:400;font-style:normal;color:#6e6e6e;text-decoration:none;letter-spacing:0px;">
<a href="tel:23332333" style="color:#6e6e6e;"><span>{{ 2333232 }}</span></a>
</td>
</tr>
<tr >
<td class="center-text" align="center" style="font-family:'Poppins',Arial,Helvetica,sans-serif;font-size:14px;line-height:24px;font-weight:400;font-style:normal;color:#6e6e6e;text-decoration:none;letter-spacing:0px;">
<a href="" style="color:#6e6e6e;"><span>Email</span></a> - <a href="{{ url('/') }}" style="color:#6e6e6e;"><span>{{ url('/') }}</span></a>
</td>
</tr>
<tr>
<td height="30" style="font-size:30px;line-height:30px;" >&nbsp;</td>
</tr>
<tr >
<td align="center">
<!-- Buttons -->
<table border="0" align="center" cellpadding="0" cellspacing="0" role="presentation" class="row" width="100%" style="width:100%;max-width:100%;">
<tr>
<td align="center">
<!-- column -->
<table border="0" align="center" cellpadding="0" cellspacing="0" role="presentation">
<tr >
<td align="center">
<a href=""><img style="display:block;width:100%;max-width:117px;border:0px;" width="117" src="" border="0" alt="icon"></a>
</td>
<td width="10" style="width: 10px;"></td>
<td align="center">
<a href=""><img style="display:block;width:100%;max-width:117px;border:0px;" width="117" src="" border="0" alt="icon"></a>
</td>
</tr>
</table>
<!-- column -->
</td>
</tr>
</table>
<!-- Buttons -->
</td>
</tr>
<tr >
<td height="30" style="font-size:30px;line-height:30px;" >&nbsp;</td>
</tr>
<tr >
<td align="center">
</td>
</tr>
<tr>
<td height="50" style="font-size:50px;line-height:50px;" >&nbsp;</td>
</tr>
</table>
<!-- Content -->
</td>
</tr>
</table>
</td>
</tr><!-- Outer-Table -->
</table>
</body>
</html>

View File

@@ -59,6 +59,11 @@
<div class="x_content"> <div class="x_content">
<div class="row tile_count"> <div class="row tile_count">
<div class="well">
<h3>Click Documents Repository</h3>
<p>Access the document repository if you need to perform deep search from individual documents</p>
<a href="http://206.225.84.201:8000" class="btn btn-warning btn" target="_blank">Open Document Repository</a>
</div>
<h4 class="green">General Documents Overview</h4> <h4 class="green">General Documents Overview</h4>
@foreach($document_arr as $row) @foreach($document_arr as $row)
<div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count"> <div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count">

View File

@@ -113,7 +113,7 @@
<!-- footer content --> <!-- footer content -->
<footer> <footer>
<div class="pull-right"> <div class="pull-right" style="">
Click Mobile | <a href="https://click-mobile.com">Main Website</a> Click Mobile | <a href="https://click-mobile.com">Main Website</a>
</div> </div>
<div class="clearfix"></div> <div class="clearfix"></div>

View File

@@ -29,7 +29,9 @@
<!-- <li> --> <!-- <li> -->
<li><a><i class="fa fa-table"></i>Reports <span class="fa fa-chevron-down"></span></a> <li><a><i class="fa fa-table"></i>Reports <span class="fa fa-chevron-down"></span></a>
<ul class="nav child_menu"> <ul class="nav child_menu">
<li><a href="{!! url('reports/overview') !!}">Overview</a></li>
<li><a href="{!! url('clientpaymentreports') !!}">Client Payments</a></li> <li><a href="{!! url('clientpaymentreports') !!}">Client Payments</a></li>
<li><a href="{!! url('reports/clientsbyservice') !!}">VAS Clients</a></li>
<li><a href="{!! url('mnopaymentreports') !!}">MNO Payments</a></li> <li><a href="{!! url('mnopaymentreports') !!}">MNO Payments</a></li>
<li><a href="{!! url('reports/recentclients') !!}">Recent Clients</a></li> <li><a href="{!! url('reports/recentclients') !!}">Recent Clients</a></li>
<li><a href="{!! url('reports/useractivities') !!}">User Activities</a></li> <li><a href="{!! url('reports/useractivities') !!}">User Activities</a></li>
@@ -54,6 +56,7 @@
<!-- </li> --> <!-- </li> -->
<li><a href="{!! url('clickapps') !!}"><i class="fa fa-code"></i> Click Apps </a></li> <li><a href="{!! url('clickapps') !!}"><i class="fa fa-code"></i> Click Apps </a></li>
<li><a href="{!! url('infrastructure/vpn') !!}"><i class="fa fa-shield"></i> VPN Configs </a></li>
<li><a href="{!! url('ussdclients') !!}"><i class="fa fa-money"></i> USSD Clients Payments</a></li> <li><a href="{!! url('ussdclients') !!}"><i class="fa fa-money"></i> USSD Clients Payments</a></li>
<li><a href="{!! url('staffmembers') !!}"><i class="fa fa-users"></i> Team Members</a></li> <li><a href="{!! url('staffmembers') !!}"><i class="fa fa-users"></i> Team Members</a></li>
<!-- </li> --> <!-- </li> -->
@@ -61,6 +64,7 @@
<li><a><i class="fa fa-sitemap"></i>Infrastructure <span class="fa fa-chevron-down"></span></a> <li><a><i class="fa fa-sitemap"></i>Infrastructure <span class="fa fa-chevron-down"></span></a>
<ul class="nav child_menu"> <ul class="nav child_menu">
<li><a href="{!! url('infrastructure/servers') !!}">Overview</a></li> <li><a href="{!! url('infrastructure/servers') !!}">Overview</a></li>
<li><a href="{!! url('infrastructure/vpn') !!}">VPN Configs</a></li>
<li><a href="{!! url('infrastructure/server-list') !!}">Server List </a></li> <li><a href="{!! url('infrastructure/server-list') !!}">Server List </a></li>
</ul> </ul>

View File

@@ -1,3 +1,7 @@
<?php
//this will be reviewed later to make the staff_member_id global
$staff_member_id = session('current_user.id');
?>
<div class="top_nav"> <div class="top_nav">
<div class="nav_menu"> <div class="nav_menu">
<nav> <nav>
@@ -12,7 +16,7 @@
<span class=" fa fa-angle-down"></span> <span class=" fa fa-angle-down"></span>
</a> </a>
<ul class="dropdown-menu dropdown-usermenu pull-right"> <ul class="dropdown-menu dropdown-usermenu pull-right">
<li><a href="javascript:;"> Profile</a></li> <li><a href="{{ url('staffmembers/profile', $staff_member_id) }}"> Profile</a></li>
<!-- <li> <!-- <li>
<a href="javascript:;"> <a href="javascript:;">
<span class="badge bg-red pull-right">50%</span> <span class="badge bg-red pull-right">50%</span>

View File

@@ -0,0 +1,146 @@
@extends('layouts.master')
@section('page_title')
@if(isset($page_title))
{{ $page_title }}
@endif
@endsection
@section('css')
<link href="{!! url('public/assets/vendors/tabulator/css/bootstrap/tabulator_bootstrap.css') !!}" type="text/css" rel="stylesheet">
@endsection
@section('content')
<div class="">
<div class="page-title">
<div class="title_left">
<div class="title_left">
<ol class="breadcrumb">
<li><a href="{!! url('dashboard') !!}">Dashboard</a></li>
<li class=""><a href="{!! url('reports/overview') !!}"> Reports</a></li>
<li class="active">VAS Clients</li>
</ol>
</div>
</div>
<div class="title_right">
<div class="row">
<form method="GET" action="{!! url('reports/clientsbyservice') !!}">
<div class="col-md-5 col-sm-5 col-xs-12 form-group">
<div style="margin-top:1px; margin-right:-90px;" class="top_search">
</div>
</div>
<div class="col-md-5 col-sm-5 col-xs-12 form-group pull-right top_search" style="margin-top: -2px;">
<div class="input-group">
<input type="text" name="keyword" class="form-control" id="keywordField" placeholder="Keyword here...">
<span class="input-group-btn">
<button type="submit" class="btn btn-primary" style="color: #fff;" type="button">Go!</button>
</span>
</div>
</div>
</form>
</div>
</div>
</div>
<div class="clearfix"></div>
<div class="row">
@include('commons.notifications')
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="x_panel">
<div class="x_title">
<h2> Reports - VAS Clients </h2>
<div class="clearfix"></div>
</div>
<div class="x_content">
<div>
<button id="clinetbyservice-report-download-xlsx" class="btn btn-success btn-sm"><i class="fa fa-file-excel-o"></i> Download XLSX</button>
<button id="clinetbyservice-report-download-pdf" class="btn btn-danger btn-sm"><i class="fa fa-file-pdf-o"></i> Download PDF</button>
</div>
<div id="clientsByServiceTable"></div>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('javascript')
<script src="{!! url('public/assets/vendors/tabulator/js/tabulator.js') !!}"></script>
<script type="text/javascript" src="{!! url('public/assets/vendors/tabulator/js/xlsx.full.min.js') !!}"></script>
<script type="text/javascript" src="{!! url('public/assets/vendors/tabulator/js/jspdf.min.js') !!}"></script>
<script type="text/javascript" src="{!! url('public/assets/vendors/tabulator/js/jspdf.plugin.autotable.js') !!}"></script>
<script type="text/javascript">
$(document).ready(function(){
function link(cell, formatterParams){
var url = cell.getValue();
var rowID = cell.getData().id
//return "<a href='"+ base_url + "/clientpaymentreports/"+rowID+"' class='btn btn-link'>"+url+"</a>";
//return '<a href="'+ base_url + '"/clients/"'+rowID+'" class="btn btn-link">'+ url +'</a>';
}
var table = new Tabulator("#clientsByServiceTable", {
ajaxURL: "clientsbyservice/all",
paginationSize: 30,
layout: "fitColumns",
pagination: "local",
selectable: false,
printAsHtml: true,
ajaxLoaderLoading: $('#logo_spinner').html(),
columns: [
{
title: "Client Name",
field: "name",
sorter: "string",
},
{
title: "Services",
field: "services",
sorter: "string",
},
{
title: "Status",
field: "status",
sorter: "string",
},
{
title: "Account Manager",
field: "accountMgr",
sorter: "string",
},
{
title: "Country",
field: "country",
sorter: "string",
},
{
title: "Date Added",
field: "created_at",
sorter: "datetime",
}
],
rowClick:function(e, row){
var userID = row.getData().id;
//$('#userEditModal').modal('show');
},
});
document.getElementById("clinetbyservice-report-download-xlsx").addEventListener("click", function(){
table.download("xlsx", "clinetbyservice-report.xlsx", {sheetName:"Sheet 1"});
});
//trigger download of data.pdf file
document.getElementById("clinetbyservice-report-download-pdf").addEventListener("click", function(){
table.download("pdf", "clinetbyservice-report-list.pdf", {
orientation:"portrait", //set page orientation to portrait
title:"Click Mobile ERP - List of Clients by Service", //add title to report
});
});
$('#keywordField').on('keyup', function(){
var keyword = $(this).val();
table.setData("clientsbyservice/all?keyword=" + keyword);
});
});
</script>
@endsection

View File

@@ -14,7 +14,7 @@
<div class="title_left"> <div class="title_left">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li><a href="{!! url('dashboard') !!}">Dashboard</a></li> <li><a href="{!! url('dashboard') !!}">Dashboard</a></li>
<!-- <li class=""><a href=""> Reports</a></li> --> <li class=""><a href="{!! url('reports/overview') !!}"> Reports</a></li>
<li class="active">Client Payments</li> <li class="active">Client Payments</li>
</ol> </ol>
</div> </div>

View File

@@ -14,7 +14,7 @@
<div class="title_left"> <div class="title_left">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li><a href="{!! url('dashboard') !!}">Dashboard</a></li> <li><a href="{!! url('dashboard') !!}">Dashboard</a></li>
<!-- <li class=""><a href=""> Reports</a></li> --> <li class=""><a href="{!! url('reports/overview') !!}"> Reports</a></li>
<li class="active">MNO Payments</li> <li class="active">MNO Payments</li>
</ol> </ol>
</div> </div>

View File

@@ -0,0 +1,144 @@
@extends('layouts.master')
@section('page_title')
@if(isset($page_title))
{{ $page_title }}
@endif
@endsection
@section('css')
<link href="{!! url('public/assets/vendors/tabulator/css/bootstrap/tabulator_bootstrap.css') !!}" type="text/css" rel="stylesheet">
@endsection
@section('content')
<div class="">
<div class="page-title">
<div class="title_left">
<div class="title_left">
<ol class="breadcrumb">
<li><a href="{!! url('dashboard') !!}">Dashboard</a></li>
<li class="active">Reports</li>
</ol>
</div>
</div>
<div class="title_right">
<div class="row">
<form method="GET" action="{!! url('generaldocuments') !!}">
<div class="col-md-5 col-sm-5 col-xs-12 form-group">
<div style="margin-top:1px; margin-right:-90px;" class="top_search">
</div>
</div>
<div class="col-md-5 col-sm-5 col-xs-12 form-group pull-right top_search" style="margin-top: -2px;">
<div class="input-group">
<input type="text" name="keyword" class="form-control" id="keywordField" placeholder="Keyword here...">
<span class="input-group-btn">
<button type="submit" class="btn btn-primary" style="color: #fff;" type="button">Go!</button>
</span>
</div>
</div>
</form>
</div>
<div class="row">
<div class="col-sm-12">
<div class="pull-right"></div>
</div>
</div>
</div>
</div>
<div class="clearfix"></div>
<div class="row">
@include('commons.notifications')
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="x_panel">
<div class="x_title">
<h2> All Reports </h2>
<div class="clearfix"></div>
</div>
<div class="x_content">
<div class="row tile_count">
<h4 class="green">General Documents Overview</h4>
<div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count">
<span class="count_top"><i class="fa fa-list"></i>
<a href="{!! url('reports/recentclients') !!}">Recent Clients</a>
</span>
<div class="count green">
<a href="">
<img src="{{ url('public/assets/img/folder-icon.png') }}" width="40px"></a>
<a href="{!! url('reports/recentclients') !!}"> 400</a>
</div>
<!-- <span class="count_bottom"><i class="green">4% </i> From last Week</span> -->
</div>
<div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count">
<span class="count_top"><i class="fa fa-list"></i>
<a href="{!! url('reports/clientsbyservice') !!}">VAS Clients</a>
</span>
<div class="count green">
<a href="">
<img src="{{ url('public/assets/img/folder-icon.png') }}" width="40px"></a>
<a href="{!! url('reports/clientsbyservice') !!}"> 923</a>
</div>
</div>
<div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count">
<span class="count_top"><i class="fa fa-list"></i>
<a href="{!! url('clientpaymentreports') !!}">Client Payments</a>
</span>
<div class="count green">
<a href="">
<img src="{{ url('public/assets/img/folder-icon.png') }}" width="40px"></a>
<a href="{!! url('clientpaymentreports') !!}"> 6,123</a>
</div>
<!-- <span class="count_bottom"><i class="green">4% </i> From last Week</span> -->
</div>
<div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count">
<span class="count_top"><i class="fa fa-list"></i>
<a href="{!! url('clientpaymentreports') !!}">MNO Payments</a>
</span>
<div class="count green">
<a href="{!! url('mnopaymentreports') !!}">
<img src="" width="40px"></a>
<a href="{!! url('mnopaymentreports') !!}"> 8,103</a>
</div>
</div>
<div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count">
<span class="count_top"><i class="fa fa-list"></i>
<a href="{!! url('clientpaymentreports') !!}">User Activities</a>
</span>
<div class="count green">
<a href="{!! url('mnopaymentreports') !!}">
<img src="{{ url('public/assets/img/folder-icon.png') }}" width="40px"></a>
<a href="{!! url('reports/useractivities') !!}"> 2,323</a>
</div>
<!-- <span class="count_bottom"><i class="green">4% </i> From last Week</span> -->
</div>
</div>
<div class="row">
<div class="col-md-12" style="margin-top: 50px;">
<!-- <a href="{!! url('generaldocuments/create') !!}" class="btn btn-primary btn-lg btn-block"> <i class="fa fa-cloud-upload"></i> Upload New Documents</a> -->
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('javascript')
<script type="text/javascript">
$(document).ready(function(){
});
</script>
@endsection

View File

@@ -14,6 +14,7 @@
<div class="title_left"> <div class="title_left">
<ol class="breadcrumb"> <ol class="breadcrumb">
<li><a href="{!! url('dashboard') !!}">Dashboard</a></li> <li><a href="{!! url('dashboard') !!}">Dashboard</a></li>
<li class=""><a href="{!! url('reports/overview') !!}"> Reports</a></li>
<li class="active">Recent Clients</li> <li class="active">Recent Clients</li>
</ol> </ol>
</div> </div>
@@ -52,17 +53,15 @@
<div class="col-md-12 col-sm-12 col-xs-12"> <div class="col-md-12 col-sm-12 col-xs-12">
<div class="x_panel"> <div class="x_panel">
<div class="x_title"> <div class="x_title">
<h2> Recent Clients </h2> <h2> Recent Clients (This Week)</h2>
<div class="pull-right"></div> <div class="pull-right"></div>
<div class="clearfix"></div> <div class="clearfix"></div>
</div> </div>
<div class="x_content"> <div class="x_content">
<div> <div>
<button id="clients-download-xlsx" class="btn btn-success btn-sm"><i class="fa fa-file-excel-o"></i> Download XLSX</button> <button id="clients-download-xlsx" class="btn btn-success btn-sm"><i class="fa fa-file-excel-o"></i> Download XLSX</button>
<button id="clients-download-pdf" class="btn btn-danger btn-sm"><i class="fa fa-file-pdf-o"></i> Download PDF</button> <button id="clients-download-pdf" class="btn btn-danger btn-sm"><i class="fa fa-file-pdf-o"></i> Download PDF</button>
</div> </div>
<div id="recentClientsTable"></div> <div id="recentClientsTable"></div>
</div> </div>
</div> </div>

View File

@@ -0,0 +1,149 @@
@extends('layouts.master')
@section('page_title')
@if(isset($page_title))
{{ $page_title }}
@endif
@endsection
@section('css')
<link href="{!! url('public/assets/vendors/tabulator/css/bootstrap/tabulator_bootstrap.css') !!}" type="text/css" rel="stylesheet">
@endsection
@section('content')
<div class="">
<div class="page-title">
<div class="title_left">
<div class="title_left">
<ol class="breadcrumb">
<li><a href="{!! url('dashboard') !!}">Dashboard</a></li>
<li class=""><a href="{!! url('reports/overview') !!}"> Reports</a></li>
<li class="active">User Activities</li>
</ol>
</div>
</div>
<div class="title_right">
<div class="row">
<form method="GET" action="{!! url('clients') !!}">
<div class="col-md-5 col-sm-5 col-xs-12 form-group">
<div style="margin-top:1px; margin-right:-90px;" class="top_search">
</div>
</div>
<div class="col-md-5 col-sm-5 col-xs-12 form-group pull-right top_search" style="margin-top: -2px;">
<div class="input-group">
<input type="text" name="keyword" class="form-control" id="keywordField" placeholder="Keyword here...">
<span class="input-group-btn">
<button type="submit" class="btn btn-primary" style="color: #fff;" type="button">Go!</button>
</span>
</div>
</div>
</form>
</div>
<div class="row">
<div class="col-sm-12">
<div class="pull-right">
<!-- <a href="{!! url('clients') !!}" class="btn btn-warning btn-xs"><i class="fa fa-refresh"></i> Reset Filter</a> -->
</div>
</div>
</div>
</div>
</div>
<div class="clearfix"></div>
<div class="row">
@include('commons.notifications')
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="x_panel">
<div class="x_title">
<h2> User Activities </h2>
<div class="pull-right"></div>
<div class="clearfix"></div>
</div>
<div class="x_content">
<div>
<button id="useractivities-download-xlsx" class="btn btn-success btn-sm"><i class="fa fa-file-excel-o"></i> Download XLSX</button>
<button id="useractivities-download-pdf" class="btn btn-danger btn-sm"><i class="fa fa-file-pdf-o"></i> Download PDF</button>
</div>
<div id="userActivitiesTable"></div>
</div>
</div>
</div>
</div>
</div>
@endsection
@section('javascript')
<script src="{!! url('public/assets/vendors/tabulator/js/tabulator.js') !!}"></script>
<script type="text/javascript" src="{!! url('public/assets/vendors/tabulator/js/xlsx.full.min.js') !!}"></script>
<script type="text/javascript" src="{!! url('public/assets/vendors/tabulator/js/jspdf.min.js') !!}"></script>
<script type="text/javascript" src="{!! url('public/assets/vendors/tabulator/js/jspdf.plugin.autotable.js') !!}"></script>
<script type="text/javascript">
$(document).ready(function(){
function link(cell, formatterParams){
var url = cell.getValue();
var rowID = cell.getData().id
return "<a href='"+ base_url + "/useractivities/"+rowID+"' class='btn btn-link'>"+url+"</a>";
}
var table = new Tabulator("#userActivitiesTable", {
ajaxURL: "useractivities/all",
paginationSize: 15,
paginationSizeSelector: true,
paginationSizeSelector:[5, 10, 25, 50, 100, 200],
layout: "fitColumns",
pagination: "local",
selectable: false,
printAsHtml: true,
ajaxLoaderLoading: $('#logo_spinner').html(),
columns: [
{
title: "User",
field: "name",
sorter: "string",
formatter:link,
},
{
title: "Activity",
field: "content",
sorter: "string",
},
{
title: "IP",
field: "ip_address",
sorter: "string",
},
{
title: "Date Added",
field: "created_at",
sorter: "date",
}
],
rowClick:function(e, row){
var userID = row.getData().id;
//$('#userEditModal').modal('show');
},
});
document.getElementById("useractivities-download-xlsx").addEventListener("click", function(){
table.download("xlsx", "useractivities-list.xlsx", {sheetName:"Sheet 1"});
});
//trigger download of data.pdf file
document.getElementById("useractivities-download-pdf").addEventListener("click", function(){
table.download("pdf", "useractivities-list.pdf", {
orientation:"portrait", //set page orientation to portrait
title:"Click Mobile - User Activities", //add title to report
});
});
$('#keywordField').on('keyup', function(){
console.log('up');
var keyword = $(this).val();
table.setData("useractivities/all?keyword=" + keyword);
});
});
</script>
@endsection

View File

@@ -52,9 +52,16 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="network">Network</label> <label class="control-label col-md-3 col-sm-3 col-xs-12" for="directMno">Direct MNO</label>
<div class="col-md-6 col-sm-6 col-xs-12 {{ $errors->has('direct_mno') ? 'has-error' : ''}}">
{!! Form::select('direct_mno', $direct_mno_arr ,old('direct_mno'), ['class' => 'form-control col-md-7 col-xs-12', 'placeholder'=>'Select one ' , 'id' => 'directMno', 'required' => 'true']) !!}
{!! $errors->first('direct_mno', '<p class="help-block">:message</p>') !!}
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="networkName">Network</label>
<div class="col-md-6 col-sm-6 col-xs-12 {{ $errors->has('network') ? 'has-error' : ''}}"> <div class="col-md-6 col-sm-6 col-xs-12 {{ $errors->has('network') ? 'has-error' : ''}}">
{!! Form::select('network_id', $network_arr, old('network_id'), ['class' => 'form-control col-md-7 col-xs-12', 'placeholder'=>'Select Network ' , 'id' => 'network', 'required' => 'true']) !!} {!! Form::select('network_id', $network_arr, old('network_id'), ['class' => 'form-control col-md-7 col-xs-12', 'id' => 'networkName', 'required' => 'true']) !!}
{!! $errors->first('network', '<p class="help-block">:message</p>') !!} {!! $errors->first('network', '<p class="help-block">:message</p>') !!}
</div> </div>
</div> </div>
@@ -85,7 +92,9 @@
@endsection @endsection
@section('javascript') @section('javascript')
<script type="text/javascript" src="{!! url('public/assets/js/senderid.js') !!}"></script>
<script type="text/javascript"> <script type="text/javascript">
$(function(){ $(function(){
$('select').select2(); $('select').select2();

View File

@@ -58,6 +58,10 @@
</div> </div>
<div class="x_content"> <div class="x_content">
<div>
<button id="senderid-download-xlsx" class="btn btn-success btn-sm"><i class="fa fa-file-excel-o"></i> Download XLSX</button>
<button id="senderid-download-pdf" class="btn btn-danger btn-sm"><i class="fa fa-file-pdf-o"></i> Download PDF</button>
</div>
<div id="senderIdsTable"></div> <div id="senderIdsTable"></div>
</div> </div>
</div> </div>
@@ -69,6 +73,10 @@
@section('javascript') @section('javascript')
<script src="{!! url('public/assets/vendors/tabulator/js/tabulator.js') !!}"></script> <script src="{!! url('public/assets/vendors/tabulator/js/tabulator.js') !!}"></script>
<script type="text/javascript" src="{!! url('public/assets/vendors/tabulator/js/xlsx.full.min.js') !!}"></script>
<script type="text/javascript" src="{!! url('public/assets/vendors/tabulator/js/jspdf.min.js') !!}"></script>
<script type="text/javascript" src="{!! url('public/assets/vendors/tabulator/js/jspdf.plugin.autotable.js') !!}"></script>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function(){ $(document).ready(function(){
function link(cell, formatterParams){ function link(cell, formatterParams){
@@ -104,11 +112,6 @@
sorter: "string", sorter: "string",
formatter:link, formatter:link,
}, },
{
title: "Country",
field: "country",
sorter: "string",
},
{ {
title: "Sender ID", title: "Sender ID",
field: "senderid", field: "senderid",
@@ -121,21 +124,32 @@
sorter: "string", sorter: "string",
formatter: statusDesign, formatter: statusDesign,
}, },
{
title: "Direct MNO",
field: "direct_mno",
sorter: "string",
},
{
title: "Country",
field: "country",
sorter: "string",
},
{ {
title: "Network", title: "Network",
field: "networkName", field: "networkName",
sorter: "string", sorter: "string",
}, },
{ {
title: "Created By", title: "Created By",
field: "createdBy", field: "createdBy",
sorter: "string", sorter: "string",
}, },
{ // {
title: "Last Modified By", // title: "Last Modified By",
field: "modifiedBy", // field: "modifiedBy",
sorter: "string", // sorter: "string",
} // }
], ],
rowClick:function(e, row){ rowClick:function(e, row){
@@ -144,7 +158,16 @@
//$('#userEditModal').modal('show'); //$('#userEditModal').modal('show');
}, },
}); });
document.getElementById("senderid-download-xlsx").addEventListener("click", function(){
table.download("xlsx", "senderid-list.xlsx", {sheetName:"Sheet 1"});
});
//trigger download of data.pdf file
document.getElementById("senderid-download-pdf").addEventListener("click", function(){
table.download("pdf", "client-list.pdf", {
orientation:"portrait", //set page orientation to portrait
title:"Click Mobile - Sender ID", //add title to report
});
});
$('#keywordField').on('keyup', function(){ $('#keywordField').on('keyup', function(){
console.log('up'); console.log('up');
var keyword = $(this).val(); var keyword = $(this).val();

View File

@@ -8,6 +8,7 @@
<link href="{!! url('public/assets/vendors/tabulator/css/bootstrap/tabulator_bootstrap.css') !!}" type="text/css" rel="stylesheet"> <link href="{!! url('public/assets/vendors/tabulator/css/bootstrap/tabulator_bootstrap.css') !!}" type="text/css" rel="stylesheet">
@endsection @endsection
@section('content') @section('content')
@include('client.partials.edit-shortcodes')
<div class=""> <div class="">
<div class="page-title"> <div class="page-title">
<div class="title_left"> <div class="title_left">
@@ -54,7 +55,7 @@
</div> </div>
</div> </div>
<div class="col-md-12 form-group pull-left top_search" style="margin-top: -2px;"> <div class="col-md-12 form-group pull-left top_search" style="margin-top: -2px;">
<div class="input-group bg-info"> <div class="input-group bg-danger">
<input type="text" name="keyword" class="form-control" id="keywordField" placeholder="Keyword here..."> <input type="text" name="keyword" class="form-control" id="keywordField" placeholder="Keyword here...">
<span class="input-group-btn"> <span class="input-group-btn">
<!-- <button type="submit" class="btn btn-primary" style="color: #fff;" type="button">Go!</button> --> <!-- <button type="submit" class="btn btn-primary" style="color: #fff;" type="button">Go!</button> -->
@@ -89,16 +90,100 @@
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function(){ $(document).ready(function(){
function link(cell, formatterParams){ $('#shortCodeEditForm').submit(function(evt){
var url = cell.getValue(); evt.preventDefault();
var rowID = cell.getData().id var formData = new FormData($(this)[0]);
return "<a href='"+ base_url + "/smsshortcodes/"+rowID+"' class='btn btn-link'>"+url+"</a>"; $.ajax({
//return '<a href="'+ base_url + '"/clients/"'+rowID+'" class="btn btn-link">'+ url +'</a>'; type: "POST",
url: base_url + '/clients/shortcode_update',
data : formData,
processData: false,
contentType: false,
async: false,
success: function (data){
if (data.code === 1) {
$.alert({
title: 'Alert!',
content: 'Short Code Details successfully updated',
});
setTimeout(function(){
location.reload();
}, 8000);
}
else if (data.code > 1) {
$.alert({
title: 'Alert!',
content: data.msg,
});
}
else {
$.alert({
title: 'Alert!',
content: 'Your request could not be handled. Try again !',
});
}
}
});
});
$(document).on('click', '.linkButton', function(){
var theVal = $(this).siblings('.hiddenInput').val();
console.log('heere at the wall' + theVal );
$.ajax({
type: "GET",
url: base_url + '/clients/get_shortcode/' + theVal,
processData: false,
contentType: false,
async: false,
success: function (data){
if (data.code === 1) {
console.log(data);
$('#shortCodeIDEdit').val(theVal);
$('#nameEdit').val(data.result.name);
$('#shortCodeClientIdEdit').val(data.result.client_id);
$('#shortCodeTypeEdit').val(data.result.code_type);
$('#shortCodeEdit').val(data.result.shortcode);
$('#tollFreeEdit').val(data.result.toll_free).change();
$('#monthlyFeeEdit').val(data.result.monthly_fee);
$('#launchDateEdit').val(data.result.launch_date);
$('#expiryDateEdit').val(data.result.expiry_date);
$('#codeStatusEdit').val(data.result.status).change();
$('#network').val(data.result.network).change();
$('#remarksEdit').val(data.result.remarks);
$('#shortCodeEditModal').modal('show');
}
else if (data.code > 1) {
$.alert({
title: 'Alert!',
content: data.msg,
});
}
else {
$.alert({
title: 'Alert!',
content: 'Your request could not be handled. Try again !',
});
}
}
});
});
function getShortCodeDetails(id){
alert('heere at the wall from that side ' + id);
} }
function link(cell, formatterParams){ function link(cell, formatterParams){
var url = cell.getValue(); var url = cell.getValue();
var rowID = cell.getData().id var rowID = cell.getData().id
return "<a href='"+ base_url + "/smsshortcodes/"+rowID+"/edit' class='btn btn-link'>"+url+"</a>"; //use rowID to fetch details from DB and populate form on the modal
// return "<a href='"+ base_url + "/smsshortcodes/"+rowID+"/edit' class='btn btn-link' >"+url+"</a>";
//return "<input type='button' class='btn btn-link linkButton' value='" + url + "' name='" + url + "'/>";
return "<input type='hidden' class='hiddenInput' value='" + rowID + "' name='" + url + "'/><button type='button' class='btn btn-link linkButton' >"+url+"</button>";
// return "<a href='' class='btn btn-link'>"+url+"</a>";
} }
function cellDesign (cell, formatterParams){ function cellDesign (cell, formatterParams){
var value = cell.getValue(); var value = cell.getValue();
@@ -122,12 +207,12 @@
printAsHtml: true, printAsHtml: true,
ajaxLoaderLoading: $('#logo_spinner').html(), ajaxLoaderLoading: $('#logo_spinner').html(),
columns: [ columns: [
{ // {
title: "Friendly Name", // title: "Friendly Name",
field: "name", // field: "name",
sorter: "string", // sorter: "string",
formatter:link, // formatter:link,
}, // },
{ {
title: "Short Code", title: "Short Code",
field: "shortcode", field: "shortcode",
@@ -141,6 +226,10 @@
field:"clientName", field:"clientName",
sorter:"string", sorter:"string",
}, },
{ title:"Monthly Fee",
field:"monthly_fee",
sorter:"string",
},
{ {
title: "Status", title: "Status",
field: "status", field: "status",
@@ -167,10 +256,21 @@
// table.download("xlsx", "client-list.xlsx", {sheetName:"Sheet 1"}); // table.download("xlsx", "client-list.xlsx", {sheetName:"Sheet 1"});
// }); // });
rowClick:function(e, row){ //rowClick:function(e, row){
var userID = row.getData().id; //var shortCodeID = row.getData().id;
//$('#userEditModal').modal('show'); //alert("heere at the wall, ID is " + shortCodeID );
}, //getShortCodeDetails(shortCodeID);
// $('#userEditModal').modal('show');
//},
// cellClick:function(e, cell){
//e - the click event object
//cell - cell component
// var theHead = cell.getCell();
// var shortCodeId = cell.getData();
// console.log(cell);
// console.log(shortCodeId.id);
// console.log(theHead);
// },
}); });
document.getElementById("smscodes-download-xlsx").addEventListener("click", function(){ document.getElementById("smscodes-download-xlsx").addEventListener("click", function(){
table.download("xlsx", "sms-shortcode-list.xlsx", {sheetName:"Sheet 1"}); table.download("xlsx", "sms-shortcode-list.xlsx", {sheetName:"Sheet 1"});
@@ -184,7 +284,6 @@
}); });
$('#keywordField').on('keyup', function(){ $('#keywordField').on('keyup', function(){
console.log('up');
var keyword = $(this).val(); var keyword = $(this).val();
table.setData("smsshortcodes/all?keyword=" + keyword + "&code_type=sms"); table.setData("smsshortcodes/all?keyword=" + keyword + "&code_type=sms");

View File

@@ -0,0 +1,117 @@
@extends('layouts.master')
@section('page_title')
@if(isset($page_title))
{{ $page_title }}
@endif
@endsection
@section('css')
<link href="{!! url('public/assets/vendors/tabulator/css/bootstrap/tabulator_bootstrap.css') !!}" type="text/css" rel="stylesheet">
@endsection
@section('content')
<div class="">
<div class="page-title">
<div class="title_left">
<div class="title_left">
<ol class="breadcrumb">
<li><a href="{!! url('dashboard') !!}">Dashboard</a></li>
<li class="active">Team Members</li>
</ol>
</div>
</div>
<div class="title_right">
<div class="row">
<form method="GET" action="{!! url('staffmembers') !!}">
<div class="col-md-5 col-sm-5 col-xs-12 form-group">
<div style="margin-top:1px; margin-right:-90px;" class="top_search">
</div>
</div>
<div class="col-md-5 col-sm-5 col-xs-12 form-group pull-right top_search" style="margin-top: -2px;">
<div class="input-group">
<input type="text" name="keyword" class="form-control" id="keywordField" placeholder="Keyword here...">
<span class="input-group-btn">
<button type="submit" class="btn btn-primary" style="color: #fff;" type="button">Go!</button>
</span>
</div>
</div>
</form>
</div>
<div class="row">
<div class="col-sm-12">
<div class="pull-right"></div>
</div>
</div>
</div>
</div>
<div class="clearfix"></div>
<div class="row">
@include('commons.notifications')
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="x_panel">
<div class="x_title">
<h2> Team Members </h2>
<div class="pull-right">
<a class="btn btn-primary btn-sm" href="{!! url('staffmembers/create') !!}"><i class="fa fa-plus-circle"></i> New Staff Member</a>
</div>
<div class="clearfix"></div>
</div>
<div class="x_content">
@foreach($staff_members as $row)
<div class="col-md-4 col-sm-4 col-xs-12 profile_details">
<div class="well profile_view">
<div class="col-sm-12">
<h4 class="brief"><i>{{ $row->designation }}</i></h4>
<div class="left col-xs-7">
<h2>{{ $row->name }}</h2>
<p><strong>Country: </strong> {{ $row->location_country }} </p>
<ul class="list-unstyled">
<li><i class="fa fa-envelope"></i> Email: {{ $row->email }} </li>
<li><i class="fa fa-phone"></i> Phone #: {{ $row->phone or 'N/A' }} </li>
</ul>
</div>
<div class="right col-xs-5 text-center">
<img src="{{ url('public/staff_members/profile_pics/profile.jpg')}}" alt="" class="img-circle img-responsive" width="50">
</div>
</div>
<div class="col-xs-12 bottom text-center">
<!-- <div class="col-xs-12 col-sm-6 emphasis">
<p class="ratings">
<a>4.0</a>
<a href="#"><span class="fa fa-star"></span></a>
<a href="#"><span class="fa fa-star"></span></a>
<a href="#"><span class="fa fa-star"></span></a>
<a href="#"><span class="fa fa-star"></span></a>
<a href="#"><span class="fa fa-star-o"></span></a>
</p>
</div> -->
<div class="col-xs-12 col-sm-6 emphasis">
<!-- <button type="button" class="btn btn-success btn-xs"> <i class="fa fa-user">
</i> <i class="fa fa-comments-o"></i>
</button> -->
<a class="btn btn-primary btn-xs" href="{{ url('staffmembers/profile', $row->id) }}">
<i class="fa fa-user"> </i> View Profile
</a>
</div>
</div>
</div>
</div>
@endforeach
</div>
</div>
</div>
</div>
</div>
@endsection
@section('javascript')
<script src="{!! url('public/assets/vendors/tabulator/js/tabulator.js') !!}"></script>
<script type="text/javascript">
$(document).ready(function(){
});
</script>
@endsection

Some files were not shown because too many files have changed in this diff Show More