added logic to get active surveys from survey responses

This commit is contained in:
uppuv 2023-10-16 14:13:20 -04:00
parent 8e0a7df68b
commit c77e0452c4
4 changed files with 24 additions and 22 deletions

View File

@ -199,10 +199,12 @@ namespace DamageAssesment.Api.Responses.Controllers
return BadRequest(result.ErrorMessage); return BadRequest(result.ErrorMessage);
} }
[Route("responses/surveys/active")]
[Route("responses/surveys/active/{language:alpha}")]
[Route("responses/surveys/active/{employeeid:int}")] [Route("responses/surveys/active/{employeeid:int}")]
[Route("responses/surveys/active/{employeeid:int}/{language:alpha}")] [Route("responses/surveys/active/{employeeid:int}/{language:alpha}")]
[HttpGet] [HttpGet]
public async Task<ActionResult> GetActiveSurveysAsync(int employeeid, string? language) public async Task<ActionResult> GetActiveSurveysAsync(int? employeeid, string? language)
{ {
var result = await this.surveyResponseProvider.GetActiveSurveysAsync(employeeid, language); var result = await this.surveyResponseProvider.GetActiveSurveysAsync(employeeid, language);
if (result.IsSuccess) if (result.IsSuccess)
@ -212,10 +214,12 @@ namespace DamageAssesment.Api.Responses.Controllers
return NoContent(); return NoContent();
} }
[Route("responses/surveys/historic")]
[Route("responses/surveys/historic/{language:alpha}")]
[Route("responses/surveys/historic/{employeeid:int}")] [Route("responses/surveys/historic/{employeeid:int}")]
[Route("responses/surveys/historic/{employeeid:int}/{language:alpha}")] [Route("responses/surveys/historic/{employeeid:int}/{language:alpha}")]
[HttpGet] [HttpGet]
public async Task<ActionResult> GetHistoricSurveysAsync(int employeeid, string? language) public async Task<ActionResult> GetHistoricSurveysAsync(int? employeeid, string? language)
{ {
var result = await this.surveyResponseProvider.GetHistoricSurveysAsync(employeeid, language); var result = await this.surveyResponseProvider.GetHistoricSurveysAsync(employeeid, language);
if (result.IsSuccess) if (result.IsSuccess)

View File

@ -9,8 +9,8 @@ namespace DamageAssesment.Api.Responses.Interfaces
Task<(bool IsSuccess, Models.SurveyResponse SurveyResponse, string ErrorMessage)> PostSurveyResponseAsync(Models.SurveyResponse surveyResponse); Task<(bool IsSuccess, Models.SurveyResponse SurveyResponse, string ErrorMessage)> PostSurveyResponseAsync(Models.SurveyResponse surveyResponse);
// Task<(bool IsSuccess,dynamic surveyResponses, string ErrorMessage)> GetSurveyResponseAsync(int responseId); // Task<(bool IsSuccess,dynamic surveyResponses, string ErrorMessage)> GetSurveyResponseAsync(int responseId);
Task<(bool IsSuccess, dynamic surveyResponses, string ErrorMessage)> GetSurveyResponsesAsync(int employeeid); Task<(bool IsSuccess, dynamic surveyResponses, string ErrorMessage)> GetSurveyResponsesAsync(int employeeid);
Task<(bool IsSuccess, dynamic Surveys, string ErrorMessage)> GetActiveSurveysAsync(int employeeid, string language); Task<(bool IsSuccess, dynamic Surveys, string ErrorMessage)> GetActiveSurveysAsync(int? employeeid, string language);
Task<(bool IsSuccess, dynamic Surveys, string ErrorMessage)> GetHistoricSurveysAsync(int employeeid, string language); Task<(bool IsSuccess, dynamic Surveys, string ErrorMessage)> GetHistoricSurveysAsync(int? employeeid, string language);
Task<(bool IsSuccess, Models.SurveyResponse SurveyResponse, string ErrorMessage)> PutSurveyResponseAsync(int Id, Models.SurveyResponse surveyResponse); Task<(bool IsSuccess, Models.SurveyResponse SurveyResponse, string ErrorMessage)> PutSurveyResponseAsync(int Id, Models.SurveyResponse surveyResponse);
Task<(bool IsSuccess, Models.SurveyResponse SurveyResponse, string ErrorMessage)> DeleteSurveyResponseAsync(int Id); Task<(bool IsSuccess, Models.SurveyResponse SurveyResponse, string ErrorMessage)> DeleteSurveyResponseAsync(int Id);
Task<(bool IsSuccess, dynamic SurveyResponse, string ErrorMessage)> GetSurveyResponseByIdAsync(int responseId); Task<(bool IsSuccess, dynamic SurveyResponse, string ErrorMessage)> GetSurveyResponseByIdAsync(int responseId);

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 try
{ {
logger?.LogInformation("Querying to get SurveyResponse object from DB"); logger?.LogInformation("Querying to get SurveyResponse object from DB");
//get all the survey that already taken by the employee //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); 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(); surveys = surveys.Where(s => s.IsEnabled == true && s.StartDate <= DateTime.Now && s.EndDate >= DateTime.Now).ToList();
} if (employeeid == null || employeeid == 0)
if (listOfsurveysId==null || listOfsurveysId.Count == 0)
return (true, surveys, null); return (true, surveys, null);
List<int> listOfsurveysId = await surveyResponseDbContext.SurveyResponses.Where(x => x.EmployeeId == employeeid.Value).Select(y => y.SurveyId).ToListAsync();
var activeSurveys = surveys.Where(s => s.IsEnabled == true && s.StartDate <= DateTime.Now && s.EndDate >= DateTime.Now && !listOfsurveysId.Contains(s.Id)); var activeSurveys = surveys.Where(s => !listOfsurveysId.Contains(s.Id));
return (true, activeSurveys, null); return (true, activeSurveys, null);
} }
catch (Exception ex) catch (Exception ex)
@ -139,21 +133,24 @@ 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 try
{ {
logger?.LogInformation("Querying to get SurveyResponse object from DB"); 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);
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 var historicSurveys = from s in surveys
from r in surveyResponses from r in surveyResponses
where s.Id == r.SurveyId where s.Id == r.SurveyId
select s; select s;
return (true, historicSurveys, null); return (true, historicSurveys, null);
} }
catch (Exception ex) catch (Exception ex)
{ {

View File

@ -93,7 +93,8 @@ namespace DamageAssesment.Api.Surveys.Providers
try try
{ {
logger?.LogInformation("Get all Surveys from DB"); logger?.LogInformation("Get all Surveys from DB");
var surveys = await surveyDbContext.Surveys.Where(s => s.IsEnabled == true).ToListAsync(); //checking is enabled in survey response
var surveys = await surveyDbContext.Surveys.ToListAsync();//Where(s => s.IsEnabled == true)
if (surveys != null) if (surveys != null)
{ {