bug fixes on activity log and array_key_first alt using reset
This commit is contained in:
@@ -82,14 +82,14 @@ class ClientsController extends Controller
|
||||
public function getClientJsonRawJs(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);
|
||||
|
||||
//$this->log_query();
|
||||
$client_arr = \DB::table('clients')
|
||||
->join('auth_users AS aumngr', 'aumngr.id', '=', 'clients.auth_user_id')
|
||||
->join('auth_users AS aumodify', 'aumodify.id', '=', 'clients.last_modified_by')
|
||||
->select('clients.id', 'clients.name', 'clients.status', 'clients.country', 'aumngr.name As accountMgr', 'aumodify.name AS modifiedBy')
|
||||
->paginate(10);
|
||||
|
||||
if($request->has('keyword')){ // != ''
|
||||
if($request->has('keyword')){
|
||||
$keyword = $request->keyword;
|
||||
$client_arr = \DB::table('clients')
|
||||
->join('auth_users AS aumngr', 'aumngr.id', '=', 'clients.auth_user_id')
|
||||
@@ -156,6 +156,7 @@ class ClientsController extends Controller
|
||||
'industry' => 'required',
|
||||
'auth_user_id' => 'required', // account manager
|
||||
]);
|
||||
|
||||
$onboarding_stages = Models\ClientOnboardingMainStage::orderBy('stage_id')->get();
|
||||
// dd($onboarding_stages);
|
||||
$client_current_stages = [];
|
||||
@@ -219,7 +220,8 @@ class ClientsController extends Controller
|
||||
];
|
||||
$clients_onboarding_progress = Models\ClientOnboardingProgress::create($progress_arr);
|
||||
}
|
||||
if (in_array('3', $request->services)) {
|
||||
|
||||
if (in_array('USSD', $request->services)) {
|
||||
\Log::info('ussd client detected');
|
||||
$ussd_client_payment_arr = [
|
||||
'client_id' => $result->id,
|
||||
@@ -263,7 +265,7 @@ class ClientsController extends Controller
|
||||
|
||||
//dd($notes_arr);
|
||||
$result = Models\ClientNote::create($notes_arr);
|
||||
|
||||
// dd($result);
|
||||
$notes = Models\ClientNote::with('client_info', 'created_by_info')->find($result->id);
|
||||
//todo : send emails
|
||||
dispatch(new SendNewNotesEmailAlert($notes));
|
||||
@@ -606,6 +608,8 @@ class ClientsController extends Controller
|
||||
}
|
||||
|
||||
sort($networks_raw);
|
||||
|
||||
|
||||
$data = [
|
||||
'page_title' => 'Client Profile',
|
||||
'showclient' => $showclient,
|
||||
@@ -752,26 +756,30 @@ class ClientsController extends Controller
|
||||
|
||||
}
|
||||
|
||||
public function getShortCodes(){
|
||||
public function getShortCodes($type){
|
||||
//$auth_users = Models\SystemUser::pluck('name', 'id');
|
||||
|
||||
$voice_codes = Models\ClientShortCode::with('client_info', 'client_info', 'update_info')->where('code_type', 'voice')->get();
|
||||
$sms_codes = Models\ClientShortCode::with('client_info','client_info', 'update_info')->where('code_type', 'sms')->get();
|
||||
$ussd_codes = Models\ClientShortCode::with('client_info', 'client_info', 'update_info')->where('code_type', 'ussd')->get();
|
||||
//dd($voice_codes);
|
||||
|
||||
// dump($sms_codes[0]->last_updaed_by);
|
||||
// dd($auth_users[$sms_codes[0]->last_updaed_by]);
|
||||
|
||||
//todo : separate the short codes into individual pages
|
||||
switch ($type) {
|
||||
case 'sms':
|
||||
$codes_data = Models\ClientShortCode::with('client_info','client_info', 'update_info')->where('code_type', 'sms')->get();
|
||||
break;
|
||||
case 'ussd':
|
||||
$codes_data = Models\ClientShortCode::with('client_info', 'client_info', 'update_info')->where('code_type', 'ussd')->get();
|
||||
break;
|
||||
case 'voice':
|
||||
$codes_data = Models\ClientShortCode::with('client_info', 'client_info', 'update_info')->where('code_type', 'voice')->get();
|
||||
break;
|
||||
default:
|
||||
// code... show 404
|
||||
break;
|
||||
}
|
||||
$codes = Models\ClientShortCode::with('update_info')->get();
|
||||
|
||||
$data = [
|
||||
'page_title' => 'Client Short Codes',
|
||||
'voice_codes' => $voice_codes,
|
||||
'sms_codes' => $sms_codes,
|
||||
'ussd_codes' => $ussd_codes,
|
||||
'codes_data' => $codes_data,
|
||||
'type' => $type
|
||||
];
|
||||
// dd($data);
|
||||
return view('client.shortcodes', $data);
|
||||
}
|
||||
/**
|
||||
@@ -783,7 +791,6 @@ class ClientsController extends Controller
|
||||
public function edit($id)
|
||||
{
|
||||
$client = Models\Client::find($id);
|
||||
|
||||
$service_type = Models\Service::orderBy('name', 'ASC')->pluck('name', 'name');
|
||||
|
||||
$countries = Models\Country::orderBy('en_short_name', 'ASC')->pluck('en_short_name','en_short_name');
|
||||
@@ -977,8 +984,11 @@ class ClientsController extends Controller
|
||||
$pending_stage = Arr::where($onboarding_progress_stage, function ($value, $key) {
|
||||
return $value == "PENDING";
|
||||
});
|
||||
$pending_stage = array_key_first($pending_stage);
|
||||
|
||||
#$pending_stage = array_key_first($pending_stage);
|
||||
reset($pending_stage);
|
||||
$pending_stage = key($pending_stage);
|
||||
|
||||
if ($pending_stage == true) {
|
||||
//Pending Exist
|
||||
$client_update->progress_indicator = $pending_stage;
|
||||
@@ -1215,10 +1225,12 @@ class ClientsController extends Controller
|
||||
public function showOnboardingForm($client_id){
|
||||
$client = Models\Client::findOrFail($client_id);
|
||||
|
||||
|
||||
$onboarding_stages = Models\ClientOnboardingProgress::where('client_id', $client_id)->orderBy('stage_id')->get();
|
||||
//dd($onboarding_stages);
|
||||
$data = [
|
||||
'page_title' => 'Clients | Onboarding Checklist',
|
||||
'client' => $client
|
||||
'client' => $client,
|
||||
'onboarding_stages' => $onboarding_stages
|
||||
];
|
||||
return view('client.onboarding_show', $data);
|
||||
}
|
||||
|
||||
@@ -47,8 +47,10 @@ class Controller extends BaseController
|
||||
return $response;
|
||||
|
||||
}
|
||||
public function logUsersActivity($type, $content){
|
||||
$user_id = session('current_user.id');
|
||||
public function logUsersActivity($type, $content, $user_id = null){
|
||||
if($user_id == null){
|
||||
$user_id = session('current_user.id');
|
||||
}
|
||||
$activity_arr = [
|
||||
'type' => $type,
|
||||
'content' => $content,
|
||||
|
||||
17
app/Http/Controllers/Finance/DashboardController.php
Normal file
17
app/Http/Controllers/Finance/DashboardController.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Finance;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
class DashboardController extends Controller
|
||||
{
|
||||
public function index(){
|
||||
$data = [
|
||||
'page_title' => 'Finance | Dashboard'
|
||||
];
|
||||
|
||||
return view('finance.dashboard', $data);
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,6 @@ class LoginController extends Controller
|
||||
$data = [
|
||||
'designation' => $designation
|
||||
];
|
||||
|
||||
return view('login.index', $data);
|
||||
}
|
||||
|
||||
@@ -35,10 +34,19 @@ class LoginController extends Controller
|
||||
\Log::info($logged_in->name . ' Successfully logged in at : ' . date('Y-m-d H:i:s'));
|
||||
$content = $logged_in->name . " Successfully Logged In";
|
||||
|
||||
$this->logUsersActivity($type = 'staff', $content);
|
||||
$this->logUsersActivity($type = 'staff', $content, $logged_in->id);
|
||||
$this->deleteLoggedUser();
|
||||
$this->storeLoggedUser();
|
||||
return redirect(url('/'));
|
||||
|
||||
switch ($logged_in->designation_info->name) {
|
||||
case 'Accounts & Finance':
|
||||
return redirect(url('finance'));
|
||||
break;
|
||||
|
||||
default:
|
||||
return redirect(url('/'));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public function handle_logout(Request $request) {
|
||||
@@ -51,7 +59,7 @@ class LoginController extends Controller
|
||||
$request->session()->flush();
|
||||
$request->session()->regenerate(true);
|
||||
|
||||
$this->logUsersActivity($type = 'staff', $content);
|
||||
$this->logUsersActivity($type = 'staff', $content, $user_id);
|
||||
|
||||
return redirect("/");
|
||||
}
|
||||
|
||||
10
app/Http/Controllers/TestingController.php
Normal file
10
app/Http/Controllers/TestingController.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class TestingController extends Controller
|
||||
{
|
||||
//
|
||||
}
|
||||
@@ -36,7 +36,41 @@ class UtilityController extends Controller
|
||||
$all_clients = Models\Client::get();
|
||||
$count_cl = 0;
|
||||
foreach ($all_clients as $row) {
|
||||
|
||||
$get_stage_subs_items = Models\ClientOnboardingSubItem::get();
|
||||
foreach ($get_stage_subs_items as $value) {
|
||||
$stage_id = ['stage_id' => $value->stage_id, 'client_id' => $row->id, 'name' => $value->name ];
|
||||
$progress_arr = [
|
||||
'status' => 'PENDING'
|
||||
];
|
||||
$clients_onboarding_progress = Models\ClientOnboardingProgress::updateOrCreate($stage_id, $progress_arr);
|
||||
}
|
||||
$count_cl++;
|
||||
}
|
||||
dump($count_cl);
|
||||
}
|
||||
function massOnboardingProgress($client_id){
|
||||
//todo : update
|
||||
/*
|
||||
-- client_onboarding_sub_items -- this holds all sub items
|
||||
-- client_onboarding_progress -- update to completed
|
||||
-- in the clients table
|
||||
-- onboarding_progress_stage == update to complete,
|
||||
-- progress_indicator to complete,
|
||||
-- progress_indicator_score to 100
|
||||
*/
|
||||
$get_stage_subs_items = Models\ClientOnboardingSubItem::get();
|
||||
foreach ($get_stage_subs_items as $value) {
|
||||
$progress_arr = [
|
||||
'stage_id' => $value->stage_id,
|
||||
'client_id' => $client_id,
|
||||
'name' => $value->name,
|
||||
'status' => 'COMPLETE'
|
||||
];
|
||||
$clients_onboarding_progress = Models\ClientOnboardingProgress::create($progress_arr);
|
||||
}
|
||||
$all_clients = Models\Client::get();
|
||||
$count_cl = 0;
|
||||
foreach ($all_clients as $row) {
|
||||
$get_stage_subs_items = Models\ClientOnboardingSubItem::get();
|
||||
foreach ($get_stage_subs_items as $value) {
|
||||
$stage_id = ['stage_id' => $value->stage_id, 'client_id' => $row->id, 'name' => $value->name ];
|
||||
@@ -50,3 +84,4 @@ class UtilityController extends Controller
|
||||
dump($count_cl);
|
||||
}
|
||||
}
|
||||
// https://www.tokyvideo.com/video/sheena-the-queen-of-the-jungle-1984-movie-with-tanya-roberts-ted-wass-donovan-scott
|
||||
21
app/Http/Middleware/CheckDesignation.php
Normal file
21
app/Http/Middleware/CheckDesignation.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
|
||||
class CheckDesignation
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
//this idea is on hold ... i will put the logic in the login handler function
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
@@ -30,6 +30,7 @@ class NewMnoNotesEmailAlerts implements ShouldQueue
|
||||
*/
|
||||
public function handle(Mailer $mailer)
|
||||
{
|
||||
|
||||
$note = $this->note;
|
||||
$emails = ['samuel@click-mobile.com'];
|
||||
|
||||
@@ -39,6 +40,7 @@ class NewMnoNotesEmailAlerts implements ShouldQueue
|
||||
'services' => $note->services,
|
||||
'notes_body' => $note->notes_body
|
||||
];
|
||||
\Log::info($note->notes_body);
|
||||
$mailer->send('emails.new-mno-notes', $data, function ($message) use ($data, $emails) {
|
||||
$message->from('support@click-mobile.com', 'Click Mobile ERP');
|
||||
$message->to($emails)->subject('New Notes on Mobile Operators');
|
||||
|
||||
@@ -42,6 +42,10 @@ class SendNewNotesEmailAlert implements ShouldQueue
|
||||
'services' => $note->services,
|
||||
'notes_body' => $note->notes_body
|
||||
];
|
||||
|
||||
\Log::info("New notes for : " . $note->client_info->name);
|
||||
\Log::info("New notes triggered by : " . $note->created_by_info->name);
|
||||
\Log::info($note->notes_body);
|
||||
$mailer->send('emails.new-notes', $data, function ($message) use ($data, $emails) {
|
||||
$message->from('support@click-mobile.com', 'Click Mobile ERP');
|
||||
$message->to($emails)->subject('New Notes');
|
||||
|
||||
20
common-fixes.md
Normal file
20
common-fixes.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Inability to insert emojis into DB tables
|
||||
|
||||
Step 1, change your database's default charset:
|
||||
|
||||
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
|
||||
if the db is not created yet, create it with correct encodings:
|
||||
|
||||
CREATE DATABASE database_name DEFAULT CHARSET = utf8mb4 DEFAULT COLLATE = utf8mb4_unicode_ci;
|
||||
Step 2, set charset when creating table:
|
||||
|
||||
CREATE TABLE IF NOT EXISTS table_name (
|
||||
...
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
or alter table
|
||||
|
||||
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
ALTER TABLE table_name MODIFY field_name TEXT CHARSET utf8mb4;
|
||||
|
||||
### Source
|
||||
- https://stackoverflow.com/questions/39463134/how-to-store-emoji-character-in-mysql-database
|
||||
@@ -1,41 +0,0 @@
|
||||
version: '3'
|
||||
services:
|
||||
app:
|
||||
image: 'php:7.4-fpm'
|
||||
volumes:
|
||||
- .:/var/www/html
|
||||
working_dir: /var/www/html
|
||||
networks:
|
||||
- laravel
|
||||
web:
|
||||
image: 'nginx:latest'
|
||||
ports:
|
||||
- '82:82'
|
||||
volumes:
|
||||
- ./nginx.conf:/etc/nginx/conf.d/default.conf
|
||||
depends_on:
|
||||
- app
|
||||
networks:
|
||||
- laravel
|
||||
mysql:
|
||||
image: 'mysql:5.7'
|
||||
environment:
|
||||
MYSQL_DATABASE: laravel
|
||||
MYSQL_ROOT_PASSWORD: secret
|
||||
networks:
|
||||
- laravel
|
||||
redis:
|
||||
image: 'redis:latest'
|
||||
networks:
|
||||
- laravel
|
||||
worker:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile.worker
|
||||
volumes:
|
||||
- .:/var/www/html
|
||||
working_dir: /var/www/html
|
||||
networks:
|
||||
- laravel
|
||||
networks:
|
||||
laravel:
|
||||
22
public/assets/js/clientshow.js
vendored
22
public/assets/js/clientshow.js
vendored
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
$('.progressIndicatorCheckbox').on('change', function() {
|
||||
// From the other examples
|
||||
console.log('finker');
|
||||
// console.log('finker');
|
||||
if (!this.checked) {
|
||||
var sure = confirm("Are you sure?");
|
||||
this.checked = !sure;
|
||||
@@ -38,7 +38,7 @@
|
||||
$('#newNotesForm').modal('show');
|
||||
});
|
||||
$('#progressIndicatorBtn').click(function(evt){
|
||||
console.log('foo bars');
|
||||
// console.log('foo bars');
|
||||
evt.preventDefault();
|
||||
$('#progressIndicatorDetailsModal').modal('show');
|
||||
});
|
||||
@@ -77,7 +77,7 @@
|
||||
async: false,
|
||||
success: function (data){
|
||||
if (data.code === 1) {
|
||||
console.log(theIDD);
|
||||
// console.log(theIDD);
|
||||
$('#paymentIdEdit').val(theIDD);
|
||||
$('#financeServicesEdit').val(data.services_arr).change();
|
||||
$('#invoiceNumberEdit').val(data.result.invoice_number);
|
||||
@@ -111,7 +111,7 @@
|
||||
tve.preventDefault();
|
||||
//var theIDD = $("input[name=payment_entry_id]").val();
|
||||
var theIDD = $(this).siblings('.notesRowId').val();
|
||||
console.log(theIDD);
|
||||
// console.log(theIDD);
|
||||
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
@@ -121,7 +121,7 @@
|
||||
async: false,
|
||||
success: function (data){
|
||||
if (data.code === 1) {
|
||||
console.log(theIDD);
|
||||
// console.log(theIDD);
|
||||
$('#noteIdEdit').val(theIDD);
|
||||
$('#notesServicesEdit').val(data.services_arr).change();
|
||||
$('#notesBodyEdit').val(data.result.notes_body);
|
||||
@@ -226,11 +226,11 @@
|
||||
//console.log(error);
|
||||
//console.log("AJAX error in request: " + JSON.stringify(err, null, 2));
|
||||
var output = $.parseJSON(error.responseText);
|
||||
console.log(output.errors);
|
||||
// console.log(output.errors);
|
||||
$('#financeNotifyArea').removeClass('hidden');
|
||||
$('#financeNotifyArea').addClass('alert alert-danger');
|
||||
$.each(output.errors, function (key, value) {
|
||||
console.log(value[0]);
|
||||
// console.log(value[0]);
|
||||
$('#financeNotifyArea').text(value[0]);
|
||||
});
|
||||
}
|
||||
@@ -276,7 +276,7 @@
|
||||
|
||||
$('#editNotesForm').submit(function(evt){
|
||||
evt.preventDefault();
|
||||
console.log($(this).length);
|
||||
// console.log($(this).length);
|
||||
var formData = new FormData($(this)[0]);
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
@@ -348,15 +348,15 @@
|
||||
},
|
||||
error: function (data) {
|
||||
var output = $.parseJSON(data.responseText);
|
||||
console.log(output.errors);
|
||||
// console.log(output.errors);
|
||||
$('#notifyArea').removeClass('hidden');
|
||||
$.each(output.errors, function (key, value) {
|
||||
console.log(value[0]);
|
||||
// console.log(value[0]);
|
||||
$('#notifyArea').text(value[0]);
|
||||
});
|
||||
},
|
||||
fail : function(errordata){
|
||||
console.log(errordata);
|
||||
// console.log(errordata);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
25
public/assets/js/financedashboard.js
vendored
Normal file
25
public/assets/js/financedashboard.js
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
$(document).ready(function(){
|
||||
/*
|
||||
$.ajax({
|
||||
type: "get",
|
||||
url: base_url + '/dashboard/get_events',
|
||||
// data : formData,
|
||||
processData: false,
|
||||
contentType: false,
|
||||
async: false,
|
||||
success: function (data){
|
||||
//init_calendar(data);
|
||||
},
|
||||
error: function(error){
|
||||
var output = $.parseJSON(error.responseText);
|
||||
console.log(output.errors);
|
||||
$('#ipNotifyArea').removeClass('hidden');
|
||||
$('#ipNotifyArea').addClass('alert alert-danger');
|
||||
$.each(output.errors, function (key, value) {
|
||||
//console.log(value[0]);
|
||||
$('#ipNotifyArea').text(value[0]);
|
||||
});
|
||||
}
|
||||
});
|
||||
*/
|
||||
});
|
||||
@@ -108,7 +108,8 @@
|
||||
field: "accountMgr",
|
||||
sorter: "string",
|
||||
},
|
||||
{ title:"Progress",
|
||||
/*
|
||||
{ title:"Onboarding Progress Score",
|
||||
field:"progress_indicator_score",
|
||||
sorter:"number",
|
||||
hozAlign:"left",
|
||||
@@ -116,6 +117,11 @@
|
||||
width:200,
|
||||
editable:true
|
||||
},
|
||||
*/
|
||||
{ title:"Onboarding %",
|
||||
field:"progress_indicator_score",
|
||||
sorter:"number",
|
||||
},
|
||||
{
|
||||
title: "Status",
|
||||
field: "status",
|
||||
|
||||
@@ -29,42 +29,36 @@
|
||||
<div class="x_content">
|
||||
<br>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h4>Agreement Stage</h4>
|
||||
<div>
|
||||
<div class="form-group" >
|
||||
<div class=" {{ $errors->has('progress_indicators') ? 'has-error' : ''}}">
|
||||
<label class="" for="payment_mode">Checklist Items</label>
|
||||
{!! Form::select('progress_indicators[]', $progress_indicators, $current_progress_indicators, ['class' => 'form-control' , 'id' => 'progressIndicators', 'multiple' => 'true']) !!}
|
||||
{!! $errors->first('progress_indicators', '<p class="help-block">:message</p>') !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h4>Interconnectional (Bilateral)</h4>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
<h4>Tests Completed</h4>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
<h4>Rate Card Sharing</h4>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
<h4>Rates Uploaded</h4>
|
||||
<div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="ln_solid"></div>
|
||||
<div class="form-group">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-bordered table-condensed" style="width: 100%;">
|
||||
<thead>
|
||||
<tr class="headings">
|
||||
<th class="column-title">Stage</th>
|
||||
<th class="column-title">Activity</th>
|
||||
<th class="column-title">Status</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
@if ($onboarding_stages->isEmpty())
|
||||
<tr>
|
||||
<td class="" colspan="6">No Records found</td>
|
||||
</tr>
|
||||
@else
|
||||
@foreach ($onboarding_stages as $row)
|
||||
<tr class="even pointer">
|
||||
<td class="mes-td" >{{ $row->stage_id }}</td>
|
||||
<td class="mes-td">{{ $row->name }}</td>
|
||||
<td class="mes-td <?php echo ($row->status == 'COMPLETED') ? 'text-success' : 'text-danger'; ?>" >
|
||||
{{ $row->status }}
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
{{-- end of x_content --}}
|
||||
</div>
|
||||
@@ -79,13 +73,7 @@
|
||||
@section('javascript')
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
$('select').select2();
|
||||
|
||||
|
||||
// $('.typeServices').select2({}).select2('val', PRESELECTED_FRUITS);
|
||||
$('.typeServices').select2({
|
||||
tags : true
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
||||
@endsection
|
||||
|
||||
@@ -10,29 +10,28 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="">
|
||||
<?php if ($showclient->progress_indicators !== null): ?>
|
||||
<?php if ($showclient->onboarding_progress_stage !== null): ?>
|
||||
<ul class="to_do">
|
||||
<?php $current_indicators = json_decode($showclient->progress_indicators, true); ?>
|
||||
@foreach($progress_indicators as $indirow)
|
||||
<?php $current_indicators = json_decode($showclient->onboarding_progress_stage, true); ?>
|
||||
@foreach($current_indicators as $key => $value)
|
||||
<?php
|
||||
$arr_check = in_array($indirow, $current_indicators);
|
||||
$theCheck = ($arr_check == true) ? "fa-check-circle green" : "fa-question red";
|
||||
$theCheck = ($value == "COMPLETED") ? "fa-check-circle green" : "fa-question red";
|
||||
?>
|
||||
<li>
|
||||
<p>
|
||||
<span class="fa {{ $theCheck }}"></span>
|
||||
{{ $indirow }}
|
||||
{{ $key }}
|
||||
</p>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
<?php else: ?>
|
||||
@foreach($progress_indicators as $indirow)
|
||||
@foreach($current_indicators as $indkey => $indival)
|
||||
<ul class="to_do">
|
||||
<li>
|
||||
<p>
|
||||
<span class="fa fa-question red"></span>
|
||||
{{ $indirow }}
|
||||
{{ $indkey }}
|
||||
</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
45
resources/views/client/partials/shortcode-index.blade.php
Normal file
45
resources/views/client/partials/shortcode-index.blade.php
Normal file
@@ -0,0 +1,45 @@
|
||||
<div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped ">
|
||||
<thead>
|
||||
<tr class="headings">
|
||||
{{-- <th>#</th> --}}
|
||||
<th class="column-title">Name</th>
|
||||
<th class="column-title">Code</th>
|
||||
<th class="column-title">Network</th>
|
||||
<th class="column-title">Toll Free</th>
|
||||
<th class="column-title">Status</th>
|
||||
<th class="column-title">Remarks</th>
|
||||
<th class="column-title">Launch Date</th>
|
||||
<th class="column-title no-link last"><span class="nobr">Action</span>
|
||||
</th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@if ($codes_data->isEmpty())
|
||||
<tr>
|
||||
<td class="" colspan="12">No Records found</td>
|
||||
</tr>
|
||||
@else
|
||||
@foreach ($codes_data as $row)
|
||||
<tr class="even pointer">
|
||||
<td class="mes-td col-md-2">{{ $row->name }}</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-1">{{ strtoupper($row->toll_free) }}</td>
|
||||
<td class="mes-td col-md-1">{{ $row->status }}</td>
|
||||
<td class="mes-td col-md-2">{{ $row->remarks }}</td>
|
||||
<td class="mes-td col-md-1" style="width: 100px;">{{ date('d-m-Y', strtotime($row->launch_date)) }}</td>
|
||||
<td class="last col-md-1" style="width: 100px;">
|
||||
<span>
|
||||
<a href="" class="btn btn-xs btn-primary"><i class="fa fa-edit"></i></a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
88
resources/views/client/shortcodes.blade copy.php
Normal file
88
resources/views/client/shortcodes.blade copy.php
Normal file
@@ -0,0 +1,88 @@
|
||||
@extends('layouts.master')
|
||||
@section('page_title')
|
||||
@if(isset($page_title))
|
||||
{{ $page_title }}
|
||||
@endif
|
||||
@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><a href="{!! url('clients') !!}">Clients</a></li>
|
||||
<li class="active">Short Codes </li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="title_right">
|
||||
|
||||
<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> Client Short Codes </h2>
|
||||
<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> -->
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
|
||||
<div class="x_content">
|
||||
<div class="col-md-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" data-toggle="tab" aria-expanded="true">Company</a></li> -->
|
||||
<li role="presentation" class="active"><a href="#tabSmsShortCode" role="tab" id="smsshortcode-tab2" data-toggle="tab" aria-expanded="true">SMS Short Codes</a></li>
|
||||
<li role="presentation" class=""><a href="#tabUssdShortCode" role="tab" id="ussdshortcode-tab2" data-toggle="tab" aria-expanded="false">USSD Short Codes</a></li>
|
||||
<li role="presentation" class=""><a href="#tabVoiceShortCode" role="tab" id="voiceshortcode-tab2" 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 role="tabpanel" class="tab-pane fade active in" id="tabSmsShortCode" aria-labelledby="smsshortcode-tab">
|
||||
<h4 class="lead"><strong>SMS Short Code </strong></h4>
|
||||
@include('client.partials.client-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>
|
||||
@include('client.partials.client-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>
|
||||
@include('client.partials.client-voice-codes')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('javascript')
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@endsection
|
||||
@@ -13,7 +13,7 @@
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{!! url('dashboard') !!}">Dashboard</a></li>
|
||||
<li><a href="{!! url('clients') !!}">Clients</a></li>
|
||||
<li class="active">Clients</li>
|
||||
<li class="active">Short Codes </li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
@@ -44,29 +44,16 @@
|
||||
|
||||
<div class="x_content">
|
||||
<div class="col-md-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" data-toggle="tab" aria-expanded="true">Company</a></li> -->
|
||||
<li role="presentation" class="active"><a href="#tabSmsShortCode" role="tab" id="smsshortcode-tab2" data-toggle="tab" aria-expanded="true">SMS Short Codes</a></li>
|
||||
<li role="presentation" class=""><a href="#tabUssdShortCode" role="tab" id="ussdshortcode-tab2" data-toggle="tab" aria-expanded="false">USSD Short Codes</a></li>
|
||||
<li role="presentation" class=""><a href="#tabVoiceShortCode" role="tab" id="voiceshortcode-tab2" 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 role="tabpanel" class="tab-pane fade active in" id="tabSmsShortCode" aria-labelledby="smsshortcode-tab">
|
||||
<h4 class="lead"><strong>SMS Short Code </strong></h4>
|
||||
@include('client.partials.client-sms-codes')
|
||||
<div role="tabpanel" class="tab-pane fade active in" id="tabSmsShortCode" aria-labelledby="smsshortcode-tab">
|
||||
<h4 class="lead"><strong>
|
||||
@if($type == 'voice')
|
||||
{{ ucfirst($type) }} Short Code
|
||||
@else
|
||||
{{ strtoupper($type) }} Short Code
|
||||
@endif
|
||||
</strong></h4>
|
||||
@include('client.partials.shortcode-index')
|
||||
</div>
|
||||
<div role="tabpanel" class="tab-pane fade" id="tabUssdShortCode" aria-labelledby="ussdshortcode-tab">
|
||||
<h4 class="lead"><strong>USSD Short Codes </strong></h4>
|
||||
@include('client.partials.client-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>
|
||||
@include('client.partials.client-voice-codes')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
@include('client.partials.finance')
|
||||
@include('client.partials.create-shortcodes')
|
||||
@include('client.partials.edit-finance')
|
||||
@include('client.partials.progress_indicator_details')
|
||||
<?php ?>
|
||||
<div class="">
|
||||
<div class="page-title">
|
||||
|
||||
180
resources/views/finance/dashboard.blade.php
Normal file
180
resources/views/finance/dashboard.blade.php
Normal file
@@ -0,0 +1,180 @@
|
||||
@extends('layouts.master')
|
||||
@section('css')
|
||||
|
||||
@endsection
|
||||
@section('content')
|
||||
|
||||
|
||||
<!-- top tiles -->
|
||||
<div class="row tile_count">
|
||||
<div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count">
|
||||
<span class="count_top"><i class="fa fa-dot-circle-o"></i> Metric 1</span>
|
||||
<div class="count">2500</div>
|
||||
</div>
|
||||
<div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count">
|
||||
<span class="count_top"><i class="fa fa-clock-o"></i> Metric 1</span>
|
||||
<div class="count">123.50</div>
|
||||
</div>
|
||||
<div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count">
|
||||
<span class="count_top"><i class="fa fa-dot-circle-o"></i> Metric 1 </span>
|
||||
<div class="count green">2,500</div>
|
||||
</div>
|
||||
<div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count">
|
||||
<span class="count_top"><i class="fa fa-dot-circle-o"></i> Metric 1 </span>
|
||||
<div class="count">4,567</div>
|
||||
</div>
|
||||
<div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count">
|
||||
<span class="count_top"><i class="fa fa-dot-circle-o"></i> Metric 1</span>
|
||||
<div class="count">2,315</div>
|
||||
</div>
|
||||
<div class="col-md-2 col-sm-4 col-xs-6 tile_stats_count">
|
||||
<span class="count_top"><i class="fa fa-file-o"></i> Metric 1</span>
|
||||
<div class="count">7,325</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /top tiles -->
|
||||
|
||||
|
||||
|
||||
<div class="row">
|
||||
|
||||
|
||||
<div class="col-md-4 col-sm-4 col-xs-12">
|
||||
<div class="x_panel tile fixed_height_320">
|
||||
<div class="x_title">
|
||||
<h2>Invoice Tracker (Short Codes) </h2>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="x_content">
|
||||
<div class="table">
|
||||
<table class="table table-striped table-condensed">
|
||||
<thead>
|
||||
<tr class="headings">
|
||||
<th class="column-title">Invoice </th>
|
||||
<th class="column-title">Invoice Date </th>
|
||||
<th class="column-title">Order </th>
|
||||
<th class="column-title">Amount </th>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="odd pointer">
|
||||
|
||||
<td class=" ">121000040</td>
|
||||
<td class=" ">May 23, 2014 11:47:56 PM </td>
|
||||
<td class=" ">121000210</td>
|
||||
<td class=" ">Paid</td>
|
||||
</tr>
|
||||
<tr class="even pointer">
|
||||
<td class=" ">121000040</td>
|
||||
<td class=" ">May 23, 2014 11:47:56 PM </td>
|
||||
<td class=" ">121000210</td>
|
||||
<td class=" ">Paid</td>
|
||||
</tr>
|
||||
</body>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4 col-sm-4 col-xs-12">
|
||||
<div class="x_panel tile fixed_height_320 overflow_hidden">
|
||||
<div class="x_title">
|
||||
<h2>SMS A2P Clients</h2>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="x_content">
|
||||
<div class="table">
|
||||
<table class="table table-striped table-condensed">
|
||||
<thead>
|
||||
<tr class="headings">
|
||||
<th class="column-title">Invoice </th>
|
||||
<th class="column-title">Invoice Date </th>
|
||||
<th class="column-title">Order </th>
|
||||
<th class="column-title">Amount </th>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="odd pointer">
|
||||
|
||||
<td class=" ">121000040</td>
|
||||
<td class=" ">May 23, 2014 11:47:56 PM </td>
|
||||
<td class=" ">121000210</td>
|
||||
<td class=" ">Paid</td>
|
||||
</tr>
|
||||
<tr class="even pointer">
|
||||
<td class=" ">121000040</td>
|
||||
<td class=" ">May 23, 2014 11:47:56 PM </td>
|
||||
<td class=" ">121000210</td>
|
||||
<td class=" ">Paid</td>
|
||||
</tr>
|
||||
</body>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-md-4 col-sm-4 col-xs-12">
|
||||
<div class="x_panel tile fixed_height_320">
|
||||
<div class="x_title">
|
||||
<h2>Invoice Tracker (VAS) </h2>
|
||||
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="x_content">
|
||||
<div class="table">
|
||||
<table class="table table-striped table-condensed">
|
||||
<thead>
|
||||
<tr class="headings">
|
||||
<th class="column-title">Invoice </th>
|
||||
<th class="column-title">Invoice Date </th>
|
||||
<th class="column-title">Order </th>
|
||||
<th class="column-title">Amount </th>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="odd pointer">
|
||||
|
||||
<td class=" ">121000040</td>
|
||||
<td class=" ">May 23, 2014 11:47:56 PM </td>
|
||||
<td class=" ">121000210</td>
|
||||
<td class=" ">Paid</td>
|
||||
</tr>
|
||||
<tr class="even pointer">
|
||||
<td class=" ">121000040</td>
|
||||
<td class=" ">May 23, 2014 11:47:56 PM </td>
|
||||
<td class=" ">121000210</td>
|
||||
<td class=" ">Paid</td>
|
||||
</tr>
|
||||
</body>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@endsection
|
||||
@section('javascript')
|
||||
|
||||
<!-- DateJS -->
|
||||
<!-- <script src="{{ url('public/assets/vendors/DateJS/build/date.js') }}"></script> -->
|
||||
<script src="{{ url('public/assets/js/financedashboard.js') }}"></script>
|
||||
|
||||
|
||||
@endsection
|
||||
@@ -32,7 +32,9 @@
|
||||
</li> -->
|
||||
<li><a><i class="fa fa-dot-circle-o"></i>Short Codes <span class="fa fa-chevron-down"></span></a>
|
||||
<ul class="nav child_menu">
|
||||
<li><a href="{!! url('clients/shortcodes') !!}">Short Codes</a></li>
|
||||
<li><a href="{!! url('clients/shortcodes/sms') !!}">SMS</a></li>
|
||||
<li><a href="{!! url('clients/shortcodes/ussd') !!}">USSD</a></li>
|
||||
<li><a href="{!! url('clients/shortcodes/voice') !!}">Voice</a></li>
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@@ -11,11 +11,12 @@
|
||||
|
|
||||
*/
|
||||
/*
|
||||
Route::get('/', function () {
|
||||
return view('welcome');
|
||||
Route::get('/contacts', function () {
|
||||
return view('contacts');
|
||||
});
|
||||
|
||||
0204040805
|
||||
browser.pipe.aria.microsoft.com
|
||||
|
||||
Auth::routes();
|
||||
|
||||
@@ -40,6 +41,7 @@ Route::get('logout', 'LoginController@handle_logout');
|
||||
|
||||
Route::post('account/register', 'LoginController@registerAccount');
|
||||
|
||||
|
||||
Route::get('ussd/dashboard', 'UssdDashboardController@index');
|
||||
|
||||
|
||||
@@ -93,7 +95,7 @@ Route::group(['middleware' => ['checklogin', 'checkcurrentlylogged']], function(
|
||||
Route::get('clients/get_payment/{id}', 'ClientsController@getPayment');
|
||||
Route::get('clients/get_note/{id}', 'ClientsController@getSingleNote');
|
||||
Route::get('clients/create-notes', 'ClientsController@createNotes');
|
||||
Route::get('clients/shortcodes', 'ClientsController@getShortCodes');
|
||||
Route::get('clients/shortcodes/{type}', 'ClientsController@getShortCodes');
|
||||
|
||||
Route::get('clients/readonly/{id}', 'ClientsController@showReadonly');
|
||||
Route::get('clients/all', 'ClientsController@getClientJson');
|
||||
@@ -157,5 +159,8 @@ Route::group(['middleware' => ['checklogin', 'checkcurrentlylogged']], function(
|
||||
Route::get('mnopaymentreports', 'MnoPaymentsController@index');
|
||||
|
||||
Route::resource('marketreport', 'MarketerReportController');
|
||||
|
||||
Route::get('finance', 'Finance\DashboardController@index');
|
||||
|
||||
});
|
||||
|
||||
|
||||
3
theZone.php
Normal file
3
theZone.php
Normal file
@@ -0,0 +1,3 @@
|
||||
<?php
|
||||
phpinfo();
|
||||
?>
|
||||
Reference in New Issue
Block a user