added logic to get active surveys from survey responses

This commit is contained in:
uppuv
2023-10-16 14:02:28 -04:00
parent c89c6f60c3
commit 8a803ad157
4 changed files with 36 additions and 23 deletions

View File

@ -112,24 +112,18 @@ namespace DamageAssesment.Api.Responses.Providers
}
}
public async Task<(bool IsSuccess, dynamic Surveys, string ErrorMessage)> GetActiveSurveysAsync(int employeeid, string language)
public async Task<(bool IsSuccess, dynamic Surveys, string ErrorMessage)> GetActiveSurveysAsync(int? employeeid, string language)
{
try
{
logger?.LogInformation("Querying to get SurveyResponse object from DB");
//get all the survey that already taken by the employee
var listOfsurveysId = await surveyResponseDbContext.SurveyResponses.Where(x => x.EmployeeId == employeeid).Select(y => y.SurveyId).ToListAsync();
var surveys = await surveyServiceProvider.getSurveysAsync(language);
if (surveys != null)
{
surveys = surveys.Where(s => s.IsEnabled == true && s.StartDate <= DateTime.Now && s.EndDate >= DateTime.Now).ToList();
}
if (listOfsurveysId==null || listOfsurveysId.Count == 0)
surveys = surveys.Where(s => s.IsEnabled == true && s.StartDate <= DateTime.Now && s.EndDate >= DateTime.Now).ToList();
if (employeeid==null || employeeid==0)
return (true, surveys, null);
var activeSurveys = surveys.Where(s => s.IsEnabled == true && s.StartDate <= DateTime.Now && s.EndDate >= DateTime.Now && !listOfsurveysId.Contains(s.Id));
List<int> listOfsurveysId = await surveyResponseDbContext.SurveyResponses.Where(x => x.EmployeeId == employeeid.Value).Select(y => y.SurveyId).ToListAsync();
var activeSurveys = surveys.Where(s => !listOfsurveysId.Contains(s.Id));
return (true, activeSurveys, null);
}
catch (Exception ex)
@ -139,21 +133,25 @@ namespace DamageAssesment.Api.Responses.Providers
}
}
public async Task<(bool IsSuccess, dynamic Surveys, string ErrorMessage)> GetHistoricSurveysAsync(int employeeid, string language)
public async Task<(bool IsSuccess, dynamic Surveys, string ErrorMessage)> GetHistoricSurveysAsync(int? employeeid, string language)
{
try
{
logger?.LogInformation("Querying to get SurveyResponse object from DB");
//get all the survey that already taken by the employee
var surveyResponses = await surveyResponseDbContext.SurveyResponses.Where(x => x.EmployeeId == employeeid).ToListAsync();
var surveys = await surveyServiceProvider.getSurveysAsync(language);
// returning only historic data: end date is less than current date.
surveys = surveys.Where(s => s.EndDate < DateTime.Now).ToList();
if(employeeid==null|| employeeid==0)
return (true, surveys, null);
var surveyResponses = await surveyResponseDbContext.SurveyResponses.Where(x => x.EmployeeId == employeeid).ToListAsync();
var historicSurveys = from s in surveys
from r in surveyResponses
where s.Id == r.SurveyId
select s;
return (true, historicSurveys, null);
}
catch (Exception ex)
{