From 0c135289405dec9d4d48b3bd3127fde6ba7fb7d4 Mon Sep 17 00:00:00 2001 From: Santhosh Nair <913441@dadeschools.net> Date: Wed, 1 Nov 2023 15:35:20 +0000 Subject: [PATCH] Revert "Merged PR 53: fixed survey put issue, and added export excel in responses fixed survey put issue, amd added export excel in responses" --- .../SurveyResponsesServiceTest.cs | 62 ++++--- .../Controllers/SurveyResponsesController.cs | 44 +---- .../DamageAssesment.Api.Responses.csproj | 2 - .../Interfaces/IExcelExportService.cs | 7 - .../Interfaces/IQuestionServiceProvider.cs | 3 +- .../Interfaces/ISurveysResponse.cs | 3 +- .../Models/Attachment.cs | 1 - .../Models/Location.cs | 1 - .../Models/QuestionCategory.cs | 10 -- .../Models/SurveyExport.cs | 24 --- .../DamageAssesment.Api.Responses/Program.cs | 1 - .../Providers/ExcelExportService.cs | 57 ------- .../Providers/SurveyResponsesProvider.cs | 161 +----------------- .../Services/QuestionServiceProvider.cs | 27 +-- .../appsettings.json | 3 +- .../Providers/SurveysProvider.cs | 4 +- 16 files changed, 47 insertions(+), 363 deletions(-) delete mode 100644 DamageAssesmentApi/DamageAssesment.Api.Responses/Interfaces/IExcelExportService.cs delete mode 100644 DamageAssesmentApi/DamageAssesment.Api.Responses/Models/QuestionCategory.cs delete mode 100644 DamageAssesmentApi/DamageAssesment.Api.Responses/Models/SurveyExport.cs delete mode 100644 DamageAssesmentApi/DamageAssesment.Api.Responses/Providers/ExcelExportService.cs diff --git a/DamageAssesmentApi/DamageAssesment.Api.Responses.Test/SurveyResponsesServiceTest.cs b/DamageAssesmentApi/DamageAssesment.Api.Responses.Test/SurveyResponsesServiceTest.cs index 05b3e02..48cec58 100644 --- a/DamageAssesmentApi/DamageAssesment.Api.Responses.Test/SurveyResponsesServiceTest.cs +++ b/DamageAssesmentApi/DamageAssesment.Api.Responses.Test/SurveyResponsesServiceTest.cs @@ -12,11 +12,9 @@ namespace DamageAssesment.SurveyResponses.Test public class SurveyResponsesServiceTest { Mock mockSurveyResponseService; - Mock mockExcelExportService; public SurveyResponsesServiceTest() { mockSurveyResponseService = new Mock(); - mockExcelExportService = new Mock(); } [Fact(DisplayName = "Get Responses - Ok case")] @@ -25,7 +23,7 @@ namespace DamageAssesment.SurveyResponses.Test SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject(); var mockResponse = await MockData.getOkResponse(mockRequestObject); mockSurveyResponseService.Setup(service => service.GetSurveyResponsesAsync(1)).ReturnsAsync(mockResponse); - var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object); + var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object); var result = (OkObjectResult)await surveyResponseProvider.GetSurveyResponsesAsync(1); Assert.Equal(200, result.StatusCode); } @@ -35,7 +33,7 @@ namespace DamageAssesment.SurveyResponses.Test { var mockResponse = await MockData.getResponse(); mockSurveyResponseService.Setup(service => service.GetSurveyResponsesAsync(1)).ReturnsAsync(mockResponse); - var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object); + var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object); var result = (BadRequestObjectResult)await surveyResponseProvider.GetSurveyResponsesAsync(1); Assert.Equal(400, result.StatusCode); } @@ -45,9 +43,9 @@ namespace DamageAssesment.SurveyResponses.Test { SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject(); var mockResponse = await MockData.getOkResponse(); - mockSurveyResponseService.Setup(service => service.GetSurveyResponsesBySurveyAsync(1, 1)).ReturnsAsync(mockResponse); - var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object); - var result = (OkObjectResult)await surveyResponseProvider.GetSurveyResponsesAsync(1, 1); + mockSurveyResponseService.Setup(service => service.GetSurveyResponsesBySurveyAsync(1,1)).ReturnsAsync(mockResponse); + var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object); + var result = (OkObjectResult)await surveyResponseProvider.GetSurveyResponsesAsync(1,1); Assert.Equal(200, result.StatusCode); } @@ -55,9 +53,9 @@ namespace DamageAssesment.SurveyResponses.Test public async Task GetSurveyResponsesBySurveyAsync_ShouldReturnStatusCode204() { var mockResponse = await MockData.getResponse(); - mockSurveyResponseService.Setup(service => service.GetSurveyResponsesBySurveyAsync(1, 1)).ReturnsAsync(mockResponse); - var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object); - var result = (NoContentResult)await surveyResponseProvider.GetSurveyResponsesAsync(1, 1); + mockSurveyResponseService.Setup(service => service.GetSurveyResponsesBySurveyAsync(1,1)).ReturnsAsync(mockResponse); + var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object); + var result = (NoContentResult)await surveyResponseProvider.GetSurveyResponsesAsync(1,1); Assert.Equal(204, result.StatusCode); } @@ -69,9 +67,9 @@ namespace DamageAssesment.SurveyResponses.Test { SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject(); var mockResponse = await MockData.getOkResponse(); - mockSurveyResponseService.Setup(service => service.GetSurveyResponsesBySurveyAndLocationAsync(1, 1, 1)).ReturnsAsync(mockResponse); - var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object); - var result = (OkObjectResult)await surveyResponseProvider.GetSurveyResponsesBySurveyAndLocationAsync(1, 1, 1); + mockSurveyResponseService.Setup(service => service.GetSurveyResponsesBySurveyAndLocationAsync(1, 1,1)).ReturnsAsync(mockResponse); + var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object); + var result = (OkObjectResult)await surveyResponseProvider.GetSurveyResponsesBySurveyAndLocationAsync(1, 1,1); Assert.Equal(200, result.StatusCode); } @@ -80,7 +78,7 @@ namespace DamageAssesment.SurveyResponses.Test { var mockResponse = await MockData.getResponse(); mockSurveyResponseService.Setup(service => service.GetSurveyResponsesBySurveyAndLocationAsync(1, 1, 1)).ReturnsAsync(mockResponse); - var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object); + var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object); var result = (NoContentResult)await surveyResponseProvider.GetSurveyResponsesBySurveyAndLocationAsync(1, 1, 1); Assert.Equal(204, result.StatusCode); } @@ -90,9 +88,9 @@ namespace DamageAssesment.SurveyResponses.Test { SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject(); var mockResponse = await MockData.getOkResponse(); - mockSurveyResponseService.Setup(service => service.GetResponsesByAnswerAsync(1, 1, "Yes", 1)).ReturnsAsync(mockResponse); - var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object); - var result = (OkObjectResult)await surveyResponseProvider.GetSurveyResponsesByAnswerAsyncAsync(1, 1, "Yes", 1); + mockSurveyResponseService.Setup(service => service.GetResponsesByAnswerAsync(1, 1, "Yes",1)).ReturnsAsync(mockResponse); + var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object); + var result = (OkObjectResult)await surveyResponseProvider.GetSurveyResponsesByAnswerAsyncAsync(1, 1, "Yes",1); Assert.Equal(200, result.StatusCode); } @@ -101,8 +99,8 @@ namespace DamageAssesment.SurveyResponses.Test { var mockResponse = await MockData.getResponse(); mockSurveyResponseService.Setup(service => service.GetResponsesByAnswerAsync(1, 1, "Yes", 1)).ReturnsAsync(mockResponse); - var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object); - var result = (NoContentResult)await surveyResponseProvider.GetSurveyResponsesByAnswerAsyncAsync(1, 1, "Yes", 1); + var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object); + var result = (NoContentResult)await surveyResponseProvider.GetSurveyResponsesByAnswerAsyncAsync(1, 1, "Yes",1); Assert.Equal(204, result.StatusCode); } @@ -112,8 +110,8 @@ namespace DamageAssesment.SurveyResponses.Test { SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject(); var mockResponse = await MockData.getOkResponse(); - mockSurveyResponseService.Setup(service => service.GetAnswersByRegionAsync(1, 1)).ReturnsAsync(mockResponse); - var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object); + mockSurveyResponseService.Setup(service => service.GetAnswersByRegionAsync(1,1)).ReturnsAsync(mockResponse); + var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object); var result = (OkObjectResult)await surveyResponseProvider.GetAnswersByRegionAsync(1, 1); Assert.Equal(200, result.StatusCode); } @@ -123,7 +121,7 @@ namespace DamageAssesment.SurveyResponses.Test { var mockResponse = await MockData.getResponse(); mockSurveyResponseService.Setup(service => service.GetAnswersByRegionAsync(1, 1)).ReturnsAsync(mockResponse); - var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object); + var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object); var result = (NoContentResult)await surveyResponseProvider.GetAnswersByRegionAsync(1, 1); Assert.Equal(204, result.StatusCode); } @@ -134,7 +132,7 @@ namespace DamageAssesment.SurveyResponses.Test SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject(); var mockResponse = await MockData.getOkResponse(); mockSurveyResponseService.Setup(service => service.GetSurveyResponsesByMaintenanceCenterAsync(1, 1)).ReturnsAsync(mockResponse); - var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object); + var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object); var result = (OkObjectResult)await surveyResponseProvider.GetAnswersByMaintenaceCentersync(1, 1); Assert.Equal(200, result.StatusCode); } @@ -144,7 +142,7 @@ namespace DamageAssesment.SurveyResponses.Test { var mockResponse = await MockData.getResponse(); mockSurveyResponseService.Setup(service => service.GetSurveyResponsesByMaintenanceCenterAsync(1, 1)).ReturnsAsync(mockResponse); - var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object); + var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object); var result = (NoContentResult)await surveyResponseProvider.GetAnswersByMaintenaceCentersync(1, 1); Assert.Equal(204, result.StatusCode); } @@ -155,7 +153,7 @@ namespace DamageAssesment.SurveyResponses.Test SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject(); var mockResponse = await MockData.getOkResponse(); mockSurveyResponseService.Setup(service => service.GetSurveyResponseByIdAsync(1)).ReturnsAsync(mockResponse); - var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object); + var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object); var result = (OkObjectResult)await surveyResponseProvider.GetSurveyResponseByIdAsync(1); Assert.Equal(200, result.StatusCode); } @@ -165,7 +163,7 @@ namespace DamageAssesment.SurveyResponses.Test { var mockResponse = await MockData.getResponse(); mockSurveyResponseService.Setup(service => service.GetSurveyResponseByIdAsync(1)).ReturnsAsync(mockResponse); - var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object); + var surveyResponseProvider = new SurveyResponsesController(mockSurveyResponseService.Object); var result = (NoContentResult)await surveyResponseProvider.GetSurveyResponseByIdAsync(1); Assert.Equal(204, result.StatusCode); } @@ -177,7 +175,7 @@ namespace DamageAssesment.SurveyResponses.Test SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject(); var mockResponse = await MockData.getOkResponse(mockRequestObject); mockSurveyResponseService.Setup(service => service.PostSurveyResponseAsync(mockRequestObject)).ReturnsAsync(mockResponse); - var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object); + var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object); var result = (OkObjectResult)await surveyResponseController.PostSurveysAsync(mockRequestObject); Assert.Equal(200, result.StatusCode); } @@ -188,7 +186,7 @@ namespace DamageAssesment.SurveyResponses.Test SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject(); var mockResponse = await MockData.getResponse(); mockSurveyResponseService.Setup(service => service.PostSurveyResponseAsync(mockRequestObject)).ReturnsAsync(mockResponse); - var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object); + var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object); var result = (BadRequestObjectResult)await surveyResponseController.PostSurveysAsync(mockRequestObject); Assert.Equal(400, result.StatusCode); } @@ -199,7 +197,7 @@ namespace DamageAssesment.SurveyResponses.Test SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject(); var mockResponse = await MockData.getOkResponse(mockRequestObject); mockSurveyResponseService.Setup(service => service.PutSurveyResponseAsync(1, mockRequestObject)).ReturnsAsync(mockResponse); - var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object); + var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object); var result = (OkObjectResult)await surveyResponseController.PutSurveyResponseAsync(1, mockRequestObject); Assert.Equal(200, result.StatusCode); } @@ -210,7 +208,7 @@ namespace DamageAssesment.SurveyResponses.Test SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject(); var mockResponse = await MockData.getResponse(); mockSurveyResponseService.Setup(service => service.PutSurveyResponseAsync(1, mockRequestObject)).ReturnsAsync(mockResponse); ; - var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object); + var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object); var result = (BadRequestObjectResult)await surveyResponseController.PutSurveyResponseAsync(1, mockRequestObject); Assert.Equal(400, result.StatusCode); } @@ -221,7 +219,7 @@ namespace DamageAssesment.SurveyResponses.Test SurveyResponse mockRequestObject = await MockData.getSurveyResponseObject(); var mockResponse = await MockData.getOkResponse(mockRequestObject); mockSurveyResponseService.Setup(service => service.DeleteSurveyResponseAsync(1)).ReturnsAsync(mockResponse); - var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object); + var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object); var result = (OkObjectResult)await surveyResponseController.DeleteSurveyResponseAsync(1); Assert.Equal(200, result.StatusCode); } @@ -231,7 +229,7 @@ namespace DamageAssesment.SurveyResponses.Test { var mockResponse = await MockData.getResponse(); mockSurveyResponseService.Setup(service => service.DeleteSurveyResponseAsync(1)).ReturnsAsync(mockResponse); ; - var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object, mockExcelExportService.Object); + var surveyResponseController = new SurveyResponsesController(mockSurveyResponseService.Object); var result = (NotFoundResult)await surveyResponseController.DeleteSurveyResponseAsync(1); Assert.Equal(404, result.StatusCode); } diff --git a/DamageAssesmentApi/DamageAssesment.Api.Responses/Controllers/SurveyResponsesController.cs b/DamageAssesmentApi/DamageAssesment.Api.Responses/Controllers/SurveyResponsesController.cs index 9fce5f8..55b7f5d 100644 --- a/DamageAssesmentApi/DamageAssesment.Api.Responses/Controllers/SurveyResponsesController.cs +++ b/DamageAssesmentApi/DamageAssesment.Api.Responses/Controllers/SurveyResponsesController.cs @@ -8,12 +8,10 @@ namespace DamageAssesment.Api.Responses.Controllers public class SurveyResponsesController : ControllerBase { private readonly ISurveysResponse surveyResponseProvider; - private readonly IExcelExportService excelExportService; - public SurveyResponsesController(ISurveysResponse surveyResponseProvider, IExcelExportService excelExportService) + public SurveyResponsesController(ISurveysResponse surveyResponseProvider) { this.surveyResponseProvider = surveyResponseProvider; - this.excelExportService = excelExportService; } /// /// GET request for retrieving survey responses. @@ -59,9 +57,9 @@ namespace DamageAssesment.Api.Responses.Controllers [Route("responses/{surveyid:int}/{locationid:int}/{employeeid:int}")] [Route("responses/{surveyid:int}/{locationid:int}")] [HttpGet] - public async Task GetSurveyResponsesBySurveyAndLocationAsync(int surveyid, int locationid, int? employeeid) + public async Task GetSurveyResponsesBySurveyAndLocationAsync(int surveyid, int locationid,int? employeeid) { - var result = await this.surveyResponseProvider.GetSurveyResponsesBySurveyAndLocationAsync(surveyid, locationid, employeeid ?? 0); + var result = await this.surveyResponseProvider.GetSurveyResponsesBySurveyAndLocationAsync(surveyid, locationid,employeeid ?? 0); if (result.IsSuccess) { return Ok(result.SurveyResponses); @@ -200,9 +198,7 @@ namespace DamageAssesment.Api.Responses.Controllers else return BadRequest(result.ErrorMessage); } - /// - /// Get All active surveys . - /// + [Route("responses/surveys/active")] [Route("responses/surveys/active/{language:alpha}")] [Route("responses/surveys/active/{employeeid:int}")] @@ -217,39 +213,7 @@ namespace DamageAssesment.Api.Responses.Controllers } return NoContent(); } - /// - /// Export surveys based on role . - /// - [HttpGet] - [Route("responses/surveys/export")] - public async Task GetExcelSurveysAsync(string language,bool IsAdmin=false) - { - var result = await this.surveyResponseProvider.ExportSurveyResponsesAsync(language, IsAdmin); - if (result.IsSuccess) - { - byte[] fileContents = excelExportService.ExportToExcel(result.surveyResponses); - return File(fileContents, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "data.xlsx"); - //return Ok(result.Surveys); - } - return NoContent(); - } - //[Route("responses/surveys/active")] - //[Route("responses/surveys/active/{language:alpha}")] - //[HttpGet] - //public async Task GetActiveSurveysAsync( string? language) - //{ - // var result = await this.surveyResponseProvider.GetActiveSurveysAsync(null, language); - // if (result.IsSuccess) - // { - // return Ok(result.Surveys); - // } - // return NoContent(); - //} - - /// - /// Get all historical surveys . - /// [Route("responses/surveys/historic")] [Route("responses/surveys/historic/{language:alpha}")] [Route("responses/surveys/historic/{employeeid:int}")] diff --git a/DamageAssesmentApi/DamageAssesment.Api.Responses/DamageAssesment.Api.Responses.csproj b/DamageAssesmentApi/DamageAssesment.Api.Responses/DamageAssesment.Api.Responses.csproj index c9d3645..c704179 100644 --- a/DamageAssesmentApi/DamageAssesment.Api.Responses/DamageAssesment.Api.Responses.csproj +++ b/DamageAssesmentApi/DamageAssesment.Api.Responses/DamageAssesment.Api.Responses.csproj @@ -11,8 +11,6 @@ - - all diff --git a/DamageAssesmentApi/DamageAssesment.Api.Responses/Interfaces/IExcelExportService.cs b/DamageAssesmentApi/DamageAssesment.Api.Responses/Interfaces/IExcelExportService.cs deleted file mode 100644 index 31b832f..0000000 --- a/DamageAssesmentApi/DamageAssesment.Api.Responses/Interfaces/IExcelExportService.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace DamageAssesment.Api.Responses.Interfaces -{ - public interface IExcelExportService - { - public byte[] ExportToExcel(List responses); - } -} diff --git a/DamageAssesmentApi/DamageAssesment.Api.Responses/Interfaces/IQuestionServiceProvider.cs b/DamageAssesmentApi/DamageAssesment.Api.Responses/Interfaces/IQuestionServiceProvider.cs index bbcec8b..5c54e57 100644 --- a/DamageAssesmentApi/DamageAssesment.Api.Responses/Interfaces/IQuestionServiceProvider.cs +++ b/DamageAssesmentApi/DamageAssesment.Api.Responses/Interfaces/IQuestionServiceProvider.cs @@ -4,9 +4,8 @@ namespace DamageAssesment.Api.Responses.Interfaces { public interface IQuestionServiceProvider { - Task> getQuestionsAsync(string language); + Task> getQuestionsAsync(); Task> getSurveyQuestionsAsync(int surveyId); Task getQuestionsAsync(int questionId); - Task> GetQuestionCategoriesAsync(string? language); } } diff --git a/DamageAssesmentApi/DamageAssesment.Api.Responses/Interfaces/ISurveysResponse.cs b/DamageAssesmentApi/DamageAssesment.Api.Responses/Interfaces/ISurveysResponse.cs index ae5d380..19893c8 100644 --- a/DamageAssesmentApi/DamageAssesment.Api.Responses/Interfaces/ISurveysResponse.cs +++ b/DamageAssesmentApi/DamageAssesment.Api.Responses/Interfaces/ISurveysResponse.cs @@ -7,9 +7,8 @@ namespace DamageAssesment.Api.Responses.Interfaces { Task<(bool IsSuccess, dynamic Answers, string ErrorMessage)> GetAnswersByRegionAsync(int surveyId, int employeeid); 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, List surveyResponses, string ErrorMessage)> ExportSurveyResponsesAsync(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); diff --git a/DamageAssesmentApi/DamageAssesment.Api.Responses/Models/Attachment.cs b/DamageAssesmentApi/DamageAssesment.Api.Responses/Models/Attachment.cs index 71a87d3..6194789 100644 --- a/DamageAssesmentApi/DamageAssesment.Api.Responses/Models/Attachment.cs +++ b/DamageAssesmentApi/DamageAssesment.Api.Responses/Models/Attachment.cs @@ -11,7 +11,6 @@ namespace DamageAssesment.Api.Responses.Models public int? AnswerId { get; set; } public bool IsDeleted { get; set; } - public string FileName { get; set; } public Attachment(int answerId, string uri) { diff --git a/DamageAssesmentApi/DamageAssesment.Api.Responses/Models/Location.cs b/DamageAssesmentApi/DamageAssesment.Api.Responses/Models/Location.cs index e217a7b..d5996d2 100644 --- a/DamageAssesmentApi/DamageAssesment.Api.Responses/Models/Location.cs +++ b/DamageAssesmentApi/DamageAssesment.Api.Responses/Models/Location.cs @@ -4,7 +4,6 @@ { public int Id { get; set; } public int RegionId { get; set; } - public string LocationCode { get; set; } public string Name { get; set; } public string MaintenanceCenter { get; set; } public string SchoolType { get; set; } diff --git a/DamageAssesmentApi/DamageAssesment.Api.Responses/Models/QuestionCategory.cs b/DamageAssesmentApi/DamageAssesment.Api.Responses/Models/QuestionCategory.cs deleted file mode 100644 index c7c9379..0000000 --- a/DamageAssesmentApi/DamageAssesment.Api.Responses/Models/QuestionCategory.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace DamageAssesment.Api.Responses.Models -{ - public class QuestionCategory - { - public int Id { get; set; } - public string IconName { get; set; } - public string IconLibrary { get; set; } - public object Titles { get; set; } - } -} diff --git a/DamageAssesmentApi/DamageAssesment.Api.Responses/Models/SurveyExport.cs b/DamageAssesmentApi/DamageAssesment.Api.Responses/Models/SurveyExport.cs deleted file mode 100644 index be527f7..0000000 --- a/DamageAssesmentApi/DamageAssesment.Api.Responses/Models/SurveyExport.cs +++ /dev/null @@ -1,24 +0,0 @@ -namespace DamageAssesment.Api.Responses.Models -{ - public class SurveyExport - { - public int Id { get; set; } - public string SurveyQuestion { get; set; } - public string Answer { get; set; } - public string Category { get; set; } - - public string School { get; set; } - public string Location { get; set; } - public string Region { get; set; } - - public string MC { get; set; } - public string ResponseDate { get; set; } - public string Notes { get; set; } - - public string Attachment1 { get; set; } - public string Attachment2 { get; set; } - public string Attachment3 { get; set; } - public string Attachment4 { get; set; } - public string Attachment5 { get; set; } - } -} diff --git a/DamageAssesmentApi/DamageAssesment.Api.Responses/Program.cs b/DamageAssesmentApi/DamageAssesment.Api.Responses/Program.cs index 8b25674..1641e75 100644 --- a/DamageAssesmentApi/DamageAssesment.Api.Responses/Program.cs +++ b/DamageAssesmentApi/DamageAssesment.Api.Responses/Program.cs @@ -26,7 +26,6 @@ builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); -builder.Services.AddScoped(); builder.Services.AddHttpClient(). AddTransientHttpErrorPolicy(policy => policy.WaitAndRetryAsync(maxApiCallRetries, _ => TimeSpan.FromSeconds(intervalToRetry))). diff --git a/DamageAssesmentApi/DamageAssesment.Api.Responses/Providers/ExcelExportService.cs b/DamageAssesmentApi/DamageAssesment.Api.Responses/Providers/ExcelExportService.cs deleted file mode 100644 index b354b8d..0000000 --- a/DamageAssesmentApi/DamageAssesment.Api.Responses/Providers/ExcelExportService.cs +++ /dev/null @@ -1,57 +0,0 @@ -using ClosedXML.Excel; -using DamageAssesment.Api.Responses.Interfaces; -using DamageAssesment.Api.Responses.Models; -using OfficeOpenXml; -using System.Collections.Generic; - -namespace DamageAssesment.Api.Responses.Providers -{ - public class ExcelExportService: IExcelExportService - { - public byte[] ExportToExcel(List responses) - { - ExcelPackage.LicenseContext = LicenseContext.NonCommercial; - using (var package = new ExcelPackage()) - { - // Create the first worksheet and populate it with responses - var workSheet1 = package.Workbook.Worksheets.Add("responses"); - PopulateWorksheet(workSheet1, responses); - return package.GetAsByteArray(); - } - } - private void PopulateWorksheet(ExcelWorksheet worksheet, List data) - { - if (data.Count > 0) - { - var properties = data[0].GetType().GetProperties(); - List IsAttchments = new List(); - // Add column headers - for (int col = 1; col <= properties.Length; col++) - { - worksheet.Cells[1, col].Value = properties[col - 1].Name; - if(properties[col - 1].Name.ToLower().Contains("attachment")) - IsAttchments.Add(col); - } - - // Add data - for (int row = 2; row <= data.Count + 1; row++) - { - 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 attachments = value.Split("##").ToList(); - 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; - } - else - worksheet.Cells[row, col].Value = value; - } - } - } - } - } -} diff --git a/DamageAssesmentApi/DamageAssesment.Api.Responses/Providers/SurveyResponsesProvider.cs b/DamageAssesmentApi/DamageAssesment.Api.Responses/Providers/SurveyResponsesProvider.cs index d007578..0c6c817 100644 --- a/DamageAssesmentApi/DamageAssesment.Api.Responses/Providers/SurveyResponsesProvider.cs +++ b/DamageAssesmentApi/DamageAssesment.Api.Responses/Providers/SurveyResponsesProvider.cs @@ -3,9 +3,6 @@ using DamageAssesment.Api.Responses.Db; using DamageAssesment.Api.Responses.Interfaces; using DamageAssesment.Api.Responses.Models; using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Internal; -using System.Reflection; -using System.Text.Json; namespace DamageAssesment.Api.Responses.Providers { @@ -46,6 +43,7 @@ namespace DamageAssesment.Api.Responses.Providers // Create and save SurveyResponse records with references to existing Employee and Location records surveyResponseDbContext.SurveyResponses.Add(new Db.SurveyResponse { SurveyId = 1, EmployeeId = 1, LocationId = 1, ClientDevice = "Mobile", Latitude = 98.8767, Longitute = -129.9897, KeyAnswerResult = "true", CreatedDate = DateTime.Now }); surveyResponseDbContext.SurveyResponses.Add(new Db.SurveyResponse { SurveyId = 1, EmployeeId = 2, LocationId = 2, ClientDevice = "Mobile", Latitude = 98.8767, Longitute = -129.9897, KeyAnswerResult = "true", CreatedDate = DateTime.Now }); + surveyResponseDbContext.SaveChanges(); } } @@ -309,26 +307,6 @@ namespace DamageAssesment.Api.Responses.Providers return (false, null, ex.Message); } } - public async Task<(bool IsSuccess, List surveyResponses, string ErrorMessage)> ExportSurveyResponsesAsync(string language,bool isadmin) - { - try - { - var responses = await getAllSurveyResponsesExcelAsync(language, isadmin); - - if (responses != null) - return (true, responses, "Request Successful."); - else - { - responses = null; - return (true, responses, "Empty object returned"); - } - } - catch (Exception ex) - { - logger?.LogError(ex.ToString()); - return (false, null, ex.Message); - } - } public async Task<(bool IsSuccess, Models.SurveyResponse SurveyResponse, string ErrorMessage)> PostSurveyResponseAsync(Models.SurveyResponse surveyResponse) { @@ -509,7 +487,7 @@ namespace DamageAssesment.Api.Responses.Providers { var employee = await employeeServiceProvider.getEmployeeAsync(surveyResponse.EmployeeId); var answers = await answerServiceProvider.GetAnswersByResponseIdAsync(surveyResponse.Id); - var allQuestions = await questionServiceProvider.getQuestionsAsync(null); + var allQuestions = await questionServiceProvider.getQuestionsAsync(); var questions = allQuestions.Where(s => s.SurveyId == surveyResponse.SurveyId); var attachments = await attachmentServiceProvider.getAttachmentsAsync(); @@ -565,7 +543,7 @@ namespace DamageAssesment.Api.Responses.Providers } var answers = await answerServiceProvider.getAnswersAsync(); - var questions = await questionServiceProvider.getQuestionsAsync(null); + var questions = await questionServiceProvider.getQuestionsAsync(); var surveyQuestions = from q in questions where q.SurveyId == surveyId select q; //var surveyQuestions = await questionServiceProvider.getSurveyQuestionsAsync(surveyId); @@ -671,7 +649,7 @@ namespace DamageAssesment.Api.Responses.Providers var answers = await answerServiceProvider.getAnswersAsync(); - var questions = await questionServiceProvider.getQuestionsAsync(null); + var questions = await questionServiceProvider.getQuestionsAsync(); var attachments = await attachmentServiceProvider.getAttachmentsAsync(); var result = from r in surveyResonses @@ -708,136 +686,7 @@ namespace DamageAssesment.Api.Responses.Providers return null; } } - //Method to get All Survey Responses for excel export - private async Task> getAllSurveyResponsesExcelAsync(string language,bool isadmin) - { - try - { - if (string.IsNullOrEmpty(language)) language = "en"; - List surveyResonses; - surveyResonses = await surveyResponseDbContext.SurveyResponses.ToListAsync(); - var answers = await answerServiceProvider.getAnswersAsync(); - var Locations = await locationServiceProvider.getLocationsAsync(); - var regions = await regionServiceProvider.getRegionsAsync(); - var questions = await questionServiceProvider.getQuestionsAsync(language); - var categories = await questionServiceProvider.GetQuestionCategoriesAsync(language); - var attachments = await attachmentServiceProvider.getAttachmentsAsync(); - List questionLists = new List(); - var allques = from res in surveyResonses - join loc in Locations on res.LocationId equals loc.Id - join reg in regions on loc.RegionId equals reg.Id - join ans in answers on res.Id equals ans.SurveyResponseId - join q in questions on ans.QuestionId equals q.Id - join qc in categories on q.CategoryId equals qc.Id - select new - { - responseId = res.Id, - questionId = q.Id, - QuestionNumber = q.QuestionNumber, - Category = JsonSerializer.Deserialize>(qc.Titles.ToString())[language], - question = q.Text[language], - answerId = ans.Id, - AnswerText = ans.AnswerText, - Comment = ans.Comment, - Location=loc.LocationCode, - school=loc.Name, - Region=reg.Name, - MC=loc.MaintenanceCenter, - ResponseDate=res.CreatedDate, - EmployeeId=res.EmployeeId, - ClientDevice=res.ClientDevice, - Attachments = attachments.Where(a=>a.AnswerId==ans.Id).Select(a=>a.FileName+"##"+a.URI).ToList() - }; - List allresoponses = new List(); - foreach (var item in allques) - { - - List ansattachments=item.Attachments.ToList(); - //// Initialize the attachment dictionary - //var attachmentsobject = new Dictionary(); - //for (int i = 0; i < ansattachments.Count; i++) - //{ - // attachmentsobject["Attachment"+(i+1).ToString()] = ansattachments[i]; - //} - - - string[] variables = new string[5]; - for (int i = 0; i < 5; i++) // Assuming you want to assign 5 values - { - if (i < ansattachments.Count()) - { - variables[i] = ansattachments[i]; - } - else - { - variables[i] = string.Empty; // or null, or any other default value - } - } - - // Now, you can access the values using the variables - string att1 = variables[0],att2 = variables[1],att3 = variables[2],att4 = variables[3],att5 = variables[4]; - object response; - if (isadmin) - { - response = new - { - SurveyQuestion = item.question, - Answer = item.AnswerText, - Category = item.Category, - School = item.school, - Location = item.Location, - Region = item.Region, - MC = item.MC, - ResponseDate = item.ResponseDate.ToString(), - Notes = item.Comment, - Attachment1 = att1, - Attachment2 = att2, - Attachment3 = att3, - Attachment4 = att4, - Attachment5 = att5, - User = item.EmployeeId, - DeviceType = item.ClientDevice, - Reference = item.responseId - }; - // Add the attachment dictionary to the response object - // response = new { response, Attachments = attachments }; - } - else - { - response = new - { - SurveyQuestion = item.question, - Answer = item.AnswerText, - Category = item.Category, - School = item.school, - Location=item.Location, - Region = item.Region, - MC = item.MC, - ResponseDate = item.ResponseDate.ToString(), - Notes = item.Comment, - Attachment1 = att1, - Attachment2 = att2, - Attachment3 = att3, - Attachment4 = att4, - Attachment5 = att5 - }; - - // Add the attachment dictionary to the response object - // response = new { response, Attachments = attachments }; - } - allresoponses.Add(response); - } - return allresoponses; - - - } - catch (Exception ex) - { - logger?.LogError($"Exception Found : {ex.Message} - Ref: SurveyResponsesProvider.getSurveyResponseBySurveyIdAsync()"); - return null; - } - } //Method to get Answers By Maintenance Center by surveyId private async Task getResultsByMaintenanceCenterAsync(int surveyId, int employeeid) @@ -934,7 +783,7 @@ namespace DamageAssesment.Api.Responses.Providers } var answers = await answerServiceProvider.getAnswersAsync(); - var questions = await questionServiceProvider.getQuestionsAsync(null); + var questions = await questionServiceProvider.getQuestionsAsync(); var surveyQuestions = from q in questions where q.SurveyId == surveyId select q; var attachments = await attachmentServiceProvider.getAttachmentsAsync(); diff --git a/DamageAssesmentApi/DamageAssesment.Api.Responses/Services/QuestionServiceProvider.cs b/DamageAssesmentApi/DamageAssesment.Api.Responses/Services/QuestionServiceProvider.cs index bac4fbc..95086b8 100644 --- a/DamageAssesmentApi/DamageAssesment.Api.Responses/Services/QuestionServiceProvider.cs +++ b/DamageAssesmentApi/DamageAssesment.Api.Responses/Services/QuestionServiceProvider.cs @@ -10,12 +10,10 @@ namespace DamageAssesment.Api.Responses.Services { } - public async Task> getQuestionsAsync(string language) + public async Task> getQuestionsAsync() { try { - if (!string.IsNullOrEmpty(language)) - url = url + "/" + language; var responseJsonString = await httpUtil.SendAsync(HttpMethod.Get, url, null); var questions = JsonConvert.DeserializeObject>(responseJsonString); @@ -29,28 +27,7 @@ namespace DamageAssesment.Api.Responses.Services return new List(); } } - public async Task> GetQuestionCategoriesAsync(string? language) - { - try - { - url = urlBase + configuration.GetValue("RessourceSettings:QuestionCategory"); - - if (!string.IsNullOrEmpty(language)) - url = url + "/" + language; - var responseJsonString = await httpUtil.SendAsync(HttpMethod.Get, url, null); - var questions = JsonConvert.DeserializeObject>(responseJsonString); - if (questions == null || !questions.Any()) - return new List(); - else return questions; - } - catch (Exception ex) - { - logger?.LogError($"Exception Found : {ex.Message} - Ref: QuestionServiceProvider.GetQuestionCategoriesAsync()"); - return new List(); - } - } - public async Task> getSurveyQuestionsAsync(int surveyId) { try @@ -60,7 +37,7 @@ namespace DamageAssesment.Api.Responses.Services var questions = JsonConvert.DeserializeObject>(responseJsonString); if (questions == null || !questions.Any()) - return new List(); + return new List() ; else return questions; } catch (Exception ex) diff --git a/DamageAssesmentApi/DamageAssesment.Api.Responses/appsettings.json b/DamageAssesmentApi/DamageAssesment.Api.Responses/appsettings.json index e156d59..8829c0b 100644 --- a/DamageAssesmentApi/DamageAssesment.Api.Responses/appsettings.json +++ b/DamageAssesmentApi/DamageAssesment.Api.Responses/appsettings.json @@ -31,7 +31,6 @@ "EmployeeById": "/employees/{0}", "Question": "/questions", "QuestionById": "/questions/{0}", - "QuestionCategory": "/questions/categories", "SurveyQuestion": "/questions/bysurvey/{0}", "Survey": "/surveys", "SurveyById": "/surveys/{0}", @@ -43,7 +42,7 @@ }, "ConnectionStrings": { //"SurveyResponseConnection": "Server=DESKTOP-OF5DPLQ\\SQLEXPRESS;Database=da_survey_dev;Trusted_Connection=True;TrustServerCertificate=True;" - //"ResponsesConnection": "Server=DESKTOP-OF5DPLQ\\SQLEXPRESS;Database=da_survey_dev;Trusted_Connection=True;TrustServerCertificate=True;" + // "ResponsesConnection": "Server=localhost,1433;Database=da_survey_dev;User Id=sa;Password=Password123;TrustServerCertificate=True;", "ResponsesConnection": "Server=207.180.248.35;Database=da_survey_dev;User Id=sa;Password=YourStrongPassw0rd;TrustServerCertificate=True;" } } diff --git a/DamageAssesmentApi/DamageAssesment.Api.Surveys/Providers/SurveysProvider.cs b/DamageAssesmentApi/DamageAssesment.Api.Surveys/Providers/SurveysProvider.cs index a6a111f..b639131 100644 --- a/DamageAssesmentApi/DamageAssesment.Api.Surveys/Providers/SurveysProvider.cs +++ b/DamageAssesmentApi/DamageAssesment.Api.Surveys/Providers/SurveysProvider.cs @@ -217,10 +217,12 @@ namespace DamageAssesment.Api.Surveys.Providers _survey = mapper.Map(survey); surveyDbContext.Surveys.Update(_survey); await surveyDbContext.SaveChangesAsync(); + List listSurveyTranslation = new List(); + Random random = new Random(); foreach (var title in survey.Titles) { - listSurveyTranslation.Add(new Db.SurveyTranslation { SurveyId = _survey.Id, Language = title.Language, Title = title.Title }); + listSurveyTranslation.Add(new Db.SurveyTranslation { Id = random.Next(), SurveyId = _survey.Id, Language = title.Language, Title = title.Title }); } surveyDbContext.SurveysTranslation.AddRange(listSurveyTranslation); await surveyDbContext.SaveChangesAsync();