diff --git a/.gitignore b/.gitignore
index d725c9c..666205f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -435,4 +435,4 @@ FodyWeavers.xsd
### VisualStudio Patch ###
# Additional files built by Visual Studio
-# End of https://www.toptal.com/developers/gitignore/api/dotnetcore,visualstudio,visualstudiocode
\ No newline at end of file
+# End of https://www.toptal.com/developers/gitignore/api/dotnetcore,visualstudio,visualstudiocode
diff --git a/README.md b/README.md
index b0549bd..14cb0fd 100755
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
-
HeartTrack
+
HeartTrack - Admin
@@ -9,17 +9,15 @@
---
- 
+ 

- 
- 
- 
+ 
# Table des matières
-[Présentation](#présentation) | [Répartition du Git](#répartition-du-git) | [Documentation](#documentation) | [Prerequisites](#prerequisites) | [Getting Started](#getting-started) | [Features](#features) | [Ce que nous avons fait](#ce-que-nous-avons-fait) | [Fabriqué avec](#fabriqué-avec) | [Contributeurs](#contributeurs) | [Comment contribuer](#comment-contribuer) | [License](#license) | [Remerciements](#remerciements)
+[Présentation](#présentation) | [Fonctionnalités principales](#fonctionnalités-principales) | [Répartition du Git](#répartition-du-git) | [Prerequis](#prérequis) | [Fabriqué avec](#fabriqué-avec) | [Contributeurs](#contributeurs) | [Comment contribuer](#comment-contribuer) | [License](#license) | [Remerciements](#remerciements)
@@ -33,37 +31,88 @@ HeartTrack est une application web PHP et mobile Android destinée aux sportifs
### Récapitulatif du Projet
-Le projet HeartTrack, avec son application HeartTrack, vise à offrir une solution Open Source d'analyse des données de fréquence cardiaque, en mettant l'accent sur les besoins des sportifs et des coachs. L'application sera capable de traiter et d'interpréter les données de manière intelligente, fournissant ainsi des informations précieuses pour optimiser les performances sportives et la santé.
-
+Ce dépôt contient une application Blazor conçue pour faciliter l'administration des utilisateurs au sein de votre application. L'application utilise le framework Blazor, qui permet le développement d'applications web interactives avec .NET.
+
+## Fonctionnalités principales
+
+1. **Gestion des Utilisateurs**: Ajoutez, modifiez et supprimez des utilisateurs de manière simple et efficace.
+
+2. **Rôles Utilisateurs**: Attribuez des rôles à chaque utilisateur pour définir leurs permissions et accès.
+
+3. **Tableau de Bord Convivial**: Interface utilisateur intuitive pour une expérience d'administration agréable.
+
+4. **Sécurité Intégrée**: Utilisation des fonctionnalités de sécurité de Blazor pour protéger les données sensibles.
+
+## Les attendus du projet
+* [x] Implementation of a data visualization page with pagination (2 points)
+* [x] Page for adding an element with validation (2 point)
+* [x] Edit page of an element without validation (2 point)
+* [x] Deletion of an element with a confirmation (2 point)
+* [ ] Complex component (5 point)
+* [x] Use API (Get / Insert / Update / Delete) (3 point)
+* [x] IOC & DI use (4 point)
+* [x] Localization & Globalization (at least two languages) (1 point)
+* [ ] Use of the configuration (1 point)
+* [ ] Logs (2 points)
+* [x] Code cleanliness (2 point)
+* [x] GUI (Global design, placement of buttons, ...) (2 point)
+* [x] Code location (No code in views) (2 point)
+* [x] The Readme (2 points)
+* [x] Description of how the client solution works (code-level illustration) (6 points)
+* [x] Merge request (2 points)
+
+## Ce que nous avons fait
+* [x] Les listing dans la page de tickets et d'Activités
+* [x] La modification dans la page de tickets
+* [x] La suppression dans la page de tickets
+* [x] Le get by id dans la page de tickets
+* [x] L'implementation de la partie API et du data service dans la pages d'Activités
+* [x] L'authentification dans la branch `issue_auth` mais des problèmes persistent (les actions des services ne sont pas gerer par l'authentification)
+* [ ] Le data service dans toutes les pages
+* [ ] La répartitions des fonctionnalités de la page de tickets sur les autres pages
## Répartition du Git
-[**Sources**](Sources/) : **Code de l'application**
-
-[**Documents**](Documents/README_DOCUMENTS.md) : **Documentation de l'application et diagrammes**
-
-
+[**Sources**](Sources/HeartTrack) : **Code de l'application**
---
Le projet HeartTrack utilise un modèle de flux de travail Git (Gitflow) pour organiser le développement. Voici une brève explication des principales branches :
-- **branche prod** : Cette branche contient la version de production stable de l'application. Les modifications sur cette branche sont généralement destinées à des mises en production.
+- **branche WORK-NAME** : Cette branche contient la version de travail des différents membres de l'équipe. Les modifications sur cette branche sont bien souvent réalisé par le nom du membre en question.
-- **branche master** : La branche master est similaire à la branche de production, mais elle peut contenir des fonctionnalités en cours de développement qui sont presque prêtes pour une mise en production.
+- **branche master** : La branche master est similaire à la branche de production, mais elle contient la version stable et final de notre application.
-- **branche test** : Cette branche est utilisée pour permettre différents tests sur l'application.
+### API PHP
-- **branche issue** : Pour chaque problème (issue) que vous résolvez, vous devez créer une branche portant le nom de l'issue, par exemple, "issue_#32_nom" où 32 est le numéro de l'issue et nom est une description courte de l'issue. Une fois l'issue résolue, assurez-vous de mettre à jour le changelog et de créer une merge request.
-- **branche démo** : Cette branche est utilisée pour déployer une version démo de l'application. Elle est mise à jour avec les dernières fonctionnalités en développement.
+L'application Blazor utilise une API en PHP pour récupérer les données depuis la base de données.
+Pour l'utiliser, vous devez faire tourner notre projet PHP disponible [ici](https://codefirst.iut.uca.fr/git/HeartDev/Web/src/branch/API_tests) sur votre machine locale. Pour ensuite changer le type de skockage `ActivityDataServiceFactice` par `ActivityDataServiceAPI` et vice versa dans le fichier `Program.cs` de l'application Blazor en ligne 24 `Add Data Services`.
-## Documentation
-Documentation et informations à propos de `HearthTrack` disponible [ici]()
### Prérequis
-* [Visual Studio Code](https://code.visualstudio.com/) - Exemple d'IDE gratuit
+* [Visual Studio](https://visualstudio.microsoft.com/fr/vs/) - IDE
* [Git](https://git-scm.com/) - Gestion de version
-* [PostgreSQL](https://www.postgresql.org/) - Base de Données
+* [.NET SDK](https://dotnet.microsoft.com/download) - Platform open-source pour le développement d'applications
+
+## Installation et Exécution
+
+1. Clonez ce dépôt sur votre machine locale :
+
+ ```bash
+ git clone https://codefirst.iut.uca.fr/git/HeartDev/Admin.git
+ ```
+
+2. Lacer Visual Studio et ouvrez le projet `HeartTrack.sln` dans le dossier `Sources/HeartTrack`.
+
+Pour des raison de manque de la partie php, vous ne pourrez utiliser l'application qu'en localStorage. Il est cependant possible de tester l'aaplication avec la partie API en PHP en faisant tourner en local le projet php disponible [ici](https://codefirst.iut.uca.fr/git/HeartDev/Web/src/branch/API_tests) et en changant le type de skockage `ActivityDataServiceFactice` par `ActivityDataServiceAPI` dans le fichier `Program.cs` de l'application Blazor en ligne 24 `Add Data Services` et importer les dépendances en conséquence.
+
+
+Comme ceci :
+```csharp
+// Add Data Services
+builder.Services.AddScoped();
+builder.Services.AddScoped();
+```
### Fabriqué avec
* [Visual Studio](https://visualstudio.microsoft.com/fr/vs/) - IDE
@@ -73,7 +122,6 @@ Documentation et informations à propos de `HearthTrack` disponible [ici]()
* [Blazor](https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor) - Framework Web
* [C#](https://docs.microsoft.com/fr-fr/dotnet/csharp/) - Langage
* [HTML 5, CSS 3](https://developer.mozilla.org/fr/docs/Web/HTML) - Langages
-* [Doxygen](https://codefirst.iut.uca.fr/sonar/) - Documentation
## Contributeurs
* [Antoine PEREDERII](https://codefirst.iut.uca.fr/git/antoine.perederii)
@@ -83,7 +131,7 @@ Documentation et informations à propos de `HearthTrack` disponible [ici]()
* [David D'HALMEIDA](https://codefirst.iut.uca.fr/git/david.d_almeida)
## Comment contribuer
-1. Forkez le projet ()
+1. Forkez le projet ()
2. Créez votre branche (`git checkout -b feature/featureName`)
3. commit vos changements (`git commit -am 'Add some feature'`)
4. Push sur la branche (`git push origin feature/featureName`)
diff --git a/Sources/HeartTrack/App.razor b/Sources/HeartTrack/App.razor
index 60f5744..5212a2b 100644
--- a/Sources/HeartTrack/App.razor
+++ b/Sources/HeartTrack/App.razor
@@ -9,5 +9,4 @@
Sorry, there's nothing at this address.
-
-
+
\ No newline at end of file
diff --git a/Sources/HeartTrack/Controllers/CultureController.cs b/Sources/HeartTrack/Controllers/CultureController.cs
new file mode 100644
index 0000000..89568dd
--- /dev/null
+++ b/Sources/HeartTrack/Controllers/CultureController.cs
@@ -0,0 +1,22 @@
+namespace HeartTrack.Controllers
+{
+ using Microsoft.AspNetCore.Localization;
+ using Microsoft.AspNetCore.Mvc;
+
+ [Route("[controller]/[action]")]
+ public class CultureController : Controller
+ {
+ public IActionResult SetCulture(string culture, string redirectUri)
+ {
+ if (culture != null)
+ {
+ this.HttpContext.Response.Cookies.Append(
+ CookieRequestCultureProvider.DefaultCookieName,
+ CookieRequestCultureProvider.MakeCookieValue(
+ new RequestCulture(culture)));
+ }
+
+ return this.LocalRedirect(redirectUri);
+ }
+ }
+}
diff --git a/Sources/HeartTrack/Data/WeatherForecast.cs b/Sources/HeartTrack/Data/WeatherForecast.cs
deleted file mode 100644
index d04ae21..0000000
--- a/Sources/HeartTrack/Data/WeatherForecast.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-namespace HeartTrack.Data;
-
-public class WeatherForecast
-{
- public DateTime Date { get; set; }
-
- public int TemperatureC { get; set; }
-
- public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
-
- public string? Summary { get; set; }
-}
-
diff --git a/Sources/HeartTrack/Data/WeatherForecastService.cs b/Sources/HeartTrack/Data/WeatherForecastService.cs
deleted file mode 100644
index 2c00dc4..0000000
--- a/Sources/HeartTrack/Data/WeatherForecastService.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-namespace HeartTrack.Data;
-
-public class WeatherForecastService
-{
- private static readonly string[] Summaries = new[]
- {
- "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
- };
-
- public Task GetForecastAsync(DateTime startDate)
- {
- return Task.FromResult(Enumerable.Range(1, 5).Select(index => new WeatherForecast
- {
- Date = startDate.AddDays(index),
- TemperatureC = Random.Shared.Next(-20, 55),
- Summary = Summaries[Random.Shared.Next(Summaries.Length)]
- }).ToArray());
- }
-}
-
diff --git a/Sources/HeartTrack/HeartTrack.csproj b/Sources/HeartTrack/HeartTrack.csproj
index b775b09..d3e5f77 100644
--- a/Sources/HeartTrack/HeartTrack.csproj
+++ b/Sources/HeartTrack/HeartTrack.csproj
@@ -1,4 +1,4 @@
-
+net6.0
@@ -6,4 +6,33 @@
enable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Sources/HeartTrack/HeartTrack.sln b/Sources/HeartTrack/HeartTrack.sln
index 932e021..0cc61e1 100644
--- a/Sources/HeartTrack/HeartTrack.sln
+++ b/Sources/HeartTrack/HeartTrack.sln
@@ -1,25 +1,25 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 25.0.1706.7
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeartTrack", "HeartTrack.csproj", "{17956D4F-7446-434C-8987-6B10A1FC66E8}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {17956D4F-7446-434C-8987-6B10A1FC66E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {17956D4F-7446-434C-8987-6B10A1FC66E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {17956D4F-7446-434C-8987-6B10A1FC66E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {17956D4F-7446-434C-8987-6B10A1FC66E8}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {2F984935-D2F4-4E45-A861-034CC5F7147B}
- EndGlobalSection
-EndGlobal
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.8.34330.188
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HeartTrack", "HeartTrack.csproj", "{17956D4F-7446-434C-8987-6B10A1FC66E8}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {17956D4F-7446-434C-8987-6B10A1FC66E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {17956D4F-7446-434C-8987-6B10A1FC66E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {17956D4F-7446-434C-8987-6B10A1FC66E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {17956D4F-7446-434C-8987-6B10A1FC66E8}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {2F984935-D2F4-4E45-A861-034CC5F7147B}
+ EndGlobalSection
+EndGlobal
diff --git a/Sources/HeartTrack/Models/Activity/Activity.cs b/Sources/HeartTrack/Models/Activity/Activity.cs
new file mode 100644
index 0000000..8595940
--- /dev/null
+++ b/Sources/HeartTrack/Models/Activity/Activity.cs
@@ -0,0 +1,20 @@
+namespace HeartTrack.Models
+{
+ public class Activity
+ {
+ public int IdActivity { get; set; }
+ public string Type { get; set; }
+ public DateOnly Date { get; set; }
+ public DateOnly StartTime { get; set; }
+ public DateOnly EndTime { get; set; }
+ public int EffortRessenti { get; set; }
+ public float Variability { get; set; }
+ public float Variance { get; set; }
+ public float StandardDeviation { get; set; }
+ public float Average { get; set; }
+ public int Maximum { get; set; }
+ public int Minimum { get; set; }
+ public float AvrTemperature { get; set; }
+ public bool HasAutoPause { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/Sources/HeartTrack/Models/Report/Report.cs b/Sources/HeartTrack/Models/Report/Report.cs
new file mode 100644
index 0000000..eda8a0d
--- /dev/null
+++ b/Sources/HeartTrack/Models/Report/Report.cs
@@ -0,0 +1,14 @@
+using Blazorise;
+
+namespace HeartTrack.Models
+{
+ public class Report
+ {
+ public int Id { get; set; }
+ public string Username { get; set; }
+ public string ReportedUser { get; set; }
+ public string Raison { get; set; }
+ public string Description { get; set; }
+ public Image Image { get; set; }
+ }
+}
diff --git a/Sources/HeartTrack/Models/Report/ReportModel.cs b/Sources/HeartTrack/Models/Report/ReportModel.cs
new file mode 100644
index 0000000..fb11c79
--- /dev/null
+++ b/Sources/HeartTrack/Models/Report/ReportModel.cs
@@ -0,0 +1,25 @@
+using Blazorise;
+using System.ComponentModel.DataAnnotations;
+
+namespace HeartTrack.Models
+{
+ public class ReportModel
+ {
+ [Required]
+ [Range(0, 121425711425541)]
+ public int Id { get; set; }
+ [Required]
+ [StringLength(50)]
+ public string Username { get; set; }
+ [Required]
+ [StringLength(50)]
+ public string ReportedUser { get; set; }
+ [Required]
+ [StringLength(150)]
+ public string Raison { get; set; }
+ [Required]
+ [StringLength(500)]
+ public string Description { get; set; }
+ public Image Image { get; set; }
+ }
+}
diff --git a/Sources/HeartTrack/Models/Ticket/Ticket.cs b/Sources/HeartTrack/Models/Ticket/Ticket.cs
new file mode 100644
index 0000000..e21b3c5
--- /dev/null
+++ b/Sources/HeartTrack/Models/Ticket/Ticket.cs
@@ -0,0 +1,12 @@
+namespace HeartTrack.Models
+{
+ public class Ticket
+ {
+ public int Id { get; set; }
+ public string Username { get; set; }
+ public string Contexte { get; set; }
+ public string Description { get; set; }
+ public string Urgence { get; set; }
+ public Boolean isCheck { get; set; }
+ }
+}
diff --git a/Sources/HeartTrack/Models/Ticket/TicketModel.cs b/Sources/HeartTrack/Models/Ticket/TicketModel.cs
new file mode 100644
index 0000000..e9bdc40
--- /dev/null
+++ b/Sources/HeartTrack/Models/Ticket/TicketModel.cs
@@ -0,0 +1,26 @@
+using Blazorise;
+using System.ComponentModel.DataAnnotations;
+using System.Diagnostics.CodeAnalysis;
+
+namespace HeartTrack.Models
+{
+ public class TicketModel
+ {
+ [Required]
+ [Range(0, 121425711425541)]
+ public int Id { get; set; }
+
+ [Required]
+ [StringLength(50, ErrorMessage = "The username must not exceed 50 characters.")]
+ public string Username { get; set; }
+ [Required]
+ [StringLength(25, ErrorMessage = "The subject must not exceed 25 characters.")]
+ public string Contexte { get; set; }
+
+ [Required]
+ [StringLength(500, ErrorMessage = "Description must not exceed 500 characters.")]
+ public string Description { get; set; }
+ public Boolean Urgence { get; set; }
+ public Boolean isCheck { get; set; } = false;
+ }
+}
diff --git a/Sources/HeartTrack/Models/User/User.cs b/Sources/HeartTrack/Models/User/User.cs
new file mode 100644
index 0000000..d18a6aa
--- /dev/null
+++ b/Sources/HeartTrack/Models/User/User.cs
@@ -0,0 +1,17 @@
+namespace HeartTrack.Models
+{
+ public class User
+ {
+ public int Id { get; set; }
+ public string Username { get; set; }
+ public string Nom { get; set; }
+ public string Prenom { get; set; }
+ public string Email { get; set; }
+ public string Password { get; set; }
+ public string Sexe { get; set; }
+ public float Taille { get; set; }
+ public float Poids { get; set; }
+ public DateTime BirthDate { get; set; }
+ public Boolean isBan { get; set; }
+ }
+}
diff --git a/Sources/HeartTrack/Models/User/UserModel.cs b/Sources/HeartTrack/Models/User/UserModel.cs
new file mode 100644
index 0000000..276f786
--- /dev/null
+++ b/Sources/HeartTrack/Models/User/UserModel.cs
@@ -0,0 +1,39 @@
+using System.ComponentModel;
+using System.ComponentModel.DataAnnotations;
+
+namespace HeartTrack.Models
+{
+ public class UserModel
+ {
+ [Required]
+ [Range(0,121425711425541)]
+ public int Id { get; set; }
+
+ [Required]
+ [StringLength(50, ErrorMessage = "The username must not exceed 50 characters.")]
+ public string Username { get; set; }
+
+ [Required]
+ [StringLength(50, ErrorMessage = "The name must not exceed 50 characters.")]
+ [RegularExpression(@"^[A-Za-z]$", ErrorMessage = "Numbers are not accepted.")]
+ public string FirstName { get; set; }
+
+ [Required]
+ [StringLength(25, ErrorMessage = "The last name must not exceed 25 characters.")]
+ [RegularExpression(@"^[A-Za-z]*$", ErrorMessage = "Numbers are not accepted.")]
+ public string LastName { get; set; }
+ [Required]
+ public string Email { get; set; }
+ [Required]
+ public string Password { get; set; }
+ [Required]
+ public string Sexe { get; set; }
+ [Required]
+ public float Taille { get; set; }
+ [Required]
+ public float Poids { get; set; }
+ [Required]
+ public DateTime BirthDate { get; set; }
+ public Boolean isBan { get; set; }
+ }
+}
diff --git a/Sources/HeartTrack/Pages/Activities.razor b/Sources/HeartTrack/Pages/Activities.razor
new file mode 100644
index 0000000..7e93508
--- /dev/null
+++ b/Sources/HeartTrack/Pages/Activities.razor
@@ -0,0 +1,33 @@
+@page "/activities"
+@using HeartTrack.Models
+
+Activities
+
+