Initial commit

This commit is contained in:
Kwesi Banson Jnr
2026-09-09 09:50:06 +00:00
commit c7f93a7dc1
8369 changed files with 517137 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
@extends('layouts.app')
@section('content')
<div class="container mt-5">
<h2>{{ 'Add Project Status' }}</h2>
@include('commons.notifications')
<form action="{{ isset($project_status) ? route('project-status.update', $project_status->id) : route('project-status.store') }}" method="POST">
<input type="hidden" name="assignee_id" value="{{ \Auth::user()->id }}">
<input type="hidden" name="project_id" value="{{ $project->id }}">
@csrf
<div class="mb-3">
<label for="description" class="form-label">Description</label>
<textarea class="form-control" name="description" id="description" rows="4" required></textarea>
</div>
<div class="mb-3">
<label for="status" class="form-label">Status</label>
<select class="form-select" id="status" name="status" required>
<option value="" disabled>-- Select Status--</option>
<option value="Pending">Pending</option>
<option value="In Progress">In Progress</option>
<option value="Completed">Completed</option>
</select>
</div>
<button type="submit" class="btn btn-primary">{{ 'Add Status' }}</button>
</form>
</div>
@endsection

View File

@@ -0,0 +1,67 @@
@extends('layouts.app')
@section('content')
<div class="container mt-4">
<div class="d-flex justify-content-between align-items-center mb-4">
<div>
<h2>{{ $service->name }} Subscriber Log</h2>
<p class="text-muted mb-0">Schema Type: {{ strtoupper($service->schema_type) }} | Last Synced: {{ $service->last_synced_at ?? 'Never' }}</p>
</div>
<a href="{{ route('dashboard.index') }}" class="btn btn-outline-secondary">Back to Dashboard</a>
</div>
<!-- Search Bar -->
<form method="GET" action="{{ route('services.details', $service->id) }}" class="mb-4">
<div class="input-group">
<input type="text" name="search" class="form-control" placeholder="Search by phone number, content etc..." value="{{ request('search') }}">
<button class="btn btn-primary" type="submit">Search</button>
@if(request('search'))
<a href="{{ route('services.details', $service->id) }}" class="btn btn-outline-dark">Reset</a>
@endif
</div>
</form>
<!-- Subscribers Table -->
<div class="card shadow-sm">
<div class="card-body p-0">
<div class="table-responsive">
<table class="table table-hover mb-0 align-middle">
<thead class="table-light">
<tr>
<th>Phone Number</th>
<th>Subscribed Content</th>
<th>Status</th>
<th>Join Date</th>
<th>Last Synced</th>
</tr>
</thead>
<tbody>
@forelse($subscribers as $sub)
<tr>
<td class="fw-bold">{{ $sub->phone_number }}</td>
<td><span class="badge bg-info text-dark">{{ $sub->content_name }}</span></td>
<td>
<span class="badge {{ $sub->status === 'active' ? 'bg-success' : 'bg-danger' }}">
{{ ucfirst($sub->status) }}
</span>
</td>
<td>{{ $sub->join_date ?? 'N/A' }}</td>
<td class="text-muted small">{{ $sub->updated_at }}</td>
</tr>
@empty
<tr>
<td colspan="5" class="text-center py-4 text-muted">No subscribers found.</td>
</tr>
@endforelse
</tbody>
</table>
</div>
</div>
</div>
<!-- Pagination Links -->
<div class="mt-4">
{{ $subscribers->withQueryString()->links() }}
</div>
</div>
@endsection

View File

@@ -0,0 +1,57 @@
@extends('layouts.app')
@section('content')
<div class="container mt-4">
<h2 class="mb-4">Subscriptions Overview</h2>
<!-- Grand Totals Section -->
<div class="row mb-5">
<div class="col-md-4">
<div class="card bg-primary text-white shadow-sm">
<div class="card-body">
<h6 class="card-title text-uppercase text-white-50">Total Subscribers (All Services)</h6>
<h2 id="grand-total" class="mb-0">
<span class="spinner-border spinner-border-sm" role="status"></span>
</h2>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card bg-success text-white shadow-sm">
<div class="card-body">
<h6 class="card-title text-uppercase text-white-50">Total Active</h6>
<h2 id="grand-active" class="mb-0">
<span class="spinner-border spinner-border-sm" role="status"></span>
</h2>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card bg-secondary text-white shadow-sm">
<div class="card-body">
<h6 class="card-title text-uppercase text-white-50">Total Inactive</h6>
<h2 id="grand-inactive" class="mb-0">
<span class="spinner-border spinner-border-sm" role="status"></span>
</h2>
</div>
</div>
</div>
</div>
<h4 class="mb-3 text-muted">Service Breakdown</h4>
<!-- Dynamic Service Cards Container -->
<div class="row" id="service-cards-container">
<!-- jQuery will inject the individual service cards here -->
<div class="col-12 text-center py-5" id="loading-services">
<div class="spinner-border text-primary" role="status">
<span class="visually-hidden">Loading...</span>
</div>
<p class="text-muted mt-2">Aggregating cross-service metrics...</p>
</div>
</div>
</div>
@endsection
@push('scripts')
<script src="{{ asset('public/assets/js/dashboard.js') }}"></script>
@endpush