added active and historical end points in response service

This commit is contained in:
uppuv 2023-10-17 11:22:49 -04:00
parent 027097d12d
commit bbe8008fc2
6 changed files with 28 additions and 26 deletions

View File

@ -212,10 +212,12 @@ namespace DamageAssesment.Api.Responses.Controllers
} }
[Authorize(Roles = "admin,survey,user,report")] [Authorize(Roles = "admin,survey,user,report")]
[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)
@ -226,10 +228,12 @@ namespace DamageAssesment.Api.Responses.Controllers
} }
[Authorize(Roles = "admin,survey,user,report")] [Authorize(Roles = "admin,survey,user,report")]
[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

@ -4,7 +4,7 @@ namespace DamageAssesment.Api.Responses.Interfaces
{ {
public interface ISurveyServiceProvider public interface ISurveyServiceProvider
{ {
Task<List<Survey>> getSurveysAsync(string token); Task<List<Survey>> getSurveysAsync(string language,string token);
Task<Survey> getSurveyAsync(int surveyId,string token); Task<Survey> getSurveyAsync(int surveyId,string token);
} }
} }

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

@ -125,25 +125,18 @@ namespace DamageAssesment.Api.Responses.Providers
return (false, null, ex.Message); return (false, null, ex.Message);
} }
} }
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, token);
var surveys = await surveyServiceProvider.getSurveysAsync(language); surveys = surveys.Where(s => s.IsEnabled == true && s.StartDate <= DateTime.Now && s.EndDate >= DateTime.Now).ToList();
if (employeeid == null || employeeid == 0)
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)
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)
@ -153,21 +146,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,token);
// 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

@ -10,10 +10,12 @@ namespace DamageAssesment.Api.Responses.Services
{ {
} }
public async Task<List<Survey>> getSurveysAsync(string token) public async Task<List<Survey>> getSurveysAsync(string language, string token)
{ {
try try
{ {
if (!string.IsNullOrEmpty(language))
url = url + "/" + language;
var responseJsonString = await httpUtil.SendAsync(HttpMethod.Get, url, null, token); var responseJsonString = await httpUtil.SendAsync(HttpMethod.Get, url, null, token);
var surveys = JsonConvert.DeserializeObject<List<Survey>>(responseJsonString); var surveys = JsonConvert.DeserializeObject<List<Survey>>(responseJsonString);

View File

@ -93,8 +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)
{ {
surveysList = from s in surveys surveysList = from s in surveys