Initial commit

This commit is contained in:
Kwesi Banson Jnr
2026-08-04 14:50:01 +00:00
commit 2cfcfade4e
1605 changed files with 499334 additions and 0 deletions

View File

@@ -0,0 +1,190 @@
@extends('layouts.admin')
@section('page-title')
Admin | Dashboard
@endsection
@section('page-content')
<!-- start page title -->
<div class="row">
<div class="col-12">
<div class="page-title-box">
<div class="page-title-right">
<form class="form-inline">
<div class="form-group">
<!-- <div class="input-group">
<input type="text" class="form-control form-control-light" id="dash-daterange">
<div class="input-group-append">
<span class="input-group-text bg-info border-info text-white">
<i class="mdi mdi-calendar-range font-13"></i>
</span>
</div>
</div> -->
</div>
</form>
</div>
<h4 class="page-title">Dashboard</h4>
</div>
</div>
</div>
<!-- end page title -->
{{-- Alert --}}
@include('layouts.alert')
<div class="row">
<div class="col-xl-12 col-lg-6">
<div class="row">
<div class="col-lg-6">
<div class="card widget-flat">
<div class="card-body">
<div class="float-right">
<i class="mdi mdi-account-multiple widget-icon bg-success-lighten text-success"></i>
</div>
<h5 class="text-muted font-weight-normal mt-0" title="Number of Customers">Mershants</h5>
<h3 class="mt-3 mb-3">{{ $merchant }}</h3>
{{-- <p class="mb-0 text-muted">
<span class="text-success mr-2"><i class="mdi mdi-arrow-up-bold"></i> 5.27%</span>
<span class="text-nowrap">Since last month</span>
</p> --}}
</div> <!-- end card-body-->
</div> <!-- end card-->
</div> <!-- end col-->
<div class="col-lg-6">
<div class="card widget-flat">
<div class="card-body">
<div class="float-right">
<i class="mdi mdi-cart-plus widget-icon bg-danger-lighten text-danger"></i>
</div>
<h5 class="text-muted font-weight-normal mt-0" title="Number of Orders">Top Ups</h5>
<h3 class="mt-3 mb-3">{{ $topup_count ?? "N/A" }}</h3>
{{-- <p class="mb-0 text-muted">
<span class="text-danger mr-2"><i class="mdi mdi-arrow-down-bold"></i> 1.08%</span>
<span class="text-nowrap">Since last month</span>
</p> --}}
</div> <!-- end card-body-->
</div> <!-- end card-->
</div> <!-- end col-->
</div> <!-- end row -->
</div> <!-- end col -->
<!-- <div class="col-xl-7 col-lg-6">
<div class="card">
<div class="card-body">
<div class="dropdown float-right">
<h6 id="transaction-data" class="d-none">{{ $transactions }}</h6>
</div>
<h4 class="header-title mb-3">Transactions</h4>
<div id="high-performing-product" class="apex-charts" data-colors="#fa6767,#e3eaef"></div>
</div>
</div>
</div> -->
</div>
<!-- end row -->
<div class="row">
<div class="col-md-7">
<div class="card">
<div class="card-body">
<h4 class="header-title mt-2">Recent Organisation Top Ups</h4>
<div class="table-responsive" data-simplebar style="max-height: 624px;">
<table class="table table-centered table-nowrap table-hover mb-0">
<tbody>
@forelse ($topups as $topup)
<tr>
<td>
<h5 class="font-14 my-1 font-weight-normal">Merchant : {{ $topup->orgInfo->name }}</h5>
<span class="text-muted font-13">{{ Carbon\Carbon::parse($topup->created_at)->format('F dS Y') }}</span>
</td>
<td>
<h5 class="font-14 my-1 font-weight-normal">K {{ $topup->amount }}</h5>
<span class="text-muted font-13">Amount</span>
</td>
<td>
<h5 class="font-14 my-1 font-weight-normal">{{ ucfirst($topup->payment_method) }}</h5>
<span class="text-muted font-13">Payment Method</span>
</td>
<td>
<h5 class="font-14 my-1 font-weight-normal">{{ $topup->userInfo->name }}</h5>
<span class="text-muted font-13">Admin</span>
</td>
</tr>
@empty
@endforelse
</tbody>
</table>
</div> <!-- end table-responsive-->
</div> <!-- end card-body-->
</div> <!-- end card-->
</div> <!-- end col-->
<div class="col-md-5">
<div class="card">
<div class="card-body">
<div class="dropdown float-right">
</div>
<h4 class="header-title mb-2">Recent Activity</h4>
<div data-simplebar style="max-height: 624px;">
<div class="timeline-alt pb-0">
@forelse ($activities as $activity)
<div class="timeline-item">
<i class="mdi mdi-upload bg-info-lighten text-info timeline-icon"></i>
<div class="timeline-item-info">
<a href="#" class="text-info font-weight-bold mb-1 d-block">{{ $activity->admin->name }}</a>
<small>
<?php
$data_arr = json_decode($activity->description);
// dump(gettype($data_arr));
//. " ==> " . $data_arr->data
echo (isset($data_arr->title)) ? $data_arr->title : "N/A";
?>
</small>
<p class="mb-0 pb-2">
<small class="text-muted">{{ $activity->created_at->diffForHumans() }}</small>
</p>
</div>
</div>
@empty
@endforelse
</div>
<!-- end timeline -->
</div> <!-- end slimscroll -->
</div>
<!-- end card-body -->
</div>
<!-- end card-->
</div>
<!-- end col -->
</div>
<!-- end row -->
@endsection
@section('page-js')
<!-- third party js -->
<script src="{{ url('public/assets/js/vendor/apexcharts.min.js')}}"></script>
<script src="{{ url('public/assets/js/vendor/jquery-jvectormap-1.2.2.min.js')}}"></script>
<script src="{{ url('public/assets/js/vendor/jquery-jvectormap-world-mill-en.js')}}"></script>
<!-- third party js ends -->
<!-- demo app -->
<script src="{{ url('public/assets/js/pages/demo.dashboard.js')}}"></script>
<!-- end demo js-->
@endsection

