From 6bb2a19caae2dd9c1941fd72b14075a9c70e62ad Mon Sep 17 00:00:00 2001
From: Aaron <Aaron8.jones@live.uwe.ac.uk>
Date: Fri, 18 Apr 2025 16:50:58 +0100
Subject: [PATCH] Forgot to push billings view...

---
 ActualProjectCode/DjangoProject/core/views.py | 15 ++-
 .../DjangoProject/docker-compose.yml          |  3 +
 .../DjangoProject/server/urls.py              |  2 +
 .../templates/modelForms/billingsView.html    | 95 +++++++++++++++++++
 .../templates/modelForms/deleteBillings.html  | 69 ++++++++++++++
 .../DjangoProject/templates/profile.html      | 17 +++-
 6 files changed, 195 insertions(+), 6 deletions(-)
 create mode 100644 ActualProjectCode/DjangoProject/templates/modelForms/billingsView.html
 create mode 100644 ActualProjectCode/DjangoProject/templates/modelForms/deleteBillings.html

diff --git a/ActualProjectCode/DjangoProject/core/views.py b/ActualProjectCode/DjangoProject/core/views.py
index a66c35c..7ac33eb 100644
--- a/ActualProjectCode/DjangoProject/core/views.py
+++ b/ActualProjectCode/DjangoProject/core/views.py
@@ -96,11 +96,17 @@ def updateUsers(request, id):
     return render(request, 'modelForms/updateUsers.html', context)
 
 def interactionView(request):
-    interactions = Record.objects.all().values()
+    interactions = Record.objects.all()
     context = {}
     context = {'interactions': interactions}
     return render(request, 'modelForms/interactionView.html', context)
 
+def billingsView(request):
+    billings = Billing.objects.all()
+    context = {}
+    context = {'billings': billings}
+    return render(request, 'modelForms/billingsView.html', context)
+
 ##### DELETION SECTIONS
 
 def deleteRecord(request, id):
@@ -112,6 +118,13 @@ def deleteRecord(request, id):
     context = {'record': record}
     return render(request, 'modelForms/deleteRecord.html', context)
 
+def deleteBillings(request, billingID):
+    record = Billing.objects.get(billingID=billingID)
+    if request.method == 'POST':
+        record.delete()
+        return redirect('billingsView')
+    context = {'record': record}
+    return render(request, 'modelForms/deleteBillings.html', context)
 
 def deleteUsers(request, id):
     user = Profile.objects.get(user_id=id)
diff --git a/ActualProjectCode/DjangoProject/docker-compose.yml b/ActualProjectCode/DjangoProject/docker-compose.yml
index 9934bbd..5c89126 100644
--- a/ActualProjectCode/DjangoProject/docker-compose.yml
+++ b/ActualProjectCode/DjangoProject/docker-compose.yml
@@ -40,6 +40,9 @@ services:
     image: mlservice
     command: >
       sh -c 'python main.py'
+    depends_on:
+      db:
+        condition: service_healthy
 
 
 volumes:
diff --git a/ActualProjectCode/DjangoProject/server/urls.py b/ActualProjectCode/DjangoProject/server/urls.py
index bc9a78f..f79a905 100644
--- a/ActualProjectCode/DjangoProject/server/urls.py
+++ b/ActualProjectCode/DjangoProject/server/urls.py
@@ -43,5 +43,7 @@ urlpatterns = [
     path('modelForms/deleteUsers/<str:id>/', views.deleteUsers, name="deleteUsers"),
     path('modelForms/deleteRecord/<str:id>/', views.deleteRecord, name="deleteRecord"),
     path('modelForms/interactionView/', views.interactionView, name="interactionView"),
+    path('modelForms/billingsView/', views.billingsView, name="billingsView"),
+    path('modelForms/deleteBillings/<str:billingID>', views.deleteBillings, name="deleteBillings"),
 
 ]
