modification QuizServiceStub/DeleteUser/ModifQuote

pull/26/head
Kevin MONDEJAR 3 months ago
parent f79e01ea05
commit bfc54acd19

@ -12,6 +12,21 @@
else else
{ {
<DataGrid TItem="User"
Data="@users"
PageSize="@MaxValue"
ReadData="@OnReadData"
TotalItems="@totalItem"
ShowPager
Responsive>
<DataGridColumn TItem="User" Field="@nameof(User.Id)" Caption="Id" />
<DataGridColumn TItem="User" Field="@nameof(User.IsAdmin)" Caption="Admin" />
<DataGridColumn TItem="User" Field="@nameof(User.Name)" Caption="Nom" />
<DataGridColumn TItem="User" Field="@nameof(User.Email)" Caption="Email" />
<DataGridColumn TItem="User" Field="@nameof(User.DateCreation)" Caption="Date de création"/>
</DataGrid>
<p>Utilisateurs présents:</p> <p>Utilisateurs présents:</p>
@foreach (var user in users) @foreach (var user in users)
{ {
@ -19,11 +34,11 @@ else
<img class="imgProfil" src="@user.Image" /> <img class="imgProfil" src="@user.Image" />
@if (user.IsAdmin) @if (user.IsAdmin)
{ {
<p class="pseudo"><strong>Nom d'utilisateur :</strong> @user.Name <strong>(Administrateur)</strong></p> <p class="pseudo"><strong>Nom d'utilisateur :</strong> @user.Name <strong>(Administrateur)</strong>[id:@user.Id]</p>
} }
else else
{ {
<p class="pseudo"><strong>Nom d'utilisateur :</strong> @user.Name</p> <p class="pseudo"><strong>Nom d'utilisateur :</strong> @user.Name [id: @user.Id]</p>
} }
<p class="mail"><strong>Email de l'utilisateur :</strong> @user.Email</p> <p class="mail"><strong>Email de l'utilisateur :</strong> @user.Email</p>
@ -54,14 +69,6 @@ else
} }
</div> </div>
@*
<DataGrid TItem="User"
Data="@users"
PageSize="@MaxValue">
</DataGrid>*@
<!-- Fenêtre de confirmation de suppression --> <!-- Fenêtre de confirmation de suppression -->
@if (showPopupDelete) @if (showPopupDelete)

@ -36,7 +36,7 @@ namespace WF_WebAdmin.Pages
users = await userService.getAllUser(); users = await userService.getAllUser();
} }
private async Task OnReadData(DataGridReadDataEventArgs<Quote> e) private async Task OnReadData(DataGridReadDataEventArgs<User> e)
{ {
if (e.CancellationToken.IsCancellationRequested) if (e.CancellationToken.IsCancellationRequested)
{ {

@ -23,10 +23,10 @@
<DataGridColumn TItem="Quote" Field="@nameof(Quote.DateSrc)" Caption="Date" DisplayFormat="{0:d}" DisplayFormatProvider="@System.Globalization.CultureInfo.GetCultureInfo("fr-FR")" /> <DataGridColumn TItem="Quote" Field="@nameof(Quote.DateSrc)" Caption="Date" DisplayFormat="{0:d}" DisplayFormatProvider="@System.Globalization.CultureInfo.GetCultureInfo("fr-FR")" />
<DataGridColumn TItem="Quote" Field="@nameof(Quote.Id)" Caption="Action"> <DataGridColumn TItem="Quote" Field="@nameof(Quote.Id)" Caption="Action">
<DisplayTemplate> <DisplayTemplate>
<button @onclick="() => OnEditButtonClicked(context) " style="background-color: lightgray; padding: 0"> @* <button @onclick="() => OnEditButtonClicked(context) " style="background-color: lightgray; padding: 0">
<img alt="Bouton Modifier" src="edit.png" width="30" height="30"/> <img alt="Bouton Modifier" src="edit.png" width="30" height="30"/>
</button> </button> *@
@*<a href="Edit/@(context.Id)" class="btn btn-primary"><i class="fa fa-edit"></i> Editer</a>*@ <a href="Edit/@(context.Id)" class="btn btn-primary"><i class="fa fa-edit"></i> Editer</a>
</DisplayTemplate> </DisplayTemplate>
</DataGridColumn> </DataGridColumn>

@ -17,11 +17,11 @@ namespace WF_WebAdmin.Pages
public NavigationManager NavigationManager { get; set; } public NavigationManager NavigationManager { get; set; }
[Inject] [Inject]
public IQuizServiceJson QuizService { get; set; } public IQuizService QuizService { get; set; }
protected override async Task OnInitializedAsync() protected override async Task OnInitializedAsync()
{ {
quizzes = await QuizService.getQuizzesToValidateJson(); quizzes = await QuizService.getQuizzesToValidate();
} }
private void OnValidButton(Quiz quiz) private void OnValidButton(Quiz quiz)
@ -37,7 +37,7 @@ namespace WF_WebAdmin.Pages
newQuiz.IsValid = true; newQuiz.IsValid = true;
// Mis à jour de l'état du quiz // Mis à jour de l'état du quiz
QuizService.updateQuizJson(quiz); QuizService.updateQuiz(quiz);
} }
private void OnRejectButton(Quiz quiz) private void OnRejectButton(Quiz quiz)
@ -49,7 +49,7 @@ namespace WF_WebAdmin.Pages
{ {
Console.WriteLine($"Quiz {quiz.Id} rejected!"); Console.WriteLine($"Quiz {quiz.Id} rejected!");
QuizService.removeQuizJson(quiz.Id); QuizService.removeQuiz(quiz.Id);
} }
} }
} }

