Compare commits

...

3 Commits

@ -48,11 +48,6 @@ namespace DataManagers
return await Task.FromResult<(int nbPages, IEnumerable<Answer>? answers)>((res.nbPages, tmp));
}
public async Task<IEnumerable<Answer>?> getAnswers(string content)
{
return (await manager.getAnswers(content))?.Select(a => a.ToModel());
}
public async Task<IEnumerable<Answer>?> getAnswersByIdQuestion(int id)
{
var tmp = await manager.getAnswersByIdQuestion(id);

@ -42,7 +42,7 @@ namespace EntityManagers
public async Task<(int nbPages, IEnumerable<AdministratorEntity>? administrators)> getAdministrators(int nb, int count, AdministratorOrderCriteria orderCriteria = AdministratorOrderCriteria.ById)
{
int nbEl = getNbAdmins();
if(nb < 0 || count < 0 || nb > nbEl/count) return await Task.FromResult<(int nbPages, IEnumerable<AdministratorEntity>? administrators)>((nbEl/count, null));
if(nb <= 0 || count < 0 || nb > nbEl/count) return await Task.FromResult<(int nbPages, IEnumerable<AdministratorEntity>? administrators)>((nbEl/count, null));
var tmp = dbContext.Administrators;
switch (orderCriteria)
{

@ -30,7 +30,7 @@ namespace EntityManagers
}
await dbContext.Answers.AddAsync(new AnswerEntity { Content = answer.Content.ToLower(), IdQuestion = answer.IdQuestion });
await dbContext.SaveChangesAsync();
return await dbContext.Answers.Where(a => a.Content == answer.Content && a.IdQuestion == answer.IdQuestion).FirstAsync();
return await dbContext.Answers.Where(a => a.Content == answer.Content.ToLower() && a.IdQuestion == answer.IdQuestion).FirstAsync();
}
public async Task<AnswerEntity?> getAnswer(int id)
@ -38,15 +38,10 @@ namespace EntityManagers
return await dbContext.Answers.Where(a => a.Id == id).FirstOrDefaultAsync();
}
public async Task<IEnumerable<AnswerEntity>?> getAnswers(string content)
{
return await Task.FromResult<IEnumerable<AnswerEntity>?>(dbContext.Answers.Where(a => a.Content == content));
}
public async Task<(int nbPages, IEnumerable<AnswerEntity>? answers)> getAnswers(int page, int count, AnswerOrderCriteria orderCriteria = AnswerOrderCriteria.ById)
{
int nbEl = getNbAnswers();
if (page < 0 || count < 0 || page > nbEl / count)
if (page <= 0 || count <= 0 || page > nbEl / count)
{
return await Task.FromResult<(
int nbPages,
@ -112,7 +107,7 @@ namespace EntityManagers
public async Task<AnswerEntity?> updateAnswer(int id, AnswerEntity answer)
{
var tmp = await dbContext.Answers.Where(a => a.Id == id).FirstOrDefaultAsync();
var tmp = await getAnswer(id);
if(tmp == null)
{
return null;

@ -81,14 +81,5 @@ namespace ManagerInterfaces
/// to the id or null if there isn't any
/// </returns>
public Task<T?> getAnswer(int id);
/// <summary>
/// get answers
/// </summary>
/// <param name="content">the content of the answer</param>
/// <returns>
/// the answer that corresponde
/// to the content or null if there isn't any
/// </returns>
public Task<IEnumerable<T>?> getAnswers(string content);
}
}

@ -78,10 +78,5 @@ namespace ServiceManagers
{
return (await manager.updateAnswer(id, answerdto.ToModel()))?.ToDto();
}
public async Task<IEnumerable<AnswerDto>?> getAnswers(string content)
{
return (await manager.getAnswers(content))?.Select(a => a.ToDto());
}
}
}

@ -17,9 +17,9 @@ namespace StubbedDbContextLibrary
base.OnModelCreating(modelBuilder);
var fakeDatas = fakeAnswers.datas;
foreach (var datas in fakeDatas)
foreach (var data in fakeDatas)
{
modelBuilder.Entity<AnswerEntity>().HasData(datas);
modelBuilder.Entity<AnswerEntity>().HasData(data);
}
}

