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