@ -14,7 +14,8 @@ builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor(); builder.Services.AddServerSideBlazor();
builder.Services.AddSingleton<WeatherForecastService>(); builder.Services.AddSingleton<WeatherForecastService>();
builder.Services.AddScoped<IQuoteService,QuoteServiceStub>(); builder.Services.AddScoped<IQuoteService,QuoteServiceStub>();
builder.Services.AddScoped<IQuizServiceJson,QuizServiceStub>(); builder.Services.AddScoped<IQuizService,QuizServiceStub>();
builder.Services.AddScoped<IUserService, UserServiceStub>();
builder.Services.AddHttpClient(); builder.Services.AddHttpClient();
builder.Services.AddScoped<UserLogin>(); builder.Services.AddScoped<UserLogin>();

@ -18,6 +18,8 @@ namespace WF_WebAdmin.Service
public Task<Quiz> getQuiz(int id); public Task<Quiz> getQuiz(int id);
public Task<List<Quiz>> getSommeQuiz(int nb, int page);
public Task<int> getNbQuiz(); public Task<int> getNbQuiz();
} }
} }

@ -1,17 +0,0 @@
using WF_WebAdmin.Model;
namespace WF_WebAdmin.Service
{
public interface IQuizServiceJson
{
public Task<List<Quiz>> getQuizzesJson();
public Task<List<Quiz>> getQuizzesToValidateJson();
public Task removeQuizJson(int id);
public Task updateQuizJson(Quiz quiz);
public Task saveQuizJson(List<Quiz> quiz);
}
}

@ -1,17 +0,0 @@
using WF_WebAdmin.Model;
namespace WF_WebAdmin.Service
{
public interface IQuoteServiceJson
{
public Task<List<User>> GetQuoteJson();
public Task SaveQuoteJson(List<User> users);
public Task AddQuoteJson(User user);
public Task DeleteQuoteJson(int id);
public Task UpdateQuoteJson(User user);
}
}

@ -1,17 +0,0 @@
using WF_WebAdmin.Model;
namespace WF_WebAdmin.Service
{
public interface IUserServiceJson
{
public Task<List<User>> GetUsersJson();
public Task SaveUsersJson(List<User> users);
public Task AddUserJson(User user);
public Task DeleteUserJson(int id);
public Task UpdateUserJson(User user);
}
}

