diff --git a/Medarbetarpuls/medarbetarapp/models.py b/Medarbetarpuls/medarbetarapp/models.py index 37c2bd17d1779bc1fde8b0a2569477bc18148733..1a697cb7898687499532c09b154aac634e9aefb3 100644 --- a/Medarbetarpuls/medarbetarapp/models.py +++ b/Medarbetarpuls/medarbetarapp/models.py @@ -128,10 +128,18 @@ class CustomUser(AbstractBaseUser, PermissionsMixin): # pyright: ignore # To see how many surveys this user has unanswered def count_unanswered_surveys(self): return self.survey_results.filter(is_answered=False).count() + + # To see how many surveys this user has answered + def count_answered_surveys(self): + return self.survey_results.filter(is_answered=True).count() # To get all unanswered surveys for this user def get_unanswered_surveys(self): return self.survey_results.filter(is_answered=False) + + # To get all answered surveys for this user + def get_answered_surveys(self): + return self.survey_results.filter(is_answered=True) diff --git a/Medarbetarpuls/medarbetarapp/static/styles.css b/Medarbetarpuls/medarbetarapp/static/styles.css index a43a643c70bc15fd148727671f8d3bfcf8b03a50..101239706f055bedd686bb3b03544752cfa5f0f9 100644 --- a/Medarbetarpuls/medarbetarapp/static/styles.css +++ b/Medarbetarpuls/medarbetarapp/static/styles.css @@ -192,7 +192,11 @@ button:hover { .start-container { max-width: 1200px; - margin: 0 auto; + justify-content: center; + padding: 20px; + display: flex; + flex-direction: column; + align-items: center; padding: 20px; } diff --git a/Medarbetarpuls/medarbetarapp/templates/my_results.html b/Medarbetarpuls/medarbetarapp/templates/my_results.html index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..8a0e9ed51e14553545128034630375031f60efda 100644 --- a/Medarbetarpuls/medarbetarapp/templates/my_results.html +++ b/Medarbetarpuls/medarbetarapp/templates/my_results.html @@ -0,0 +1,60 @@ +<html lang="sv"> + <head> + {% load static %} + <script src="https://unpkg.com/htmx.org@1.8.4"></script> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>Medarbetarpuls - Surveys</title> + <link rel="stylesheet" href="{% static 'styles.css' %}" /> + </head> + <body> + <div class="start-container"> + <h1>Resultat pÃ¥ besvarade enkäter</h1> + <h2>Du har besvarat {{ answered_count }} enkäter</h2> + <div class="grid-container"> + {% for survey in answered_surveys %} + + {% if survey.published_survey.deadline > current_time %} <!-- Check if sending_date exists --> + <div class="grid-item yellow"> + <p> PÃ¥gÃ¥ende enkät</p> + <p><strong>*{{ survey.published_survey.name }}*</strong></p> + <p> {{survey.published_survey.collected_answer_count}} har svarat hittils</p> + </div> + {% else %} + <div class="grid-item green"> + <p>Genomfördes: {{ survey.published_survey.sending_date }} + - {{ survey.published_survey.deadline }}</p> + <p><strong>*{{ survey.published_survey.name }}*</strong></p> + <p> {{survey.published_survey.collected_answer_count}} svarade pÃ¥ enkäten</p> + <button class="view-survey_result" onclick="window.location.href='{% url 'survey_result' + survey.id %}'"> + Se resultat</button> + </div> + {% endif %} + {% endfor %} + + <!-- Example survey cards for testing --> + <div class="grid-item yellow"> + <p> PÃ¥gÃ¥ende enkät</p> + <p><strong>*Namn pÃ¥ enkät*</strong></p> + <p> 34 har svarat hittils</p> + </div> + <div class="grid-item green"> + <p>Genomfördes: 2025-02-20 - 2025-03-20</p> + <p><strong>*Namn pÃ¥ enkät*</strong></p> + <p> 32 svarade pÃ¥ enkäten</p> + <button class="view-survey_result" onclick="window.location.href='{% url 'survey_result' 1%}'"> + Se resultat</button> + </div> + <div class="grid-item green"> + <p>Genomfördes: 2025-02-20 - 2025-03-20</p> + <p><strong>*Namn pÃ¥ enkät*</strong></p> + <p> 32 svarade pÃ¥ enkäten</p> + <button class="view-survey_result" onclick="window.location.href='{% url 'survey_result' 1%}'"> + Se resultat</button> + </div> + <!-- Add more survey cards as needed --> + </div> + </div> + </body> +</html> \ No newline at end of file diff --git a/Medarbetarpuls/medarbetarapp/templates/start_admin.html b/Medarbetarpuls/medarbetarapp/templates/start_admin.html index 0bfd5aa68d1866d1822e7b2fc415d9e9cacbf250..db0295161ee2c05138290b890fd550e5fc50d597 100644 --- a/Medarbetarpuls/medarbetarapp/templates/start_admin.html +++ b/Medarbetarpuls/medarbetarapp/templates/start_admin.html @@ -19,7 +19,7 @@ <h2>Obesvarade enkäter</h2> <p>Se dina obesvarade enkäter</p> </a> - <a href="{% url 'survey_result' %}" class="grid-item orange"> + <a href="{% url 'my_results' %}" class="grid-item orange"> <div class="icon">ðŸ”</div> <h2>Se resultat</h2> <p>Se resultaten av dina tidigare svarade enkäter</p> diff --git a/Medarbetarpuls/medarbetarapp/templates/start_user.html b/Medarbetarpuls/medarbetarapp/templates/start_user.html index ae984563b90e67f93d1d52b083bc50871d457802..83644a4a9241d359947352f52de43ccdbae233a8 100644 --- a/Medarbetarpuls/medarbetarapp/templates/start_user.html +++ b/Medarbetarpuls/medarbetarapp/templates/start_user.html @@ -19,7 +19,7 @@ <h2>Obesvarade enkäter</h2> <p>Se dina obesvarade enkäter</p> </a> - <a href="{% url 'survey_result' %}" class="grid-item orange"> + <a href="{% url 'my_results' %}" class="grid-item orange"> <div class="icon">ðŸ”</div> <h2>Se resultat</h2> <p>Se resultaten av dina tidigare svarade enkäter</p> diff --git a/Medarbetarpuls/medarbetarapp/templates/unanswered_surveys.html b/Medarbetarpuls/medarbetarapp/templates/unanswered_surveys.html index 61b311412727545061b997ce6f97e28dfccfe3d5..fc93a6ef3e4336228f9759bdbea00b1b0f4c9e8f 100644 --- a/Medarbetarpuls/medarbetarapp/templates/unanswered_surveys.html +++ b/Medarbetarpuls/medarbetarapp/templates/unanswered_surveys.html @@ -8,12 +8,12 @@ <link rel="stylesheet" href="{% static 'styles.css' %}" /> </head> <body> - <div class="unanswered-survey-container"> + <div class="start-container"> <h1>Obesvarade enkäter</h1> <h2>Du har {{ unanswered_count }} obesvarade enkäter</h2> - <div class="survey-cards"> + <div class="grid-container"> {% for survey in unanswered_surveys %} - <div class="survey-card"> + <div class="grid-item lightblue"> <p>Publicerades: {{ survey.published_survey.sending_date }}</p> <p><strong>*{{ survey.published_survey.name }}*</strong></p> <p>Deadline: {{ survey.published_survey.deadline }}</p> @@ -21,24 +21,25 @@ {% endfor %} <!-- Example survey cards for testing --> - <div class="survey-card"> + <div class="grid-item lightblue"> <p>Publicerades: 2025-02-20</p> <p><strong>*Namn pÃ¥ enkät*</strong></p> <p>Deadline: 2026-02-20</p> </div> - <div class="survey-card"> + <div class="grid-item lightblue"> <p>Publicerades: 2025-02-20</p> <p><strong>*Namn pÃ¥ enkät*</strong></p> <p>Deadline: 2026-02-20</p> </div> - <div class="survey-card"> + <div class="grid-item lightblue"> <p>Publicerades: 2025-02-20</p> <p><strong>*Namn pÃ¥ enkät*</strong></p> <p>Deadline: 2026-02-20</p> </div> <!-- Add more survey cards as needed --> </div> - <button class="view-survey_result" onclick="window.location.href='{% url 'survey_result' %}'"> Visa resultat pÃ¥ tidigare enkäter</button> + <button class="view-survey_result" onclick="window.location.href='{% url 'my_results' %}'"> + Visa resultat pÃ¥ tidigare enkäter</button> </div> </body> </html> \ No newline at end of file diff --git a/Medarbetarpuls/medarbetarapp/urls.py b/Medarbetarpuls/medarbetarapp/urls.py index 1288c4650472bb78e9bdd7dac79f7dcfe73dc8bf..8217d57af7f5baabab458bf418029b59c17e66b1 100644 --- a/Medarbetarpuls/medarbetarapp/urls.py +++ b/Medarbetarpuls/medarbetarapp/urls.py @@ -24,7 +24,7 @@ urlpatterns = [ path('settings-user/', views.settings_user_view, name='settings_user'), path('start-admin/', views.start_admin_view, name='start_admin'), path('start-user/', views.start_user_view, name='start_user'), - path('survey-result/', views.survey_result_view, name='survey_result'), + path('survey-result/<int:survey_id>/', views.survey_result_view, name='survey_result'), path('survey-status/', views.survey_status_view, name='survey_status'), path('unanswered-surveys/', views.unanswered_surveys_view, name='unanswered_surveys'), ] diff --git a/Medarbetarpuls/medarbetarapp/views.py b/Medarbetarpuls/medarbetarapp/views.py index 88c979bcc89600a04438d3eaac6b1fb2dc5b43aa..b288393903e9ffaa2a5d73b6127ff2203bbb5daa 100644 --- a/Medarbetarpuls/medarbetarapp/views.py +++ b/Medarbetarpuls/medarbetarapp/views.py @@ -4,6 +4,8 @@ from django.shortcuts import redirect, render from django.views.decorators.csrf import csrf_exempt, csrf_protect from django.shortcuts import get_object_or_404 from django.contrib.auth import authenticate, login +from django.utils import timezone +from .models import SurveyResult import logging @@ -299,7 +301,18 @@ def my_org_view(request): def my_results_view(request): - return render(request, "my_results.html") + user = request.user # Assuming the user is authenticated + answered_count = user.count_answered_surveys() + answered_surveys = user.get_answered_surveys() + + # Assuming survey deadline is converted to UTC-timezone + current_time = timezone.now() + + return render(request, "my_results.html" , { + 'answered_count': answered_count, + 'answered_surveys': answered_surveys, + 'current_time': current_time, + }) def my_surveys_view(request): @@ -332,9 +345,16 @@ def start_user_view(request): return render(request, "start_user.html") -def survey_result_view(request): - return render(request, "survey_result.html") +def survey_result_view(request, survey_id): + + survey_result = get_object_or_404(SurveyResult, id=survey_id) + + # Check if the survey is accessible to the user + if not survey_result.survey.accessible_users.filter(id=request.user.id).exists(): + return render(request, '403.html', status=403) # Custom 403 page + # Proceed to render the survey results + return render(request, 'survey_result.html', {'survey_result': survey_result}) def survey_status_view(request): return render(request, "survey_status.html")