updated doculink changes

This commit is contained in:
uppuv
2023-09-26 12:40:55 -04:00
63 changed files with 4127 additions and 1220 deletions

View File

@ -31,7 +31,7 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
this.questionServiceProvider = questionServiceProvider;
this.surveyServiceProvider = surveyServiceProvider;
this.mapper = mapper;
// seedData();
// seedData();
}
private void seedData()
@ -49,12 +49,20 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
}
}
public async Task<(bool IsSuccess, dynamic Answers, string ErrorMessage)> GetAnswersByRegionAsync(int surveyId)
public async Task<(bool IsSuccess, dynamic Answers, string ErrorMessage)> GetAnswersByRegionAsync(int surveyId, int employeeid)
{
try
{
logger?.LogInformation("Querying to get SurveyResponse object from DB");
var listSurveyResponse = surveyResponseDbContext.SurveyResponses.Where(s => s.SurveyId == surveyId);
IQueryable<Db.SurveyResponse> listSurveyResponse = null;
if (employeeid == 0)
{
listSurveyResponse = surveyResponseDbContext.SurveyResponses.Where(s => s.SurveyId == surveyId);
}
else
{
listSurveyResponse = surveyResponseDbContext.SurveyResponses.Where(s => s.SurveyId == surveyId && s.EmployeeId == employeeid);
}
if (listSurveyResponse.Any())
{
@ -103,10 +111,58 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
return (false, null, ex.Message);
}
}
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)
return (true, surveys, null);
public async Task<(bool IsSuccess, dynamic SurveyResponses, string ErrorMessage)> GetSurveyResponsesBySurveyAsync(int surveyId)
var activeSurveys = surveys.Where(s => s.IsEnabled == true && s.StartDate <= DateTime.Now && s.EndDate >= DateTime.Now && !listOfsurveysId.Contains(s.Id));
return (true, activeSurveys, null);
}
catch (Exception ex)
{
logger?.LogError(ex.ToString());
return (false, null, ex.Message);
}
}
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 historicSurveys = from s in surveys
from r in surveyResponses
where s.Id == r.SurveyId
select s;
return (true, historicSurveys, null);
}
catch (Exception ex)
{
logger?.LogError(ex.ToString());
return (false, null, ex.Message);
}
}
public async Task<(bool IsSuccess, dynamic SurveyResponses, string ErrorMessage)> GetSurveyResponsesBySurveyAsync(int surveyId, int employeeid)
{
try
{
@ -115,7 +171,7 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
if (survey != null)
{
var answers = await getSurveyResponsesBySurveyIdAsync(surveyId);
var answers = await getSurveyResponsesBySurveyIdAsync(surveyId, employeeid);
if (answers != null)
return (true, answers, "Request Successful.");
@ -137,7 +193,7 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
}
}
public async Task<(bool IsSuccess, dynamic SurveyResponses, string ErrorMessage)> GetSurveyResponsesBySurveyAndLocationAsync(int surveyId, int locationId)
public async Task<(bool IsSuccess, dynamic SurveyResponses, string ErrorMessage)> GetSurveyResponsesBySurveyAndLocationAsync(int surveyId, int locationId, int employeeid)
{
try
{
@ -146,7 +202,7 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
if (survey != null)
{
var answers = await getSurveyResponsesBySurveyIdLocationIdAsync(surveyId, locationId);
var answers = await getSurveyResponsesBySurveyIdLocationIdAsync(surveyId, locationId, employeeid);
if (answers != null)
return (true, answers, "Request Successful.");
@ -168,7 +224,7 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
}
}
public async Task<(bool IsSuccess, dynamic SurveyResponses, string ErrorMessage)> GetSurveyResponsesByMaintenanceCenterAsync(int surveyId)
public async Task<(bool IsSuccess, dynamic SurveyResponses, string ErrorMessage)> GetSurveyResponsesByMaintenanceCenterAsync(int surveyId, int employeeid)
{
try
{
@ -177,7 +233,7 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
if (survey != null)
{
var answers = await getResultsByMaintenanceCenterAsync(surveyId);
var answers = await getResultsByMaintenanceCenterAsync(surveyId, employeeid);
if (answers != null)
return (true, answers, "Request Successful.");
@ -199,7 +255,7 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
}
}
public async Task<(bool IsSuccess, dynamic SurveyResponses, string ErrorMessage)> GetResponsesByAnswerAsync(int surveyId, int questionId, string answer)
public async Task<(bool IsSuccess, dynamic SurveyResponses, string ErrorMessage)> GetResponsesByAnswerAsync(int surveyId, int questionId, string answer, int employeeid)
{
try
{
@ -211,7 +267,7 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
if (survey != null && question != null && IsCorrectAnswer)
{
var answers = await getSurveyResponsesByAnswerAsync(survey, question, answer);
var answers = await getSurveyResponsesByAnswerAsync(survey, question, answer, employeeid);
if (answers != null)
return (true, answers, "Request Successful.");
@ -234,18 +290,18 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
}
public async Task<(bool IsSuccess, dynamic surveyResponses, string ErrorMessage)> GetSurveyResponsesAsync()
public async Task<(bool IsSuccess, dynamic surveyResponses, string ErrorMessage)> GetSurveyResponsesAsync(int employeeid)
{
try
{
var answers = await getAllSurveyResponsesAsync();
var responses = await getAllSurveyResponsesAsync(employeeid);
if (answers != null)
return (true, answers, "Request Successful.");
if (responses != null)
return (true, responses, "Request Successful.");
else
{
answers = new List<Models.SurveyResponse>();
return (true, answers, "Empty object returned");
responses = new List<Models.SurveyResponse>();
return (true, responses, "Empty object returned");
}
}
catch (Exception ex)
@ -356,7 +412,7 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
answer => answer.SurveyResponseId,
surveyResponse => surveyResponse.Id,
(answer, surveyResponse) => new
{
answer.Id,
answer.QuestionId,
@ -380,18 +436,18 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
var result = from answer in surveyAnswers
from location in locations
where answer.LocationId.Equals(location.Id)
select new
select new
{
answer.Id,
answer.QuestionId,
answer.AnswerText,
answer.Comment,
location.RegionId,
LocationId = location.Id,
answer.SurveyResponseId
answer.Id,
answer.QuestionId,
answer.AnswerText,
answer.Comment,
location.RegionId,
LocationId = location.Id,
answer.SurveyResponseId
};
//group records by answer and region
var q = from e in result
@ -399,13 +455,13 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
select new
{
g.Key.RegionId,
Answers = new
Answers = new
{
g.Key.AnswerText,
Counter = g.Count()
}
};
//build the result
List<dynamic> resultList = new List<dynamic>();
@ -413,9 +469,9 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
{
var answers = from u in q.ToList()
where u.RegionId.Equals(region.Id)
select u.Answers;
resultList.Add(new { RegionId = region.Id, region.Name, region.Abbreviation, Answers = answers});
select u.Answers;
resultList.Add(new { RegionId = region.Id, region.Name, region.Abbreviation, Answers = answers });
}
//return the object result
return new { Regions = resultList };
@ -471,13 +527,24 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
//Method to get Survey Responses by surveyId
private async Task<dynamic> getSurveyResponsesBySurveyIdAsync(int surveyId)
private async Task<dynamic> getSurveyResponsesBySurveyIdAsync(int surveyId, int employeeid)
{
try
{
var surveyResonses = await surveyResponseDbContext.SurveyResponses.Where(x => x.SurveyId == surveyId).ToListAsync();
List<Db.SurveyResponse> surveyResonses = null;
Employee employee = null;
List<Employee> employees = null;
if (employeeid == 0)
{
surveyResonses = await surveyResponseDbContext.SurveyResponses.Where(x => x.SurveyId == surveyId).ToListAsync();
employees = await employeeServiceProvider.getEmployeesAsync();
}
else
{
surveyResonses = await surveyResponseDbContext.SurveyResponses.Where(x => x.SurveyId == surveyId && x.EmployeeId == employeeid).ToListAsync();
employee = await employeeServiceProvider.getEmployeeAsync(employeeid);
}
var employees = await employeeServiceProvider.getEmployeesAsync();
var answers = await answerServiceProvider.getAnswersAsync();
var questions = await questionServiceProvider.getQuestionsAsync();
var surveyQuestions = from q in questions where q.SurveyId == surveyId select q;
@ -485,32 +552,70 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
//var surveyQuestions = await questionServiceProvider.getSurveyQuestionsAsync(surveyId);
var attachments = await attachmentServiceProvider.getAttachmentsAsync();
var result = from r in surveyResonses
select new
{
r.Id,
r.SurveyId,
r.LocationId,
r.EmployeeId,
r.ClientDevice,
r.KeyAnswerResult,
r.Longitute,
r.Latitude,
Employee = (from e in employees where e.Id == r.EmployeeId select new { e.Id, e.Name, e.BirthDate, e.Email, e.OfficePhoneNumber }).SingleOrDefault(),
answers = from ans in answers
where ans.SurveyResponseId == r.Id
select new
{
ans.Id,
ans.QuestionId,
ans.AnswerText,
ans.Comment,
Questions = (from q in surveyQuestions where q.Id == ans.QuestionId select new { q.Id, q.QuestionNumber, q.CategoryId, q.Text }).SingleOrDefault(),
Attachments = from att in attachments where att.AnswerId == ans.Id select new { att.Id, att.URI }
}
};
return result;
if (employeeid == 0)
{
var result = from r in surveyResonses
select new
{
r.Id,
r.SurveyId,
r.LocationId,
r.EmployeeId,
r.ClientDevice,
r.KeyAnswerResult,
r.Longitute,
r.Latitude,
Employee = (from e in employees where e.Id == r.EmployeeId select new { e.Id, e.Name, e.BirthDate, e.Email, e.OfficePhoneNumber }).SingleOrDefault(),
answers = from ans in answers
where ans.SurveyResponseId == r.Id
select new
{
ans.Id,
ans.QuestionId,
ans.AnswerText,
ans.Comment,
Questions = (from q in surveyQuestions where q.Id == ans.QuestionId select new { q.Id, q.QuestionNumber, q.CategoryId, q.Text }).SingleOrDefault(),
Attachments = from att in attachments where att.AnswerId == ans.Id select new { att.Id, att.URI }
}
};
return result;
}
else
{
object _employee = new { };
if (employee != null)
{
_employee = new { employee.Id, employee.Name, employee.BirthDate, employee.Email, employee.OfficePhoneNumber };
}
var result = from r in surveyResonses
select new
{
r.Id,
r.SurveyId,
r.LocationId,
r.EmployeeId,
r.ClientDevice,
r.KeyAnswerResult,
r.Longitute,
r.Latitude,
Employee = _employee,
answers = from ans in answers
where ans.SurveyResponseId == r.Id
select new
{
ans.Id,
ans.QuestionId,
ans.AnswerText,
ans.Comment,
Questions = (from q in questions where q.Id == ans.QuestionId select new { q.Id, q.QuestionNumber, q.CategoryId, q.Text }).SingleOrDefault(),
Attachments = from att in attachments where att.AnswerId == ans.Id select new { att.Id, att.URI }
}
};
return result;
}
}
catch (Exception ex)
{
@ -521,13 +626,31 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
//Method to get All Survey Responses
private async Task<dynamic> getAllSurveyResponsesAsync()
private async Task<dynamic> getAllSurveyResponsesAsync(int employeeid)
{
try
{
var surveyResonses = await surveyResponseDbContext.SurveyResponses.ToListAsync();
List<Db.SurveyResponse> surveyResonses = null;
Employee employee = null;
List<Employee> employees = null;
object _employee = new { };
if (employeeid == 0)
{
surveyResonses = await surveyResponseDbContext.SurveyResponses.ToListAsync();
employees = await employeeServiceProvider.getEmployeesAsync();
}
else
{
surveyResonses = await surveyResponseDbContext.SurveyResponses.Where(x => x.EmployeeId == employeeid).ToListAsync();
employee = await employeeServiceProvider.getEmployeeAsync(employeeid);
if (employee != null)
{
_employee = new { employee.Id, employee.Name, employee.BirthDate, employee.Email, employee.OfficePhoneNumber };
}
}
var employees = await employeeServiceProvider.getEmployeesAsync();
var answers = await answerServiceProvider.getAnswersAsync();
var questions = await questionServiceProvider.getQuestionsAsync();
var attachments = await attachmentServiceProvider.getAttachmentsAsync();
@ -543,7 +666,7 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
r.KeyAnswerResult,
r.Longitute,
r.Latitude,
Employee = (from e in employees where r.EmployeeId == e.Id select new { e.Id, e.Name, e.BirthDate, e.Email, e.OfficePhoneNumber }).SingleOrDefault(),
Employee = employeeid != 0 ? _employee : (from e in employees where r.EmployeeId == e.Id select new { e.Id, e.Name, e.BirthDate, e.Email, e.OfficePhoneNumber }).SingleOrDefault(),
answers = from ans in answers
where ans.SurveyResponseId == r.Id
select new
@ -557,6 +680,8 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
}
};
return result;
}
catch (Exception ex)
{
@ -567,11 +692,19 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
//Method to get Answers By Maintenance Center by surveyId
private async Task<dynamic> getResultsByMaintenanceCenterAsync(int surveyId)
private async Task<dynamic> getResultsByMaintenanceCenterAsync(int surveyId, int employeeid)
{
try
{
var surveyResponses = await surveyResponseDbContext.SurveyResponses.Where(x => x.SurveyId == surveyId).ToListAsync();
List<Db.SurveyResponse> surveyResponses = null;
if (employeeid == 0)
{
surveyResponses = await surveyResponseDbContext.SurveyResponses.Where(x => x.SurveyId == surveyId).ToListAsync();
}
else
{
surveyResponses = await surveyResponseDbContext.SurveyResponses.Where(x => x.SurveyId == surveyId && x.EmployeeId == employeeid).ToListAsync();
}
var answers = await answerServiceProvider.getAnswersAsync();
var locations = await locationServiceProvider.getLocationsAsync();
var maintenanceCenters = locations.DistinctBy(m => m.MaintenanceCenter);
@ -602,7 +735,7 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
select new
{
g.Key.MaintenanceCenter,
Answers = new
Answers = new
{
g.Key.AnswerText,
Counter = g.Count()
@ -627,13 +760,31 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
}
//Method to get Survey Responses by surveyId and LocationId
private async Task<dynamic> getSurveyResponsesBySurveyIdLocationIdAsync(int surveyId, int locationId)
private async Task<dynamic> getSurveyResponsesBySurveyIdLocationIdAsync(int surveyId, int locationId, int employeeid)
{
try
{
var surveyResonses = await surveyResponseDbContext.SurveyResponses.Where(x => x.SurveyId == surveyId && x.LocationId.Equals(locationId)).ToListAsync();
List<Db.SurveyResponse> surveyResonses = null;
Employee employee = null;
List<Employee> employees = null;
object _employee = new { };
if (employeeid == 0)
{
surveyResonses = await surveyResponseDbContext.SurveyResponses.Where(x => x.SurveyId == surveyId && x.LocationId == locationId).ToListAsync();
employees = await employeeServiceProvider.getEmployeesAsync();
}
else
{
surveyResonses = await surveyResponseDbContext.SurveyResponses.Where(x => x.SurveyId == surveyId && x.EmployeeId == employeeid && x.LocationId == locationId).ToListAsync();
employee = await employeeServiceProvider.getEmployeeAsync(employeeid);
if (employee != null)
{
_employee = new { employee.Id, employee.Name, employee.BirthDate, employee.Email, employee.OfficePhoneNumber };
}
}
var employees = await employeeServiceProvider.getEmployeesAsync();
var answers = await answerServiceProvider.getAnswersAsync();
var questions = await questionServiceProvider.getQuestionsAsync();
var surveyQuestions = from q in questions where q.SurveyId == surveyId select q;
@ -650,7 +801,7 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
r.KeyAnswerResult,
r.Longitute,
r.Latitude,
Employee = (from e in employees where r.EmployeeId == e.Id select new { e.Id, e.Name, e.BirthDate, e.Email, e.OfficePhoneNumber }).SingleOrDefault(),
Employee = employeeid != 0 ? _employee : (from e in employees where r.EmployeeId == e.Id select new { e.Id, e.Name, e.BirthDate, e.Email, e.OfficePhoneNumber }).SingleOrDefault(),
answers = from ans in answers
where ans.SurveyResponseId == r.Id
@ -665,6 +816,7 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
}
};
return result;
}
catch (Exception ex)
{
@ -675,13 +827,34 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
//Method to get Survey Responses by surveyId questionId and answer
private async Task<dynamic> getSurveyResponsesByAnswerAsync(Survey survey, Question question, string answer)
private async Task<dynamic> getSurveyResponsesByAnswerAsync(Survey survey, Question question, string answer, int employeeid)
{
try
{
var surveyResponses = await surveyResponseDbContext.SurveyResponses.Where(x => x.SurveyId == survey.Id).ToListAsync();
List<Db.SurveyResponse> surveyResponses = null;
Employee employee = null;
List<Employee> employees = null;
object _employee = new { };
if (employeeid == 0)
{
surveyResponses = await surveyResponseDbContext.SurveyResponses.Where(x => x.SurveyId == survey.Id).ToListAsync();
employees = await employeeServiceProvider.getEmployeesAsync();
}
else
{
surveyResponses = await surveyResponseDbContext.SurveyResponses.Where(x => x.SurveyId == survey.Id && x.EmployeeId == employeeid).ToListAsync();
employee = await employeeServiceProvider.getEmployeeAsync(employeeid);
if (employee != null)
{
_employee = new { employee.Id, employee.Name, employee.BirthDate, employee.Email, employee.OfficePhoneNumber };
}
}
//var surveyResponses = await surveyResponseDbContext.SurveyResponses.Where(x => x.SurveyId == survey.Id).ToListAsync();
// var employees = await employeeServiceProvider.getEmployeesAsync();
var answers = await answerServiceProvider.getAnswersAsync();
var employees = await employeeServiceProvider.getEmployeesAsync();
var attachments = await attachmentServiceProvider.getAttachmentsAsync();
var result = from r in surveyResponses
@ -695,7 +868,7 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
r.KeyAnswerResult,
r.Longitute,
r.Latitude,
Employee = (from e in employees where r.EmployeeId == e.Id select new { e.Id, e.Name, e.BirthDate, e.Email, e.OfficePhoneNumber }).SingleOrDefault(),
Employee = employeeid != 0 ? _employee : (from e in employees where r.EmployeeId == e.Id select new { e.Id, e.Name, e.BirthDate, e.Email, e.OfficePhoneNumber }).SingleOrDefault(),
answers = from ans in answers
where ans.SurveyResponseId == r.Id
&& ans.QuestionId == question.Id
@ -758,7 +931,7 @@ namespace DamageAssesment.Api.SurveyResponses.Providers
{
if (request != null)
{
var response = await PostSurveyResponseAsync(new Models.SurveyResponse { SurveyId = request.SurveyId, EmployeeId = request.EmployeeId, LocationId = request.LocationId, ClientDevice = request.ClientDevice, KeyAnswerResult = request.KeyAnswerResult, Latitude = Convert.ToDouble(request.Latitude), Longitute = Convert.ToDouble(request.Longitute), CreatedDate=DateTime.Now });
var response = await PostSurveyResponseAsync(new Models.SurveyResponse { SurveyId = request.SurveyId, EmployeeId = request.EmployeeId, LocationId = request.LocationId, ClientDevice = request.ClientDevice, KeyAnswerResult = request.KeyAnswerResult, Latitude = Convert.ToDouble(request.Latitude), Longitute = Convert.ToDouble(request.Longitute), CreatedDate = DateTime.Now });
if (response.IsSuccess)
{
var surveyResponse = response.SurveyResponse;