@ -3,43 +3,24 @@ using WF_WebAdmin.Model;
namespace WF_WebAdmin.Service; namespace WF_WebAdmin.Service;
public class QuizServiceStub: IQuizServiceJson public class QuizServiceStub: IQuizService
{ {
private readonly string _jsonFilePath = private readonly string _jsonFilePath = Path.Combine(Environment.CurrentDirectory, "wwwroot", "fake_data_quiz.json");
Path.Combine(Environment.CurrentDirectory, "wwwroot", "fake_data_quiz.json");
public async Task<List<Quiz>> getQuizzesJson() public async Task saveQuizJson(List<Quiz> quizzes)
{
if (!File.Exists(_jsonFilePath))
{
Console.Out.WriteLine($"{_jsonFilePath} not found");
return new List<Quiz>();
}
var json = await File.ReadAllTextAsync(_jsonFilePath);
return JsonSerializer.Deserialize<List<Quiz>>(json) ?? new List<Quiz>();
}
public async Task<List<Quiz>> getQuizzesToValidateJson()
{
var quizzes = await getQuizzesJson();
return quizzes.Where(quiz => quiz.IsValid == false).ToList();;
}
public async Task removeQuizJson(int id)
{
var data = await getQuizzesJson();
var quiz = data.FirstOrDefault(q => q.Id == id);
if (quiz != null)
{
data.Remove(quiz);
await saveQuizJson(data);
}
}
public async Task updateQuizJson(Quiz quiz)
{ {
var data = await getQuizzesJson(); var json = JsonSerializer.Serialize(quizzes, new JsonSerializerOptions { WriteIndented = true });
await File.WriteAllTextAsync(_jsonFilePath, json);
}
public Task addQuiz(Quiz quiz)
{
throw new NotImplementedException();
}
public async Task updateQuiz(Quiz quiz)
{
var data = await getQuizzes();
var existingQuiz = data.FirstOrDefault(q => q.Id == quiz.Id); var existingQuiz = data.FirstOrDefault(q => q.Id == quiz.Id);
if (existingQuiz != null) if (existingQuiz != null)
{ {
@ -52,12 +33,67 @@ public class QuizServiceStub: IQuizServiceJson
existingQuiz.IsValid = quiz.IsValid; existingQuiz.IsValid = quiz.IsValid;
existingQuiz.UserProposition = quiz.UserProposition; existingQuiz.UserProposition = quiz.UserProposition;
await saveQuizJson(data); await saveQuizJson(data);
}
}
public async Task removeQuiz(int id)
{
var data = await getQuizzes();
var quiz = data.FirstOrDefault(q => q.Id == id);
if (quiz != null)
{
data.Remove(quiz);
await saveQuizJson(data);
}
}
public Task validateQuiz(int id)
{
throw new NotImplementedException();
}
public async Task<List<Quiz>> getQuizzes()
{
if (!File.Exists(_jsonFilePath))
{
Console.Out.WriteLine($"{_jsonFilePath} not found");
return new List<Quiz>();
} }
}
var json = await File.ReadAllTextAsync(_jsonFilePath);
public async Task saveQuizJson(List<Quiz> quizzes) return JsonSerializer.Deserialize<List<Quiz>>(json) ?? new List<Quiz>();
{ }
var json = JsonSerializer.Serialize(quizzes, new JsonSerializerOptions { WriteIndented = true });
await File.WriteAllTextAsync(_jsonFilePath, json); public async Task<List<Quiz>> getQuizzesToValidate()
} {
var quizzes = await getQuizzes();
return quizzes.Where(quiz => quiz.IsValid == false).ToList();
}
public async Task<Quiz> getQuiz(int id)
{
var data = await getQuizzes();
var q = data.FirstOrDefault(p => p.Id == id);
if (q != null)
{
return q;
}
return null;
}
public async Task<List<Quiz>> getSommeQuiz(int nb, int page)
{
var data = await getQuizzes();
if ((page - 1) * nb + nb > data.Count())
{
return data.GetRange(data.Count() - nb, nb);
}
return data.GetRange((page - 1) * nb, nb);
}
public async Task<int> getNbQuiz()
{
var data = await getQuizzes();
return data.Count;
}
} }

