From d5ac7391dd9fe46f7894431ee46b0980ff9d9fb3 Mon Sep 17 00:00:00 2001 From: Kwesi Banson Jnr Date: Sun, 23 Nov 2025 14:40:32 +0000 Subject: [PATCH] bug fixes, AM change feature, refactoring --- 3 | 3 - accounts.md | 10 +- app/Http/Controllers/ClientsController.php | 75 ++++- app/Http/Controllers/Controller.php | 18 +- app/Http/Controllers/LoginController.php | 2 + .../NetworkOperatorsController.php | 8 +- .../Controllers/OfficeLocationsController.php | 13 +- app/Http/Controllers/SenderIdController.php | 96 +++++- .../Controllers/SupportTicketsController.php | 273 ++++++++++++++++++ app/Imports/SenderidImport.php | 2 +- app/Models/OfficeLocation.php | 5 +- app/Models/Permission.php | 11 + app/Models/SupportTicket.php | 25 ++ app/Models/SupportTicketsDocument.php | 14 + config/permissions.php | 18 ++ public/assets/js/clientshow.js | 49 ++++ public/assets/js/laravel-2025-06-04.log | 16 - public/assets/js/senderid.js | 109 +++++-- public/assets/js/support_ticket.js | 0 .../general_files/senderid_sample_file.xlsx | Bin 17445 -> 17525 bytes .../senderid_sample_file.xlsx | Bin 0 -> 17525 bytes .../views/client/partials/change-am.blade.php | 42 +++ resources/views/client/show.blade.php | 4 +- .../views/client/show_accordion.blade.php | 8 +- .../views/layouts/partials/sidebar.blade.php | 2 + .../views/officelocations/create.blade.php | 8 +- .../views/officelocations/edit.blade.php | 8 +- .../officelocations/filescreate.blade.php | 2 +- .../views/officelocations/filesedit.blade.php | 18 +- .../views/officelocations/index-new.blade.php | 123 ++++++++ .../views/officelocations/index.blade.php | 5 +- .../senderid/create.blade-10-02-2025.php | 105 +++++++ resources/views/senderid/create.blade.php | 9 +- resources/views/senderid/index.blade.php | 30 +- .../views/support-ticket/create.blade.php | 77 +++++ resources/views/support-ticket/edit.blade.php | 76 +++++ .../views/support-ticket/index.blade.php | 182 ++++++++++++ .../views/support-ticket/landing.blade.php | 106 +++++++ resources/views/support-ticket/show.blade.php | 107 +++++++ resources/views/systemusers/edit.blade.php | 15 +- routes/web.php | 10 +- 41 files changed, 1559 insertions(+), 125 deletions(-) delete mode 100644 3 create mode 100644 app/Http/Controllers/SupportTicketsController.php create mode 100644 app/Models/Permission.php create mode 100644 app/Models/SupportTicket.php create mode 100644 app/Models/SupportTicketsDocument.php create mode 100644 config/permissions.php delete mode 100644 public/assets/js/laravel-2025-06-04.log create mode 100644 public/assets/js/support_ticket.js create mode 100644 public/helper_documents/senderid_sample_file.xlsx create mode 100644 resources/views/client/partials/change-am.blade.php create mode 100644 resources/views/officelocations/index-new.blade.php create mode 100644 resources/views/senderid/create.blade-10-02-2025.php create mode 100644 resources/views/support-ticket/create.blade.php create mode 100644 resources/views/support-ticket/edit.blade.php create mode 100644 resources/views/support-ticket/index.blade.php create mode 100644 resources/views/support-ticket/landing.blade.php create mode 100644 resources/views/support-ticket/show.blade.php diff --git a/3 b/3 deleted file mode 100644 index b7f89a4..0000000 --- a/3 +++ /dev/null @@ -1,3 +0,0 @@ -[] -[] -[] diff --git a/accounts.md b/accounts.md index 27e3db0..88fd980 100755 --- a/accounts.md +++ b/accounts.md @@ -56,6 +56,14 @@ app password: sqczcsrtcehpywjv - daniel - theCitadel@111 +- orou +- boatformer@100 - andrew -- blacktone@900 \ No newline at end of file +- blacktone@900 + +- aniguia@click-mobile.com +- mozfet@100 + +- melissa@click-mobile.com +- swlgas@Och5T \ No newline at end of file diff --git a/app/Http/Controllers/ClientsController.php b/app/Http/Controllers/ClientsController.php index 1b7df86..2de80f0 100755 --- a/app/Http/Controllers/ClientsController.php +++ b/app/Http/Controllers/ClientsController.php @@ -15,6 +15,7 @@ use App\Http\Requests; use Carbon\Carbon; use App\Libs\PaperLessNgx; use Spatie\Activitylog\Models\Activity; +use Config; class ClientsController extends Controller { @@ -23,7 +24,7 @@ class ClientsController extends Controller * * @return \Illuminate\Http\Response */ - public function index(){ + public function index(){ $data = [ 'page_title' => 'Clients', 'current_user' => session('current_user') @@ -715,7 +716,7 @@ class ClientsController extends Controller $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'); - + $auth_users = Models\SystemUser::orderBy('name', 'ASC')->pluck('name', 'id'); $networks_raw = [ 'AirtelTigo GH' => 'AirtelTigo GH', 'MTN GH' => 'MTN GH', @@ -814,6 +815,8 @@ class ClientsController extends Controller sort($networks_raw); $recurring_arr = ['NO' => 'NO', 'Monthly' => 'Monthly', 'Quarterly' => 'Quarterly', 'Semiannual' => 'Semiannual', 'Yearly' => 'Yearly']; $sender_id_statuses = ['Pending' => 'Pending', 'Inactive' => 'Inactive', 'Approved' => 'Approved']; + $change_account_mgr_permisson = Config::get('permissions.CHANGE_ACCOUNT_MANAGERS'); + $change_account_mgr_permisson = ($this->hasAnyAccess([$change_account_mgr_permisson])) ? 'YES' : 'NO'; $data = [ 'page_title' => 'Client Profile', 'showclient' => $showclient, @@ -839,6 +842,8 @@ class ClientsController extends Controller 'recurring_arr' => $recurring_arr, // 'client_sender_ids' => $client_sender_ids, // 'sender_id_statuses' => $sender_id_statuses, + 'change_account_mgr_permisson' => $change_account_mgr_permisson, + 'am_list_arr' => $auth_users, 'country_network_arr' => $country_networks, 'mnos_arr' => ['' => '-- Select Country first --'] ]; @@ -1198,26 +1203,29 @@ class ClientsController extends Controller * @return \Illuminate\Http\Response */ public function update(Requests\UpdateClientRequest $request, $id){ - // dd($request->all()); + // dump($request->all()); // \DB::connection()->enableQueryLog(); $client_update = Models\Client::find($id); + // dump($client_update->progress_indicator); $paperless = new PaperLessNgx(); if ($client_update->progress_indicator != 'COMPLETED') { $current_pending_stage_details = Models\ClientOnboardingMainStage::where('stage', $request->current_pending_stage)->first(); $get_stage_subs_items = Models\ClientOnboardingSubItem::where('stage_id', $current_pending_stage_details->stage_id)->get(); #update the table for onboarding progress - foreach ($request->onboarding_sub_items_progress as $value) { - $stage_id = [ - 'stage_id' => $current_pending_stage_details->stage_id, - 'client_id' => $id, - 'name' => $value - ]; - $progress_arr = [ - 'status' => 'COMPLETED' - ]; - $clients_onboarding_progress = Models\ClientOnboardingProgress::updateOrCreate($stage_id, $progress_arr); + // dump($request->onboarding_sub_items_progress); + if ($request->onboarding_sub_items_progress) { + foreach ($request->onboarding_sub_items_progress as $value) { + $stage_id = [ + 'stage_id' => $current_pending_stage_details->stage_id, + 'client_id' => $id, + 'name' => $value + ]; + $progress_arr = [ + 'status' => 'COMPLETED' + ]; + $clients_onboarding_progress = Models\ClientOnboardingProgress::updateOrCreate($stage_id, $progress_arr); + } } - //update the status of onboarding progress stage in clients $get_stage_onboarding_status = Models\ClientOnboardingProgress::where('client_id', $id)->where('stage_id', $current_pending_stage_details->stage_id)->where('status', 'COMPLETED')->get(); $onboarding_progress_stage = json_decode($client_update->onboarding_progress_stage, true); @@ -1450,6 +1458,45 @@ class ClientsController extends Controller $result = Models\ClientCategory::create($client_arr); } return true; + } + public function changeAccountManagers(Request $request){ + + $new_account_manager = Models\SystemUser::find($request->account_manager); + + $client = Models\Client::with('auth_user_info')->find($request->client_id); + $client->auth_user_id = $request->account_manager; + $client->last_modified_by = session('current_user.id'); + $result = $client->save(); + + if ($result) { + + $log_text = session('current_user.name') . " changed the account manager of "; + $log_text .= " " . $client->name . " from " . $client->auth_user_info->name; + $log_text .= " to " . $new_account_manager->name; + + $activity_arr = [ + 'type' => 'staff', + 'content' => $log_text, + 'user_id' => session('current_user.id'), + 'ip_address' => \Request::ip(), + 'device' => $request->header('User-Agent') + ]; + $retval = Models\UserActivity::create($activity_arr); + + $user_id = session('current_user.id'); + $username = session('current_user.name'); + $content = $log_text; + $this->logUsersActivity($type = 'staff', $content); + + $data = ['code' => 1, $msg = 'success']; + return response()->json($data, 200); + } + else{ + $data = ['code' => 3, $msg = 'fail']; + return response()->json($data, 200); + } + + } public function storeFiles(AddFilesRequest $request){ $document_arr = $request->except('document'); diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index ed3d1f4..ac05c59 100755 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -7,7 +7,7 @@ use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Foundation\Validation\ValidatesRequests; use Illuminate\Routing\Controller as BaseController; use App\Models; - +use Config; class Controller extends BaseController{ use AuthorizesRequests, DispatchesJobs, ValidatesRequests; @@ -92,4 +92,20 @@ class Controller extends BaseController{ } return true; } + + public function hasAnyAccess($permissions){ + // dump(Config::get('permissions.' )); + $required_permission = array_sum($permissions); + #$system_permissions = Models\Permission::where('status', 'active')->get(); + + if (session('current_user.permissions') <> '') { + if ((int)session('current_user.permissions') & $required_permission) { + return true; + } + else{ + return false; + } + } + return false; + } } diff --git a/app/Http/Controllers/LoginController.php b/app/Http/Controllers/LoginController.php index cf137d3..2441ea5 100755 --- a/app/Http/Controllers/LoginController.php +++ b/app/Http/Controllers/LoginController.php @@ -70,6 +70,7 @@ class LoginController extends Controller $request->session()->put('current_otpuser.email', $logged_in->email); $request->session()->put('current_otpuser.phone', $logged_in->phone); $request->session()->put('current_otpuser.datetime_sent', date('Y-m-d H:i:s')); + $request->session()->put('current_otpuser.permissions', $logged_in->permissions); $request->session()->put('current_otpuser.designation', $logged_in->designation_info->name); $otp_set = ['otp' => $otp_code, 'email' => $logged_in->email, 'auth_name' => $logged_in->name]; @@ -109,6 +110,7 @@ class LoginController extends Controller $request->session()->put('current_user.name', $otp_user['name']); $request->session()->put('current_user.email', $otp_user['email']); $request->session()->put('current_user.phone', $otp_user['phone']); + $request->session()->put('current_user.permissions', $otp_user['permissions']); $request->session()->put('current_user.designation', $otp_user['designation']); diff --git a/app/Http/Controllers/NetworkOperatorsController.php b/app/Http/Controllers/NetworkOperatorsController.php index e7bee1c..79ec7a5 100755 --- a/app/Http/Controllers/NetworkOperatorsController.php +++ b/app/Http/Controllers/NetworkOperatorsController.php @@ -69,8 +69,8 @@ class NetworkOperatorsController extends Controller public function getMnosJson(Request $request){ //$this->log_query(); $mno_arr = \DB::table('network_operators') - ->join('staff_members AS staffam', 'staffam.id', '=', 'network_operators.account_manager_id') - ->join('staff_members AS staffmodify', 'staffmodify.id', '=', 'network_operators.last_modified_by') + ->join('auth_users AS staffam', 'staffam.id', '=', 'network_operators.account_manager_id') + ->join('auth_users AS staffmodify', 'staffmodify.id', '=', 'network_operators.last_modified_by') ->select('network_operators.id', 'staffam.name AS accountManager', 'network_operators.name AS networkName', 'network_operators.country','network_operators.contract_validity', 'network_operators.connection_status', 'staffmodify.name AS modifiedBy') ->orderBy('network_operators.name', 'ASC') ->paginate(15); @@ -78,8 +78,8 @@ class NetworkOperatorsController extends Controller if($request->has('keyword')){ $keyword = $request->keyword; $mno_arr = \DB::table('network_operators') - ->join('staff_members AS staffam', 'staffam.id', '=', 'network_operators.account_manager_id') - ->join('staff_members AS staffmodify', 'staffmodify.id', '=', 'network_operators.last_modified_by') + ->join('auth_users AS staffam', 'staffam.id', '=', 'network_operators.account_manager_id') + ->join('auth_users AS staffmodify', 'staffmodify.id', '=', 'network_operators.last_modified_by') ->select('network_operators.id', 'staffam.name AS accountManager', 'network_operators.name AS networkName', 'network_operators.country','network_operators.contract_validity', 'network_operators.connection_status', 'staffmodify.name AS modifiedBy') ->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') diff --git a/app/Http/Controllers/OfficeLocationsController.php b/app/Http/Controllers/OfficeLocationsController.php index 1d97b9f..0771120 100644 --- a/app/Http/Controllers/OfficeLocationsController.php +++ b/app/Http/Controllers/OfficeLocationsController.php @@ -18,8 +18,9 @@ class OfficeLocationsController extends Controller 'offices_arr' => $offices_arr, 'current_user' => session('current_user') ]; + // dd($data); // dd($offices_arr->isEmpty()); - return view('officelocations.index', $data); + return view('officelocations.index-new', $data); } public function showfiles($id){ $branch_files = Models\BranchFile::where('branch_id', $id)->get(); @@ -55,7 +56,7 @@ class OfficeLocationsController extends Controller public function create() { $countries = Models\Country::pluck('en_short_name','en_short_name'); - $staffmembers = Models\StaffMember::pluck('name', 'id'); + $staffmembers = Models\SystemUser::pluck('name', 'id'); //system users $data = [ 'page_title' => 'Add Office Location', 'countries' => $countries, @@ -85,7 +86,6 @@ class OfficeLocationsController extends Controller 'street_name' => 'sometimes', 'physical_address' => 'required', 'postal_address' => 'required', - 'block_number' => 'sometimes', 'city_town' => 'required', 'country' => 'required|unique:office_locations,country', 'country_manager_id' => 'required', @@ -102,6 +102,7 @@ class OfficeLocationsController extends Controller $office_arr['user_id'] = session('current_user.id'); $office_arr['flag_url'] = $flag_url; + $office_arr['city'] = $request->city_town; $result = Models\OfficeLocation::create($office_arr); Session::flash('success_message', 'Office Location successfully added'); return redirect(url('officelocations')); @@ -133,13 +134,13 @@ class OfficeLocationsController extends Controller 'country_manager_id' => 'required', 'office_phone' => 'required' ]); - + // dd($request->all()); $office = Models\OfficeLocation::findOrFail($id); $office->street_name = $request->street_name ?? ""; $office->physical_address = $request->physical_address; $office->postal_address = $request->postal_address; - $office->block_number = $request->block_number; + $office->city = $request->city_town; $office->country = $request->country; $office->country_manager_id = $request->country_manager_id; $office->office_phone = $request->office_phone; @@ -208,10 +209,12 @@ class OfficeLocationsController extends Controller $request->validate([ 'document_one_name' => 'required', 'id' => 'required', + 'validity_period_one' => 'sometimes', 'document_one' => 'max:10240|mimes:png,jpg,jpeg,bmp,pdf,doc,docx,xlx,xlsx,pptx,ppt', ]); $document = Models\BranchFile::findOrFail($request->id); $document->name = $request->document_one_name; + $document->validity_period = $request->validity_period_one; if ($request->has('document_one')) { if ($request->file('document_one')->isValid()) { $filename = "erp_" . time() . str_random(6) . "." . $request->document_one->extension(); diff --git a/app/Http/Controllers/SenderIdController.php b/app/Http/Controllers/SenderIdController.php index f7bd1dc..8ec4ccc 100644 --- a/app/Http/Controllers/SenderIdController.php +++ b/app/Http/Controllers/SenderIdController.php @@ -6,7 +6,7 @@ use Illuminate\Http\Request; use App\Models; use Session; use Excel; -use App\Imports\Senderidimport; +use App\Imports\SenderidImport; use Illuminate\Support\Facades\File; class SenderIdController extends Controller @@ -35,8 +35,10 @@ class SenderIdController extends Controller ->paginate(15); if($request->has('keyword')){ + $queries = []; $keyword = $request->keyword; + $request->session()->put('current_user.senderid_keyword', $keyword); $queries['keyword'] = $keyword; $senderid_arr = \DB::table('sender_ids') ->join('staff_members AS staffcreate', 'staffcreate.id', '=', 'sender_ids.created_by') @@ -109,14 +111,35 @@ class SenderIdController extends Controller 'status' => 'required', 'remarks' => 'sometimes', ]); + // dump($request->all()); + /* $check_duplicate = Models\SenderId::where('senderid', $request->senderid) ->where('mno_name', $request->mno_name) ->first(); - - if($check_duplicate){ - return redirect()->back()->withInput()->withErrors("Sender ID already exist for " . $request->mno_name ); + */ + + $check_duplicate = Models\SenderId::where('senderid', $request->senderid)->first(); + // dd($check_duplicate); + if ($check_duplicate) { + // code... + if ($request->direct_mno == 'YES' && $check_duplicate->direct_mno == 'YES') { + if ($request->mno_name == $check_duplicate->mno_name) { + return redirect()->back()->withInput()->withErrors("Sender ID already exist for " . $request->mno_name ); + } + } + if ($request->direct_mno == 'NO' && $check_duplicate->direct_mno == 'NO') { + if ($request->supplier_name == $check_duplicate->supplier_name) { + return redirect()->back()->withInput()->withErrors("Sender ID already exist for " . $request->supplier_name ); + } + } + } + // dd('foo stop'); + // if($check_duplicate){ + // return redirect()->back()->withInput()->withErrors("Sender ID already exist for " . $request->mno_name ); + // } + $senderid_arr = $request->except('_token'); $senderid_arr['created_by'] = session('current_user.id'); $senderid_arr['last_modified_by'] = session('current_user.id'); @@ -179,7 +202,7 @@ class SenderIdController extends Controller $request->senderid_file->storeAs('general_files', $filename, 'public'); $stored_file = public_path('documents/general_files/'.$filename); - $extracted_arr = Excel::toArray(new Senderidimport, $stored_file); + $extracted_arr = Excel::toArray(new SenderidImport, $stored_file); // dd($extracted_arr[0]); $row_count = $extracted_arr[0]; $main = []; @@ -227,6 +250,7 @@ class SenderIdController extends Controller // dd('foo bar'); $senderid_arr['senderid'] = $value['senderid']; $senderid_arr['mno_name'] = $value['mno_name']; + $senderid_arr['status'] = $value['status']; $senderid_arr['created_by'] = session('current_user.id'); $senderid_arr['last_modified_by'] = session('current_user.id'); $senderid_arr['remarks'] = $value['remarks']; @@ -235,6 +259,7 @@ class SenderIdController extends Controller else{ $senderid_arr['senderid'] = $value['senderid']; $senderid_arr['supplier_name'] = $value['supplier_name']; + $senderid_arr['status'] = $value['status']; $senderid_arr['created_by'] = session('current_user.id'); $senderid_arr['last_modified_by'] = session('current_user.id'); $senderid_arr['remarks'] = $value['remarks']; @@ -261,7 +286,7 @@ class SenderIdController extends Controller return \Response::download($file, 'Sender ID Upload Report', $headers); } public function getSampleFile(){ - $file = public_path('documents/general_files/senderid_sample_file.xlsx'); + $file = public_path('helper_documents/senderid_sample_file.xlsx'); #$extension = pathinfo($file, PATHINFO_EXTENSION); $headers = ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']; @@ -374,6 +399,65 @@ class SenderIdController extends Controller } } + public function exportSenderIdCsv(){ + $fileName = 'senderid_list.csv'; + $users = Models\SenderId::all()->toArray(); // Adjust model as needed + + $headers = [ + 'Content-Type' => 'text/csv', + 'Content-Disposition' => "attachment; filename=\"$fileName\"", + 'Pragma' => 'no-cache', + 'Cache-Control' => 'must-revalidate, post-check=0, pre-check=0', + 'Expires' => '0', + ]; + + $keyword = session('current_user.senderid_keyword'); + // dd(request('keyword')); + // dd($keyword); + request()->session()->put('current_user.senderid_keyword', null); + // dump($keyword); + $senderid_arr = \DB::table('sender_ids') + ->join('staff_members AS staffcreate', 'staffcreate.id', '=', 'sender_ids.created_by') + ->join('staff_members AS staffmodify', 'staffmodify.id', '=', 'sender_ids.last_modified_by') + ->select('sender_ids.id', 'mno_name', 'supplier_name', 'sender_ids.senderid', 'sender_ids.status', 'sender_ids.remarks', 'staffcreate.name As createdBy', 'sender_ids.direct_mno', 'staffmodify.name AS modifiedBy') + ->whereRaw("sender_ids.senderid LIKE '%$keyword%' OR sender_ids.status LIKE '%$keyword%' OR mno_name LIKE '%$keyword%' OR supplier_name LIKE '%$keyword%' OR staffcreate.name LIKE '%$keyword%' OR staffmodify.name LIKE '%$keyword%' OR sender_ids.direct_mno LIKE '%$keyword%'") + ->orderBy('sender_ids.senderid', 'ASC') + ->get()->toArray(); + + // dd($senderid_arr); + + # add headers for each column in the CSV download + array_unshift($senderid_arr, array_keys((array)$senderid_arr[0])); + + $callback = function() use ($senderid_arr){ + $file_handle = fopen('php://output', 'w'); + foreach ($senderid_arr as $row) { + $row = (array)$row; + fputcsv($file_handle, $row); + } + fclose($file_handle); + }; + + // return Response::stream($callback, 200, $headers); + return response()->stream($callback, 200, $headers); + + + + // $callback = function() use ($senderid_arr) { + // $file = fopen('php://output', 'w'); + // // Add CSV headers + // fputcsv($file, array_keys($senderid_arr[0])); + // // Add data rows + // foreach ($senderid_arr as $row) { + // fputcsv($file, $row); + // } + // fclose($file); + + // }; + + // return response()->stream($callback, 200, $headers); + } + public function getMNOList($type){ if ($type == 'YES') { diff --git a/app/Http/Controllers/SupportTicketsController.php b/app/Http/Controllers/SupportTicketsController.php new file mode 100644 index 0000000..21ab4fd --- /dev/null +++ b/app/Http/Controllers/SupportTicketsController.php @@ -0,0 +1,273 @@ + 'Support Tickets Home', + 'current_user' => session('current_user') + ]; + return view('support-ticket.landing', $data); + } + public function ticketlist(){ + $data = [ + 'page_title' => 'Support Tickets List', + 'current_user' => session('current_user') + ]; + return view('support-ticket.index', $data); + } + public function getSuppoerTicketJson(Request $request) + { + #$this->log_query(); + $supportticket_arr = \DB::table('support_tickets') + ->join('staff_members AS staffcreate', 'staffcreate.id', '=', 'support_tickets.created_by_id') + ->join('staff_members AS assignedTo', 'assignedTo.id', '=', 'support_tickets.assigned_to_id') + // ->join('network_operators', 'network_operators.id', '=', 'support_tickets.network_id') + // ->join('clients', 'clients.id', '=', 'support_tickets.client_id') + ->select('support_tickets.id', 'support_tickets.case_number', 'support_tickets.subject', 'support_tickets.body', 'support_tickets.created_by_id', 'support_tickets.status', 'support_tickets.created_at', 'support_tickets.assigned_to_id', 'staffcreate.name As createdBy', 'assignedTo.name AS assignedToName') + ->orderBy('support_tickets.id', 'ASC') + ->paginate(15); + + if($request->has('keyword')){ + $queries = []; + $keyword = $request->keyword; + $queries['keyword'] = $keyword; + + $supportticket_arr = \DB::table('support_tickets') + ->join('staff_members AS staffcreate', 'staffcreate.id', '=', 'support_tickets.created_by_id') + ->join('staff_members AS assignedTo', 'assignedTo.id', '=', 'support_tickets.assigned_to_id') + ->select('support_tickets.id', 'support_tickets.case_number', 'support_tickets.subject', 'support_tickets.body', 'support_tickets.created_by_id', 'support_tickets.status', 'support_tickets.created_at', 'support_tickets.assigned_to_id', 'staffcreate.name As createdBy', 'assignedTo.name AS assignedToName') + ->whereRaw("support_tickets.case_number LIKE '%$keyword%' OR assignedTo.name LIKE '%$keyword%' OR support_tickets.status LIKE '%$keyword%' OR support_tickets.body LIKE '%$keyword%' OR staffcreate.name LIKE '%$keyword%' OR support_tickets.created_at LIKE '%$keyword%'") + ->orderBy('support_tickets.id', 'ASC') + ->paginate(15)->appends($queries); + } + return response()->json($supportticket_arr); + } + public function create() + { + #$network_arr = Models\NetworkOps::pluck('name','country'); + + $networks = \DB::table('network_operators')->Select(\DB::raw('concat(name, " (", country, ")") AS networkvalue, concat(name, " (", country, ")") AS network'))->orderBy('network')->get()->toArray(); + $network_arr = array_pluck($networks, 'network', 'networkvalue'); + $direct_mno_arr = ['YES' => 'YES', 'NO' => 'NO']; + + // dd($network_arr); + #$network_arr = array_combine($network_arr, $network_arr); + + + // $clients = Models\Client::pluck('name', 'name'); + $clients = \DB::table('clients')->Select(\DB::raw('concat(name, " (", country, ")") AS clientvalue, concat(name, " (", country, ")") AS client'))->orderBy('client')->get()->toArray(); + $client_arr = array_pluck($clients, 'client', 'clientvalue'); + $staffmembers = Models\StaffMember::pluck('name', 'id'); + #$status = ['Pending' => 'Pending', 'Inactive' => 'Inactive', 'Approved' => 'Approved']; + #$status = ['Applied to MNO', 'Applied to Aggregator', 'Approved on MNO', 'Approved on Aggregator', 'Active', 'InActive']; + $status = [ + 'Applied to MNO' => 'Applied to MNO', + 'Applied to Aggregator' => 'Applied to Aggregator', + 'Approved on MNO' => 'Approved on MNO', + 'Approved on Aggregator' => 'Approved on Aggregator', + 'Active' => 'Active', + 'Inactive' => 'InActive' + ]; + + $data = [ + 'page_title' => 'Create Sender ID', + 'network_arr' => $network_arr, + 'status' => $status, + 'clients' => $client_arr, + 'direct_mno_arr' => $direct_mno_arr, + 'staffmembers' => $staffmembers + ]; + // dd($data); + return view('support-ticket.create', $data); + } + public function store(Request $request) + { + $request->validate([ + 'subject' => 'sometimes', + 'body' => 'required', + 'attachment' => 'sometimes', + //max:10240|mimes:png,jpg,jpeg,bmp,pdf,doc,docx,xlx,xlsx,pptx,ppt + ]); + // dd($request->all()); + //Generate case number here + $case_number = "ERP-" . date('Y-m-d-') . time(); + $ticket_arr = $request->except('_token'); + $ticket_arr['case_number'] = $case_number; + $ticket_arr['assigned_to_id'] = 1; // change this + $ticket_arr['created_by_id'] = session('current_user.id'); // change this + + $result = Models\SupportTicket::create($ticket_arr); + + if ($request->attachment !== null) { + if ($request->file('attachment')->isValid()) { + //dd($request->all()); + $filename = "erp_" . time() . str_random(4) . "." . $request->attachment->extension(); + $request->attachment->storeAs('supportticket_files', $filename, 'public'); + $document_arr['filename'] = $filename; + + $document_arr['file_extension'] = $request->document_one->extension(); + $document_arr['file_reff'] = time() . uniqid(); + $document_arr['case_number'] = $case_number; + $document_arr['uploaded_by'] = session('current_user.id'); + + $result = Models\SupportTicketsDocument::create($document_arr); + } + } + Session::flash('success_message', 'Support Ticket successfully created'); + return redirect(url('supporttickets/list')); + } + public function edit($id){ + $support_ticket = Models\SupportTicket::findOrFail($id); + + $data = [ + 'page_title' => 'Edit Support', + 'support_ticket' => $support_ticket, + ]; + return view('support-ticket.edit', $data); + } + public function update(Request $request, $id) + { + + $request->validate([ + 'subject' => 'sometimes', + 'body' => 'required', + 'attachment' => 'sometimes', + ]); + + $support_ticket = Models\SupportTicket::findOrFail($id); + + $support_ticket->body = $request->body; + $support_ticket->body = $request->subject; + + $support_ticket->save(); + + Session::flash('success_message', 'Support Ticket successfully Updated'); + return redirect(url('supporttickets/list')); + } + public function fileStore(Requests\BranchFilesRequest $request) + { + + if ($request->has('document_one') && $request->has('document_one_name')) { + if ($request->file('document_one')->isValid()) { + $filename = "erp_" . time() . str_random(6) . "." . $request->document_one->extension(); + $request->document_one->storeAs('branch_files', $filename, 'public'); + $document_arr['filename'] = $filename; + $document_arr['branch_id'] = $request->branch_id; + $document_arr['file_path'] = $filename; + + $document_arr['file_extension'] = $request->document_one->extension(); + $document_arr['file_reff'] = time() . uniqid(); + $document_arr['name'] = $request->document_one_name; + $document_arr['validity_period'] = $request->validity_period_one; + $document_arr['uploaded_by'] = session('current_user.id'); + $result = Models\BranchFile::create($document_arr); + } + } + if ($request->has('document_two') && $request->has('document_two_name')) { + if ($request->file('document_two')->isValid()) { + $filename = "erp_" . time() . str_random(6) . "." . $request->document_two->extension(); + $request->document_two->storeAs('branch_files', $filename, 'public'); + $document_arr['filename'] = $filename; + $document_arr['branch_id'] = $request->branch_id; + $document_arr['file_path'] = $filename; + + $document_arr['file_extension'] = $request->document_two->extension(); + $document_arr['file_reff'] = time() . uniqid(); + $document_arr['name'] = $request->document_two_name; + $document_arr['validity_period'] = $request->validity_period_two; + $document_arr['uploaded_by'] = session('current_user.id'); + $result = Models\BranchFile::create($document_arr); + } + } + if ($request->has('document_three') && $request->has('document_three_name')) { + if ($request->file('document_three')->isValid()) { + $filename = "erp_" . time() . str_random(6) . "." . $request->document_three->extension(); + $request->document_three->storeAs('branch_files', $filename, 'public'); + $document_arr['filename'] = $filename; + $document_arr['branch_id'] = $request->branch_id; + $document_arr['file_path'] = $filename; + + $document_arr['file_extension'] = $request->document_three->extension(); + $document_arr['file_reff'] = time() . uniqid(); + $document_arr['name'] = $request->document_three_name; + $document_arr['validity_period'] = $request->validity_period_third; + $document_arr['uploaded_by'] = session('current_user.id'); + $result = Models\BranchFile::create($document_arr); + } + } + Session::flash('success_message', 'Document(s) successfully uploaded'); + return redirect(url('supporttickets/list')); + } + public function filesUpdate(Request $request) + { + $request->validate([ + 'document_one_name' => 'required', + 'id' => 'required', + 'validity_period_one' => 'sometimes', + 'document_one' => 'max:10240|mimes:png,jpg,jpeg,bmp,pdf,doc,docx,xlx,xlsx,pptx,ppt', + ]); + $document = Models\BranchFile::findOrFail($request->id); + $document->name = $request->document_one_name; + $document->validity_period = $request->validity_period_one; + if ($request->has('document_one')) { + if ($request->file('document_one')->isValid()) { + $filename = "erp_" . time() . str_random(6) . "." . $request->document_one->extension(); + $request->document_one->storeAs('branch_files', $filename, 'public'); + $document->file_path = $filename; + + $document->file_extension = $request->document_one->extension(); + $document->file_reff = time() . uniqid(); + //$document->name = $request->document_one_name; + $document->uploaded_by = session('current_user.id'); + } + } + $result = $document->save(); + Session::flash('success_message', 'Document(s) successfully updated'); + return redirect(url('supporttickets/list')); + } + + public function show_edit_files_form($id){ + $document = Models\BranchFile::findOrFail($id); + $data = [ + 'page_title' => 'Update Document', + 'document' => $document + ]; + return view('supporttickets.filesedit', $data); + } + + public function getDocument($id) + { + $branch_file = Models\BranchFile::with('branch_info')->findOrFail($id); + + $file = public_path('documents/branch_files/') . $branch_file->file_path; + + $headers = []; //['Content-Type: application/pdf']; + $filename = $branch_file->branch_info->name . "_" . $branch_file->name; + $filename = $this->cleanStr($filename); + $filename = $filename . "." . $branch_file->file_extension; + + // $filename = str_replace(' ', '_', $filename); + return \Response::download($file, $filename, $headers); + } + public function cleanStr($string){ + // Replaces all spaces with hyphens. + $string = str_replace(' ', '-', $string); + + // Removes special chars. + $string = preg_replace('/[^A-Za-z0-9\-]/', '', $string); + // Replaces multiple hyphens with single one. + $string = preg_replace('/-+/', '_', $string); + + return $string; + } +} diff --git a/app/Imports/SenderidImport.php b/app/Imports/SenderidImport.php index 5ece007..fd6007c 100644 --- a/app/Imports/SenderidImport.php +++ b/app/Imports/SenderidImport.php @@ -6,7 +6,7 @@ use Illuminate\Support\Collection; use Maatwebsite\Excel\Concerns\ToCollection; use Maatwebsite\Excel\Concerns\WithHeadingRow; -class Senderidimport implements ToCollection, WithHeadingRow +class SenderidImport implements ToCollection, WithHeadingRow { /** * @param Collection $collection diff --git a/app/Models/OfficeLocation.php b/app/Models/OfficeLocation.php index 66cc33c..9a4631e 100644 --- a/app/Models/OfficeLocation.php +++ b/app/Models/OfficeLocation.php @@ -9,9 +9,10 @@ class OfficeLocation extends Model protected $guarded = array('id'); public function created_by_info(){ - return $this->hasOne('App\Models\StaffMember', 'id', 'user_id'); + return $this->hasOne('App\Models\SystemUser', 'id', 'user_id'); } public function country_manager_info(){ - return $this->hasOne('App\Models\StaffMember', 'id', 'country_manager_id'); + // return $this->hasOne('App\Models\StaffMember', 'id', 'country_manager_id'); + return $this->hasOne('App\Models\SystemUser', 'id', 'country_manager_id'); } } diff --git a/app/Models/Permission.php b/app/Models/Permission.php new file mode 100644 index 0000000..8148a89 --- /dev/null +++ b/app/Models/Permission.php @@ -0,0 +1,11 @@ +hasOne('App\Models\StaffMember', 'id', 'last_modified_by'); + } + + public function created_by_info(){ + return $this->hasOne('App\Models\StaffMember', 'id', 'created_by'); + } + public function assignedTo(){ + return $this->hasOne('App\Models\StaffMember', 'id', 'assigned_to'); + } +} diff --git a/app/Models/SupportTicketsDocument.php b/app/Models/SupportTicketsDocument.php new file mode 100644 index 0000000..fb9068a --- /dev/null +++ b/app/Models/SupportTicketsDocument.php @@ -0,0 +1,14 @@ + 1, + 'VIEW_USERS' => 2, + 'ADD_EDIT_REMOVE_USERS' => 4, + 'MANAGE_CLIENTS' => 8, + 'MANAGE_MNOS' => 16, + 'MANAGE_SHORT_CODES' => 32, + 'MANAGE_SENDER_IDS' => 64, + 'MANAGE_VPN_CONFIGS' => 128, + 'MANAGE_BRANCH_OFFICES' => 256, + 'MANAGE_UTILITIES' => 512, + 'MANAGE_TEAM_MEMBERS' => 1024, + 'CHANGE_ACCOUNT_MANAGERS' => 2048, +]; + +?> \ No newline at end of file diff --git a/public/assets/js/clientshow.js b/public/assets/js/clientshow.js index ed7d2a3..e38f3a8 100644 --- a/public/assets/js/clientshow.js +++ b/public/assets/js/clientshow.js @@ -144,6 +144,12 @@ $(document).ready(function(){ evt.preventDefault(); $('#supportFeesFormModal').modal('show'); }); + + $('#changeAmTrigBtn').click(function(evt){ + evt.preventDefault(); + $('#changeAmModal').modal('show'); + }); + $('.paymentEntryEditBtn').click(function(tve){ tve.preventDefault(); //var theIDD = $("input[name=payment_entry_id]").val(); @@ -593,6 +599,49 @@ $(document).ready(function(){ } }); }); + $('#changeAmForm').submit(function(evt){ + evt.preventDefault(); + var formData = new FormData($(this)[0]); + $.ajax({ + type: "POST", + url: base_url + '/clients/changeam', + data : formData, + processData: false, + contentType: false, + async: false, + success: function (data){ + if (data.code === 1) { + $.alert({ + title: 'Alert!', + content: 'Account Manager successfully changed', + }); + 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 !', + }); + + } + }, + error: function (data) { + var output = $.parseJSON(data.responseText); + console.log(output); + }, + fail : function(errordata){ + console.log(errordata); + } + }); + }); $('#newSenderIdForm').submit(function(evt){ evt.preventDefault(); diff --git a/public/assets/js/laravel-2025-06-04.log b/public/assets/js/laravel-2025-06-04.log deleted file mode 100644 index 75637a0..0000000 --- a/public/assets/js/laravel-2025-06-04.log +++ /dev/null @@ -1,16 +0,0 @@ -[2025-06-04 08:59:13] production.INFO: Mphatso Katundu Successfully logged in at : 2025-06-04 08:59:13 -[2025-06-04 08:59:15] production.INFO: Mphatso Katundu Successfully logged in at : 2025-06-04 08:59:15 -[2025-06-04 10:18:10] production.INFO: PPXkA9 -[2025-06-04 11:36:58] production.INFO: Kwesi Banson Successfully logged in at : 2025-06-04 11:36:58 -[2025-06-04 11:58:49] production.INFO: Charity Mtembezeka Successfully logged in at : 2025-06-04 11:58:49 -[2025-06-04 13:00:02] production.INFO: MNOs due for renewal -[2025-06-04 13:15:21] production.INFO: New notes for : ASTRAL SMS -[2025-06-04 13:15:21] production.INFO: New notes triggered by : Charity Mtembezeka -[2025-06-04 13:15:21] production.INFO: Astral SMS: Afghanistan route was set for them, they are in the process of testing the route. -[2025-06-04 14:00:13] production.INFO: Clients due for renewal TSG Carrier, mansa@click-mobile.com, 15 -[2025-06-04 14:40:58] production.INFO: New notes for : Zaheen Telecom -[2025-06-04 14:40:58] production.INFO: New notes triggered by : Charity Mtembezeka -[2025-06-04 14:40:58] production.INFO: Zaheen: Continued our Sierra Leone discussion, they said they will set for us. They wanted Sri Lanka route, but unfortunately, they have lost the traffic. -[2025-06-04 14:43:59] production.INFO: New notes for : BBT VOICE & SMS -[2025-06-04 14:44:00] production.INFO: New notes triggered by : Charity Mtembezeka -[2025-06-04 14:44:00] production.INFO: BBT: Been asking them to check on their Afghanistan route as other messages from Astral SMS are failing. diff --git a/public/assets/js/senderid.js b/public/assets/js/senderid.js index 04f1c30..d6d074b 100644 --- a/public/assets/js/senderid.js +++ b/public/assets/js/senderid.js @@ -1,44 +1,94 @@ $(document).ready(function(){ + $('#resetBtn').click(function(){ + console.log('foo bar'); + location.reload(); + }); - var directMnoSelectionEditStart = $('#directMnoEdit').val(); - console.log(directMnoSelectionEditStart + " at rest"); - if (directMnoSelectionEditStart == 'YES') { - $('#mnoDivEdit').removeClass('hidden'); - $('#supplierDivEdit').addClass('hidden'); - // $("#supplierNameEdit").prop("disabled", true); - // $("#networkNameEdit").prop("disabled", false); + var directMnoSelectionStart = $('#directMno').val(); + if (directMnoSelectionStart !== undefined) { + // #console.log(directMnoSelectionStart + " at rest"); + if (directMnoSelectionStart == 'YES') { + // $('#mnoDiv').removeClass('hidden'); + // $('#supplierDiv').addClass('hidden'); + $('#supplierName').attr('required', false); + $('#supplierName').attr('disabled', true); + $('#networkName').attr('disabled', false); } - else if(directMnoSelectionEditStart == 'NO'){ - console.log('in the NO | at rest'); - $('#supplierDivEdit').removeClass('hidden'); - $('#mnoDivEdit').addClass('hidden'); - // $("#supplierNameEdit").prop("disabled", false); - // $("#networkNameEdit").prop("disabled", true); + else if(directMnoSelectionStart == 'NO'){ + // console.log('in the NO in Create | at rest'); + // $('#supplierDiv').removeClass('hidden'); + // $('#mnoDiv').addClass('hidden'); + $('#networkName').attr('required', false); + $('#networkName').attr('disabled', true); + $('#supplierName').attr('disabled', false); } else{ - console.log('do nothing | at rest'); + console.log('do nothing in create | at rest'); } + } + + //Edit + var directMnoSelectionEditStart = $('#directMnoEdit').val(); + if (directMnoSelectionEditStart !== undefined) { + // console.log(directMnoSelectionEditStart + " at rest"); + if (directMnoSelectionEditStart == 'YES') { + // $('#mnoDivEdit').removeClass('hidden'); + // $('#supplierDivEdit').addClass('hidden'); + $('#supplierNameEdit').attr('required', false); + $('#supplierNameEdit').attr('disabled', false); + $('#networkNameEdit').attr('disabled', true); + } + else if(directMnoSelectionEditStart == 'NO'){ + console.log('in the NO in Edit | at rest'); + // $('#supplierDivEdit').removeClass('hidden'); + // $('#mnoDivEdit').addClass('hidden'); + $('#networkNameEdit').attr('required', false); + $('#networkNameEdit').attr('disabled', true); + $('#supplierNameEdit').attr('disabled', false); + } + else{ + console.log('do nothing in Edit | at rest'); + } + } - +//Create $('#directMno').change(function(tve){ tve.preventDefault(); // var theIDD = $(this).siblings('.shortCodeEntryRowId').val(); var directMnoSelection = $(this).val(); + // console.log('User selection ' + directMnoSelection); if (directMnoSelection == 'YES') { - $('#mnoDiv').removeClass('hidden'); - $('#supplierDiv').addClass('hidden'); - $('#mnoDivEdit').removeClass('hidden'); + // $('#mnoDiv').removeClass('hidden'); + // $('#supplierDiv').addClass('hidden'); + // $('#mnoDivEdit').removeClass('hidden'); + // // $('#supplierNameMM').val('').change(); + // $('#supplierNameMM').remove(); + // $('#supplierDiv').remove(); + + $('#supplierName').attr('required', false); + $('#supplierName').attr('disabled', true); + + $('#networkName').attr('disabled', false); + // $("#supplierName").prop("disabled", true); // $("#networkNameEdit").prop("disabled", false); } else{ - $('#supplierDiv').removeClass('hidden'); - $('#mnoDiv').addClass('hidden'); - $('#mnoDivEdit').addClass('hidden'); + // $('#supplierDiv').removeClass('hidden'); + // $('#mnoDiv').addClass('hidden'); + // $('#mnoDivEdit').addClass('hidden'); + + // $('#networkNameMM').val('').change(); + // $('#mnoDiv').remove(); + // $("#networkName").prop("disabled", true); // $("#supplierNameEdit").prop("disabled", false); + $('#networkName').attr('disabled', true); + $('#networkName').attr('required', false); + $('#supplierName').attr('disabled', false); + } @@ -48,21 +98,28 @@ $(document).ready(function(){ $('#directMnoEdit').change(function(tve){ tve.preventDefault(); var directMnoSelectionEdit = $(this).val(); - console.log(directMnoSelectionEdit); + // console.log(directMnoSelectionEdit); if (directMnoSelectionEdit == 'YES') { - $('#mnoDivEdit').removeClass('hidden'); - $('#supplierDivEdit').addClass('hidden'); + // $('#mnoDivEdit').removeClass('hidden'); + // $('#supplierDivEdit').addClass('hidden'); // $("#supplierNameEdit").prop("disabled", true); // $("#networkNameEdit").prop("disabled", false); + + $('#supplierNameEdit').attr('required', false); + $('#supplierNameEdit').attr('disabled', false); + $('#networkNameEdit').attr('disabled', true); } else if(directMnoSelectionEdit == 'NO'){ console.log('in the NO | on change'); - $('#supplierDivEdit').removeClass('hidden'); + // $('#supplierDivEdit').removeClass('hidden'); // $('#networkNameEdit').removeClass('hidden'); // $('#mnoDivEdit').addClass('hidden'); - $('#networkNameEdit').addClass('hidden'); + // $('#networkNameEdit').addClass('hidden'); // $("#supplierNameEdit").prop("disabled", false); // $("#networkNameEdit").prop("disabled", true); + $('#networkNameEdit').attr('required', false); + $('#networkNameEdit').attr('disabled', true); + $('#supplierNameEdit').attr('disabled', false); } else{ console.log('do nothing | on change'); diff --git a/public/assets/js/support_ticket.js b/public/assets/js/support_ticket.js new file mode 100644 index 0000000..e69de29 diff --git a/public/documents/general_files/senderid_sample_file.xlsx b/public/documents/general_files/senderid_sample_file.xlsx index 5ecc29a15e9584ebdb340f789344c3b0227c1167..044ffef383a08b16e197d298514e1698a1f433f3 100644 GIT binary patch delta 6962 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 delta 6835 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 V7!+IfE!;<_iYy(nqSU|G{{ZE7&}{$! diff --git a/public/helper_documents/senderid_sample_file.xlsx b/public/helper_documents/senderid_sample_file.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..044ffef383a08b16e197d298514e1698a1f433f3 GIT binary patch literal 17525 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 + + + + diff --git a/resources/views/client/show.blade.php b/resources/views/client/show.blade.php index 7a5ace6..bdf775e 100755 --- a/resources/views/client/show.blade.php +++ b/resources/views/client/show.blade.php @@ -60,7 +60,9 @@

{{ $showclient->name }}

Click Account Manager
- auth_user_info->name ?? 'N/A' ?> + + auth_user_info->name ?? 'N/A' ?> +

Status : {{ $showclient->status }}  diff --git a/resources/views/client/show_accordion.blade.php b/resources/views/client/show_accordion.blade.php index ba7a0d2..5227fb6 100644 --- a/resources/views/client/show_accordion.blade.php +++ b/resources/views/client/show_accordion.blade.php @@ -17,6 +17,7 @@ @include('client.partials.edit-finance') @include('client.partials.progress_indicator_details') @include('client.partials.support_fees_form') +@include('client.partials.change-am')
@@ -77,7 +78,12 @@ Client Account Manager : contact_person ?? 'N/A' ?>
- Click Account Manager : auth_user_info->name ?? 'N/A' ?> + Click Account Manager : + auth_user_info->name ?? 'N/A' ?> + @if($change_account_mgr_permisson == 'YES' ) + + @endif +
  • diff --git a/resources/views/layouts/partials/sidebar.blade.php b/resources/views/layouts/partials/sidebar.blade.php index a40ffdd..cd7adfe 100644 --- a/resources/views/layouts/partials/sidebar.blade.php +++ b/resources/views/layouts/partials/sidebar.blade.php @@ -62,6 +62,8 @@
  • Click Apps
  • +
  • Support Center
  • +
  • VPN Configs
  • USSD Clients Payments
  • Team Members
  • diff --git a/resources/views/officelocations/create.blade.php b/resources/views/officelocations/create.blade.php index 32d1ee1..7396ef7 100644 --- a/resources/views/officelocations/create.blade.php +++ b/resources/views/officelocations/create.blade.php @@ -50,13 +50,7 @@ {!! $errors->first('postal_address', '

    :message

    ') !!}
-
- -
- {!! Form::text('block_number', old('block_number'), ['class' => 'form-control col-md-7 col-xs-12', 'placeholder'=>'Enter block number' , 'id' => 'blockNumber']) !!} - {!! $errors->first('block_number', '

:message

') !!} -
-
+
diff --git a/resources/views/officelocations/edit.blade.php b/resources/views/officelocations/edit.blade.php index 5e2b1b0..287306c 100644 --- a/resources/views/officelocations/edit.blade.php +++ b/resources/views/officelocations/edit.blade.php @@ -57,13 +57,7 @@ {!! $errors->first('postal_address', '

:message

') !!}
-
- -
- {!! Form::text('block_number', old('block_number'), ['class' => 'form-control col-md-7 col-xs-12', 'placeholder'=>'Enter block number' , 'id' => 'blockNumber']) !!} - {!! $errors->first('block_number', '

:message

') !!} -
-
+
diff --git a/resources/views/officelocations/filescreate.blade.php b/resources/views/officelocations/filescreate.blade.php index d37e6c3..d107af6 100644 --- a/resources/views/officelocations/filescreate.blade.php +++ b/resources/views/officelocations/filescreate.blade.php @@ -121,7 +121,7 @@
- +
{!! Form::close() !!} diff --git a/resources/views/officelocations/filesedit.blade.php b/resources/views/officelocations/filesedit.blade.php index f544fa9..c539747 100644 --- a/resources/views/officelocations/filesedit.blade.php +++ b/resources/views/officelocations/filesedit.blade.php @@ -31,7 +31,7 @@
-
+
@@ -40,7 +40,16 @@
-
+
+
+
+ + {!! Form::text('validity_period_one', null, ['class' => 'form-control validityPeriod' , 'id' => 'validityPeriodOne', 'placeholder' => '']) !!} + {!! $errors->first('validity_period_one', '

:message

') !!} +
+
+
+
@@ -53,7 +62,7 @@
- +
{!! Form::close() !!} @@ -71,6 +80,9 @@ diff --git a/resources/views/officelocations/index-new.blade.php b/resources/views/officelocations/index-new.blade.php new file mode 100644 index 0000000..39053ec --- /dev/null +++ b/resources/views/officelocations/index-new.blade.php @@ -0,0 +1,123 @@ +@extends('layouts.master') + @section('page_title') + @if(isset($page_title)) + {{ $page_title }} + @endif + @endsection +@section('css') +@endsection +@section('content') +
+
+
+
+ +
+
+ +
+
+
+
+ +
+ +
+
+
+
+
+
+
+
+
+ +
+
+ @include('commons.notifications') +
+
+
+

Branch Offices

+ +
+
+ +
+
+ @if($offices_arr->isEmpty() == false) + @foreach($offices_arr as $row) +
+
+
+

Digital Strategist

+
+

Nicole Pearson

+

About: Web Designer / UX / Graphic Artist / Coffee Lover

+
    +
  • Address:
  • +
  • Phone #:
  • +
+
+
+ +
+
+
+
+

+ 4.0 + + + + + +

+
+
+ + +
+
+
+
+ @endforeach + @else +
+

No Records

+
+ @endif +
+
+
+
+
+
+ +@endsection + +@section('javascript') + +@endsection diff --git a/resources/views/officelocations/index.blade.php b/resources/views/officelocations/index.blade.php index a095f25..b28e504 100644 --- a/resources/views/officelocations/index.blade.php +++ b/resources/views/officelocations/index.blade.php @@ -60,10 +60,9 @@
@if($offices_arr->isEmpty() == false) @foreach($offices_arr as $row) -
+
-
@@ -73,7 +72,7 @@

Physical Address : {{ $row->physical_address or '' }} {{ $row->block_number or '' }}

Postal Address : {{ $row->postal_address or '' }}

-

City/Town : {{ $row->city_town or '' }}

+

City/Town : {{ $row->city or '' }}

Country : {{ $row->country or '' }}

    diff --git a/resources/views/senderid/create.blade-10-02-2025.php b/resources/views/senderid/create.blade-10-02-2025.php new file mode 100644 index 0000000..cbf1c62 --- /dev/null +++ b/resources/views/senderid/create.blade-10-02-2025.php @@ -0,0 +1,105 @@ +@extends('layouts.master') +@section('page_title') + @if(isset($page_title)) + {{ $page_title }} + @endif +@endsection +@section('content') +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + New Sender ID + @include('commons.notifications') +
    +
    + {{-- start of content --}} +
    +
    + {!! Form::open(['url' => 'senderids', 'class' => 'form-horizontal form-label-left']) !!} +
    + +
    + +
    + {!! Form::text('senderid', old('senderid'), ['class' => 'form-control col-md-7 col-xs-12', 'placeholder'=>'Enter sender ID' , 'id' => 'senderIDD', 'required' => 'true']) !!} + {!! $errors->first('name', '

    :message

    ') !!} +
    +
    +
    + +
    + {!! 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', '

    :message

    ') !!} +
    +
    + + + +
    + +
    + {!! Form::select('status', $status ,old('status'), ['class' => 'form-control col-md-7 col-xs-12', 'placeholder'=>'Select Status ' , 'id' => 'status', 'required' => 'true']) !!} + {!! $errors->first('status', '

    :message

    ') !!} +
    +
    +
    + +
    + {!! Form::text('remarks', old('remarks'), ['class' => 'form-control col-md-7 col-xs-12', 'placeholder'=>'Enter remarks here' , 'id' => 'remarks']) !!} + {!! $errors->first('remarks', '

    :message

    ') !!} +
    +
    + +
    +
    +
    + +
    +
    + {!! Form::close() !!} +
    + {{-- end of x_content --}} +
    + {{-- end of x_panel --}} +
    +
    + +
    + +@endsection + +@section('javascript') + + +@endsection diff --git a/resources/views/senderid/create.blade.php b/resources/views/senderid/create.blade.php index cbf1c62..3970dc1 100644 --- a/resources/views/senderid/create.blade.php +++ b/resources/views/senderid/create.blade.php @@ -27,7 +27,7 @@ {{-- start of content --}}

    - {!! Form::open(['url' => 'senderids', 'class' => 'form-horizontal form-label-left']) !!} + {!! Form::open(['url' => 'senderids', 'id' => 'senderIdCreateForm', 'class' => 'form-horizontal form-label-left']) !!}
    @@ -45,14 +45,14 @@
    -