bug fixes, mno,client contract renewals, scheduling

This commit is contained in:
Kwesi Banson
2024-06-10 21:40:28 +00:00
parent 1a4a3acfda
commit 464b544587
110 changed files with 531 additions and 127 deletions

BIN
app/Http/.DS_Store vendored Executable file

Binary file not shown.

BIN
app/Http/Controllers/.DS_Store vendored Executable file

Binary file not shown.

View File

@@ -0,0 +1,41 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models;
use Session;
use Illuminate\Support\Arr;
use App\Jobs\SendClientContractRenewalAlert;
use App\Http\Requests;
use Carbon\Carbon;
class ClientContractRenewalAlertsController extends Controller
{
public function getClientDetails(){
$client_arr = Models\Client::with('auth_user_info')->where('contract_auto_renew', 'NO')->get();
// dd($client_arr);
$renew_ready = [];
$current_date = date('Y-m-d');
foreach ($client_arr as $value) {
if ($value->contract_validity == false) {
continue;
}
$date1 = date_create($current_date);
$date2 = date_create($value->contract_validity);
$difference = date_diff($date1, $date2);
if ($difference->days <= 45) {
$renew_ready['client_name'] = $value->name;
$renew_ready['account_manager_email'] = $value->auth_user_info->email;
$renew_ready['days_to_expire'] = $difference->days;
dispatch(new SendClientContractRenewalAlert($renew_ready));
}
}
//dump($renew_ready);
$log_data = implode(', ', $renew_ready);
\Log::info('Clients due for renewal ' . $log_data);
//$this->sendNtfy('Clients due for renewal ' . $log_data);
}
}

View File

