forked from MDCPS/DamageAssessment_Backend
bug fix with seed data changes
This commit is contained in:
@ -8,19 +8,20 @@ namespace DamageAssesment.Api.Answers.Providers
|
||||
{
|
||||
public class AnswersProvider : IAnswersProvider
|
||||
{
|
||||
|
||||
private AnswerDbContext answerDbContext;
|
||||
private ILogger<AnswersProvider> logger;
|
||||
private IMapper mapper;
|
||||
|
||||
// Constructor with dependency injection and data seeding
|
||||
public AnswersProvider(AnswerDbContext answerDbContext, ILogger<AnswersProvider> logger, IMapper mapper)
|
||||
{
|
||||
this.answerDbContext = answerDbContext;
|
||||
this.logger = logger;
|
||||
this.mapper = mapper;
|
||||
SeedData();
|
||||
SeedData(); // Seed initial data if the table is empty
|
||||
}
|
||||
|
||||
// Get all answers
|
||||
public async Task<(bool IsSuccess, IEnumerable<Models.Answer> Answers, string ErrorMessage)> GetAnswersAsync()
|
||||
{
|
||||
try
|
||||
@ -40,9 +41,9 @@ namespace DamageAssesment.Api.Answers.Providers
|
||||
logger?.LogError(ex.ToString());
|
||||
return (false, null, ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Get an answer by its ID
|
||||
public async Task<(bool IsSuccess, Models.Answer Answer, string ErrorMessage)> GetAnswerByIdAsync(int Id)
|
||||
{
|
||||
try
|
||||
@ -63,6 +64,8 @@ namespace DamageAssesment.Api.Answers.Providers
|
||||
return (false, null, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
// Get answers by survey response ID
|
||||
public async Task<(bool IsSuccess, IEnumerable<Models.Answer> Answers, string ErrorMessage)> GetAnswersAsync(int surveyResponseId)
|
||||
{
|
||||
try
|
||||
@ -74,17 +77,17 @@ namespace DamageAssesment.Api.Answers.Providers
|
||||
{
|
||||
var result = mapper.Map<IEnumerable<Db.Answer>, IEnumerable<Models.Answer>>(respAnswers);
|
||||
return (true, result, null);
|
||||
|
||||
}
|
||||
return (false, null, "Not Found");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
logger?.LogError(ex.ToString());
|
||||
return (false, null, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
// Get answers by question ID
|
||||
public async Task<(bool IsSuccess, IEnumerable<Models.Answer> Answers, string ErrorMessage)> GetAnswersByQuestionAsync(int questionId)
|
||||
{
|
||||
try
|
||||
@ -96,17 +99,17 @@ namespace DamageAssesment.Api.Answers.Providers
|
||||
{
|
||||
var result = mapper.Map<IEnumerable<Db.Answer>, IEnumerable<Models.Answer>>(respAnswers);
|
||||
return (true, result, null);
|
||||
|
||||
}
|
||||
return (false, null, "Not Found");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
logger?.LogError(ex.ToString());
|
||||
return (false, null, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
// Create a new answer
|
||||
public async Task<(bool IsSuccess, Models.Answer Answer, string ErrorMessage)> PostAnswerAsync(Models.Answer Answer)
|
||||
{
|
||||
try
|
||||
@ -120,7 +123,7 @@ namespace DamageAssesment.Api.Answers.Providers
|
||||
var result = mapper.Map<Db.Answer, Models.Answer>(answer);
|
||||
return (true, result, null);
|
||||
}
|
||||
return (false, null, "Answer is already exits");
|
||||
return (false, null, "Answer is already exists");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@ -128,6 +131,8 @@ namespace DamageAssesment.Api.Answers.Providers
|
||||
return (false, null, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
// Update an existing answer
|
||||
public async Task<(bool IsSuccess, Models.Answer Answer, string ErrorMessage)> UpdateAnswerAsync(Models.Answer Answer)
|
||||
{
|
||||
try
|
||||
@ -156,14 +161,14 @@ namespace DamageAssesment.Api.Answers.Providers
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
logger?.LogError(ex.ToString());
|
||||
return (false,null, ex.Message);
|
||||
return (false, null, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
// Delete an answer by its ID
|
||||
public async Task<(bool IsSuccess, Models.Answer Answer, string ErrorMessage)> DeleteAnswerAsync(int Id)
|
||||
{
|
||||
|
||||
try
|
||||
{
|
||||
Db.Answer answer = answerDbContext.Answers.AsNoTracking().Where(a => a.Id == Id).FirstOrDefault();
|
||||
@ -173,26 +178,29 @@ namespace DamageAssesment.Api.Answers.Providers
|
||||
}
|
||||
answerDbContext.Answers.Remove(answer);
|
||||
answerDbContext.SaveChanges();
|
||||
return (true, mapper.Map<Db.Answer, Models.Answer>(answer), $"AnswerId {Id} deleted Successfuly");
|
||||
return (true, mapper.Map<Db.Answer, Models.Answer>(answer), $"AnswerId {Id} deleted successfully");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
logger?.LogError(ex.ToString());
|
||||
return (false,null, ex.Message);
|
||||
return (false, null, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
// Check if an answer with a specific ID exists
|
||||
private bool AnswerExists(int id)
|
||||
{
|
||||
return answerDbContext.Answers.AsNoTracking().Count(e => e.Id == id) > 0;
|
||||
}
|
||||
|
||||
// Seed initial data if the table is empty
|
||||
public void SeedData()
|
||||
{
|
||||
if (!answerDbContext.Answers.Any())
|
||||
{
|
||||
answerDbContext.Answers.Add(new Db.Answer() { Id = 1, AnswerText = "Yes", Comment = "Comment test 4", QuestionId = 1, SurveyResponseId = 1 });
|
||||
answerDbContext.Answers.Add(new Db.Answer() { Id = 2, AnswerText = "No", Comment = "Comment test 5", QuestionId = 2, SurveyResponseId = 1 });
|
||||
// Uncomment the lines below to add more initial data if needed
|
||||
//answerDbContext.Answers.Add(new Db.Answer() { Id = 3, AnswerText = "No", Comment = "No Comment", QuestionId = 3, SurveyResponseId = 1 });
|
||||
//answerDbContext.Answers.Add(new Db.Answer() { Id = 4, AnswerText = "Yes", Comment = "No Comment", QuestionId = 1, SurveyResponseId = 2 });
|
||||
//answerDbContext.Answers.Add(new Db.Answer() { Id = 5, AnswerText = "No", Comment = "No Comment", QuestionId = 2, SurveyResponseId = 2 });
|
||||
|
Reference in New Issue
Block a user