View File

@@ -0,0 +1,340 @@
@extends('layouts.admin_master')
@section('page-title')
Admin | Dashboard
@endsection
@section('page-content')
<div class="row">
<div class="col-lg-12 text-center welcome-message">
<h2>Welcome to Airtime Sales Admin Dashboard</h2>
<!-- <p>
Special <strong>Admin Theme</strong> for medium and large web applications with very clean and
aesthetic style and feel.
</p> -->
</div>
</div>
<div class="row">
<div class="col-lg-3">
<div class="hpanel">
<div class="panel-body text-center h-200">
<i class="pe-7s-graph1 fa-4x"></i>
<h1 class="m-xs">MK {{ number_format($current_year_transactions_sum) }}</h1>
<h3 class="font-extra-bold no-margins text-success">
Sales({{ date('Y') }})
</h3>
<small>Sales from Merchants to customers</small>
</div>
<div class="panel-footer">
Sales from Merchants to end users
</div>
</div>
</div>
<div class="col-lg-3">
<div class="hpanel stats">
<div class="panel-body h-200">
<div class="stats-title pull-left">
<h4>Merchants</h4>
</div>
<div class="stats-icon pull-right">
<i class="pe-7s-share fa-4x"></i>
</div>
<div class="m-t-xl">
<h3 class="m-b-xs text-danger">{{ number_format($merchant_count) }}</h3>
<span class="font-bold no-margins">
Merchants
</span>
<!-- <div class="progress m-t-xs full progress-small">
<div style="width: 55%" aria-valuemax="100" aria-valuemin="0" aria-valuenow="55"
role="progressbar" class=" progress-bar progress-bar-success">
<span class="sr-only">35% Complete (success)</span>
</div>
</div> -->
<!-- <div class="row">
<div class="col-xs-6">
<small class="stats-label">Pages / Visit</small>
<h4>7.80</h4>
</div>
<div class="col-xs-6">
<small class="stats-label">% New Visits</small>
<h4>76.43%</h4>
</div>
</div> -->
</div>
</div>
<div class="panel-footer">
Registered Merchants
</div>
</div>
</div>
<div class="col-lg-3">
<div class="hpanel stats">
<div class="panel-body h-200">
<div class="stats-title pull-left">
<h4>Dealers</h4>
</div>
<div class="stats-icon pull-right">
<i class="pe-7s-monitor fa-4x"></i>
</div>
<div class="m-t-xl">
<h1 class="text-success">{{ number_format($dealer_count) }}</h1>
<span class="font-bold no-margins">
<!-- Social users -->
</span>
<br/>
<!-- <small>
Lorem Ipsum is simply dummy text of the printing and <strong>typesetting
industry</strong>. Lorem Ipsum has been.
</small> -->
</div>
</div>
<div class="panel-footer">
Registered Dealers
</div>
</div>
</div>
<div class="col-lg-3">
<div class="hpanel stats">
<div class="panel-body h-200">
<div class="stats-title pull-left">
<h4>Sales (Today)</h4>
</div>
<div class="stats-icon pull-right">
<i class="pe-7s-cash fa-4x"></i>
</div>
<div class="clearfix"></div>
<div class="flot-chart">
<div class="flot-chart-content" id="flot-income-chart"></div>
</div>
<div class="m-t-xs">
<div class="row">
<div class="col-xs-5">
<small class="stat-label">Today</small>
<h4>{{ number_format($current_day_transactions) }} </h4>
</div>
<div class="col-xs-7">
<small class="stat-label">Last week</small>
<h4>{{ number_format($last_weeek_transactions) }} <i class="fa fa-level-up text-success"></i></h4>
</div>
</div>
</div>
</div>
<div class="panel-footer">
Merchant Sales to end users
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-3">
<div class="hpanel stats">
<div class="panel-heading">
<div class="panel-tools">
<a class="showhide"><i class="fa fa-chevron-up"></i></a>
<a class="closebox"><i class="fa fa-times"></i></a>
</div>
Top Merchants
</div>
<div class="panel-body list">
<div class="stats-title pull-left">
<h4>Activity</h4>
</div>
<div class="stats-icon pull-right">
<i class="pe-7s-science fa-4x"></i>
</div>
<div class="m-t-xl">
<span class="font-bold no-margins">
Top Merchants by Sales
</span>
<br/>
<!-- <small>
Lorem Ipsum is simply dummy text of the printing simply all dummy text. Lorem Ipsum is
simply dummy text of the printing and typesetting industry. Lorem Ipsum has been.
</small> -->
</div>
<div class="row m-t-md">
<div class="col-lg-6">
<h3 class="no-margins font-extra-bold text-success">
@if($top_merchants->isEmpty() == false)
{{ number_format($top_merchants[0]->total_amount) }}
@else
{{ 'N/A' }}
@endif
</h3>
<div class="font-bold">
@if($top_merchants->isEmpty() == false)
{{ $top_merchants[0]->fullname }}
@else
{{ 'N/A' }}
@endif
</div>
</div>
@if($top_merchants->count() > 1)
<div class="col-lg-6">
<h3 class="no-margins font-extra-bold text-success">
@if($top_merchants->isEmpty() == false)
{{ number_format($top_merchants[1]->total_amount) }}
@else
{{ 'N/A' }}
@endif
</h3>
<div class="font-bold">
@if($top_merchants->isEmpty() == false)
{{ $top_merchants[1]->fullname }}
@else
{{ 'N/A' }}
@endif
</div>
</div>
@endif
</div>
@if($top_merchants->count() > 2)
<div class="row m-t-md">
<div class="col-lg-6">
<h3 class="no-margins font-extra-bold text-warning ">
@if($top_merchants->isEmpty() == false)
{{ number_format($top_merchants[2]->total_amount) }}
@else
{{ '0.00' }}
@endif
</h3>
<div class="font-bold">
@if($top_merchants->isEmpty() == false)
{{ $top_merchants[2]->fullname }}
@else
{{ '0.00' }}
@endif
</div>
</div>
<div class="col-lg-6">
<h3 class="no-margins font-extra-bold text-warning">
@if($top_merchants->isEmpty() == false)
{{ number_format($top_merchants[3]->total_amount) }}
@else
{{ '0.00' }}
@endif
</h3>
<div class="font-bold">
@if($top_merchants->isEmpty() == false)
{{ $top_merchants[3]->fullname }}
@else
{{ 'N/A' }}
@endif
</div>
</div>
</div>
@endif
</div>
<div class="panel-footer">
<!-- This is standard panel footer -->
</div>
</div>
</div>
<div class="col-lg-6">
<div class="hpanel">
<div class="panel-heading">
<div class="panel-tools">
<a class="showhide"><i class="fa fa-chevron-up"></i></a>
<a class="closebox"><i class="fa fa-times"></i></a>
</div>
Recent Dealer Sales to Merchants
</div>
<div class="panel-body list">
<div class="table-responsive project-list">
<table class="table table-striped">
<thead>
<tr>
<th>Merchant</th>
<th>Amount (MK)</th>
<th>Status</th>
<th>Dealer Name</th>
<th>Date</th>
</tr>
</thead>
<tbody>
@forelse ($merchant_topups as $row)
<tr>
<td>{{ $row->merchantInfo->fullname }}</td>
<td>{{ number_format($row->amount) }}</td>
<td class="<?php echo ($row->status == 'Success') ? "text-success" : "text-warning"; ?>">{{ $row->status }}</td>
<td>{{ ucfirst($row->orgUserInfo->name) }}</td>
<td>{{ Carbon\Carbon::parse($row->created_at)->format('F d, Y') }}</td>
</tr>
@empty
<tr>
<td colspan="5">No Data</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
</div>
<div class="col-lg-3">
<div class="hpanel">
<div class="panel-heading">
<div class="panel-tools">
<a class="showhide"><i class="fa fa-chevron-up"></i></a>
<a class="closebox"><i class="fa fa-times"></i></a>
</div>
Admin Activity
</div>
<div class="panel-body list">
<div class="pull-right">
<!-- <a href="" class="btn btn-xs btn-default">Today</a> -->
<!-- <a href="" class="btn btn-xs btn-default">Month</a> -->
</div>
<div class="panel-title">Recent Sales</div>
<small class="fo">Sale from Admin to Dealers</small>
<div class="list-item-container">
@forelse ($dealer_topups as $row)
<div class="list-item">
<h3 class="no-margins font-extra-bold text-success">MK{{ number_format($row->amount) }}</h3>
<small>Dealer : {{ $row->orgInfo->name }}</small>
<div class="pull-right font-bold">
&nbsp;
{{ $row->created_at }}
<!-- <i class="fa fa-date text-success"></i> -->
</div>
</div>
@empty
<tr>
<td colspan="5">No Data</td>
</tr>
@endforelse
</div>
</div>
</div>
</div>
</div>
@endsection
@section('page-js')
<!-- third party js -->
<!-- <script src="{{ url('public/assets/js/vendor/apexcharts.min.js')}}"></script> -->
<!-- <script src="{{ url('public/assets/js/vendor/jquery-jvectormap-1.2.2.min.js')}}"></script> -->
<!-- <script src="{{ url('public/assets/js/vendor/jquery-jvectormap-world-mill-en.js')}}"></script> -->
<!-- third party js ends -->
<!-- demo app -->
<!-- <script src="{{ url('public/assets/js/pages/demo.dashboard.js')}}"></script> -->
<!-- end demo js-->
@endsection