@ -7,15 +7,7 @@ using Model;
using OrderCriterias;
using StubbedDbContextLibrary;
var connection = new SqliteConnection("DataSource=:memory:");
connection.Open();
var opt = new DbContextOptionsBuilder<StubbedDbContext>()
.UseSqlite(connection)
.Options;
using var context = new StubbedDbContext();
context.Database.EnsureCreated();
// for each test, 'WF' mean 'waiting for'
/// <summary>
/// test of the 'addAnswer' method of an AnswerManager
@ -135,13 +127,13 @@ void TestRemoveAnswerById(MyDbContext context)
if(a == null)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("test 1 AnswerEntityManager.RemoveAnswer OK");
Console.WriteLine("test 1 AnswerEntityManager.removeAnswer OK");
Console.ResetColor();
}
else
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("test 1 AnswerEntityManager.RemoveAnswer KO");
Console.WriteLine("test 1 AnswerEntityManager.removeAnswer KO");
Console.ResetColor();
Console.WriteLine("what we have : " + a == null ? "null" : $"{a.Id} : {a.Content}");
Console.WriteLine("WF : null");
@ -157,15 +149,15 @@ void TestRemoveAnswerById(MyDbContext context)
&& a.Id == answer.Id && a.Id != context.Answers.Select(a => a.Id).Min() /* <=> he is removed */)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("test 2 AnswerEntityManager.RemoveAnswer OK");
Console.WriteLine("test 2 AnswerEntityManager.removeAnswer OK");
Console.ResetColor();
}
else
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("test 2 AnswerEntityManager.RemoveAnswer KO");
Console.WriteLine("test 2 AnswerEntityManager.removeAnswer KO");
Console.ResetColor();
Console.WriteLine("what we have : " + a == null ? "null" : $"{a.Id} : {a.Content}");
Console.WriteLine("what we have : " + a == null ? "null" : $"{a!.Id} : {a!.Content}");
Console.WriteLine("WF : " + answer == null ? "null" : $"{answer.Id} : {answer.Content}");
}
}
@ -173,8 +165,18 @@ void TestRemoveAnswerById(MyDbContext context)
/// <summary>
/// test of the 'getNbElement' method of an AnswerManager
/// </summary>
void TestGetNbAnswers(MyDbContext context)
void TestGetNbAnswers()
{
var connection = new SqliteConnection("DataSource=:memory:");
connection.Open();
var opt = new DbContextOptionsBuilder<MyDbContext>()
.UseSqlite(connection)
.Options;
using (var context = new MyDbContext(opt))
{
context.Database.EnsureCreated();
var mgr = new AnswerEntityManager(context);
int count = context.Answers.CountAsync().Result;
int nb = 0;
@ -212,22 +214,23 @@ void TestGetNbAnswers(MyDbContext context)
}
}
}
}
/// <summary>
/// member data for the 'TestGetAnswer' test method
/// </summary>
/// <returns>a set of all inline datas for the test method</returns>
IEnumerable<Object?[]> TestGetAnswer_Datas()
(int id, AnswerEntity? waiting)[] TestGetAnswer_Datas(MyDbContext context)
{
var datas = fakeAnswers.datas;
var datas = context.Answers;
int max = 0;
List<Object?[]> tmp = new List<Object?[]>();
(int id, AnswerEntity? waiting)[] tmp = new (int id, AnswerEntity? waiting)[] {};
foreach (var item in datas)
{
tmp.Add(new Object[] { item.Id, item });
tmp.Append((item.Id, item));
if (max < item.Id) max = item.Id;
}
tmp.Add(new Object[] { max + 1, null! });
tmp.Append((max + 1, null!));
return tmp;
}
@ -242,17 +245,17 @@ void TestGetAnswer(MyDbContext context, int numTest, int id, AnswerEntity? waiti
context.Database.EnsureCreated();
var mgr = new AnswerEntityManager(context);
var tmp = mgr.getAnswer(id + 2).Result;
var tmp = mgr.getAnswer(id).Result;
if (tmp?.Content == waiting?.Content)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine($"test {numTest} AnswerEntityManager.addAnswer OK");
Console.WriteLine($"test {numTest} AnswerEntityManager.getAnswer OK");
Console.ResetColor();
}
else
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine($"test {numTest} AnswerEntityManager.addAnswer KO");
Console.WriteLine($"test {numTest} AnswerEntityManager.getAnswer KO");
Console.ResetColor();
}
}
@ -261,48 +264,47 @@ void TestGetAnswer(MyDbContext context, int numTest, int id, AnswerEntity? waiti
/// member data for the 'TestGetAnswer' test method
/// </summary>
/// <returns>a set of all inline datas for the test method</returns>
static IEnumerable<Object?[]> TestGetSomeAnswers_Datas()
(int numPage, int count, IEnumerable<AnswerEntity>? waiting, AnswerOrderCriteria? orderCriteria)[] TestGetSomeAnswers_Datas()
{
var datas = fakeAnswers.datas;
var count = datas.Count();
// remind that to add answers, we haven't ordered this collection
// but we just have done a foreach
return new List<Object?[]>
{
return [
// 1 : 0 answer from the page 1 then, -1 answer from this page
// WF : count < 1 so we got null
new object?[] { 1, 0, null },
new object?[] { 1, -1, null },
(1, 0, null, null),
(1, -1, null, null),
// 2 : 1 answers from the page 0 then, 1 answers from the page -1
// WF : page < 1 so we got null
new object?[] { 0, 1, null },
new object?[] { -1, 1, null },
(0, 1, null, null),
(-1, 1, null, null),
// 3 : 10 answers from the page 1
// WF : the first 10 element of datas
new object?[] { 1, 10, datas.Take(10) },
(1, 10, datas.Take(10), null),
// 4 : 10 elements from the page 1 order by id
// WF : the first 10 element of datas order by id
new object?[] { 1, 10, datas.OrderBy(e => e.Id).Take(10), AnswerOrderCriteria.ById },
(1, 10, datas.OrderBy(e => e.Id).Take(10), AnswerOrderCriteria.ById),
// 5 : 10 elements from the page 1 order by content
// WF : the first 10 element of datas order by content
new object?[] { 1, 10, datas.OrderBy(e => e.Content).Take(10), AnswerOrderCriteria.ById },
(1, 10, datas.OrderBy(e => e.Content).Take(10), AnswerOrderCriteria.ById),
// 6 : repeat 3, 4 and 5 with the page 2
// WF : the 10 next answer from each case
new object?[] { 2, 10, datas.Skip(10).Take(10) },
new object?[] { 1, 10, datas.OrderBy(e => e.Id).Skip(10).Take(10), AnswerOrderCriteria.ById },
new object?[] { 1, 10, datas.OrderBy(e => e.Content).Skip(10).Take(10), AnswerOrderCriteria.ByContent },
(2, 10, datas.Skip(10).Take(10), null),
(1, 10, datas.OrderBy(e => e.Id).Skip(10).Take(10), AnswerOrderCriteria.ById),
(1, 10, datas.OrderBy(e => e.Content).Skip(10).Take(10), AnswerOrderCriteria.ByContent),
// 7 : count/4 elements from the page 4
// WF : the lasts count/4 elements of datas
new object?[] { 4, count / 4, datas.TakeLast(count / 4) },
(4, count / 4, datas.TakeLast(count / 4), null),
// 8 : count/4 elements from the page 5
// WF : null since num (4) >= count / (count/4)
new object?[] { 5, count / 4, null },
(5, count / 4, null, null),
// 9 : 10 elements from the page 4
// WF : since there's only 31 elements in fake datas,
// we got the last element
new object?[] { 4, 10, datas.TakeLast(1) }
};
(4, 10, datas.TakeLast(1), null)
];
}
/// <summary>
@ -313,101 +315,308 @@ static IEnumerable<Object?[]> TestGetSomeAnswers_Datas()
/// <param name="waiting">set of answers expected</param>
/// <param name="orderCriteria">the order criteria</param>
/// <returns>nothing but a Task</returns>
void TestGetSomeAnswers(MyDbContext context, int numTest, int num, int count, IEnumerable<AnswerEntity>? waiting, AnswerOrderCriteria orderCriteria = AnswerOrderCriteria.ById)
void TestGetSomeAnswers(MyDbContext context, int numTest, int num, int count, List<AnswerEntity>? waiting, AnswerOrderCriteria? orderCriteria)
{
context.Database.EnsureCreated();
var mgr = new AnswerEntityManager(context);
var nbPages = count == 0 ? -1 : mgr.getNbAnswers() / count;
var tmp = mgr.getAnswers(num, count, orderCriteria).Result;
(int nbPages, IEnumerable<AnswerEntity>? answers) tmp = orderCriteria == null ? mgr.getAnswers(num, count).Result : mgr.getAnswers(num, count, orderCriteria.Value).Result;
if(tmp.nbPages == nbPages){
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine($"test {numTest} AnswerEntityManager.getSomeAnswers OK");
Console.WriteLine($"test {2*numTest} AnswerEntityManager.getSomeAnswers OK");
Console.ResetColor();
}
else
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine($"test {numTest} AnswerEntityManager.getSomeAnswers KO");
Console.WriteLine($"test {2*numTest} AnswerEntityManager.getSomeAnswers KO");
Console.ResetColor();
}
if (waiting == null && tmp.answers == null)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine($"test {numTest + 1} AnswerEntityManager.getSomeAnswers OK");
Console.WriteLine($"test {2*numTest + 1} AnswerEntityManager.getSomeAnswers OK");
Console.ResetColor();
}
else if (waiting != null && tmp.answers != null)
{
if (waiting?.Count() == 0)
if (waiting.Count() == 0 && tmp.answers.Count() == 0)
{
if(tmp.answers == null)
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine($"test {2*numTest + 1} AnswerEntityManager.getSomeAnswers OK");
Console.ResetColor();
}
else if(waiting.Count() != 0 && tmp.answers.Count() == 0)
{
var nbFautes = 0;
for (var i = 0; i < count; i++)
{
var e1 = waiting!.ElementAt(i);
var e2 = tmp.answers!.ElementAt(i);
if (e2.Content != e1.Content || e2.IdQuestion != e1.IdQuestion) nbFautes++;
}
if (nbFautes == 0)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine($"test {numTest + 1} AnswerEntityManager.getSomeAnswers OK");
Console.WriteLine($"test {2*numTest + 1} AnswerEntityManager.getSomeAnswers OK");
Console.ResetColor();
}
else
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine($"test {numTest + 1} AnswerEntityManager.getSomeAnswers KO");
Console.WriteLine($"test {2*numTest + 1} AnswerEntityManager.getSomeAnswers KO");
Console.ResetColor();
Console.WriteLine($"numPage : {num}, count : {count}");
Console.Write("what we have : ");
if (tmp.answers == null) Console.WriteLine("null");
else
{
Console.Write("{ ");
tmp.answers.ToList().ForEach(a => Console.Write("{" + $"id : {a.Id}, content : {a.Content}" + "}, "));
Console.WriteLine("}");
}
Console.Write("WF : ");
if (waiting == null) Console.WriteLine("null");
else
{
Console.Write("{ ");
waiting.ForEach(a => Console.Write("{" + $"id : {a.Id}, content : {a.Content}" + "}, "));
Console.WriteLine("}");
}
}
}
else
{
var nbFautes = 0;
for (var i = 0; i < count; i++)
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine($"test {2*numTest + 1} AnswerEntityManager.getSomeAnswers KO");
Console.ResetColor();
Console.WriteLine($"numPage : {num}, count : {count}, nbEl : {mgr.getNbAnswers()}");
Console.Write("what we have : ");
if (tmp.answers == null) Console.WriteLine("null");
else
{
var e1 = waiting!.ElementAt(i);
var e2 = tmp.answers.ElementAt(i);
if(e2.Content != e1.Content || e2.IdQuestion != e1.IdQuestion) nbFautes++;
Console.Write("{ ");
tmp.answers.ToList().ForEach(a => Console.Write("{" + $"id : {a.Id}, content : {a.Content}" + "}, "));
Console.WriteLine("}");
}
if (nbFautes == 0)
Console.Write("WF : ");
if (waiting == null) Console.WriteLine("null");
else
{
Console.Write("{ ");
waiting.ForEach(a => Console.Write("{" + $"id : {a.Id}, content : {a.Content}" + "}, "));
Console.WriteLine("}");
}
}
}
else
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine($"test {2*numTest + 1} AnswerEntityManager.getSomeAnswers KO");
Console.ResetColor();
Console.WriteLine($"numPage : {num}, count : {count}");
Console.Write("what we have : ");
if (tmp.answers == null) Console.WriteLine("null");
else
{
Console.Write("{ ");
tmp.answers.ToList().ForEach(a => Console.Write("{" + $"id : {a.Id}, content : {a.Content}" + "}, "));
Console.WriteLine("}");
}
Console.Write("WF : ");
if (waiting == null) Console.WriteLine("null");
else
{
Console.Write("{ ");
waiting.ForEach(a => Console.Write("{" + $"id : {a.Id}, content : {a.Content}" + "}, "));
Console.WriteLine("}");
}
}
}
/// <summary>
/// test of the 'supprimerAnswer' method of an AnswerManager
/// </summary>
void TestRemoveAnswer(MyDbContext context)
{
var mgr = new AnswerEntityManager(context);
var a = mgr.removeAnswer(new AnswerEntity { Content = "test remove answer"}).Result;
// 1) with an id greater or equal
// to the number of element
// WF : it don't works so 'a' is null,
if (a == null)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("test 1 AnswerEntityManager.removeAnswer OK");
Console.ResetColor();
}
else
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("test 1 AnswerEntityManager.removeAnswer KO");
Console.ResetColor();
Console.WriteLine("what we have : " + a == null ? "null" : $"{a.Id} : {a.Content}");
Console.WriteLine("WF : null");
}
var answer = context.Answers.Single(a => a.Id == context.Answers.Select(a => a.Id).Min());
a = mgr.removeAnswer(answer).Result;
// 1) with a content that correspond to an answer
// WF : it works so 'a' is not null,
// and since we've delete the answer with
// the id 1, the content is "châteigne"
if (a != null && a.Content == answer.Content
&& a.Id == answer.Id && a.Id != context.Answers.Select(a => a.Id).Min() /* <=> he is removed */)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine($"test {numTest + 1} AnswerEntityManager.getSomeAnswers OK");
Console.WriteLine("test 2 AnswerEntityManager.removeAnswer OK");
Console.ResetColor();
}
else
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine($"test {numTest + 1} AnswerEntityManager.getSomeAnswers KO");
Console.WriteLine("test 2 AnswerEntityManager.removeAnswer KO");
Console.ResetColor();
Console.WriteLine("what we have : " + a == null ? "null" : $"{a!.Id} : {a!.Content}");
Console.WriteLine("WF : " + answer == null ? "null" : $"{answer.Id} : {answer.Content}");
}
}
(int id, AnswerEntity modified, AnswerEntity? waiting)[] TestUpdateAnswer_Datas(MyDbContext context)
{
return new (int, AnswerEntity, AnswerEntity?)[]
{
// 1) with an id that is not allowed
// WF : since no answer match with this id,
// the function return null
(
context.Answers.Select(a => a.Id).Max() + 1,
new AnswerEntity
{
Id = 3,
Content = "we don't care about"
},
null
),
// 2) with a content that correspond to the content of another answer
// WF : since some answers can each have same content, it work
// and the id of the answer we got is the one we give (content.Answers.Select.(a => a.id.Min())
// and his content is the one we want
(
context.Answers.Select(a => a.Id).Min(),
new AnswerEntity
{
Id = 5,
Content = context.Answers.Single(a => a.Id == context.Answers.Select(a => a.Id).Min()).Content,
},
new AnswerEntity
{
Id = context.Answers.Select(a => a.Id).Min(),
Content = context.Answers.Single(a => a.Id == context.Answers.Select(a => a.Id).Min()).Content,
}
),
// 3) normal insertion
// WF : the id of the answer we got is the one we
// give (content.Answers.Select.(a => a.id.Min())
// and his content is the one we want
(
context.Answers.Select(a => a.Id).Max(),
new AnswerEntity
{
Id = context.Answers.Select(a => a.Id).Min(),
Content = context.Answers.First().Content
},
new AnswerEntity
{
Id = context.Answers.Select(a => a.Id).Max(),
Content = context.Answers.First().Content
}
)
};
}
void TestUpdateAnswer(MyDbContext context, int numTest, int id, AnswerEntity modified, AnswerEntity? waiting)
{
var mgr = new AnswerEntityManager(context);
var response = mgr.updateAnswer(id, modified).Result;
if((waiting == null && response == null) || (waiting != null && response != null && response.Id == id && response.Content == waiting.Content))
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine($"test {numTest} AnswerEntityManager.updateAnswer OK");
Console.ResetColor();
}
else
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine($"test {numTest + 1} AnswerEntityManager.getSomeAnswers KO");
Console.WriteLine("test 2 AnswerEntityManager.removeAnswer KO");
Console.ResetColor();
Console.WriteLine("what we have : " + response == null ? "null" : $"{id} : {response!.Content}");
Console.WriteLine("WF : " + waiting == null ? "null" : $"{waiting!.Id} : {waiting.Content}");
}
}
// Tests of an answer
void TestAnswer(MyDbContext context)
{
TestAddAnswer();
TestRemoveAnswerById(context);
TestGetNbAnswers(context);
var tmp = TestGetAnswer_Datas();
TestGetNbAnswers();
{
var tmp = TestGetAnswer_Datas(context);
for (int i = 0; i < tmp.Count(); i++)
{
TestGetAnswer(
context,
i+1,
tmp.ElementAt(i).id,
tmp.ElementAt(i).waiting
);
}
}
{
var tmp = TestGetSomeAnswers_Datas();
for (int i = 0; i < tmp.Count(); i++)
{
TestGetAnswer(context, i, (int)tmp.ElementAt(i).ElementAt(0)!, (AnswerEntity)tmp.ElementAt(i).ElementAt(1)!);
TestGetSomeAnswers(
context,
i+1,
tmp.ElementAt(i).numPage,
tmp.ElementAt(i).count,
tmp.ElementAt(i).waiting?.ToList(),
tmp.ElementAt(i).orderCriteria
);
}
tmp = TestGetSomeAnswers_Datas();
}
TestRemoveAnswer(context);
{
var tmp = TestUpdateAnswer_Datas(context);
for (int i=0; i < tmp.Count(); i++)
{
TestGetSomeAnswers(context, i, (int)tmp.ElementAt(i).ElementAt(0)!, (int)tmp.ElementAt(i).ElementAt(1)!,
(IEnumerable<AnswerEntity>?)tmp.ElementAt(i).ElementAtOrDefault(2),
(AnswerOrderCriteria)(tmp.ElementAt(i).ElementAtOrDefault(i) ?? AnswerOrderCriteria.ById)
TestUpdateAnswer(
context,
i+1,
tmp.ElementAt(i).id,
tmp.ElementAt(i).modified,
tmp.ElementAt(i).waiting
);
}
}
}
void Test(MyDbContext context)
{
TestAnswer(context);
}
var connection = new SqliteConnection("DataSource=:memory:");
// removeAnswer by element
connection.Open();
// updateAnswer
var opt = new DbContextOptionsBuilder<MyDbContext>()
.UseSqlite(connection)
.Options;
using var context = new StubbedDbContext(opt);
context.Database.EnsureCreated();
Test(context);

@ -92,11 +92,6 @@ namespace WebApi
return AnswerManager.getAnswers(nb, count, orderCriteria);
}
public Task<IEnumerable<AnswerDto>?> getAnswers(string content)
{
return AnswerManager.getAnswers(content);
}
public Task<IEnumerable<AnswerDto>?> getAnswersByIdQuestion(int id)
{
return AnswerManager.getAnswersByIdQuestion(id);

Loading…
Cancel
Save