@ -1,68 +1,46 @@
[ [
{ {
"Id": 7, "Id": 9,
"Question": "Lorem proident exercitation elit fugiat do amet aute labore consectetur pariatur consequat.", "Question": "Qui labore fugiat sint Lorem ut minim in ex dolor.",
"AnswerA": "eiusmod nulla", "AnswerA": "et deserunt",
"AnswerB": "eu Id", "AnswerB": "labore sit",
"AnswerC": "proident tempor", "AnswerC": "in eiusmod",
"AnswerD": "amet proident", "AnswerD": "amet incididunt",
"CAnswer": "A", "CAnswer": "C",
"IsValid": false, "IsValid": false,
"UserProposition": "Mia Peterson" "UserProposition": "Earnestine Poole"
}, },
{ {
"Id": 8, "Id": 10,
"Question": "Incididunt magna commodo laborum do incididunt commodo proident non cillum magna elit irure voluptate.", "Question": "Voluptate pariatur ipsum magna sint Lorem adipisicing.",
"AnswerA": "laborum fugiat", "AnswerA": "sint velit",
"AnswerB": "laboris est", "AnswerB": "non culpa",
"AnswerC": "in ea", "AnswerC": "nisi ut",
"AnswerD": "duis ullamco", "AnswerD": "excepteur labore",
"CAnswer": "A", "CAnswer": "B",
"IsValid": false, "IsValid": false,
"UserProposition": "Juliet Fox" "UserProposition": "Alexis Cross"
}, },
{ {
"Id": 9, "Id": 11,
"Question": "Qui labore fugiat sint Lorem ut minim in ex dolor.", "Question": "In labore sunt est cupidatat cillum.",
"AnswerA": "et deserunt", "AnswerA": "ut ad",
"AnswerB": "labore sit", "AnswerB": "non deserunt",
"AnswerC": "in eiusmod", "AnswerC": "do officia",
"AnswerD": "amet incididunt", "AnswerD": "ut nostrud",
"CAnswer": "C", "CAnswer": "C",
"IsValid": false, "IsValid": false,
"UserProposition": "Earnestine Poole" "UserProposition": "Brooks Martinez"
}, },
{ {
"Id": 10, "Id": 12,
"Question": "Voluptate pariatur ipsum magna sint Lorem adipisicing.", "Question": "Irure occaecat sit laborum nulla ea dolore et aliqua sunt Lorem enim esse.",
"AnswerA": "sint velit", "AnswerA": "excepteur occaecat",
"AnswerB": "non culpa", "AnswerB": "pariatur in",
"AnswerC": "nisi ut", "AnswerC": "reprehenderit excepteur",
"AnswerD": "excepteur labore", "AnswerD": "laborum adipisicing",
"CAnswer": "B", "CAnswer": "D",
"IsValid": false, "IsValid": false,
"UserProposition": "Alexis Cross" "UserProposition": "Shields Roth"
}, }
{
"Id": 11,
"Question": "In labore sunt est cupidatat cillum.",
"AnswerA": "ut ad",
"AnswerB": "non deserunt",
"AnswerC": "do officia",
"AnswerD": "ut nostrud",
"CAnswer": "C",
"IsValid": false,
"UserProposition": "Brooks Martinez"
},
{
"Id": 12,
"Question": "Irure occaecat sit laborum nulla ea dolore et aliqua sunt Lorem enim esse.",
"AnswerA": "excepteur occaecat",
"AnswerB": "pariatur in",
"AnswerC": "reprehenderit excepteur",
"AnswerD": "laborum adipisicing",
"CAnswer": "D",
"IsValid": false,
"UserProposition": "Shields Roth"
}
] ]

