diff --git a/Sources/HeartTrack/HeartTrack.csproj b/Sources/HeartTrack/HeartTrack.csproj
index 12cf297..b1ab749 100644
--- a/Sources/HeartTrack/HeartTrack.csproj
+++ b/Sources/HeartTrack/HeartTrack.csproj
@@ -18,10 +18,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Sources/HeartTrack/Models/Activity/Activity.cs b/Sources/HeartTrack/Models/Activity/Activity.cs
index 5d36ca4..bf9d0bf 100644
--- a/Sources/HeartTrack/Models/Activity/Activity.cs
+++ b/Sources/HeartTrack/Models/Activity/Activity.cs
@@ -17,23 +17,4 @@
public float AvrTemperature { get; set; }
public bool HasAutoPause { get; set; }
}
-}
-//[
-// '{{repeat(15, 30)}}',
-// {
-// idActivity: '{{index(1)}}',
-// type: '{{random("Type1", "Type2", "Type3")}}',
-// date: '{{date(new Date(2014, 0, 1), new Date(), "YYYY-MM-dd")}}',
-// startTime: '{{date(new Date(2014, 0, 1), new Date(), "HH:mm:ss")}}',
-// endTime: '{{date(new Date(2014, 0, 1), new Date(), "HH:mm:ss")}}',
-// effortRessenti: '{{integer(1, 5)}}',
-// variability: '{{floating(1, 100)}}',
-// variance: '{{floating(1, 100)}}',
-// standardDeviation: '{{floating(1, 100)}}',
-// average: '{{floating(1, 100)}}',
-// maximum: '{{integer(80, 200)}}',
-// minimum: '{{integer(30, 100)}}',
-// avrTemperature: '{{floating(1, 100)}}',
-// hasAutoPause: '{{bool()}}'
-// }
-//]
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/Sources/HeartTrack/Pages/Activities.razor.cs b/Sources/HeartTrack/Pages/Activities.razor.cs
index e8ad3b8..d66ea92 100644
--- a/Sources/HeartTrack/Pages/Activities.razor.cs
+++ b/Sources/HeartTrack/Pages/Activities.razor.cs
@@ -4,6 +4,7 @@ using Blazorise.DataGrid;
using HeartTrack.Models;
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Localization;
+using HeartTrack.Services.ActivityDataService;
namespace HeartTrack.Pages
{
@@ -14,41 +15,39 @@ namespace HeartTrack.Pages
private int totalActivity;
[Inject]
- public HttpClient Http { get; set; }
+ private IActivityDataService ActivitiesDataService { get; set; }
- [Inject]
- public NavigationManager NavigationManager { get; set; }
-
- [Inject]
- public IStringLocalizer Localizer { get; set; }
-
- private async Task OnReadData(DataGridReadDataEventArgs e)
+ private async Task OnReadData()
{
- if (e.CancellationToken.IsCancellationRequested)
- {
- return;
- }
+ //if (e.CancellationToken.IsCancellationRequested)
+ //{
+ // return;
+ //}
+
+ //// When you use a real API, we use this follow code
+ ////var response = await Http.GetJsonAsync- ( $"http://my-api/api/data?page={e.Page}&pageSize={e.PageSize}" );
- // When you use a real API, we use this follow code
- //var response = await Http.GetJsonAsync
- ( $"http://my-api/api/data?page={e.Page}&pageSize={e.PageSize}" );
+ ////var response = await Http.GetStringAsync("http://localhost:8080/api");
+ ////var activityList = JsonConvert.DeserializeObject
>(response);
- //var response = await Http.GetStringAsync("http://localhost:8080/api");
- //var activityList = JsonConvert.DeserializeObject>(response);
+ //var response = (await Http.GetFromJsonAsync("http://localhost:8080/api")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList();
- var response = (await Http.GetFromJsonAsync("http://localhost:8080/api")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList();
+ ////await Http.GetFromJsonAsync("http://localhost:8080/api");
+ ////Console.WriteLine(response);
- //await Http.GetFromJsonAsync("http://localhost:8080/api");
- //Console.WriteLine(response);
+ ////var response = (await Http.GetFromJsonAsync($"{NavigationManager.BaseUri}fake-activities.json")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList();
- //var response = (await Http.GetFromJsonAsync($"{NavigationManager.BaseUri}fake-data-activity.json")).Skip((e.Page - 1) * e.PageSize).Take(e.PageSize).ToList();
+ //if (!e.CancellationToken.IsCancellationRequested)
+ //{
+ // totalActivity = (await Http.GetFromJsonAsync>("http://localhost:8080/api")).Count;
+ // //(await Http.GetFromJsonAsync>($"{NavigationManager.BaseUri}fake-data-activity.json")).Count;
+ // activities = new List(response); // an actual data for the current page
+ // //Console.WriteLine(totalActivity);
+ //}
+ //Console.WriteLine("Passage dans le OnInitializedAsync...");
- if (!e.CancellationToken.IsCancellationRequested)
- {
- totalActivity = (await Http.GetFromJsonAsync>("http://localhost:8080/api")).Count;
- //(await Http.GetFromJsonAsync>($"{NavigationManager.BaseUri}fake-data-activity.json")).Count;
- activities = new List(response); // an actual data for the current page
- //Console.WriteLine(totalActivity);
- }
+ this.activities = await this.ActivitiesDataService.getAllActivities();
+ this.totalActivity = activities.Count();
}
}
}
diff --git a/Sources/HeartTrack/Program.cs b/Sources/HeartTrack/Program.cs
index 639821b..618a3d9 100644
--- a/Sources/HeartTrack/Program.cs
+++ b/Sources/HeartTrack/Program.cs
@@ -18,7 +18,10 @@ builder.Services.AddServerSideBlazor();
builder.Services.AddHttpClient();
+// Add Services
builder.Services.AddScoped();
+builder.Services.AddScoped();
+
builder.Services.AddBlazorise()
.AddBootstrapProviders()
diff --git a/Sources/HeartTrack/Services/ActivityDataService/ActivityDataService.cs b/Sources/HeartTrack/Services/ActivityDataService/ActivityDataService.cs
deleted file mode 100644
index 1dc34a6..0000000
--- a/Sources/HeartTrack/Services/ActivityDataService/ActivityDataService.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using System;
-namespace HeartTrack.Services.ActivityDataService
-{
- public class ActivityDataService
- {
- public ActivityDataService()
- {
- }
- }
-}
-
diff --git a/Sources/HeartTrack/Services/ActivityDataService/ActivityDataServiceAPI.cs b/Sources/HeartTrack/Services/ActivityDataService/ActivityDataServiceAPI.cs
new file mode 100644
index 0000000..6b4158e
--- /dev/null
+++ b/Sources/HeartTrack/Services/ActivityDataService/ActivityDataServiceAPI.cs
@@ -0,0 +1,84 @@
+using System;
+namespace HeartTrack.Services.ActivityDataService
+{
+ public class ActivityDataServiceAPI : IActivityDataService
+ {
+ [Inject]
+ private HttpClient _clientHttp { get; set; }
+
+
+ public ActivityDataServiceFactice(HttpClient clientHttp)
+ {
+ this._clientHttp = clientHttp;
+ }
+
+ public async Task AddActivity(Activity a)
+ {
+ HttpResponseMessage response = await _clientHttp.PostAsJsonAsync("http://localhost:8080/api/activities", a);
+
+ if (response.IsSuccessStatusCode)
+ {
+ // La requête a réussi
+ }
+ else
+ {
+ // La requête a échoué
+ }
+ }
+
+ public async Task getActivityById(int id)
+ {
+ Activity activity = await _clientHttp.GetFromJsonAsync>("http://localhost:8080/api/activities/{id}");
+ return activity;
+ }
+
+ public async Task> getAllActivities()
+ {
+ List lActivities = await _clientHttp.GetFromJsonAsync>("http://localhost:8080/api/activities");
+ return lActivities;
+ }
+
+ public async Task RemoveActivity(Activity a)
+ {
+ HttpResponseMessage response = await _clientHttp.DeleteAsync($"http://localhost:8080/api/activities/{a.IdActivity}");
+
+ if (response.IsSuccessStatusCode)
+ {
+ // La requête a réussi
+ }
+ else
+ {
+ // La requête a échoué
+ }
+ }
+
+ public async Task SaveAllActivities(List list)
+ {
+ HttpResponseMessage response = await _clientHttp.PutAsJsonAsync("http://localhost:8080/api/activities", list);
+
+ if (response.IsSuccessStatusCode)
+ {
+ // La requête a réussi
+ }
+ else
+ {
+ // La requête a échoué
+ }
+ }
+
+ public async Task UpdateActivity(Activity a)
+ {
+ HttpResponseMessage response = await _clientHttp.PutAsJsonAsync($"http://localhost:8080/api/activities/{a.IdActivity}", a);
+
+ if (response.IsSuccessStatusCode)
+ {
+ // La requête a réussi
+ }
+ else
+ {
+ // La requête a échoué
+ }
+ }
+ }
+}
+
diff --git a/Sources/HeartTrack/Services/ActivityDataService/ActivityDataServiceFactice.cs b/Sources/HeartTrack/Services/ActivityDataService/ActivityDataServiceFactice.cs
new file mode 100644
index 0000000..6c27f93
--- /dev/null
+++ b/Sources/HeartTrack/Services/ActivityDataService/ActivityDataServiceFactice.cs
@@ -0,0 +1,140 @@
+using System;
+using Blazored.LocalStorage;
+using HeartTrack.Models;
+using HeartTrack.Services.ActivityDataService;
+using Microsoft.AspNetCore.Components;
+
+namespace HeartTrack.Services.ActivityDataServiceFactice
+{
+ public class ActivityDataServiceFactice : IActivityDataService
+ {
+ [Inject]
+ private HttpClient _clientHttp { get; set; }
+
+ [Inject]
+ public ILocalStorageService _localStorage { get; set; }
+
+ [Inject]
+ public NavigationManager _navigationManager { get; set; }
+
+ private String EmplacementLocalStorage { get; set; }
+ private String EmplacementJson { get; set; }
+
+
+ public ActivityDataServiceFactice(HttpClient clientHttp, ILocalStorageService localStorage, NavigationManager navigationManager)
+ {
+ this._clientHttp = clientHttp;
+ this._localStorage = localStorage;
+ this._navigationManager = navigationManager;
+
+ this.EmplacementLocalStorage = "activitiesData";
+ this.EmplacementJson = $"{_navigationManager.BaseUri}data/fake-activities.json";
+ }
+
+ public async Task AddActivity(Activity a)
+ {
+ List data = await getAllActivities();
+ data.Add(a);
+ await this.SaveAllActivities(data);
+ }
+
+ public async Task getActivityById(int id)
+ {
+ Console.WriteLine("Passage dans le getFromPseudo...");
+ List activities = await getAllActivities();
+ Activity? temp = null;
+
+ foreach (Activity a in activities)
+ {
+ if (a.IdActivity == id)
+ {
+ temp = a;
+ }
+ }
+
+ return temp;
+ }
+
+ public async Task> getAllActivities()
+ {
+ List lActivities = new List();
+
+ lActivities = await this.getActivitiesFromLocalStorage();
+ if(lActivities.Count == 0)
+ {
+ lActivities = await this.getActivitiesFromJson(this.EmplacementJson);
+ await this.saveActivitiesLocalStorage(lActivities);
+ }
+
+ return lActivities;
+ }
+
+ private async Task> getActivitiesFromJson(String cheminVersJson)
+ {
+ List activitiesDeserialiser = new List();
+
+ var data = await _clientHttp.GetFromJsonAsync(cheminVersJson);
+ activitiesDeserialiser = data.ToList();
+
+ return activitiesDeserialiser;
+ }
+
+ private async Task> getActivitiesFromLocalStorage()
+ {
+ List activitiesFromLocalStorage = null;
+
+ var data = await _localStorage.GetItemAsync(EmplacementLocalStorage);
+
+ if (data == null)
+ {
+ activitiesFromLocalStorage = new List();
+ }
+ else
+ {
+ activitiesFromLocalStorage = data.ToList();
+ }
+
+ return activitiesFromLocalStorage;
+ }
+
+ public async Task RemoveActivity(Activity a)
+ {
+ List data = await getAllActivities();
+
+ int index = -1;
+
+ foreach (Activity temp in data)
+ {
+ if (temp.IdActivity == a.IdActivity)
+ {
+ index = data.IndexOf(temp);
+ }
+ }
+
+ if (index != -1)
+ {
+ data.RemoveAt(index);
+ }
+
+ await this.SaveAllActivities(data);
+
+ data = await this.getAllActivities();
+ }
+
+ public async Task SaveAllActivities(List list)
+ {
+ await this.saveActivitiesLocalStorage(list);
+ }
+
+ private async Task saveActivitiesLocalStorage(List lActivities)
+ {
+ await _localStorage.SetItemAsync(this.EmplacementLocalStorage, lActivities);
+ }
+
+ public async Task UpdateActivity(Activity a)
+ {
+ await this.RemoveActivity(a);
+ await this.AddActivity(a);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Sources/HeartTrack/Services/ActivityDataService/IActivityDataService.cs b/Sources/HeartTrack/Services/ActivityDataService/IActivityDataService.cs
index 030e2af..be4884a 100644
--- a/Sources/HeartTrack/Services/ActivityDataService/IActivityDataService.cs
+++ b/Sources/HeartTrack/Services/ActivityDataService/IActivityDataService.cs
@@ -1,5 +1,4 @@
using System;
-using System.Diagnostics;
using HeartTrack.Models;
namespace HeartTrack.Services.ActivityDataService
@@ -10,14 +9,13 @@ namespace HeartTrack.Services.ActivityDataService
public Task SaveAllActivities(List list);
- public Task resetDataActivities();
public Task AddActivity(Activity u);
public Task RemoveActivity(Activity u);
public Task UpdateActivity(Activity u);
- public Task getActivityById(String pseudo);
+ public Task getActivityById(int id);
}
}
diff --git a/Sources/HeartTrack/Services/DataLocalService.cs b/Sources/HeartTrack/Services/DataLocalService/DataLocalService.cs
similarity index 100%
rename from Sources/HeartTrack/Services/DataLocalService.cs
rename to Sources/HeartTrack/Services/DataLocalService/DataLocalService.cs
diff --git a/Sources/HeartTrack/Services/IDataService.cs b/Sources/HeartTrack/Services/DataLocalService/IDataService.cs
similarity index 100%
rename from Sources/HeartTrack/Services/IDataService.cs
rename to Sources/HeartTrack/Services/DataLocalService/IDataService.cs
diff --git a/Sources/HeartTrack/Services/ReportDataService/IReportDataService.cs b/Sources/HeartTrack/Services/ReportDataService/IReportDataService.cs
new file mode 100644
index 0000000..cb5e0ab
--- /dev/null
+++ b/Sources/HeartTrack/Services/ReportDataService/IReportDataService.cs
@@ -0,0 +1,21 @@
+using System;
+using HeartTrack.Models;
+
+namespace HeartTrack.Services.ReportDataService
+{
+ public interface IReportDataService
+ {
+ public Task> getAllReports();
+
+ public Task SaveAllReports(List list);
+
+ public Task AddReport(Report u);
+
+ public Task RemoveReport(Report u);
+
+ public Task UpdateReport(Report u);
+
+ public Task getReportById(int id);
+ }
+}
+
diff --git a/Sources/HeartTrack/Services/ReportDataService/ReportDataServiceAPI.cs b/Sources/HeartTrack/Services/ReportDataService/ReportDataServiceAPI.cs
new file mode 100644
index 0000000..6b4158e
--- /dev/null
+++ b/Sources/HeartTrack/Services/ReportDataService/ReportDataServiceAPI.cs
@@ -0,0 +1,84 @@
+using System;
+namespace HeartTrack.Services.ActivityDataService
+{
+ public class ActivityDataServiceAPI : IActivityDataService
+ {
+ [Inject]
+ private HttpClient _clientHttp { get; set; }
+
+
+ public ActivityDataServiceFactice(HttpClient clientHttp)
+ {
+ this._clientHttp = clientHttp;
+ }
+
+ public async Task AddActivity(Activity a)
+ {
+ HttpResponseMessage response = await _clientHttp.PostAsJsonAsync("http://localhost:8080/api/activities", a);
+
+ if (response.IsSuccessStatusCode)
+ {
+ // La requête a réussi
+ }
+ else
+ {
+ // La requête a échoué
+ }
+ }
+
+ public async Task getActivityById(int id)
+ {
+ Activity activity = await _clientHttp.GetFromJsonAsync>("http://localhost:8080/api/activities/{id}");
+ return activity;
+ }
+
+ public async Task> getAllActivities()
+ {
+ List lActivities = await _clientHttp.GetFromJsonAsync>("http://localhost:8080/api/activities");
+ return lActivities;
+ }
+
+ public async Task RemoveActivity(Activity a)
+ {
+ HttpResponseMessage response = await _clientHttp.DeleteAsync($"http://localhost:8080/api/activities/{a.IdActivity}");
+
+ if (response.IsSuccessStatusCode)
+ {
+ // La requête a réussi
+ }
+ else
+ {
+ // La requête a échoué
+ }
+ }
+
+ public async Task SaveAllActivities(List list)
+ {
+ HttpResponseMessage response = await _clientHttp.PutAsJsonAsync("http://localhost:8080/api/activities", list);
+
+ if (response.IsSuccessStatusCode)
+ {
+ // La requête a réussi
+ }
+ else
+ {
+ // La requête a échoué
+ }
+ }
+
+ public async Task UpdateActivity(Activity a)
+ {
+ HttpResponseMessage response = await _clientHttp.PutAsJsonAsync($"http://localhost:8080/api/activities/{a.IdActivity}", a);
+
+ if (response.IsSuccessStatusCode)
+ {
+ // La requête a réussi
+ }
+ else
+ {
+ // La requête a échoué
+ }
+ }
+ }
+}
+
diff --git a/Sources/HeartTrack/Services/ReportDataService/ReportDataServiceFactice.cs b/Sources/HeartTrack/Services/ReportDataService/ReportDataServiceFactice.cs
new file mode 100644
index 0000000..6c27f93
--- /dev/null
+++ b/Sources/HeartTrack/Services/ReportDataService/ReportDataServiceFactice.cs
@@ -0,0 +1,140 @@
+using System;
+using Blazored.LocalStorage;
+using HeartTrack.Models;
+using HeartTrack.Services.ActivityDataService;
+using Microsoft.AspNetCore.Components;
+
+namespace HeartTrack.Services.ActivityDataServiceFactice
+{
+ public class ActivityDataServiceFactice : IActivityDataService
+ {
+ [Inject]
+ private HttpClient _clientHttp { get; set; }
+
+ [Inject]
+ public ILocalStorageService _localStorage { get; set; }
+
+ [Inject]
+ public NavigationManager _navigationManager { get; set; }
+
+ private String EmplacementLocalStorage { get; set; }
+ private String EmplacementJson { get; set; }
+
+
+ public ActivityDataServiceFactice(HttpClient clientHttp, ILocalStorageService localStorage, NavigationManager navigationManager)
+ {
+ this._clientHttp = clientHttp;
+ this._localStorage = localStorage;
+ this._navigationManager = navigationManager;
+
+ this.EmplacementLocalStorage = "activitiesData";
+ this.EmplacementJson = $"{_navigationManager.BaseUri}data/fake-activities.json";
+ }
+
+ public async Task AddActivity(Activity a)
+ {
+ List data = await getAllActivities();
+ data.Add(a);
+ await this.SaveAllActivities(data);
+ }
+
+ public async Task getActivityById(int id)
+ {
+ Console.WriteLine("Passage dans le getFromPseudo...");
+ List activities = await getAllActivities();
+ Activity? temp = null;
+
+ foreach (Activity a in activities)
+ {
+ if (a.IdActivity == id)
+ {
+ temp = a;
+ }
+ }
+
+ return temp;
+ }
+
+ public async Task> getAllActivities()
+ {
+ List lActivities = new List();
+
+ lActivities = await this.getActivitiesFromLocalStorage();
+ if(lActivities.Count == 0)
+ {
+ lActivities = await this.getActivitiesFromJson(this.EmplacementJson);
+ await this.saveActivitiesLocalStorage(lActivities);
+ }
+
+ return lActivities;
+ }
+
+ private async Task> getActivitiesFromJson(String cheminVersJson)
+ {
+ List activitiesDeserialiser = new List();
+
+ var data = await _clientHttp.GetFromJsonAsync(cheminVersJson);
+ activitiesDeserialiser = data.ToList();
+
+ return activitiesDeserialiser;
+ }
+
+ private async Task> getActivitiesFromLocalStorage()
+ {
+ List activitiesFromLocalStorage = null;
+
+ var data = await _localStorage.GetItemAsync(EmplacementLocalStorage);
+
+ if (data == null)
+ {
+ activitiesFromLocalStorage = new List();
+ }
+ else
+ {
+ activitiesFromLocalStorage = data.ToList();
+ }
+
+ return activitiesFromLocalStorage;
+ }
+
+ public async Task RemoveActivity(Activity a)
+ {
+ List data = await getAllActivities();
+
+ int index = -1;
+
+ foreach (Activity temp in data)
+ {
+ if (temp.IdActivity == a.IdActivity)
+ {
+ index = data.IndexOf(temp);
+ }
+ }
+
+ if (index != -1)
+ {
+ data.RemoveAt(index);
+ }
+
+ await this.SaveAllActivities(data);
+
+ data = await this.getAllActivities();
+ }
+
+ public async Task SaveAllActivities(List list)
+ {
+ await this.saveActivitiesLocalStorage(list);
+ }
+
+ private async Task saveActivitiesLocalStorage(List lActivities)
+ {
+ await _localStorage.SetItemAsync(this.EmplacementLocalStorage, lActivities);
+ }
+
+ public async Task UpdateActivity(Activity a)
+ {
+ await this.RemoveActivity(a);
+ await this.AddActivity(a);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Sources/HeartTrack/Services/TicketLocalService/ITicketDataService.cs b/Sources/HeartTrack/Services/TicketLocalService/ITicketDataService.cs
new file mode 100644
index 0000000..e68ba01
--- /dev/null
+++ b/Sources/HeartTrack/Services/TicketLocalService/ITicketDataService.cs
@@ -0,0 +1,22 @@
+using System;
+using HeartTrack.Models;
+
+namespace HeartTrack.Services.ActivityDataService
+{
+ public interface IActivityDataService
+ {
+ public Task> getAllActivities();
+
+ public Task SaveAllActivities(List list);
+
+ public Task ResetDataActivities();
+ public Task AddActivity(Activity u);
+
+ public Task RemoveActivity(Activity u);
+
+ public Task UpdateActivity(Activity u);
+
+ public Task getActivityById(int id);
+ }
+}
+
diff --git a/Sources/HeartTrack/Services/TicketLocalService/TicketDataServiceAPI.cs b/Sources/HeartTrack/Services/TicketLocalService/TicketDataServiceAPI.cs
new file mode 100644
index 0000000..6b4158e
--- /dev/null
+++ b/Sources/HeartTrack/Services/TicketLocalService/TicketDataServiceAPI.cs
@@ -0,0 +1,84 @@
+using System;
+namespace HeartTrack.Services.ActivityDataService
+{
+ public class ActivityDataServiceAPI : IActivityDataService
+ {
+ [Inject]
+ private HttpClient _clientHttp { get; set; }
+
+
+ public ActivityDataServiceFactice(HttpClient clientHttp)
+ {
+ this._clientHttp = clientHttp;
+ }
+
+ public async Task AddActivity(Activity a)
+ {
+ HttpResponseMessage response = await _clientHttp.PostAsJsonAsync("http://localhost:8080/api/activities", a);
+
+ if (response.IsSuccessStatusCode)
+ {
+ // La requête a réussi
+ }
+ else
+ {
+ // La requête a échoué
+ }
+ }
+
+ public async Task getActivityById(int id)
+ {
+ Activity activity = await _clientHttp.GetFromJsonAsync>("http://localhost:8080/api/activities/{id}");
+ return activity;
+ }
+
+ public async Task> getAllActivities()
+ {
+ List lActivities = await _clientHttp.GetFromJsonAsync>("http://localhost:8080/api/activities");
+ return lActivities;
+ }
+
+ public async Task RemoveActivity(Activity a)
+ {
+ HttpResponseMessage response = await _clientHttp.DeleteAsync($"http://localhost:8080/api/activities/{a.IdActivity}");
+
+ if (response.IsSuccessStatusCode)
+ {
+ // La requête a réussi
+ }
+ else
+ {
+ // La requête a échoué
+ }
+ }
+
+ public async Task SaveAllActivities(List list)
+ {
+ HttpResponseMessage response = await _clientHttp.PutAsJsonAsync("http://localhost:8080/api/activities", list);
+
+ if (response.IsSuccessStatusCode)
+ {
+ // La requête a réussi
+ }
+ else
+ {
+ // La requête a échoué
+ }
+ }
+
+ public async Task UpdateActivity(Activity a)
+ {
+ HttpResponseMessage response = await _clientHttp.PutAsJsonAsync($"http://localhost:8080/api/activities/{a.IdActivity}", a);
+
+ if (response.IsSuccessStatusCode)
+ {
+ // La requête a réussi
+ }
+ else
+ {
+ // La requête a échoué
+ }
+ }
+ }
+}
+
diff --git a/Sources/HeartTrack/Services/TicketLocalService/TicketDataServiceFactice.cs b/Sources/HeartTrack/Services/TicketLocalService/TicketDataServiceFactice.cs
new file mode 100644
index 0000000..6c27f93
--- /dev/null
+++ b/Sources/HeartTrack/Services/TicketLocalService/TicketDataServiceFactice.cs
@@ -0,0 +1,140 @@
+using System;
+using Blazored.LocalStorage;
+using HeartTrack.Models;
+using HeartTrack.Services.ActivityDataService;
+using Microsoft.AspNetCore.Components;
+
+namespace HeartTrack.Services.ActivityDataServiceFactice
+{
+ public class ActivityDataServiceFactice : IActivityDataService
+ {
+ [Inject]
+ private HttpClient _clientHttp { get; set; }
+
+ [Inject]
+ public ILocalStorageService _localStorage { get; set; }
+
+ [Inject]
+ public NavigationManager _navigationManager { get; set; }
+
+ private String EmplacementLocalStorage { get; set; }
+ private String EmplacementJson { get; set; }
+
+
+ public ActivityDataServiceFactice(HttpClient clientHttp, ILocalStorageService localStorage, NavigationManager navigationManager)
+ {
+ this._clientHttp = clientHttp;
+ this._localStorage = localStorage;
+ this._navigationManager = navigationManager;
+
+ this.EmplacementLocalStorage = "activitiesData";
+ this.EmplacementJson = $"{_navigationManager.BaseUri}data/fake-activities.json";
+ }
+
+ public async Task AddActivity(Activity a)
+ {
+ List data = await getAllActivities();
+ data.Add(a);
+ await this.SaveAllActivities(data);
+ }
+
+ public async Task getActivityById(int id)
+ {
+ Console.WriteLine("Passage dans le getFromPseudo...");
+ List activities = await getAllActivities();
+ Activity? temp = null;
+
+ foreach (Activity a in activities)
+ {
+ if (a.IdActivity == id)
+ {
+ temp = a;
+ }
+ }
+
+ return temp;
+ }
+
+ public async Task> getAllActivities()
+ {
+ List lActivities = new List();
+
+ lActivities = await this.getActivitiesFromLocalStorage();
+ if(lActivities.Count == 0)
+ {
+ lActivities = await this.getActivitiesFromJson(this.EmplacementJson);
+ await this.saveActivitiesLocalStorage(lActivities);
+ }
+
+ return lActivities;
+ }
+
+ private async Task> getActivitiesFromJson(String cheminVersJson)
+ {
+ List activitiesDeserialiser = new List();
+
+ var data = await _clientHttp.GetFromJsonAsync(cheminVersJson);
+ activitiesDeserialiser = data.ToList();
+
+ return activitiesDeserialiser;
+ }
+
+ private async Task> getActivitiesFromLocalStorage()
+ {
+ List activitiesFromLocalStorage = null;
+
+ var data = await _localStorage.GetItemAsync(EmplacementLocalStorage);
+
+ if (data == null)
+ {
+ activitiesFromLocalStorage = new List();
+ }
+ else
+ {
+ activitiesFromLocalStorage = data.ToList();
+ }
+
+ return activitiesFromLocalStorage;
+ }
+
+ public async Task RemoveActivity(Activity a)
+ {
+ List data = await getAllActivities();
+
+ int index = -1;
+
+ foreach (Activity temp in data)
+ {
+ if (temp.IdActivity == a.IdActivity)
+ {
+ index = data.IndexOf(temp);
+ }
+ }
+
+ if (index != -1)
+ {
+ data.RemoveAt(index);
+ }
+
+ await this.SaveAllActivities(data);
+
+ data = await this.getAllActivities();
+ }
+
+ public async Task SaveAllActivities(List list)
+ {
+ await this.saveActivitiesLocalStorage(list);
+ }
+
+ private async Task saveActivitiesLocalStorage(List lActivities)
+ {
+ await _localStorage.SetItemAsync(this.EmplacementLocalStorage, lActivities);
+ }
+
+ public async Task UpdateActivity(Activity a)
+ {
+ await this.RemoveActivity(a);
+ await this.AddActivity(a);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Sources/HeartTrack/Services/UserDataService/IUserDataService.cs b/Sources/HeartTrack/Services/UserDataService/IUserDataService.cs
new file mode 100644
index 0000000..e68ba01
--- /dev/null
+++ b/Sources/HeartTrack/Services/UserDataService/IUserDataService.cs
@@ -0,0 +1,22 @@
+using System;
+using HeartTrack.Models;
+
+namespace HeartTrack.Services.ActivityDataService
+{
+ public interface IActivityDataService
+ {
+ public Task> getAllActivities();
+
+ public Task SaveAllActivities(List list);
+
+ public Task ResetDataActivities();
+ public Task AddActivity(Activity u);
+
+ public Task RemoveActivity(Activity u);
+
+ public Task UpdateActivity(Activity u);
+
+ public Task getActivityById(int id);
+ }
+}
+
diff --git a/Sources/HeartTrack/Services/UserDataService/UserDataServiceAPI.cs b/Sources/HeartTrack/Services/UserDataService/UserDataServiceAPI.cs
new file mode 100644
index 0000000..6b4158e
--- /dev/null
+++ b/Sources/HeartTrack/Services/UserDataService/UserDataServiceAPI.cs
@@ -0,0 +1,84 @@
+using System;
+namespace HeartTrack.Services.ActivityDataService
+{
+ public class ActivityDataServiceAPI : IActivityDataService
+ {
+ [Inject]
+ private HttpClient _clientHttp { get; set; }
+
+
+ public ActivityDataServiceFactice(HttpClient clientHttp)
+ {
+ this._clientHttp = clientHttp;
+ }
+
+ public async Task AddActivity(Activity a)
+ {
+ HttpResponseMessage response = await _clientHttp.PostAsJsonAsync("http://localhost:8080/api/activities", a);
+
+ if (response.IsSuccessStatusCode)
+ {
+ // La requête a réussi
+ }
+ else
+ {
+ // La requête a échoué
+ }
+ }
+
+ public async Task getActivityById(int id)
+ {
+ Activity activity = await _clientHttp.GetFromJsonAsync>("http://localhost:8080/api/activities/{id}");
+ return activity;
+ }
+
+ public async Task> getAllActivities()
+ {
+ List lActivities = await _clientHttp.GetFromJsonAsync>("http://localhost:8080/api/activities");
+ return lActivities;
+ }
+
+ public async Task RemoveActivity(Activity a)
+ {
+ HttpResponseMessage response = await _clientHttp.DeleteAsync($"http://localhost:8080/api/activities/{a.IdActivity}");
+
+ if (response.IsSuccessStatusCode)
+ {
+ // La requête a réussi
+ }
+ else
+ {
+ // La requête a échoué
+ }
+ }
+
+ public async Task SaveAllActivities(List list)
+ {
+ HttpResponseMessage response = await _clientHttp.PutAsJsonAsync("http://localhost:8080/api/activities", list);
+
+ if (response.IsSuccessStatusCode)
+ {
+ // La requête a réussi
+ }
+ else
+ {
+ // La requête a échoué
+ }
+ }
+
+ public async Task UpdateActivity(Activity a)
+ {
+ HttpResponseMessage response = await _clientHttp.PutAsJsonAsync($"http://localhost:8080/api/activities/{a.IdActivity}", a);
+
+ if (response.IsSuccessStatusCode)
+ {
+ // La requête a réussi
+ }
+ else
+ {
+ // La requête a échoué
+ }
+ }
+ }
+}
+
diff --git a/Sources/HeartTrack/Services/UserDataService/UserDataServiceFactice.cs b/Sources/HeartTrack/Services/UserDataService/UserDataServiceFactice.cs
new file mode 100644
index 0000000..6c27f93
--- /dev/null
+++ b/Sources/HeartTrack/Services/UserDataService/UserDataServiceFactice.cs
@@ -0,0 +1,140 @@
+using System;
+using Blazored.LocalStorage;
+using HeartTrack.Models;
+using HeartTrack.Services.ActivityDataService;
+using Microsoft.AspNetCore.Components;
+
+namespace HeartTrack.Services.ActivityDataServiceFactice
+{
+ public class ActivityDataServiceFactice : IActivityDataService
+ {
+ [Inject]
+ private HttpClient _clientHttp { get; set; }
+
+ [Inject]
+ public ILocalStorageService _localStorage { get; set; }
+
+ [Inject]
+ public NavigationManager _navigationManager { get; set; }
+
+ private String EmplacementLocalStorage { get; set; }
+ private String EmplacementJson { get; set; }
+
+
+ public ActivityDataServiceFactice(HttpClient clientHttp, ILocalStorageService localStorage, NavigationManager navigationManager)
+ {
+ this._clientHttp = clientHttp;
+ this._localStorage = localStorage;
+ this._navigationManager = navigationManager;
+
+ this.EmplacementLocalStorage = "activitiesData";
+ this.EmplacementJson = $"{_navigationManager.BaseUri}data/fake-activities.json";
+ }
+
+ public async Task AddActivity(Activity a)
+ {
+ List data = await getAllActivities();
+ data.Add(a);
+ await this.SaveAllActivities(data);
+ }
+
+ public async Task getActivityById(int id)
+ {
+ Console.WriteLine("Passage dans le getFromPseudo...");
+ List activities = await getAllActivities();
+ Activity? temp = null;
+
+ foreach (Activity a in activities)
+ {
+ if (a.IdActivity == id)
+ {
+ temp = a;
+ }
+ }
+
+ return temp;
+ }
+
+ public async Task> getAllActivities()
+ {
+ List lActivities = new List();
+
+ lActivities = await this.getActivitiesFromLocalStorage();
+ if(lActivities.Count == 0)
+ {
+ lActivities = await this.getActivitiesFromJson(this.EmplacementJson);
+ await this.saveActivitiesLocalStorage(lActivities);
+ }
+
+ return lActivities;
+ }
+
+ private async Task> getActivitiesFromJson(String cheminVersJson)
+ {
+ List activitiesDeserialiser = new List();
+
+ var data = await _clientHttp.GetFromJsonAsync(cheminVersJson);
+ activitiesDeserialiser = data.ToList();
+
+ return activitiesDeserialiser;
+ }
+
+ private async Task> getActivitiesFromLocalStorage()
+ {
+ List activitiesFromLocalStorage = null;
+
+ var data = await _localStorage.GetItemAsync(EmplacementLocalStorage);
+
+ if (data == null)
+ {
+ activitiesFromLocalStorage = new List();
+ }
+ else
+ {
+ activitiesFromLocalStorage = data.ToList();
+ }
+
+ return activitiesFromLocalStorage;
+ }
+
+ public async Task RemoveActivity(Activity a)
+ {
+ List data = await getAllActivities();
+
+ int index = -1;
+
+ foreach (Activity temp in data)
+ {
+ if (temp.IdActivity == a.IdActivity)
+ {
+ index = data.IndexOf(temp);
+ }
+ }
+
+ if (index != -1)
+ {
+ data.RemoveAt(index);
+ }
+
+ await this.SaveAllActivities(data);
+
+ data = await this.getAllActivities();
+ }
+
+ public async Task SaveAllActivities(List list)
+ {
+ await this.saveActivitiesLocalStorage(list);
+ }
+
+ private async Task saveActivitiesLocalStorage(List lActivities)
+ {
+ await _localStorage.SetItemAsync(this.EmplacementLocalStorage, lActivities);
+ }
+
+ public async Task UpdateActivity(Activity a)
+ {
+ await this.RemoveActivity(a);
+ await this.AddActivity(a);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Sources/HeartTrack/wwwroot/fake-activities.json b/Sources/HeartTrack/wwwroot/data/fake-activities.json
similarity index 100%
rename from Sources/HeartTrack/wwwroot/fake-activities.json
rename to Sources/HeartTrack/wwwroot/data/fake-activities.json
diff --git a/Sources/HeartTrack/wwwroot/fake-reports.json b/Sources/HeartTrack/wwwroot/data/fake-reports.json
similarity index 100%
rename from Sources/HeartTrack/wwwroot/fake-reports.json
rename to Sources/HeartTrack/wwwroot/data/fake-reports.json
diff --git a/Sources/HeartTrack/wwwroot/fake-tickets.json b/Sources/HeartTrack/wwwroot/data/fake-tickets.json
similarity index 100%
rename from Sources/HeartTrack/wwwroot/fake-tickets.json
rename to Sources/HeartTrack/wwwroot/data/fake-tickets.json
diff --git a/Sources/HeartTrack/wwwroot/fake-users.json b/Sources/HeartTrack/wwwroot/data/fake-users.json
similarity index 100%
rename from Sources/HeartTrack/wwwroot/fake-users.json
rename to Sources/HeartTrack/wwwroot/data/fake-users.json