added logic to get active surveys from survey responses
This commit is contained in:
parent
8e0a7df68b
commit
c77e0452c4
@ -199,10 +199,12 @@ namespace DamageAssesment.Api.Responses.Controllers
|
||||
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}/{language:alpha}")]
|
||||
[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);
|
||||
if (result.IsSuccess)
|
||||
@ -212,10 +214,12 @@ namespace DamageAssesment.Api.Responses.Controllers
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
[Route("responses/surveys/historic")]
|
||||
[Route("responses/surveys/historic/{language:alpha}")]
|
||||
[Route("responses/surveys/historic/{employeeid:int}")]
|
||||
[Route("responses/surveys/historic/{employeeid:int}/{language:alpha}")]
|
||||
[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);
|
||||
if (result.IsSuccess)
|
||||
|
@ -9,8 +9,8 @@ namespace DamageAssesment.Api.Responses.Interfaces
|
||||
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)> GetSurveyResponsesAsync(int employeeid);
|
||||
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)> GetActiveSurveysAsync(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)> DeleteSurveyResponseAsync(int Id);
|
||||
Task<(bool IsSuccess, dynamic SurveyResponse, string ErrorMessage)> GetSurveyResponseByIdAsync(int responseId);
|
||||
|
@ -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,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
|
||||
{
|
||||
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
|
||||
from r in surveyResponses
|
||||
where s.Id == r.SurveyId
|
||||
select s;
|
||||
|
||||
return (true, historicSurveys, null);
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
@ -93,7 +93,8 @@ namespace DamageAssesment.Api.Surveys.Providers
|
||||
try
|
||||
{
|
||||
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)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user