View File

@@ -0,0 +1,149 @@
@extends('layouts.merchant')
@section('page-title')
Merchant | Dashboard
@endsection
@section('page-content')
<!-- start page title -->
<div class="row">
<div class="col-12">
<div class="page-title-box">
<div class="page-title-right">
<form class="form-inline">
<div class="form-group">
<!-- <div class="input-group">
<input type="text" class="form-control form-control-light" id="dash-daterange">
<div class="input-group-append">
<span class="input-group-text bg-info border-info text-white">
<i class="mdi mdi-calendar-range font-13"></i>
</span>
</div>
</div> -->
</div>
</form>
</div>
<h4 class="page-title">Dashboard</h4>
</div>
</div>
</div>
<!-- end page title -->
{{-- Alert --}}
@include('layouts.alert')
<div class="row">
<div class="col-md-6">
<div class="card">
<div class="card-body">
<div class="dropdown float-right">
<h6 id="transaction-data" class="d-none">{{ $transactions_graph }}</h6>
</div>
<h3 class="header-title mb-3" style="padding: 15px; background: gainsboro; color: #000;">Current Balance {{ number_format($current_balance) }}</h3>
<hr>
<h4 class="header-title mb-3">Instant Top Up</h4>
<form action="{{ url('merchant/topup') }}" method="POST" id="merchantTopUpForm" >
{{csrf_field()}}
<div class="form-row">
<div class="form-group col-md-12">
<label for="phoneNumber" class="col-form-label">Phone Number</label>
<input type="text" required class="form-control" name="phone_number" value="{{ old('phone_number') }}" id="phoneNumber" placeholder="Phone Number">
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12">
<label for="amount" class="col-form-label">Amount</label>
<input type="number" required class="form-control" name="amount" value="{{ old('amount') }}" id="amount" placeholder="Amount">
</div>
</div>
<button type="submit" class="btn btn-primary btn-block">Submit </button>
<button type="reset" class="btn btn-danger btn-block">Reset</button>
</form>
</div>
</div>
<!-- <a href="{{url('merchant/showtopup')}}" class="btn btn-lg btn-success">Top Up A Number <i class="mdi mdi-send"></i></a> -->
</div>
<div class="col-md-6">
<div class="card">
<div class="card-body">
{{-- <a href="" class="btn btn-sm btn-link float-right mb-3">Export
<i class="mdi mdi-download ml-1"></i>
</a> --}}
<h3 class="header-title mt-2">Total Transactions : {{ $transaction_count }}</h3>
<h4 class="header-title mt-2">Recent Transactions</h4>
<div class="table-responsive">
<table class="table table-centered table-nowrap table-hover mb-0">
<tbody>
@forelse ($transactions as $transaction)
<tr>
<td>
<h5 class="font-14 my-1 font-weight-normal">{{ $transaction->msisdn }}</h5>
<span class="text-muted font-13"><strong>Phone Number</strong></span>
</td>
<td>
<h5 class="font-14 my-1 font-weight-normal">K {{$transaction->amount}}</h5>
<span class="text-muted font-13"><strong>Amount</strong></span>
</td>
<td>
<h5 class="font-14 my-1 font-weight-normal">{{$transaction->status}}</h5>
<span class="text-muted font-13"><strong>Status</strong></span>
</td>
<td>
<!-- <h5 class="font-14 my-1 font-weight-normal">{{ Carbon\Carbon::parse($transaction->created_at)->format('F dS Y') }}</h5> -->
<h5 class="font-14 my-1 font-weight-normal">{{ $transaction->created_at }}</h5>
<span class="text-muted font-13"><strong>Date</strong></span>
</td>
</tr>
@empty
@endforelse
</tbody>
</table>
</div> <!-- end table-responsive-->
</div> <!-- end card-body-->
</div> <!-- end card-->
</div> <!-- end col-->
</div>
<!-- end row -->
@endsection
@section('page-js')
<!-- third party js -->
<!-- <script src="{{ url('public/assets/js/vendor/apexcharts.min.js')}}"></script> -->
<!-- <script src="{{ url('public/assets/js/vendor/jquery-jvectormap-1.2.2.min.js')}}"></script> -->
<!-- <script src="{{ url('public/assets/js/vendor/jquery-jvectormap-world-mill-en.js')}}"></script> -->
<!-- third party js ends -->
<!-- demo app -->
<!-- <script src="{{ url('public/assets/js/pages/demo.dashboard.js')}}"></script> -->
<!-- end demo js-->
<script>
$(document).ready(function(){
$("#merchantTopUpForm").submit(function(evt){
var userAction = confirm('You are about to submit this top up');
if(userAction == false){
evt.preventDefault();
}
});
});
</script>
@endsection

