Merged PR 56: fixed survey issue in response level, and added logic for start and end date...
fixed survey issue in response level, and added logic for start and end date as optional date.
This commit is contained in:
commit
17cd993a56
@ -218,16 +218,16 @@ namespace DamageAssesment.Api.Responses.Controllers
|
||||
return NoContent();
|
||||
}
|
||||
/// <summary>
|
||||
/// Export surveys based on role .
|
||||
/// Export all survey response data based on survey id.
|
||||
/// </summary>
|
||||
[HttpGet]
|
||||
[Route("responses/surveys/export/{surveyid}")]
|
||||
public async Task<ActionResult> GetExcelSurveysAsync(int surveyid, string language, bool IsAdmin = false)
|
||||
{
|
||||
var result = await this.surveyResponseProvider.ExportSurveyResponsesAsync(surveyid, language, IsAdmin);
|
||||
if (result.IsSuccess && result.surveyResponses.Count > 0)
|
||||
{
|
||||
|
||||
[Route("responses/surveys/export")]
|
||||
public async Task<ActionResult> GetExcelSurveysAsync(string language,bool IsAdmin=false)
|
||||
{
|
||||
var result = await this.surveyResponseProvider.ExportSurveyResponsesAsync(language, IsAdmin);
|
||||
if (result.IsSuccess)
|
||||
{
|
||||
byte[] fileContents = excelExportService.ExportToExcel<object>(result.surveyResponses);
|
||||
return File(fileContents, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "data.xlsx");
|
||||
//return Ok(result.Surveys);
|
||||
|
@ -9,7 +9,7 @@ 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, List<object> surveyResponses, string ErrorMessage)> ExportSurveyResponsesAsync(string language,bool IsAdmin);
|
||||
Task<(bool IsSuccess, List<object> surveyResponses, string ErrorMessage)> ExportSurveyResponsesAsync(int surveyId, string language, bool IsAdmin);
|
||||
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);
|
||||
|
@ -2,13 +2,20 @@
|
||||
|
||||
namespace DamageAssesment.Api.Responses.Models
|
||||
{
|
||||
public enum SurveyStatus
|
||||
{
|
||||
PENDING,
|
||||
ACTIVE,
|
||||
INACTIVE
|
||||
}
|
||||
public class Survey
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public bool IsEnabled { get; set; }
|
||||
public DateTime StartDate { get; set; }
|
||||
public DateTime EndDate { get; set; }
|
||||
public DateTime? StartDate { get; set; }
|
||||
public DateTime? EndDate { get; set; }
|
||||
public DateTime CreatedDate { get; set; }
|
||||
public string Status { get; set; }
|
||||
public Dictionary<string, string> Titles { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -38,17 +38,22 @@ namespace DamageAssesment.Api.Responses.Providers
|
||||
{
|
||||
for (int col = 1; col <= properties.Length; col++)
|
||||
{
|
||||
|
||||
string value = Convert.ToString(properties[col - 1].GetValue(data[row - 2]));
|
||||
if (IsAttchments.Where(a => a == col).Count() > 0 && !string.IsNullOrEmpty(value))
|
||||
{
|
||||
List<string> attachments = value.Split("##").ToList();
|
||||
try
|
||||
{
|
||||
Uri linkUri = new Uri(attachments[1]);
|
||||
worksheet.Cells[row, col].Hyperlink = linkUri;
|
||||
worksheet.Cells[row, col].Value = attachments[0];
|
||||
worksheet.Cells[row, col].Style.Font.UnderLine = true;
|
||||
}
|
||||
catch { worksheet.Cells[row, col].Value = attachments[1]; }
|
||||
}
|
||||
else
|
||||
worksheet.Cells[row, col].Value = value;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -121,7 +121,7 @@ namespace DamageAssesment.Api.Responses.Providers
|
||||
logger?.LogInformation("Querying to get SurveyResponse object from DB");
|
||||
//get all the survey that already taken by the employee
|
||||
var surveys = await surveyServiceProvider.getSurveysAsync(language);
|
||||
surveys = surveys.Where(s => s.IsEnabled == true && s.StartDate <= DateTime.Now && s.EndDate >= DateTime.Now).ToList();
|
||||
surveys = surveys.Where(s => s.IsEnabled == true && s.Status == SurveyStatus.ACTIVE.ToString()).ToList();
|
||||
if (employeeid == null || employeeid == 0)
|
||||
return (true, surveys, null);
|
||||
List<int> listOfsurveysId = await surveyResponseDbContext.SurveyResponses.Where(x => x.EmployeeId == employeeid.Value).Select(y => y.SurveyId).ToListAsync();
|
||||
@ -143,7 +143,7 @@ namespace DamageAssesment.Api.Responses.Providers
|
||||
|
||||
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();
|
||||
surveys = surveys.Where(s => s.Status == SurveyStatus.INACTIVE.ToString()).ToList();
|
||||
if (employeeid == null || employeeid == 0)
|
||||
return (true, surveys, null);
|
||||
var surveyResponses = await surveyResponseDbContext.SurveyResponses.Where(x => x.EmployeeId == employeeid).ToListAsync();
|
||||
@ -309,11 +309,11 @@ namespace DamageAssesment.Api.Responses.Providers
|
||||
return (false, null, ex.Message);
|
||||
}
|
||||
}
|
||||
public async Task<(bool IsSuccess, List<object> surveyResponses, string ErrorMessage)> ExportSurveyResponsesAsync(string language,bool isadmin)
|
||||
public async Task<(bool IsSuccess, List<object> surveyResponses, string ErrorMessage)> ExportSurveyResponsesAsync(int surveyId, string language, bool isadmin)
|
||||
{
|
||||
try
|
||||
{
|
||||
var responses = await getAllSurveyResponsesExcelAsync(language, isadmin);
|
||||
var responses = await getAllSurveyResponsesExcelAsync(surveyId, language, isadmin);
|
||||
|
||||
if (responses != null)
|
||||
return (true, responses, "Request Successful.");
|
||||
@ -709,13 +709,13 @@ namespace DamageAssesment.Api.Responses.Providers
|
||||
}
|
||||
}
|
||||
//Method to get All Survey Responses for excel export
|
||||
private async Task<List<object>> getAllSurveyResponsesExcelAsync(string language,bool isadmin)
|
||||
private async Task<List<object>> getAllSurveyResponsesExcelAsync(int surveyId, string language, bool isadmin)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (string.IsNullOrEmpty(language)) language = "en";
|
||||
List<Db.SurveyResponse> surveyResonses;
|
||||
surveyResonses = await surveyResponseDbContext.SurveyResponses.ToListAsync();
|
||||
surveyResonses = await surveyResponseDbContext.SurveyResponses.Where(a => a.SurveyId == surveyId).ToListAsync();
|
||||
var answers = await answerServiceProvider.getAnswersAsync();
|
||||
var Locations = await locationServiceProvider.getLocationsAsync();
|
||||
var regions = await regionServiceProvider.getRegionsAsync();
|
||||
|
@ -13,9 +13,9 @@ namespace DamageAssesment.Api.Surveys.Db
|
||||
|
||||
public bool IsEnabled { get; set; }
|
||||
|
||||
public DateTime StartDate { get; set; }
|
||||
public DateTime? StartDate { get; set; }
|
||||
|
||||
public DateTime EndDate { get; set; }
|
||||
public DateTime? EndDate { get; set; }
|
||||
|
||||
public DateTime CreatedDate { get; set; } = DateTime.Now;
|
||||
/*
|
||||
|
@ -21,8 +21,8 @@ namespace DamageAssesment.Api.Surveys.Models
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public bool IsEnabled { get; set; }
|
||||
public DateTime StartDate { get; set; }
|
||||
public DateTime EndDate { get; set; }
|
||||
public DateTime CreatedDate { get; set; }
|
||||
public DateTime? StartDate { get; set; }
|
||||
public DateTime? EndDate { get; set; }
|
||||
public DateTime? CreatedDate { get; set; }
|
||||
}
|
||||
}
|
||||
|
@ -85,7 +85,9 @@ namespace DamageAssesment.Api.Surveys.Providers
|
||||
MultiLanguage = dict;
|
||||
return MultiLanguage;
|
||||
}
|
||||
public string GetStatus(DateTime StartDate,DateTime EndDate)
|
||||
public string GetStatus(DateTime? StartDate,DateTime? EndDate)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (StartDate > DateTime.Now)
|
||||
return SurveyStatus.PENDING.ToString();
|
||||
@ -94,6 +96,11 @@ namespace DamageAssesment.Api.Surveys.Providers
|
||||
else
|
||||
return SurveyStatus.INACTIVE.ToString();
|
||||
}
|
||||
catch
|
||||
{
|
||||
return SurveyStatus.INACTIVE.ToString();
|
||||
}
|
||||
}
|
||||
// Method to get surveys asynchronously with multi-language support
|
||||
public async Task<(bool IsSuccess, IEnumerable<Models.MultiLanSurvey> Surveys, string ErrorMessage)> GetSurveysAsync(string language)
|
||||
{
|
||||
@ -136,7 +143,8 @@ namespace DamageAssesment.Api.Surveys.Providers
|
||||
try
|
||||
{
|
||||
logger?.LogInformation("Query Survey");
|
||||
var survey = await surveyDbContext.Surveys.SingleOrDefaultAsync(s => s.Id == id && s.IsEnabled == true);
|
||||
// removed is enabled becuase we are using it in responses to get response
|
||||
var survey = await surveyDbContext.Surveys.SingleOrDefaultAsync(s => s.Id == id);
|
||||
|
||||
if (survey != null)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user