@@ -776,6 +776,7 @@ class ClientsController extends Controller
'codes_data' => $codes_data,
'type' => $type
];
// dd($data);
return view('client.shortcodes', $data);
}
/**

View File

@@ -0,0 +1,39 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models;
use Session;
use Illuminate\Support\Arr;
use App\Jobs\SendMnoContractRenewalEmailAlert;
use App\Http\Requests;
use Carbon\Carbon;
class ContractRenewalReminderController extends Controller
{
public function getMnos(){
$network_arr = Models\NetworkOps::with('account_manager_info')->where('contract_auto_renew', 'NO')->get();
$renew_ready = [];
$current_date = date('Y-m-d');
foreach ($network_arr as $value) {
if ($value->contract_validity == false) {
continue;
}
$date1 = date_create($current_date);
$date2 = date_create($value->contract_validity);
$difference = date_diff($date1, $date2);
if ($difference->days <= 45) {
$renew_ready['mno_name'] = $value->name;
$renew_ready['account_manager_email'] = $value->account_manager_info->email;
$renew_ready['days_to_expire'] = $difference->days;
dispatch(new SendMnoContractRenewalEmailAlert($renew_ready));
}
}
$log_data = implode(', ', $renew_ready);
\Log::info('MNOs due for renewal ' . $log_data);
$this->sendNtfy('MNOs due for renewal ' . $log_data);
}
}

View File

@@ -26,14 +26,16 @@ class Controller extends BaseController
}
);
}
public function sendNtfy($data){
$url = 'https://ntfy.sh/mMjh6hStlSQiyiUr';
$url_b = 'https://ntfy.sh/SansaTest';
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_HTTPHEADER => array(
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json'
),
CURLOPT_URL => 'https://ntfy.sh/SansaTest',
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
@@ -45,12 +47,12 @@ class Controller extends BaseController
));
$response = curl_exec($curl);
return $response;
}
public function logUsersActivity($type, $content, $user_id = null){
if($user_id == null){
$user_id = session('current_user.id');
}
}
$activity_arr = [
'type' => $type,
'content' => $content,
@@ -63,7 +65,7 @@ class Controller extends BaseController
}
public function storeLoggedUser(){
$user_id = session('current_user.id');
$logged_arr = [
$logged_arr = [
'user_id' => $user_id,
'last_seen_time' => date('Y-m-d H:i:s'),
'ip_address' => \Request::ip(),

View File

@@ -9,7 +9,7 @@ use Session;
class DashboardController extends Controller
{
public function index(){
// dd('foo bar');
$total_clients = Models\Client::count();
$ussd_clients = Models\Client::where('services', 'LIKE', '%ussd%')->orwhere('services', 'LIKE', '%A2P%')->count();
$sms_clients = Models\Client::where('services', 'LIKE', '%sms%')->count();

View File

@@ -33,6 +33,7 @@ class GeneralDocumentsController extends Controller
'rates' => 'SMS/Voice Rates',
'scfees' => 'Short Code Fees',
'vpn_forms' => 'VPN Forms',
'user_guides' => 'User Guides',
'sidwl' => 'SID Whitelisting Letter',
'others' => 'Others'
];
@@ -109,6 +110,7 @@ class GeneralDocumentsController extends Controller
'scfees' => 'Short Code Fees',
'presentations' => 'presentations',
'vpn_forms' => 'VPN Forms',
'user_guides' => 'User Guides',
'others' => 'Others'
];

View File

@@ -17,7 +17,7 @@ class LoginController extends Controller
public function handleLogin(Request $request){
$this->validate($request, ['email' => 'required', 'password' => 'required']);
//system user : $table = "auth_users";
$logged_in = Models\SystemUser::with('designation_info')->where('email', $request->email)->where('password', md5($request->password))->first();
if(empty($logged_in)){
@@ -39,6 +39,9 @@ class LoginController extends Controller
$this->storeLoggedUser();
switch ($logged_in->designation_info->name) {
case 'Administrator':
return redirect(url('finance')); // change it to a combined dashboard
break;
case 'Accounts & Finance':
return redirect(url('finance'));
break;

View File

@@ -63,6 +63,7 @@ class NetworkOperatorsController extends Controller
'page_title' => 'Mobile Network Operators',
'current_user' => session('current_user')
];
// dd($data);
return view('network_ops.index', $data);
}
public function getMnosJson(Request $request)
@@ -84,7 +85,7 @@ class NetworkOperatorsController extends Controller
->whereRaw("network_operators.name LIKE '%$keyword%' OR network_operators.connection_status LIKE '%$keyword%' OR network_operators.country LIKE '%$keyword%' OR staffam.name LIKE '%$keyword%' ")
->orderBy('network_operators.name', 'ASC')
->paginate(15);
}
}
return response()->json($mno_arr);
}
@@ -117,7 +118,7 @@ class NetworkOperatorsController extends Controller
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
{
$request->validate([
'name' => 'required',
'country' => 'required',
@@ -224,7 +225,7 @@ class NetworkOperatorsController extends Controller
else{
$old_connection_type = [];
}
if ($network_arr->connection_status == 'Active') {
$status_bg = "info";
}
@@ -242,8 +243,8 @@ class NetworkOperatorsController extends Controller
'account_manager' => $account_manager,
'current_services' => json_decode($network_arr->services, true),
'services' => $services->toArray(),
'support_emails' => $support_emails,
'finance_emails' => $finance_emails,
'support_emails' => $support_emails,
'finance_emails' => $finance_emails,
'support_skype_arr' => $support_skype_arr,
'support_phones' => $support_phones,
'old_support_emails' => $old_support_emails,
@@ -327,7 +328,7 @@ class NetworkOperatorsController extends Controller
else{
$old_connection_type = [];
}
if ($network_arr->connection_status == 'Active') {
$status_bg = "info";
}
@@ -344,8 +345,8 @@ class NetworkOperatorsController extends Controller
'account_manager' => $account_manager,
'current_services' => json_decode($network_arr->services, true),
'services' => $services->toArray(),
'support_emails' => $support_emails,
'finance_emails' => $finance_emails,
'support_emails' => $support_emails,
'finance_emails' => $finance_emails,
'support_skype_arr' => $support_skype_arr,
'support_phones' => $support_phones,
'old_support_emails' => $old_support_emails,
@@ -379,7 +380,7 @@ class NetworkOperatorsController extends Controller
$request->document_one->storeAs('mno_files', $filename, 'public');
$document_arr['file_path'] = $filename;
$operator_update->name = $request->name;
$document_arr['file_extension'] = $request->document_one->extension();
$document_arr['file_reff'] = time() . uniqid();
$document_arr['name'] = $request->document_one_name;
@@ -394,7 +395,7 @@ class NetworkOperatorsController extends Controller
$request->document_two->storeAs('mno_files', $filename, 'public');
$document_arr['file_path'] = $filename;
$operator_update->name = $request->name;
$document_arr['file_extension'] = $request->document_two->extension();
$document_arr['file_reff'] = time() . uniqid();
$document_arr['name'] = $request->document_two_name;
@@ -404,13 +405,13 @@ class NetworkOperatorsController extends Controller
}
}
$operator_update->name = $request->name;
$operator_update->country = $request->country;
$operator_update->account_manager_id = $request->account_manager_id;
$operator_update->mno_account_manager = $request->mno_account_manager;
$operator_update->contact_person_email = $request->contact_person_email;
$operator_update->contact_person_phone = $request->contact_person_phone;
$operator_update->contact_person = $request->contact_person;
@@ -418,12 +419,12 @@ class NetworkOperatorsController extends Controller
$operator_update->technical_support_person = $request->technical_support_person ?? "";
$operator_update->contact_person_finance = $request->contact_person_finance ?? "";
$operator_update->contract_validity = $request->contract_validity ?? "";
$operator_update->contract_auto_renew = $request->contract_auto_renew ?? "";
$operator_update->connection_type = ($request->connection_type) ? json_encode($request->connection_type) : "";
$operator_update->connection_type = ($request->connection_type) ? json_encode($request->connection_type) : "";
$operator_update->contact_person_skype = $request->contact_person_skype ?? "";
@@ -433,7 +434,7 @@ class NetworkOperatorsController extends Controller
$operator_update->finance_emails = ($request->finance_emails) ? json_encode($request->finance_emails) : "";
$operator_update->support_phones = ($request->support_phones) ? json_encode($request->support_phones) : "";
$operator_update->support_skype = ($request->support_skype) ? json_encode($request->support_skype) : "";
$result = $operator_update->save();
@@ -460,7 +461,7 @@ class NetworkOperatorsController extends Controller
'created_by' => $auth_user['id'],
'last_modified_by' => $auth_user['id']
];
$result = Models\Mnoips::create($addresses_arr);
@@ -495,13 +496,13 @@ class NetworkOperatorsController extends Controller
if ($request->has('highlight')) {
$notes_arr['highlight'] = 'YES';
}
//dd($notes_arr);
$result = Models\Mnonote::create($notes_arr);
$notes = Models\Mnonote::with('mno_info', 'created_by_info')->find($result->id);
//todo : send emails
dispatch(new NewMnoNotesEmailAlerts($notes));
@@ -517,7 +518,7 @@ class NetworkOperatorsController extends Controller
{
$note = Models\Mnonote::find($id);
if ($note) {
$current_date = date_create(date('Y-m-d'));
$expiry_date = date_create($note->created_at);
@@ -535,7 +536,7 @@ class NetworkOperatorsController extends Controller
else{
return response()->json([ 'code' => 3, 'msg' => 'Request could not be handled at this time']);
}
}
public function getSinglePayment($id)
{
@@ -548,7 +549,7 @@ class NetworkOperatorsController extends Controller
else{
return response()->json([ 'code' => 3, 'msg' => 'Request could not be handled at this time']);
}
}
public function financeStore(Request $request)
{
@@ -562,7 +563,7 @@ class NetworkOperatorsController extends Controller
]);
$auth_user = session('current_user');
$finance_arr = [
'invoice_number' => $request->invoice_number,
'invoice_amount' => $request->invoice_amount,
@@ -575,7 +576,7 @@ class NetworkOperatorsController extends Controller
if ($request->has('remarks')) {
$finance_arr['remarks'] = $request->remarks;
}
$result = Models\Mnopayment::create($finance_arr);
if ($result) {
$data = ['code' => 1, 'msg' => 'Payment Details successfully added'];
@@ -630,8 +631,8 @@ class NetworkOperatorsController extends Controller
if ($request->has('highlight')) {
$notes_arr['highlight'] = 'YES';
}
//dd($notes_arr);
$result = Models\Mnonote::create($notes_arr);
@@ -650,7 +651,7 @@ class NetworkOperatorsController extends Controller
public function getMnoFile($id)
{
$mno_file = Models\MnoFile::with('mno_info')->findOrFail($id);
$file = public_path('documents/mno_files/') . $mno_file->file_path;
$headers = []; //['Content-Type: application/pdf'];
@@ -667,7 +668,7 @@ class NetworkOperatorsController extends Controller
$string = preg_replace('/[^A-Za-z0-9\-]/', '', $string);
// Replaces multiple hyphens with single one.
$string = preg_replace('/-+/', '_', $string);
return $string;
}
public function destroy($id)

View File

@@ -11,10 +11,10 @@ use Illuminate\Contracts\Mail\Mailer;
class UtilityController extends Controller
{
public function EmailTest(Mailer $mailer)
{
$emails = ['kwesi@click-mobile.com', 'kwesi_banson@hotmail.com'];
$data = [
@@ -32,6 +32,9 @@ class UtilityController extends Controller
return view('utility.map');
}
public function ntfyTest(){
$this->sendNtfy('In the ERP');
}
function insertOnboardingProgress(){
$all_clients = Models\Client::get();
$count_cl = 0;
@@ -40,30 +43,30 @@ class UtilityController extends Controller
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'
'status' => 'PENDING'
];
$clients_onboarding_progress = Models\ClientOnboardingProgress::updateOrCreate($stage_id, $progress_arr);
}
$count_cl++;
}
}
dump($count_cl);
}
function massOnboardingProgress($client_id){
//todo : update
//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,
-- 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();
$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,
'stage_id' => $value->stage_id,
'client_id' => $client_id,
'name' => $value->name,
'status' => 'COMPLETE'
];
$clients_onboarding_progress = Models\ClientOnboardingProgress::create($progress_arr);
@@ -75,13 +78,13 @@ class UtilityController extends Controller
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'
'status' => 'PENDING'
];
$clients_onboarding_progress = Models\ClientOnboardingProgress::updateOrCreate($stage_id, $progress_arr);
}
$count_cl++;
}
}
dump($count_cl);
}
}
// 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

@@ -38,9 +38,11 @@ class UpdateMnoRequest extends FormRequest
'contact_person' => 'required',
'contact_person_email' => 'required',
'contact_person_phone' => 'required',
'contract_auto_renew' => 'required',
'contract_validity' => 'required',
'document_one' => 'max:20480|mimes:png,jpg,jpeg,bmp,pdf,doc,docx,xlx,xlsx',
'document_two' => 'max:20480|mimes:png,jpg,jpeg,bmp,pdf,doc,docx,xlx,xlsx',
];
}
}