View File

@@ -0,0 +1,132 @@
@extends('layouts.organisation')
@section('page-title')
Organisation | Dashboard
@endsection
@section('page-content')
<!-- start page title -->
<div class="row">
<div class="col-12">
<div class="page-title-box">
<div class="page-title-right">
<form class="form-inline">
<div class="form-group">
<!-- <div class="input-group">
<input type="text" class="form-control form-control-light" id="dash-daterange">
<div class="input-group-append">
<span class="input-group-text bg-info border-info text-white">
<i class="mdi mdi-calendar-range font-13"></i>
</span>
</div>
</div> -->
</div>
</form>
</div>
<h4 class="page-title">Dashboard</h4>
</div>
</div>
</div>
<!-- end page title -->
{{-- Alert --}}
@include('layouts.alert')
<div class="row">
<div class="col-md-6">
<div class="card">
<!-- top up merchants here -->
</div>
<div class="card widget-flat">
<div class="card-body">
<div class="float-right">
<i class="mdi mdi-cart-plus widget-icon bg-danger-lighten text-danger"></i>
</div>
<h5 class="text-muted font-weight-normal mt-0" title="Number of Orders">Current Balance</h5>
<h3 class="mt-3 mb-3">{{ number_format($organisation->balance, 2) }}</h3>
<!-- <p class="mb-0 text-muted">
<span class="text-danger mr-2"><i class="mdi mdi-arrow-down-bold"></i> 1.08%</span>
<span class="text-nowrap">Since last month</span>
</p> -->
<form action="{{ url('organisation/topup') }}" method="POST" >
{{csrf_field()}}
<div class="form-row">
<div class="form-group col-md-12">
<label for="merchant" class="col-form-label">Select Account to Top Up</label>
<select required class="form-control" name="merchant" id="merchant" placeholder="Merchant" >
<option>-- Select Account --</option>
<?php foreach ($merchants as $row): ?>
<option value="{{ $row->id }}">{{ $row->fullname }} ({{ $row->phone }}) </option>
<?php endforeach ?>
</select>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-12">
<label for="amount" class="col-form-label">Amount</label>
<input type="number" required class="form-control" name="amount" value="{{ old('amount') }}" id="amount" placeholder="Amount">
</div>
</div>
<button type="submit" class="btn btn-primary btn-block">Submit </button>
<button type="reset" class="btn btn-danger btn-block">Reset</button>
</form>
</div> <!-- end card-body-->
</div> <!-- end card-->
</div>
<div class="col-md-6">
<div class="card">
<div class="card-body">
<h3 class="header-title mt-2">Total Transactions : {{ $transaction_count }}</h3>
<h4 class="header-title mt-2">Recent Transactions</h4>
<div class="table-responsive">
<table class="table table-centered table-nowrap table-hover mb-0">
<tbody>
@forelse ($merchant_topups as $transaction)
<tr>
<td>
<h5 class="font-14 my-1 font-weight-normal">@if($transaction->merchantInfo) {{ $transaction->merchantInfo->fullname }} @else N/A @endif</h5>
<span class="text-muted font-13"><strong>Merchant</strong></span>
</td>
<td>
<h5 class="font-14 my-1 font-weight-normal">K {{ $transaction->amount }}</h5>
<span class="text-muted font-13"><strong>Amount</strong></span>
</td>
<td>
<!-- <h5 class="font-14 my-1 font-weight-normal">{{ Carbon\Carbon::parse($transaction->created_at)->format('F dS Y') }}</h5> -->
<h5 class="font-14 my-1 font-weight-normal">{{ $transaction->created_at }}</h5>
<span class="text-muted font-13"><strong>Date</strong></span>
</td>
</tr>
@empty
@endforelse
</tbody>
</table>
</div> <!-- end table-responsive-->
</div> <!-- end card-body-->
</div> <!-- end card-->
</div> <!-- end col-->
</div>
<!-- end row -->
@endsection
@section('page-js')
<!-- third party js -->
<script src="{{ url('public/assets/js/vendor/apexcharts.min.js')}}"></script>
<script src="{{ url('public/assets/js/vendor/jquery-jvectormap-1.2.2.min.js')}}"></script>
<script src="{{ url('public/assets/js/vendor/jquery-jvectormap-world-mill-en.js')}}"></script>
<!-- third party js ends -->
<!-- demo app -->
<script src="{{ url('public/assets/js/pages/demo.dashboard.js')}}"></script>
<!-- end demo js-->
@endsection