@ -1,166 +1,148 @@
[ [
{ {
"Id": 1, "Id": 1,
"Image": "https://assets.audiomack.com/merlijnmuziek/80c977f3a319cf2826af53c9faa7a46f787ba806ca3f783d23bbb7123942b697.jpeg?width=1000\u0026height=1000\u0026max=true", "Image": "https://assets.audiomack.com/merlijnmuziek/80c977f3a319cf2826af53c9faa7a46f787ba806ca3f783d23bbb7123942b697.jpeg?width=1000\u0026height=1000\u0026max=true",
"Name": "admin", "Name": "admin",
"Email": "adminop@gmail.com", "Email": "adminop@gmail.com",
"DateCreation": "2024-12-12T00:00:00", "DateCreation": "2024-12-12T00:00:00",
"IsAdmin": true, "IsAdmin": true,
"Comments": [ "Comments": [
{ {
"Text": "Commentaire 1", "Text": "Commentaire 1",
"DateCreation": "2024-12-12T00:00:00" "DateCreation": "2024-12-12T00:00:00"
}, },
{ {
"Text": "Commentaire 2", "Text": "Commentaire 2",
"DateCreation": "2024-11-12T00:00:00" "DateCreation": "2024-11-12T00:00:00"
} }
] ]
}, },
{ {
"Id": 3, "Id": 3,
"Image": "https://tse4.mm.bing.net/th/id/OIP.XNQPKwc1OUfvnSO9MsxDYgHaE7?w=202\u0026h=180\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7", "Image": "https://tse4.mm.bing.net/th/id/OIP.XNQPKwc1OUfvnSO9MsxDYgHaE7?w=202\u0026h=180\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7",
"Name": "testeur", "Name": "testeur",
"Email": "testeur@gmail.com", "Email": "testeur@gmail.com",
"DateCreation": "2024-08-02T00:00:00", "DateCreation": "2024-08-02T00:00:00",
"IsAdmin": false, "IsAdmin": false,
"Comments": [ "Comments": [
{ {
"Text": "Premier test effectu\u00E9, tout semble OK.", "Text": "Premier test effectu\u00E9, tout semble OK.",
"DateCreation": "2024-08-02T00:00:00" "DateCreation": "2024-08-02T00:00:00"
} }
] ]
}, },
{ {
"Id": 4, "Id": 4,
"Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7", "Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7",
"Name": "dev", "Name": "dev",
"Email": "dev@gmail.com", "Email": "dev@gmail.com",
"DateCreation": "2024-10-10T00:00:00", "DateCreation": "2024-10-10T00:00:00",
"IsAdmin": false, "IsAdmin": false,
"Comments": null "Comments": null
}, },
{ {
"Id": 5, "Id": 5,
"Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7", "Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7",
"Name": "jean_doe", "Name": "jean_doe",
"Email": "jean.doe@gmail.com", "Email": "jean.doe@gmail.com",
"DateCreation": "2024-06-25T00:00:00", "DateCreation": "2024-06-25T00:00:00",
"IsAdmin": false, "IsAdmin": false,
"Comments": [ "Comments": [
{ {
"Text": "Utilisateur tr\u00E8s actif, peut \u00EAtre un peu trop intrusif.", "Text": "Utilisateur tr\u00E8s actif, peut \u00EAtre un peu trop intrusif.",
"DateCreation": "2024-06-25T00:00:00" "DateCreation": "2024-06-25T00:00:00"
} }
] ]
}, },
{ {
"Id": 6, "Id": 6,
"Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7", "Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7",
"Name": "jane_smith", "Name": "jane_smith",
"Email": "jane.smith@gmail.com", "Email": "jane.smith@gmail.com",
"DateCreation": "2024-07-15T00:00:00", "DateCreation": "2024-07-15T00:00:00",
"IsAdmin": false, "IsAdmin": false,
"Comments": null "Comments": null
}, },
{ {
"Id": 7, "Id": 7,
"Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7", "Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7",
"Name": "admin_joe", "Name": "test_n1",
"Email": "admin.joe@gmail.com", "Email": "admin.joe@gmail.com",
"DateCreation": "2024-05-30T00:00:00", "DateCreation": "2024-05-30T00:00:00",
"IsAdmin": true, "IsAdmin": false,
"Comments": null "Comments": null
}, },
{ {
"Id": 8, "Id": 8,
"Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7", "Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7",
"Name": "dev_anna", "Name": "dev_anna",
"Email": "dev.anna@gmail.com", "Email": "dev.anna@gmail.com",
"DateCreation": "2024-09-05T00:00:00", "DateCreation": "2024-09-05T00:00:00",
"IsAdmin": false, "IsAdmin": false,
"Comments": null "Comments": null
}, },
{ {
"Id": 9, "Id": 9,
"Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7", "Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7",
"Name": "support_mark", "Name": "support_mark",
"Email": "support.mark@gmail.com", "Email": "support.mark@gmail.com",
"DateCreation": "2024-11-20T00:00:00", "DateCreation": "2024-11-20T00:00:00",
"IsAdmin": false, "IsAdmin": false,
"Comments": [ "Comments": [
{ {
"Text": "Support rapide et efficace, mais manquant un peu de d\u00E9tails.", "Text": "Support rapide et efficace, mais manquant un peu de d\u00E9tails.",
"DateCreation": "2024-11-20T00:00:00" "DateCreation": "2024-11-20T00:00:00"
} }
] ]
}, },
{ {
"Id": 10, "Id": 10,
"Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7", "Image": "https://th.bing.com/th/id/OIP.24T00MDK-RUhFnm1Do5PFwHaFj?w=229\u0026h=180\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7",
"Name": "dev_susan", "Name": "dev_susan",
"Email": "dev.susan@gmail.com", "Email": "dev.susan@gmail.com",
"DateCreation": "2024-08-12T00:00:00", "DateCreation": "2024-08-12T00:00:00",
"IsAdmin": false, "IsAdmin": false,
"Comments": null "Comments": null
}, },
{ {
"Id": 11, "Id": 11,
"Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7", "Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7",
"Name": "designer_steve", "Name": "designer_steve",
"Email": "designer.steve@gmail.com", "Email": "designer.steve@gmail.com",
"DateCreation": "2024-07-01T00:00:00", "DateCreation": "2024-07-01T00:00:00",
"IsAdmin": false, "IsAdmin": false,
"Comments": [ "Comments": [
{ {
"Text": "Le design doit \u00EAtre retravaill\u00E9 pour plus de clart\u00E9.", "Text": "Le design doit \u00EAtre retravaill\u00E9 pour plus de clart\u00E9.",
"DateCreation": "2024-07-01T00:00:00" "DateCreation": "2024-07-01T00:00:00"
} }
] ]
}, },
{ {
"Id": 12, "Id": 12,
"Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7", "Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7",
"Name": "admin_lucas", "Name": "admin_lucas",
"Email": "admin.lucas@gmail.com", "Email": "admin.lucas@gmail.com",
"DateCreation": "2024-09-22T00:00:00", "DateCreation": "2024-09-22T00:00:00",
"IsAdmin": true, "IsAdmin": false,
"Comments": null "Comments": null
}, },
{ {
"Id": 13, "Id": 13,
"Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7", "Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7",
"Name": "manager_anna", "Name": "manager_anna",
"Email": "manager.anna@gmail.com", "Email": "manager.anna@gmail.com",
"DateCreation": "2024-05-01T00:00:00", "DateCreation": "2024-05-01T00:00:00",
"IsAdmin": false, "IsAdmin": false,
"Comments": null "Comments": null
}, },
{ {
"Id": 14, "Id": 14,
"Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7", "Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7",
"Name": "developer_mike", "Name": "developer_mike",
"Email": "developer.mike@gmail.com", "Email": "developer.mike@gmail.com",
"DateCreation": "2024-11-02T00:00:00", "DateCreation": "2024-11-02T00:00:00",
"IsAdmin": false, "IsAdmin": false,
"Comments": null "Comments": null
}, }
{
"Id": 15,
"Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7",
"Name": "test_user_01",
"Email": "test.user01@gmail.com",
"DateCreation": "2024-06-10T00:00:00",
"IsAdmin": false,
"Comments": null
},
{
"Id": 16,
"Image": "https://tse2.mm.bing.net/th/id/OIP.MMpXBB5RDRYQm05FJmevGAHaKl?w=137\u0026h=195\u0026c=7\u0026r=0\u0026o=5\u0026pid=1.7",
"Name": "admin_kate",
"Email": "admin.kate@gmail.com",
"DateCreation": "2024-04-16T00:00:00",
"IsAdmin": true,
"Comments": null
}
] ]
Loading…
Cancel
Save