\ No newline at end of file
diff --git a/ActualProjectCode/DjangoProject/templates/modelForms/billingsView.html b/ActualProjectCode/DjangoProject/templates/modelForms/billingsView.html
new file mode 100644
index 0000000..24623cb
--- /dev/null
+++ b/ActualProjectCode/DjangoProject/templates/modelForms/billingsView.html
@@ -0,0 +1,95 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <title>Billings View</title>
+    <style>
+        body {
+            font-family: Arial, sans-serif;
+            background-color: #f4f4f4;
+            color: #333;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            flex-direction: column;
+            min-height: 100vh;
+            margin: 0;
+        }
+
+        .container {
+            background: white;
+            padding: 20px;
+            border-radius: 8px;
+            box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1);
+            width: 60%;
+            max-width: 600px;
+            text-align: center;
+        }
+
+        a {
+            text-decoration: none;
+            color: #333;
+            font-weight: bold;
+        }
+
+        a:hover {
+            color: #555;
+        }
+
+        .record {
+            background: #fff;
+            padding: 15px;
+            margin: 15px 0;
+            border-radius: 5px;
+            box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
+            text-align: left;
+        }
+
+        .record p {
+            margin: 5px 0;
+        }
+
+        .delete-btn {
+            display: inline-block;
+            margin-top: 10px;
+            padding: 8px 12px;
+            background: #ff4d4d;
+            color: white;
+            border-radius: 5px;
+            text-decoration: none;
+            font-weight: bold;
+        }
+
+        .delete-btn:hover {
+            background: #cc0000;
+        }
+
+        hr {
+            border: 0;
+            height: 1px;
+            background: #ccc;
+            margin: 15px 0;
+        }
+    </style>
+</head>
+<body>
+
+    <div class="container">
+        <p><a href="{% url 'profile' %}">Return to Profile</a></p>
+
+        {% for record in billings %}
+            <div class="record">
+                <p><strong>Billing ID:</strong> {{ record.billingID }}</p>
+                <p><strong>Amount: </strong>£{{ record.amount }}</p>
+                <p><strong>Generated By: </strong>{{ record.username }}</p>
+                <p><strong>Company Billed: </strong>{{ record.companyName }}</p>
+                <a href="{% url 'deleteBillings' record.billingID %}" class="delete-btn">Delete Billing</a>
+            </div>
+            <hr>
+        {% endfor %}
+
+    </div>
+
+<!-- Display all billings made by specific Finance team member. -->
+
+</body>
+</html>
\ No newline at end of file
diff --git a/ActualProjectCode/DjangoProject/templates/modelForms/deleteBillings.html b/ActualProjectCode/DjangoProject/templates/modelForms/deleteBillings.html
new file mode 100644
index 0000000..430dac3
--- /dev/null
+++ b/ActualProjectCode/DjangoProject/templates/modelForms/deleteBillings.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <style>
+        body {
+            font-family: Arial, sans-serif;
+            background-color: #f4f4f4;
+            color: #333;
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            height: 100vh;
+            margin: 0;
+        }
+
+        .container {
+            background: white;
+            padding: 20px;
+            border-radius: 8px;
+            box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1);
+            text-align: center;
+            width: 300px;
+        }
+
+        p {
+            font-size: 16px;
+            margin-bottom: 20px;
+        }
+
+        a {
+            text-decoration: none;
+            color: #333;
+            font-weight: bold;
+            margin-right: 15px;
+        }
+
+        a:hover {
+            text-decoration: underline;
+        }
+
+        input[type="submit"] {
+            background: #333;
+            color: white;
+            border: none;
+            padding: 10px 20px;
+            font-size: 16px;
+            cursor: pointer;
+            border-radius: 5px;
+        }
+
+        input[type="submit"]:hover {
+            background: #555;
+        }
+    </style>
+</head>
+<body>
+
+    <div class="container">
+        <p>Are you sure you want to delete this billing?</p>
+        <form action="{% url 'deleteBillings' record.billingID %}" method="POST">
+            {% csrf_token %}
+            <a href="{% url 'billingsView' %}">Go Back</a>
+            <input type="submit" name="confirm" value="Delete">
+
+        </form>
+    </div>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/ActualProjectCode/DjangoProject/templates/profile.html b/ActualProjectCode/DjangoProject/templates/profile.html
index a315077..f30bd27 100644
--- a/ActualProjectCode/DjangoProject/templates/profile.html
+++ b/ActualProjectCode/DjangoProject/templates/profile.html
@@ -172,14 +172,21 @@
                 <h2>Finance Dashboard</h2>
                 <p>View financial reports and tools.</p>
                 <hr>
-                <h1><a href="{% url 'genBillings' %}">Generate Billings</a></h1>
+                <h1>Generate Billings</h1>
+                <h2><a href="{% url 'genBillings' %}">Generate</a></h2>
+                <hr>
+                <h1>View Billings</h1>
+                <h2><a href="{% url 'billingsView' %}">View</a></h2>
 
-            {% elif user.profile.role == 'admin' %} <!-- Admin Dashboard -->
+            {% elif user.profile.role == 'admin' %}
+            <!-- Admin Dashboard -->
                 <h2>Admin Page</h2>
                 <p>View all Activity</p>
-                <p><a href="{% url 'manageUsers' %}">Manage Users</a></p>
-
-                <p><a href=""> View all Activity </a></p>
+                <h1>Manage users page</h1>
+                <h2><a href="{% url 'manageUsers' %}">Manage Users</a></h2>
+                <hr>
+                <h1>View all activity</h1>
+                <h2><a href=""> Activity </a></h2>
 
             {% else %}
                 <!-- User Dashboard -->
-- 
GitLab