Merged PR 57: fixed survey issue in response level, and added logic for start and end date a...
ixed survey issue in response level, and added logic for start and end date as optional date.
This commit is contained in:
commit
9384a8b976
@ -222,10 +222,10 @@ namespace DamageAssesment.Api.Responses.Controllers
|
||||
/// </summary>
|
||||
[HttpGet]
|
||||
[Route("responses/surveys/export/{surveyid}")]
|
||||
public async Task<ActionResult> GetExcelSurveysAsync(int surveyid,string language, bool IsAdmin = false)
|
||||
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)
|
||||
var result = await this.surveyResponseProvider.ExportSurveyResponsesAsync(surveyid, language, IsAdmin);
|
||||
if (result.IsSuccess && result.surveyResponses.Count > 0)
|
||||
{
|
||||
|
||||
byte[] fileContents = excelExportService.ExportToExcel<object>(result.surveyResponses);
|
||||
|
@ -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; }
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,7 @@
|
||||
using DamageAssesment.Api.Responses.Models;
|
||||
using OfficeOpenXml;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace DamageAssesment.Api.Responses.Providers
|
||||
{
|
||||
@ -9,7 +10,7 @@ namespace DamageAssesment.Api.Responses.Providers
|
||||
{
|
||||
public byte[] ExportToExcel<T1>(List<object> responses)
|
||||
{
|
||||
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
|
||||
ExcelPackage.LicenseContext = OfficeOpenXml.LicenseContext.NonCommercial;
|
||||
using (var package = new ExcelPackage())
|
||||
{
|
||||
// Create the first worksheet and populate it with responses
|
||||
@ -37,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();
|
||||
@ -313,7 +313,7 @@ namespace DamageAssesment.Api.Responses.Providers
|
||||
{
|
||||
try
|
||||
{
|
||||
var responses = await getAllSurveyResponsesExcelAsync(surveyId,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(int surveyId,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.Where(a=>a.SurveyId==surveyId).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();
|
||||
|
@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace DamageAssesment.Api.Surveys.Db
|
||||
{
|
||||
[Table("Surveys")]
|
||||
public class Survey
|
||||
{
|
||||
[Key]
|
||||
@ -12,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