forked from MDCPS/DamageAssessment_Backend
		
	Compare commits
	
		
			7 Commits
		
	
	
		
			sql-userac
			...
			local-dock
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 513049287c | |||
| fcc0205175 | |||
| 281a789deb | |||
| fc154274a0 | |||
| 19fac4d810 | |||
| 17cd993a56 | |||
| 6fbe21979f | 
@ -136,6 +136,80 @@ namespace DamageAssesment.Api.Attachments.Controllers
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// download an existing attachment.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        [HttpGet("attachments/download/{id}")]
 | 
				
			||||||
 | 
					        public async Task<IActionResult> downloadfile(int id)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            try
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var result = await this.AttachmentProvider.GetDownloadAttachmentAsync(id);
 | 
				
			||||||
 | 
					                if (!result.IsSuccess)
 | 
				
			||||||
 | 
					                    return NotFound();
 | 
				
			||||||
 | 
					                string path = await UploadService.GetFile(result.Attachment.URI);
 | 
				
			||||||
 | 
					                if (path == null)
 | 
				
			||||||
 | 
					                    return NotFound();
 | 
				
			||||||
 | 
					                var contentType = GetContentType(result.Attachment.FileName);
 | 
				
			||||||
 | 
					                if (contentType == "application/octet-stream")
 | 
				
			||||||
 | 
					                    return PhysicalFile(path, contentType, result.Attachment.FileName);
 | 
				
			||||||
 | 
					                return PhysicalFile(path, contentType, enableRangeProcessing: true);// result.Attachment.FileName);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (Exception ex)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // Handle the exception here or log it
 | 
				
			||||||
 | 
					                return StatusCode(500, "An error occurred: " + ex.Message);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            //try
 | 
				
			||||||
 | 
					            //{
 | 
				
			||||||
 | 
					            //    var result = await this.AttachmentProvider.GetDownloadAttachmentAsync(id);
 | 
				
			||||||
 | 
					            //    if(!result.IsSuccess) 
 | 
				
			||||||
 | 
					            //        return NotFound();
 | 
				
			||||||
 | 
					            //    byte[] fileContent = await UploadService.DownloadFile(result.Attachment.URI);
 | 
				
			||||||
 | 
					            //    if (fileContent == null || fileContent.Length == 0)
 | 
				
			||||||
 | 
					            //        return NotFound();
 | 
				
			||||||
 | 
					            //    var contentType = "application/octet-stream";
 | 
				
			||||||
 | 
					            //    return File(fileContent, contentType, result.Attachment.FileName);
 | 
				
			||||||
 | 
					            //}
 | 
				
			||||||
 | 
					            //catch (Exception ex)
 | 
				
			||||||
 | 
					            //{
 | 
				
			||||||
 | 
					            //    // Handle the exception here or log it
 | 
				
			||||||
 | 
					            //    return StatusCode(500, "An error occurred: " + ex.Message);
 | 
				
			||||||
 | 
					            //}
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private string GetContentType(string fileName)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // You can add more content types based on the file extensions
 | 
				
			||||||
 | 
					            switch (Path.GetExtension(fileName).ToLower())
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                //case ".txt":
 | 
				
			||||||
 | 
					                //    return "text/plain";
 | 
				
			||||||
 | 
					                case ".jpg":
 | 
				
			||||||
 | 
					                case ".jpeg":
 | 
				
			||||||
 | 
					                    return "image/jpeg";
 | 
				
			||||||
 | 
					                case ".png":
 | 
				
			||||||
 | 
					                    return "image/png";
 | 
				
			||||||
 | 
					                case ".gif":
 | 
				
			||||||
 | 
					                    return "image/gif";
 | 
				
			||||||
 | 
					                case ".bmp":
 | 
				
			||||||
 | 
					                    return "image/bmp";
 | 
				
			||||||
 | 
					                case ".webp":
 | 
				
			||||||
 | 
					                    return "image/webp";
 | 
				
			||||||
 | 
					                case ".csv":
 | 
				
			||||||
 | 
					                    return "text/csv";
 | 
				
			||||||
 | 
					                case ".pdf":
 | 
				
			||||||
 | 
					                    return "application/pdf";
 | 
				
			||||||
 | 
					                case ".docx":
 | 
				
			||||||
 | 
					                case ".doc":
 | 
				
			||||||
 | 
					                    return "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
 | 
				
			||||||
 | 
					                case ".xlsx":
 | 
				
			||||||
 | 
					                case ".xls":
 | 
				
			||||||
 | 
					                    return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
 | 
				
			||||||
 | 
					                // Add more cases as needed
 | 
				
			||||||
 | 
					                default:
 | 
				
			||||||
 | 
					                    return "application/octet-stream";
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
        /// Delete an existing attachment.
 | 
					        /// Delete an existing attachment.
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        [HttpDelete("attachments/{id}")]
 | 
					        [HttpDelete("attachments/{id}")]
 | 
				
			||||||
 | 
				
			|||||||
@ -7,6 +7,8 @@ namespace DamageAssesment.Api.Attachments.Interfaces
 | 
				
			|||||||
        List<Models.Attachment> UploadAttachment(int responseId,int answerId, int counter, List<IFormFile> postedFile);
 | 
					        List<Models.Attachment> UploadAttachment(int responseId,int answerId, int counter, List<IFormFile> postedFile);
 | 
				
			||||||
        List<Models.Attachment> UploadAttachment(int responseId, int counter, List<AnswerInfo> answers);
 | 
					        List<Models.Attachment> UploadAttachment(int responseId, int counter, List<AnswerInfo> answers);
 | 
				
			||||||
        public List<Models.Attachment> UpdateAttachments(int responseId, List<AnswerInfo> answers, IEnumerable<Models.Attachment> attachments);
 | 
					        public List<Models.Attachment> UpdateAttachments(int responseId, List<AnswerInfo> answers, IEnumerable<Models.Attachment> attachments);
 | 
				
			||||||
 | 
					        Task<byte[]> DownloadFile(string path);
 | 
				
			||||||
 | 
					        Task<string> GetFile(string path);
 | 
				
			||||||
        void Deletefile(string path);
 | 
					        void Deletefile(string path);
 | 
				
			||||||
        void Movefile(string path);
 | 
					        void Movefile(string path);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -24,6 +24,41 @@ namespace DamageAssesment.Api.Attachments.Providers
 | 
				
			|||||||
            uploadpath = configuration.GetValue<string>("Fileupload:folderpath");
 | 
					            uploadpath = configuration.GetValue<string>("Fileupload:folderpath");
 | 
				
			||||||
            Deletepath = configuration.GetValue<string>("Fileupload:Deletepath");
 | 
					            Deletepath = configuration.GetValue<string>("Fileupload:Deletepath");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        public async Task<string> GetFile(string path)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            try
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (System.IO.File.Exists(path))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    return path;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                return null; // File not found
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (Exception ex)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // Handle or log the exception as needed
 | 
				
			||||||
 | 
					                throw;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public async Task<byte[]> DownloadFile(string path)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            try
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (System.IO.File.Exists(path))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    return await System.IO.File.ReadAllBytesAsync(path);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                return null; // File not found
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (Exception ex)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // Handle or log the exception as needed
 | 
				
			||||||
 | 
					                throw;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        public List<Models.Attachment> UploadAttachment(int responseId,int answerId,int counter, List<IFormFile> postedFile)
 | 
					        public List<Models.Attachment> UploadAttachment(int responseId,int answerId,int counter, List<IFormFile> postedFile)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var pathToSave = Path.Combine(Directory.GetCurrentDirectory(), uploadpath);
 | 
					            var pathToSave = Path.Combine(Directory.GetCurrentDirectory(), uploadpath);
 | 
				
			||||||
 | 
				
			|||||||
@ -197,7 +197,29 @@ namespace DamageAssesment.Api.DocuLinks.Test
 | 
				
			|||||||
            var result = (NotFoundResult)await DocumentProvider.DeleteDocument(1);
 | 
					            var result = (NotFoundResult)await DocumentProvider.DeleteDocument(1);
 | 
				
			||||||
            Assert.Equal(404, result.StatusCode);
 | 
					            Assert.Equal(404, result.StatusCode);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        [Fact(DisplayName = "Update Document IsActive- Ok case")]
 | 
				
			||||||
 | 
					        public async Task UpdateDocumentAsync_ShouldReturnStatusCode200()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var mockDocumentService = new Mock<IDoculinkProvider>();
 | 
				
			||||||
 | 
					            var mockUploadService = new Mock<IUploadService>();
 | 
				
			||||||
 | 
					            var mockResponse = await MockData.getOkResponse(1);
 | 
				
			||||||
 | 
					            mockDocumentService.Setup(service => service.UpdateDocumentAsync(1,true)).ReturnsAsync(mockResponse);
 | 
				
			||||||
 | 
					            var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
 | 
				
			||||||
 | 
					            var result = (OkObjectResult)await DocumentProvider.UpdateIsActiveDocument(1,true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Assert.Equal(200, result.StatusCode);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        [Fact(DisplayName = "Update Document IsActive - NotFound case")]
 | 
				
			||||||
 | 
					        public async Task UpdateDocumentAsync_ShouldReturnStatusCode404()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var mockDocumentService = new Mock<IDoculinkProvider>();
 | 
				
			||||||
 | 
					            var mockUploadService = new Mock<IUploadService>();
 | 
				
			||||||
 | 
					            var mockResponse = await MockData.getNotFoundResponse();
 | 
				
			||||||
 | 
					            mockDocumentService.Setup(service => service.UpdateDocumentAsync(1,true)).ReturnsAsync(mockResponse);
 | 
				
			||||||
 | 
					            var DocumentProvider = new DoculinkController(mockDocumentService.Object, mockUploadService.Object);
 | 
				
			||||||
 | 
					            var result = (NotFoundResult)await DocumentProvider.UpdateIsActiveDocument(1,true);
 | 
				
			||||||
 | 
					            Assert.Equal(404, result.StatusCode);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Link Type Test cases
 | 
					        // Link Type Test cases
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -13,11 +13,11 @@ namespace DamageAssesment.Api.DocuLinks.Controllers
 | 
				
			|||||||
        private readonly IDoculinkProvider documentsProvider;
 | 
					        private readonly IDoculinkProvider documentsProvider;
 | 
				
			||||||
        private readonly IUploadService uploadService;
 | 
					        private readonly IUploadService uploadService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public DoculinkController(IDoculinkProvider documentsProvider,IUploadService uploadService)
 | 
					        public DoculinkController(IDoculinkProvider documentsProvider, IUploadService uploadService)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            this.documentsProvider = documentsProvider;
 | 
					            this.documentsProvider = documentsProvider;
 | 
				
			||||||
            this.uploadService = uploadService; 
 | 
					            this.uploadService = uploadService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
@ -41,7 +41,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers
 | 
				
			|||||||
        [HttpGet]
 | 
					        [HttpGet]
 | 
				
			||||||
        [Route("doculinks/types/{id}")]
 | 
					        [Route("doculinks/types/{id}")]
 | 
				
			||||||
        [Route("doculinks/types/{id}/{language:alpha}")]
 | 
					        [Route("doculinks/types/{id}/{language:alpha}")]
 | 
				
			||||||
        public async Task<IActionResult> GetLinkTypeAsync(int id,string? language)
 | 
					        public async Task<IActionResult> GetLinkTypeAsync(int id, string? language)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var result = await this.documentsProvider.GetLinkTypeAsync(id, language);
 | 
					            var result = await this.documentsProvider.GetLinkTypeAsync(id, language);
 | 
				
			||||||
            if (result.IsSuccess)
 | 
					            if (result.IsSuccess)
 | 
				
			||||||
@ -55,11 +55,11 @@ namespace DamageAssesment.Api.DocuLinks.Controllers
 | 
				
			|||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        [HttpPut]
 | 
					        [HttpPut]
 | 
				
			||||||
        [Route("doculinks/types/{id}")]
 | 
					        [Route("doculinks/types/{id}")]
 | 
				
			||||||
        public async Task<IActionResult> UpdateLinkType(int id,Models.LinkType linkType)
 | 
					        public async Task<IActionResult> UpdateLinkType(int id, Models.LinkType linkType)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (linkType != null)
 | 
					            if (linkType != null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var result = await this.documentsProvider.UpdateLinkTypeAsync(id,linkType);
 | 
					                var result = await this.documentsProvider.UpdateLinkTypeAsync(id, linkType);
 | 
				
			||||||
                if (result.IsSuccess)
 | 
					                if (result.IsSuccess)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    return Ok(result.LinkType);
 | 
					                    return Ok(result.LinkType);
 | 
				
			||||||
@ -104,6 +104,80 @@ namespace DamageAssesment.Api.DocuLinks.Controllers
 | 
				
			|||||||
            return NotFound();
 | 
					            return NotFound();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// download an existing attachment.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        [HttpGet("doculinks/download/{id}")]
 | 
				
			||||||
 | 
					        public async Task<IActionResult> downloadfile(int id)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            try
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var result = await this.documentsProvider.GetDownloadAttachmentAsync(id);
 | 
				
			||||||
 | 
					                if (!result.IsSuccess)
 | 
				
			||||||
 | 
					                    return NotFound();
 | 
				
			||||||
 | 
					                string path = await uploadService.GetFile(result.DoculinkAttachments.Path);
 | 
				
			||||||
 | 
					                if (path == null)
 | 
				
			||||||
 | 
					                    return NotFound();
 | 
				
			||||||
 | 
					                var contentType = GetContentType(result.DoculinkAttachments.docName);
 | 
				
			||||||
 | 
					                if (contentType == "application/octet-stream")
 | 
				
			||||||
 | 
					                    return PhysicalFile(path, contentType, result.DoculinkAttachments.docName);
 | 
				
			||||||
 | 
					                return PhysicalFile(path, contentType, enableRangeProcessing: true);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (Exception ex)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // Handle the exception here or log it
 | 
				
			||||||
 | 
					                return StatusCode(500, "An error occurred: " + ex.Message);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            //try
 | 
				
			||||||
 | 
					            //{
 | 
				
			||||||
 | 
					            //    var result = await this.documentsProvider.GetDownloadAttachmentAsync(id);
 | 
				
			||||||
 | 
					            //    if (!result.IsSuccess)
 | 
				
			||||||
 | 
					            //        return NotFound();
 | 
				
			||||||
 | 
					            //    byte[] fileContent = await uploadService.DownloadFile(result.DoculinkAttachments.Path);
 | 
				
			||||||
 | 
					            //    if (fileContent == null || fileContent.Length == 0)
 | 
				
			||||||
 | 
					            //        return NotFound();
 | 
				
			||||||
 | 
					            //    var contentType = "application/octet-stream";
 | 
				
			||||||
 | 
					            //    return File(fileContent, contentType, result.DoculinkAttachments.docName);
 | 
				
			||||||
 | 
					            //}
 | 
				
			||||||
 | 
					            //catch (Exception ex)
 | 
				
			||||||
 | 
					            //{
 | 
				
			||||||
 | 
					            //    // Handle the exception here or log it
 | 
				
			||||||
 | 
					            //    return StatusCode(500, "An error occurred: " + ex.Message);
 | 
				
			||||||
 | 
					            //}
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        private string GetContentType(string fileName)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            // You can add more content types based on the file extensions
 | 
				
			||||||
 | 
					            switch (Path.GetExtension(fileName).ToLower())
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                //case ".txt":
 | 
				
			||||||
 | 
					                //    return "text/plain";
 | 
				
			||||||
 | 
					                case ".jpg":
 | 
				
			||||||
 | 
					                case ".jpeg":
 | 
				
			||||||
 | 
					                    return "image/jpeg";
 | 
				
			||||||
 | 
					                case ".png":
 | 
				
			||||||
 | 
					                    return "image/png";
 | 
				
			||||||
 | 
					                case ".gif":
 | 
				
			||||||
 | 
					                    return "image/gif";
 | 
				
			||||||
 | 
					                case ".bmp":
 | 
				
			||||||
 | 
					                    return "image/bmp";
 | 
				
			||||||
 | 
					                case ".webp":
 | 
				
			||||||
 | 
					                    return "image/webp";
 | 
				
			||||||
 | 
					                case ".csv":
 | 
				
			||||||
 | 
					                    return "text/csv";
 | 
				
			||||||
 | 
					                case ".pdf":
 | 
				
			||||||
 | 
					                    return "application/pdf";
 | 
				
			||||||
 | 
					                case ".docx":
 | 
				
			||||||
 | 
					                case ".doc":
 | 
				
			||||||
 | 
					                    return "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
 | 
				
			||||||
 | 
					                case ".xlsx":
 | 
				
			||||||
 | 
					                case ".xls":
 | 
				
			||||||
 | 
					                    return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
 | 
				
			||||||
 | 
					                // Add more cases as needed
 | 
				
			||||||
 | 
					                default:
 | 
				
			||||||
 | 
					                    return "application/octet-stream";
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
        /// Get all Doculink.
 | 
					        /// Get all Doculink.
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        /// 
 | 
					        /// 
 | 
				
			||||||
@ -111,7 +185,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers
 | 
				
			|||||||
        [Route("doculinks/{linktype:alpha}")]
 | 
					        [Route("doculinks/{linktype:alpha}")]
 | 
				
			||||||
        [Route("doculinks/{linktype:alpha}/{language:alpha}")]
 | 
					        [Route("doculinks/{linktype:alpha}/{language:alpha}")]
 | 
				
			||||||
        [HttpGet]
 | 
					        [HttpGet]
 | 
				
			||||||
        public async Task<IActionResult> GetDocumentsAsync(string? linktype, string? language,bool? isactive)
 | 
					        public async Task<IActionResult> GetDocumentsAsync(string? linktype, string? language, bool? isactive)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var result = await this.documentsProvider.GetdocumentsByLinkAsync(linktype, language, isactive);
 | 
					            var result = await this.documentsProvider.GetdocumentsByLinkAsync(linktype, language, isactive);
 | 
				
			||||||
            if (result.IsSuccess)
 | 
					            if (result.IsSuccess)
 | 
				
			||||||
@ -129,7 +203,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers
 | 
				
			|||||||
        [HttpGet]
 | 
					        [HttpGet]
 | 
				
			||||||
        public async Task<IActionResult> GetDocumentsByActiveAsync(string? linktype, string? language)
 | 
					        public async Task<IActionResult> GetDocumentsByActiveAsync(string? linktype, string? language)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var result = await this.documentsProvider.GetdocumentsByLinkAsync(linktype, language,true);
 | 
					            var result = await this.documentsProvider.GetdocumentsByLinkAsync(linktype, language, true);
 | 
				
			||||||
            if (result.IsSuccess)
 | 
					            if (result.IsSuccess)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                return Ok(result.documents);
 | 
					                return Ok(result.documents);
 | 
				
			||||||
@ -158,7 +232,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers
 | 
				
			|||||||
        [Route("doculinks/{id}")]
 | 
					        [Route("doculinks/{id}")]
 | 
				
			||||||
        [Route("doculinks/{id}/{linktype:alpha}")]
 | 
					        [Route("doculinks/{id}/{linktype:alpha}")]
 | 
				
			||||||
        [Route("doculinks/{id}/{linktype:alpha}/{language:alpha}")]
 | 
					        [Route("doculinks/{id}/{linktype:alpha}/{language:alpha}")]
 | 
				
			||||||
        public async Task<IActionResult> GetDocumentAsync(int id,string? linktype, string? language)
 | 
					        public async Task<IActionResult> GetDocumentAsync(int id, string? linktype, string? language)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            var result = await this.documentsProvider.GetDocumentAsync(id, linktype, language);
 | 
					            var result = await this.documentsProvider.GetDocumentAsync(id, linktype, language);
 | 
				
			||||||
            if (result.IsSuccess)
 | 
					            if (result.IsSuccess)
 | 
				
			||||||
@ -172,7 +246,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers
 | 
				
			|||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        [HttpPut]
 | 
					        [HttpPut]
 | 
				
			||||||
        [Route("doculinks/{id}")]
 | 
					        [Route("doculinks/{id}")]
 | 
				
			||||||
        public async Task<IActionResult> UpdateDocument(int id,ReqDoculink documentInfo)
 | 
					        public async Task<IActionResult> UpdateDocument(int id, ReqDoculink documentInfo)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            if (documentInfo != null)
 | 
					            if (documentInfo != null)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
@ -180,7 +254,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers
 | 
				
			|||||||
                if (dbdoc.IsSuccess)
 | 
					                if (dbdoc.IsSuccess)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var documents = await this.documentsProvider.GetDocumentCounter();
 | 
					                    var documents = await this.documentsProvider.GetDocumentCounter();
 | 
				
			||||||
                    Models.Doculink DocuLink= uploadService.UpdateDocuments(documents.counter,dbdoc.Document, documentInfo);
 | 
					                    Models.Doculink DocuLink = uploadService.UpdateDocuments(documents.counter, dbdoc.Document, documentInfo);
 | 
				
			||||||
                    var result = await this.documentsProvider.UpdateDocumentAsync(id, DocuLink);
 | 
					                    var result = await this.documentsProvider.UpdateDocumentAsync(id, DocuLink);
 | 
				
			||||||
                    if (result.IsSuccess)
 | 
					                    if (result.IsSuccess)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
@ -193,6 +267,20 @@ namespace DamageAssesment.Api.DocuLinks.Controllers
 | 
				
			|||||||
            return BadRequest(documentInfo);
 | 
					            return BadRequest(documentInfo);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// update existing doclink isactive field.
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        [HttpPut]
 | 
				
			||||||
 | 
					        [Route("doculinks/{id}/{isactive}")]
 | 
				
			||||||
 | 
					        public async Task<IActionResult> UpdateIsActiveDocument(int id, bool isactive)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var result = await this.documentsProvider.UpdateDocumentAsync(id, isactive);
 | 
				
			||||||
 | 
					            if (result.IsSuccess)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                return Ok(result.Document);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return NotFound();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
        /// Create new doclink.
 | 
					        /// Create new doclink.
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
        [HttpPost]
 | 
					        [HttpPost]
 | 
				
			||||||
@ -204,7 +292,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers
 | 
				
			|||||||
                if (documentInfo != null)
 | 
					                if (documentInfo != null)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var documents = await this.documentsProvider.GetDocumentCounter();
 | 
					                    var documents = await this.documentsProvider.GetDocumentCounter();
 | 
				
			||||||
                    Models.Doculink DocuLink= uploadService.UploadDocument(documents.counter, documentInfo);
 | 
					                    Models.Doculink DocuLink = uploadService.UploadDocument(documents.counter, documentInfo);
 | 
				
			||||||
                    var result = await this.documentsProvider.PostDocumentAsync(DocuLink);
 | 
					                    var result = await this.documentsProvider.PostDocumentAsync(DocuLink);
 | 
				
			||||||
                    if (result.IsSuccess)
 | 
					                    if (result.IsSuccess)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
@ -239,6 +327,6 @@ namespace DamageAssesment.Api.DocuLinks.Controllers
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
            return NotFound();
 | 
					            return NotFound();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -11,6 +11,7 @@ namespace DamageAssesment.Api.DocuLinks.Interfaces
 | 
				
			|||||||
        Task<(bool IsSuccess, IEnumerable<Models.ResDoculink> documents, string ErrorMessage)> GetdocumentsByLinkTypeIdAsync(int? linkTypeId, string? language, bool? isactive);
 | 
					        Task<(bool IsSuccess, IEnumerable<Models.ResDoculink> documents, string ErrorMessage)> GetdocumentsByLinkTypeIdAsync(int? linkTypeId, string? language, bool? isactive);
 | 
				
			||||||
        Task<(bool IsSuccess, Models.ResDoculink Document, string ErrorMessage)> PostDocumentAsync(Models.Doculink Document);
 | 
					        Task<(bool IsSuccess, Models.ResDoculink Document, string ErrorMessage)> PostDocumentAsync(Models.Doculink Document);
 | 
				
			||||||
        Task<(bool IsSuccess, Models.ResDoculink Document, string ErrorMessage)> UpdateDocumentAsync(int id, Models.Doculink Document);
 | 
					        Task<(bool IsSuccess, Models.ResDoculink Document, string ErrorMessage)> UpdateDocumentAsync(int id, Models.Doculink Document);
 | 
				
			||||||
 | 
					        Task<(bool IsSuccess, Models.ResDoculink Document, string ErrorMessage)> UpdateDocumentAsync(int id, bool isactive);
 | 
				
			||||||
        Task<(bool IsSuccess, Models.ResDoculink Document, string ErrorMessage)> DeleteDocumentAsync(int id);
 | 
					        Task<(bool IsSuccess, Models.ResDoculink Document, string ErrorMessage)> DeleteDocumentAsync(int id);
 | 
				
			||||||
        Task<(bool IsSuccess, int counter, string message)> GetDocumentCounter();
 | 
					        Task<(bool IsSuccess, int counter, string message)> GetDocumentCounter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -7,6 +7,8 @@ namespace DamageAssesment.Api.DocuLinks.Interfaces
 | 
				
			|||||||
        Models.Doculink UploadDocument( int counter, ReqDoculink documentInfo);
 | 
					        Models.Doculink UploadDocument( int counter, ReqDoculink documentInfo);
 | 
				
			||||||
        public Models.Doculink UpdateDocuments(int counter, Models.Doculink document, ReqDoculink documentInfo);
 | 
					        public Models.Doculink UpdateDocuments(int counter, Models.Doculink document, ReqDoculink documentInfo);
 | 
				
			||||||
        void Deletefile(string path);
 | 
					        void Deletefile(string path);
 | 
				
			||||||
 | 
					        Task<byte[]> DownloadFile(string path);
 | 
				
			||||||
 | 
					        Task<string> GetFile(string path);
 | 
				
			||||||
        void Movefile(string path);
 | 
					        void Movefile(string path);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -7,6 +7,7 @@ namespace DamageAssesment.Api.DocuLinks.Models
 | 
				
			|||||||
        public int Id { get; set; }
 | 
					        public int Id { get; set; }
 | 
				
			||||||
        public int linkTypeId { get; set; }
 | 
					        public int linkTypeId { get; set; }
 | 
				
			||||||
        public List<DoculinkTranslation> documentsTranslations { get; set; }
 | 
					        public List<DoculinkTranslation> documentsTranslations { get; set; }
 | 
				
			||||||
 | 
					        public bool IsActive { get; set; }
 | 
				
			||||||
        public int CustomOrder { get; set; }
 | 
					        public int CustomOrder { get; set; }
 | 
				
			||||||
        public List<FileModel>? Files { get; set; }
 | 
					        public List<FileModel>? Files { get; set; }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -414,6 +414,35 @@ namespace DamageAssesment.Api.DocuLinks.Providers
 | 
				
			|||||||
                return (false, null, ex.Message);
 | 
					                return (false, null, ex.Message);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        public async Task<(bool IsSuccess, Models.ResDoculink Document, string ErrorMessage)> UpdateDocumentAsync(int id,bool isactive)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            try
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Db.Doculink Document = DocumentDbContext.Documents.AsNoTracking().Where(a => a.Id == id).FirstOrDefault();
 | 
				
			||||||
 | 
					                if (Document == null)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    return (false, null, "Not Found");
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                Document.IsActive = isactive;
 | 
				
			||||||
 | 
					                DocumentDbContext.Documents.Update(Document);
 | 
				
			||||||
 | 
					                DocumentDbContext.SaveChanges();
 | 
				
			||||||
 | 
					                var result = mapper.Map<Db.Doculink, Models.ResDoculink>(Document);
 | 
				
			||||||
 | 
					                var multilan = CreateMultiLanguageObject(GetDocumentTranslations(Document.Id, ""));
 | 
				
			||||||
 | 
					                result.titles = multilan.titles;
 | 
				
			||||||
 | 
					                result.description = multilan.description;
 | 
				
			||||||
 | 
					                result.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(result.linkTypeId, ""));
 | 
				
			||||||
 | 
					                result.doclinksAttachments = mapper.Map<List<Db.DoculinkAttachments>, List<Models.DoculinkAttachments>>(
 | 
				
			||||||
 | 
					                    DocumentDbContext.DoclinksAttachments.AsNoTracking().Where(a => a.DocumentId == id).ToList());
 | 
				
			||||||
 | 
					                return (true, result, $"DocumentId {id} deleted Successfuly");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (Exception ex)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                logger?.LogError(ex.ToString());
 | 
				
			||||||
 | 
					                return (false, null, ex.Message);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        public async Task<(bool IsSuccess, Models.ResDoculink Document, string ErrorMessage)> DeleteDocumentAsync(int id)
 | 
					        public async Task<(bool IsSuccess, Models.ResDoculink Document, string ErrorMessage)> DeleteDocumentAsync(int id)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -25,6 +25,32 @@ namespace DamageAssesment.Api.DocuLinks.Providers
 | 
				
			|||||||
            uploadpath = configuration.GetValue<string>("Fileupload:folderpath");
 | 
					            uploadpath = configuration.GetValue<string>("Fileupload:folderpath");
 | 
				
			||||||
            Deletepath = configuration.GetValue<string>("Fileupload:Deletepath");
 | 
					            Deletepath = configuration.GetValue<string>("Fileupload:Deletepath");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        public async Task<string> GetFile(string path)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            try
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (System.IO.File.Exists(path))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    return path;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                return null; // File not found
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (Exception ex)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // Handle or log the exception as needed
 | 
				
			||||||
 | 
					                throw;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public async Task<byte[]> DownloadFile(string path)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            try
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (System.IO.File.Exists(path))
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    return await System.IO.File.ReadAllBytesAsync(path);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public Models.Doculink UploadDocument(int counter, ReqDoculink documentInfo)
 | 
					        public Models.Doculink UploadDocument(int counter, ReqDoculink documentInfo)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@ -56,7 +82,8 @@ namespace DamageAssesment.Api.DocuLinks.Providers
 | 
				
			|||||||
                }
 | 
					                }
 | 
				
			||||||
                Documents=new Models.Doculink (){ linkTypeId = documentInfo.linkTypeId,
 | 
					                Documents=new Models.Doculink (){ linkTypeId = documentInfo.linkTypeId,
 | 
				
			||||||
                    documentsTranslations = documentInfo.documentsTranslations,doclinksAttachments=attachments,
 | 
					                    documentsTranslations = documentInfo.documentsTranslations,doclinksAttachments=attachments,
 | 
				
			||||||
                    IsDeleted=false,CustomOrder=documentInfo.CustomOrder, IsActive =true};
 | 
					                    IsDeleted=false,CustomOrder=documentInfo.CustomOrder, IsActive =documentInfo.IsActive
 | 
				
			||||||
 | 
					                };
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
                return Documents;
 | 
					                return Documents;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@ -99,7 +126,7 @@ namespace DamageAssesment.Api.DocuLinks.Providers
 | 
				
			|||||||
                    Id = documentInfo.Id,
 | 
					                    Id = documentInfo.Id,
 | 
				
			||||||
                    linkTypeId = documentInfo.linkTypeId,
 | 
					                    linkTypeId = documentInfo.linkTypeId,
 | 
				
			||||||
                    documentsTranslations=documentInfo.documentsTranslations,
 | 
					                    documentsTranslations=documentInfo.documentsTranslations,
 | 
				
			||||||
                    IsActive = true,
 | 
					                    IsActive = documentInfo.IsActive,
 | 
				
			||||||
                    IsDeleted=false,
 | 
					                    IsDeleted=false,
 | 
				
			||||||
                    CustomOrder = documentInfo.CustomOrder,
 | 
					                    CustomOrder = documentInfo.CustomOrder,
 | 
				
			||||||
                    doclinksAttachments = attachments
 | 
					                    doclinksAttachments = attachments
 | 
				
			||||||
 | 
				
			|||||||
@ -21,6 +21,10 @@ namespace DamageAssesment.Api.Locations.Db
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        [StringLength(2)]
 | 
					        [StringLength(2)]
 | 
				
			||||||
        public string SchoolType { get; set; }
 | 
					        public string SchoolType { get; set; }
 | 
				
			||||||
 | 
					        public int? DataValue { get; set; }
 | 
				
			||||||
 | 
					        public int? Enrollment { get; set; }
 | 
				
			||||||
 | 
					        public double? Longitute { get; set; }
 | 
				
			||||||
 | 
					        public double? Latitude { get; set; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -11,5 +11,9 @@ namespace DamageAssesment.Api.Locations.Models
 | 
				
			|||||||
        public string Name { get; set; }
 | 
					        public string Name { get; set; }
 | 
				
			||||||
        public string MaintenanceCenter { get; set; }
 | 
					        public string MaintenanceCenter { get; set; }
 | 
				
			||||||
        public string SchoolType { get; set; }
 | 
					        public string SchoolType { get; set; }
 | 
				
			||||||
 | 
					        public int? DataValue { get; set; }
 | 
				
			||||||
 | 
					        public int? Enrollment { get; set; }
 | 
				
			||||||
 | 
					        public double? Longitute { get; set; }
 | 
				
			||||||
 | 
					        public double? Latitude { get; set; }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -17,7 +17,7 @@ namespace DamageAssesment.Api.Locations.Providers
 | 
				
			|||||||
            this.locationDbContext = locationDbContext;
 | 
					            this.locationDbContext = locationDbContext;
 | 
				
			||||||
            this.logger = logger;
 | 
					            this.logger = logger;
 | 
				
			||||||
            this.mapper = mapper;
 | 
					            this.mapper = mapper;
 | 
				
			||||||
          //  SeedData();
 | 
					            //  SeedData();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public async Task<(bool IsSuccess, IEnumerable<Models.Location> Locations, string ErrorMessage)> GetLocationsAsync()
 | 
					        public async Task<(bool IsSuccess, IEnumerable<Models.Location> Locations, string ErrorMessage)> GetLocationsAsync()
 | 
				
			||||||
@ -28,6 +28,8 @@ namespace DamageAssesment.Api.Locations.Providers
 | 
				
			|||||||
                var locations = await locationDbContext.Locations.AsNoTracking().ToListAsync();
 | 
					                var locations = await locationDbContext.Locations.AsNoTracking().ToListAsync();
 | 
				
			||||||
                if (locations != null)
 | 
					                if (locations != null)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
 | 
					                    int maxenrollment = (int)locations.Max(a => a.Enrollment);
 | 
				
			||||||
 | 
					                    foreach (Db.Location item in locations) { item.DataValue = GetHeatmapdata(item.Enrollment, maxenrollment); }
 | 
				
			||||||
                    logger?.LogInformation($"{locations.Count} Locations(s) found");
 | 
					                    logger?.LogInformation($"{locations.Count} Locations(s) found");
 | 
				
			||||||
                    var result = mapper.Map<IEnumerable<Db.Location>, IEnumerable<Models.Location>>(locations);
 | 
					                    var result = mapper.Map<IEnumerable<Db.Location>, IEnumerable<Models.Location>>(locations);
 | 
				
			||||||
                    return (true, result, null);
 | 
					                    return (true, result, null);
 | 
				
			||||||
@ -46,9 +48,12 @@ namespace DamageAssesment.Api.Locations.Providers
 | 
				
			|||||||
            try
 | 
					            try
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                logger?.LogInformation("Query Location");
 | 
					                logger?.LogInformation("Query Location");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                int maxenrollment = (int)await locationDbContext.Locations.AsNoTracking().MaxAsync(a => a.Enrollment);
 | 
				
			||||||
                var location = await locationDbContext.Locations.AsNoTracking().FirstOrDefaultAsync(q => q.Id == Id);
 | 
					                var location = await locationDbContext.Locations.AsNoTracking().FirstOrDefaultAsync(q => q.Id == Id);
 | 
				
			||||||
                if (location != null)
 | 
					                if (location != null)
 | 
				
			||||||
                {
 | 
					                {if(maxenrollment>0)
 | 
				
			||||||
 | 
					                        location.DataValue = GetHeatmapdata(location.Enrollment, maxenrollment);
 | 
				
			||||||
                    logger?.LogInformation($"{location}  found");
 | 
					                    logger?.LogInformation($"{location}  found");
 | 
				
			||||||
                    var result = mapper.Map<Db.Location, Models.Location>(location);
 | 
					                    var result = mapper.Map<Db.Location, Models.Location>(location);
 | 
				
			||||||
                    return (true, result, null);
 | 
					                    return (true, result, null);
 | 
				
			||||||
@ -61,6 +66,10 @@ namespace DamageAssesment.Api.Locations.Providers
 | 
				
			|||||||
                return (false, null, ex.Message);
 | 
					                return (false, null, ex.Message);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        private int GetHeatmapdata(int? enrollment,int maxenrollment)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return (enrollment != null ? enrollment.Value : 0) * 100 / maxenrollment;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        public async Task<(bool IsSuccess, Models.Location Location, string ErrorMessage)> PostLocationAsync(Models.Location location)
 | 
					        public async Task<(bool IsSuccess, Models.Location Location, string ErrorMessage)> PostLocationAsync(Models.Location location)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            try
 | 
					            try
 | 
				
			||||||
@ -139,9 +148,9 @@ namespace DamageAssesment.Api.Locations.Providers
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            if (!locationDbContext.Locations.Any())
 | 
					            if (!locationDbContext.Locations.Any())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                locationDbContext.Locations.Add(new Db.Location() { LocationCode = "0091", RegionId = 5, Name = "BOB GRAHAM EDUCATION CENTER", MaintenanceCenter = "1", SchoolType = "K8" });
 | 
					                locationDbContext.Locations.Add(new Db.Location() { LocationCode = "0091", RegionId = 5, Name = "BOB GRAHAM EDUCATION CENTER", MaintenanceCenter = "1", SchoolType = "K8", DataValue = 25,Enrollment=780,Latitude= 25.83604,Longitute= -80.21618 });
 | 
				
			||||||
                locationDbContext.Locations.Add(new Db.Location() { LocationCode = "0092", RegionId = 1, Name = "NORMAN S. EDELCUP/SUNNY ISLES BEACH K-8", MaintenanceCenter = "1", SchoolType = "K8" });
 | 
					                locationDbContext.Locations.Add(new Db.Location() { LocationCode = "0092", RegionId = 1, Name = "NORMAN S. EDELCUP/SUNNY ISLES BEACH K-8", MaintenanceCenter = "1", SchoolType = "K8", DataValue = 46, Enrollment = 650, Latitude = 20.83604, Longitute = -40.21618 });
 | 
				
			||||||
                locationDbContext.Locations.Add(new Db.Location() { LocationCode = "7511", RegionId = 4, Name = "MIAMI SPRINGS SHS", MaintenanceCenter = "2", SchoolType = "S" });
 | 
					                locationDbContext.Locations.Add(new Db.Location() { LocationCode = "7511", RegionId = 4, Name = "MIAMI SPRINGS SHS", MaintenanceCenter = "2", SchoolType = "S", DataValue = 12, Enrollment = 500, Latitude = 53.83604, Longitute = -60.21618 });
 | 
				
			||||||
                //locationDbContext.Locations.Add(new Db.Location() { Id = 3, LocationCode = "Loc3", RegionId = 3, Name = "BOB GRAHAM EDUCATION CENTER 3", MaintenanceCenter = "1", SchoolType = "US" });
 | 
					                //locationDbContext.Locations.Add(new Db.Location() { Id = 3, LocationCode = "Loc3", RegionId = 3, Name = "BOB GRAHAM EDUCATION CENTER 3", MaintenanceCenter = "1", SchoolType = "US" });
 | 
				
			||||||
                //locationDbContext.Locations.Add(new Db.Location() { Id = 4, LocationCode = "Loc4", RegionId = 1, Name = "BOB GRAHAM EDUCATION CENTER 4", MaintenanceCenter = "1", SchoolType = "US" });
 | 
					                //locationDbContext.Locations.Add(new Db.Location() { Id = 4, LocationCode = "Loc4", RegionId = 1, Name = "BOB GRAHAM EDUCATION CENTER 4", MaintenanceCenter = "1", SchoolType = "US" });
 | 
				
			||||||
                //locationDbContext.Locations.Add(new Db.Location() { Id = 5, LocationCode = "Loc5", RegionId = 2, Name = "BOB GRAHAM EDUCATION CENTER 5", MaintenanceCenter = "1", SchoolType = "US" });
 | 
					                //locationDbContext.Locations.Add(new Db.Location() { Id = 5, LocationCode = "Loc5", RegionId = 2, Name = "BOB GRAHAM EDUCATION CENTER 5", MaintenanceCenter = "1", SchoolType = "US" });
 | 
				
			||||||
 | 
				
			|||||||
@ -89,6 +89,26 @@ namespace DamageAssesment.Api.Questions.Controllers
 | 
				
			|||||||
            return CreatedAtRoute("DefaultApi", new { id = question.Id }, question);
 | 
					            return CreatedAtRoute("DefaultApi", new { id = question.Id }, question);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        /// <summary>
 | 
					        /// <summary>
 | 
				
			||||||
 | 
					        /// POST request for creating a multiple question (multilingual).
 | 
				
			||||||
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					        [HttpPost("questions/multiple")]
 | 
				
			||||||
 | 
					        public async Task<IActionResult> CreateQuestions(List<Models.Question> questions)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (questions != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var result = await this.questionsProvider.PostQuestionsAsync(questions);
 | 
				
			||||||
 | 
					                if (result.IsSuccess)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    return Ok(result.Question);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (result.ErrorMessage == "Not Found")
 | 
				
			||||||
 | 
					                    return NotFound(result.ErrorMessage);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                return BadRequest(result.ErrorMessage);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            return CreatedAtRoute("DefaultApi",questions);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        /// <summary>
 | 
				
			||||||
        /// POST request for creating a new question (multilingual).
 | 
					        /// POST request for creating a new question (multilingual).
 | 
				
			||||||
        /// </summary>
 | 
					        /// </summary>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -8,6 +8,7 @@ namespace DamageAssesment.Api.Questions.Interfaces
 | 
				
			|||||||
        Task<(bool IsSuccess, IEnumerable<Models.MultiLanguage> Questions, string ErrorMessage)> GetQuestionsAsync(string language);
 | 
					        Task<(bool IsSuccess, IEnumerable<Models.MultiLanguage> Questions, string ErrorMessage)> GetQuestionsAsync(string language);
 | 
				
			||||||
        Task<(bool IsSuccess, List<SurveyQuestions> SurveyQuestions, string ErrorMessage)> GetSurveyQuestionAsync(int surveyId,string language);
 | 
					        Task<(bool IsSuccess, List<SurveyQuestions> SurveyQuestions, string ErrorMessage)> GetSurveyQuestionAsync(int surveyId,string language);
 | 
				
			||||||
        Task<(bool IsSuccess, Models.MultiLanguage Question, string ErrorMessage)> PostQuestionAsync(Models.Question Question);
 | 
					        Task<(bool IsSuccess, Models.MultiLanguage Question, string ErrorMessage)> PostQuestionAsync(Models.Question Question);
 | 
				
			||||||
 | 
					        Task<(bool IsSuccess, IEnumerable<Models.MultiLanguage> Question, string ErrorMessage)> PostQuestionsAsync(List<Models.Question> Questions);
 | 
				
			||||||
        Task<(bool IsSuccess, Models.MultiLanguage Question, string ErrorMessage)> UpdateQuestionAsync(Models.Question Question);
 | 
					        Task<(bool IsSuccess, Models.MultiLanguage Question, string ErrorMessage)> UpdateQuestionAsync(Models.Question Question);
 | 
				
			||||||
        Task<(bool IsSuccess, Models.MultiLanguage Question, string ErrorMessage)> DeleteQuestionAsync(int id);
 | 
					        Task<(bool IsSuccess, Models.MultiLanguage Question, string ErrorMessage)> DeleteQuestionAsync(int id);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -334,16 +334,7 @@ namespace DamageAssesment.Api.Questions.Providers
 | 
				
			|||||||
            try
 | 
					            try
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                logger?.LogInformation("Query Question");
 | 
					                logger?.LogInformation("Query Question");
 | 
				
			||||||
                var dbquestion = mapper.Map<Models.Question, Db.Question>(Question);
 | 
					                var result = InsertQuestion(Question);
 | 
				
			||||||
                var dbquestiontranslation = mapper.Map<List<Models.QuestionsTranslation>, List<Db.QuestionsTranslation>>(Question.Questions);
 | 
					 | 
				
			||||||
                dbquestion.QuestionTypeId = questionDbContext.QuestionTypes.Where(a => a.TypeText == Question.TypeText).Select(a => a.Id).FirstOrDefault();
 | 
					 | 
				
			||||||
                questionDbContext.Questions.Add(dbquestion);
 | 
					 | 
				
			||||||
                dbquestiontranslation.ForEach(i => i.QuestionId = dbquestion.Id);
 | 
					 | 
				
			||||||
                questionDbContext.QuestionsTranslations.AddRange(dbquestiontranslation);
 | 
					 | 
				
			||||||
                questionDbContext.SaveChanges();
 | 
					 | 
				
			||||||
                Question.Id = dbquestion.Id;
 | 
					 | 
				
			||||||
                var result = mapper.Map<Db.Question, Models.MultiLanguage>(dbquestion);
 | 
					 | 
				
			||||||
                result.Text = CreateMultiLanguageObject(GetQuestionsTranslations(result.Id,""));
 | 
					 | 
				
			||||||
                return (true, result, null);
 | 
					                return (true, result, null);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            catch (Exception ex)
 | 
					            catch (Exception ex)
 | 
				
			||||||
@ -352,6 +343,39 @@ namespace DamageAssesment.Api.Questions.Providers
 | 
				
			|||||||
                return (false, null, ex.Message);
 | 
					                return (false, null, ex.Message);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        private Models.MultiLanguage InsertQuestion(Models.Question Question)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var dbquestion = mapper.Map<Models.Question, Db.Question>(Question);
 | 
				
			||||||
 | 
					            var dbquestiontranslation = mapper.Map<List<Models.QuestionsTranslation>, List<Db.QuestionsTranslation>>(Question.Questions);
 | 
				
			||||||
 | 
					            dbquestion.QuestionTypeId = questionDbContext.QuestionTypes.Where(a => a.TypeText == Question.TypeText).Select(a => a.Id).FirstOrDefault();
 | 
				
			||||||
 | 
					            questionDbContext.Questions.Add(dbquestion);
 | 
				
			||||||
 | 
					            questionDbContext.SaveChanges();
 | 
				
			||||||
 | 
					            dbquestiontranslation.ForEach(i => i.QuestionId = dbquestion.Id);
 | 
				
			||||||
 | 
					            questionDbContext.QuestionsTranslations.AddRange(dbquestiontranslation);
 | 
				
			||||||
 | 
					            questionDbContext.SaveChanges();
 | 
				
			||||||
 | 
					            Question.Id = dbquestion.Id;
 | 
				
			||||||
 | 
					            var result = mapper.Map<Db.Question, Models.MultiLanguage>(dbquestion);
 | 
				
			||||||
 | 
					            result.Text = CreateMultiLanguageObject(GetQuestionsTranslations(result.Id, ""));
 | 
				
			||||||
 | 
					            return result;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        public async Task<(bool IsSuccess, IEnumerable<Models.MultiLanguage> Question, string ErrorMessage)> PostQuestionsAsync(List<Models.Question> Questions)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            try
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                List<Models.MultiLanguage> results = new List<MultiLanguage>();
 | 
				
			||||||
 | 
					               logger?.LogInformation("Query Question");
 | 
				
			||||||
 | 
					                foreach (Models.Question Question in Questions)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    results.Add(InsertQuestion(Question));
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                return (true, results, null);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (Exception ex)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                logger?.LogError(ex.ToString());
 | 
				
			||||||
 | 
					                return (false, null, ex.Message);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        public async Task<(bool IsSuccess, Models.MultiLanguage Question, string ErrorMessage)> UpdateQuestionAsync(Models.Question Question)
 | 
					        public async Task<(bool IsSuccess, Models.MultiLanguage Question, string ErrorMessage)> UpdateQuestionAsync(Models.Question Question)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            try
 | 
					            try
 | 
				
			||||||
 | 
				
			|||||||
@ -75,8 +75,19 @@ namespace DamageAssesment.Api.Questions.Test
 | 
				
			|||||||
            return new Questions.Models.Question { Id = 1, Questions=QuestionsTranslations, TypeText = "Text 1", SurveyId = 1, QuestionNumber = 1, IsRequired = true, Comment = false, Key = true, CategoryId=1};
 | 
					            return new Questions.Models.Question { Id = 1, Questions=QuestionsTranslations, TypeText = "Text 1", SurveyId = 1, QuestionNumber = 1, IsRequired = true, Comment = false, Key = true, CategoryId=1};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        public static async Task<List<Questions.Models.Question>> getInputQuestionsData()
 | 
				
			||||||
   
 | 
					        {
 | 
				
			||||||
 | 
					            Models.QuestionsTranslation QuestionsTranslation = new Models.QuestionsTranslation()
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Language = "en",
 | 
				
			||||||
 | 
					                QuestionText = "Sample question"
 | 
				
			||||||
 | 
					            };
 | 
				
			||||||
 | 
					            List<Models.QuestionsTranslation> QuestionsTranslations = new List<Models.QuestionsTranslation>();
 | 
				
			||||||
 | 
					            List<Models.Question> Questions = new List<Models.Question>();
 | 
				
			||||||
 | 
					            QuestionsTranslations.Add(QuestionsTranslation);
 | 
				
			||||||
 | 
					            Questions.Models.Question question = new Questions.Models.Question() { Id = 1, Questions = QuestionsTranslations, TypeText = "Text 1", SurveyId = 1, QuestionNumber = 1, IsRequired = true, Comment = false, Key = true, CategoryId = 1 };
 | 
				
			||||||
 | 
					              Questions.Add(question);
 | 
				
			||||||
 | 
					            return Questions;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -110,6 +110,33 @@ namespace DamageAssesment.Api.Questions.Test
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            Assert.Equal(400, result.StatusCode);
 | 
					            Assert.Equal(400, result.StatusCode);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        [Fact(DisplayName = "Post Questions - Ok case")]
 | 
				
			||||||
 | 
					        public async Task PostQuestionsAsync_ShouldReturnStatusCode200()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var mockQuestionService = new Mock<IQuestionsProvider>();
 | 
				
			||||||
 | 
					            var mockResponse = await MockData.getOkResponse();
 | 
				
			||||||
 | 
					            var mockInputQuestion = await MockData.getInputQuestionsData();
 | 
				
			||||||
 | 
					            mockQuestionService.Setup(service => service.PostQuestionsAsync(mockInputQuestion)).ReturnsAsync(mockResponse);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var QuestionProvider = new QuestionsController(mockQuestionService.Object);
 | 
				
			||||||
 | 
					            var result = (OkObjectResult)await QuestionProvider.CreateQuestions(mockInputQuestion);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Assert.Equal(200, result.StatusCode);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [Fact(DisplayName = "Post Questions - BadRequest case")]
 | 
				
			||||||
 | 
					        public async Task PostQuestionsAsync_ShouldReturnStatusCode400()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var mockQuestionService = new Mock<IQuestionsProvider>();
 | 
				
			||||||
 | 
					            var mockInputQuestion = await MockData.getInputQuestionData();
 | 
				
			||||||
 | 
					            var mockResponse = await MockData.getBadRequestResponse();
 | 
				
			||||||
 | 
					            mockQuestionService.Setup(service => service.UpdateQuestionAsync(mockInputQuestion)).ReturnsAsync(mockResponse);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var QuestionProvider = new QuestionsController(mockQuestionService.Object);
 | 
				
			||||||
 | 
					            var result = (BadRequestObjectResult)await QuestionProvider.UpdateQuestion(mockInputQuestion);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Assert.Equal(400, result.StatusCode);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Fact(DisplayName = "Put Question - Ok case")]
 | 
					        [Fact(DisplayName = "Put Question - Ok case")]
 | 
				
			||||||
        public async Task PutQuestionAsync_ShouldReturnStatusCode200()
 | 
					        public async Task PutQuestionAsync_ShouldReturnStatusCode200()
 | 
				
			||||||
 | 
				
			|||||||
@ -8,5 +8,9 @@
 | 
				
			|||||||
        public string Name { get; set; }
 | 
					        public string Name { get; set; }
 | 
				
			||||||
        public string MaintenanceCenter { get; set; }
 | 
					        public string MaintenanceCenter { get; set; }
 | 
				
			||||||
        public string SchoolType { get; set; }
 | 
					        public string SchoolType { get; set; }
 | 
				
			||||||
 | 
					        public int? DataValue { get; set; }
 | 
				
			||||||
 | 
					        public int? Enrollment { get; set; }
 | 
				
			||||||
 | 
					        public double? Longitute { get; set; }
 | 
				
			||||||
 | 
					        public double? Latitude { get; set; }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -512,17 +512,19 @@ namespace DamageAssesment.Api.Responses.Providers
 | 
				
			|||||||
                var allQuestions = await questionServiceProvider.getQuestionsAsync(null);
 | 
					                var allQuestions = await questionServiceProvider.getQuestionsAsync(null);
 | 
				
			||||||
                var questions = allQuestions.Where(s => s.SurveyId == surveyResponse.SurveyId);
 | 
					                var questions = allQuestions.Where(s => s.SurveyId == surveyResponse.SurveyId);
 | 
				
			||||||
                var attachments = await attachmentServiceProvider.getAttachmentsAsync();
 | 
					                var attachments = await attachmentServiceProvider.getAttachmentsAsync();
 | 
				
			||||||
 | 
					                var Locations = await locationServiceProvider.getLocationsAsync();
 | 
				
			||||||
                var result = new
 | 
					                var location = Locations.Where(a => a.Id == surveyResponse.LocationId).FirstOrDefault();
 | 
				
			||||||
                {
 | 
					                var result = new{
 | 
				
			||||||
                    surveyResponse.Id,
 | 
					                    surveyResponse.Id,
 | 
				
			||||||
                    surveyResponse.SurveyId,
 | 
					                    surveyResponse.SurveyId,
 | 
				
			||||||
                    surveyResponse.LocationId,
 | 
					                    surveyResponse.LocationId,
 | 
				
			||||||
                    surveyResponse.EmployeeId,
 | 
					                    surveyResponse.EmployeeId,
 | 
				
			||||||
                    surveyResponse.ClientDevice,
 | 
					                    surveyResponse.ClientDevice,
 | 
				
			||||||
                    surveyResponse.KeyAnswerResult,
 | 
					                    surveyResponse.KeyAnswerResult,
 | 
				
			||||||
                    surveyResponse.Longitute,
 | 
					                    DataValue=(location!=null?location.DataValue:0),
 | 
				
			||||||
                    surveyResponse.Latitude,
 | 
					                    Enrollment= (location != null ? location.Enrollment : 0),
 | 
				
			||||||
 | 
					                    Longitute = (location != null ? location.Longitute : surveyResponse.Longitute),
 | 
				
			||||||
 | 
					                    Latitude=(location != null ? location.Latitude : surveyResponse.Latitude),
 | 
				
			||||||
                    Employee = employee,
 | 
					                    Employee = employee,
 | 
				
			||||||
                    answers = from ans in answers
 | 
					                    answers = from ans in answers
 | 
				
			||||||
                              select new
 | 
					                              select new
 | 
				
			||||||
@ -566,6 +568,7 @@ namespace DamageAssesment.Api.Responses.Providers
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                var answers = await answerServiceProvider.getAnswersAsync();
 | 
					                var answers = await answerServiceProvider.getAnswersAsync();
 | 
				
			||||||
                var questions = await questionServiceProvider.getQuestionsAsync(null);
 | 
					                var questions = await questionServiceProvider.getQuestionsAsync(null);
 | 
				
			||||||
 | 
					                var Locations = await locationServiceProvider.getLocationsAsync();
 | 
				
			||||||
                var surveyQuestions = from q in questions where q.SurveyId == surveyId select q;
 | 
					                var surveyQuestions = from q in questions where q.SurveyId == surveyId select q;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                //var surveyQuestions = await questionServiceProvider.getSurveyQuestionsAsync(surveyId);
 | 
					                //var surveyQuestions = await questionServiceProvider.getSurveyQuestionsAsync(surveyId);
 | 
				
			||||||
@ -575,6 +578,7 @@ namespace DamageAssesment.Api.Responses.Providers
 | 
				
			|||||||
                if (employeeid == 0)
 | 
					                if (employeeid == 0)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var result = from r in surveyResonses
 | 
					                    var result = from r in surveyResonses
 | 
				
			||||||
 | 
					                                 join loc in Locations on r.LocationId equals loc.Id
 | 
				
			||||||
                                 select new
 | 
					                                 select new
 | 
				
			||||||
                                 {
 | 
					                                 {
 | 
				
			||||||
                                     r.Id,
 | 
					                                     r.Id,
 | 
				
			||||||
@ -583,8 +587,10 @@ namespace DamageAssesment.Api.Responses.Providers
 | 
				
			|||||||
                                     r.EmployeeId,
 | 
					                                     r.EmployeeId,
 | 
				
			||||||
                                     r.ClientDevice,
 | 
					                                     r.ClientDevice,
 | 
				
			||||||
                                     r.KeyAnswerResult,
 | 
					                                     r.KeyAnswerResult,
 | 
				
			||||||
                                     r.Longitute,
 | 
					                                     loc.DataValue,
 | 
				
			||||||
                                     r.Latitude,
 | 
					                                     loc.Enrollment,
 | 
				
			||||||
 | 
					                                     loc.Longitute,
 | 
				
			||||||
 | 
					                                     loc.Latitude,
 | 
				
			||||||
                                     Employee = (from e in employees where e.Id == r.EmployeeId select new { e.Id, e.Name, e.BirthDate, e.Email, e.OfficePhoneNumber }).SingleOrDefault(),
 | 
					                                     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
 | 
					                                     answers = from ans in answers
 | 
				
			||||||
                                               where ans.SurveyResponseId == r.Id
 | 
					                                               where ans.SurveyResponseId == r.Id
 | 
				
			||||||
@ -609,6 +615,7 @@ namespace DamageAssesment.Api.Responses.Providers
 | 
				
			|||||||
                        _employee = new { employee.Id, employee.Name, employee.BirthDate, employee.Email, employee.OfficePhoneNumber };
 | 
					                        _employee = new { employee.Id, employee.Name, employee.BirthDate, employee.Email, employee.OfficePhoneNumber };
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    var result = from r in surveyResonses
 | 
					                    var result = from r in surveyResonses
 | 
				
			||||||
 | 
					                                 join loc in Locations on r.LocationId equals loc.Id
 | 
				
			||||||
                                 select new
 | 
					                                 select new
 | 
				
			||||||
                                 {
 | 
					                                 {
 | 
				
			||||||
                                     r.Id,
 | 
					                                     r.Id,
 | 
				
			||||||
@ -617,8 +624,10 @@ namespace DamageAssesment.Api.Responses.Providers
 | 
				
			|||||||
                                     r.EmployeeId,
 | 
					                                     r.EmployeeId,
 | 
				
			||||||
                                     r.ClientDevice,
 | 
					                                     r.ClientDevice,
 | 
				
			||||||
                                     r.KeyAnswerResult,
 | 
					                                     r.KeyAnswerResult,
 | 
				
			||||||
                                     r.Longitute,
 | 
					                                     loc.DataValue,
 | 
				
			||||||
                                     r.Latitude,
 | 
					                                     loc.Enrollment,
 | 
				
			||||||
 | 
					                                     loc.Longitute,
 | 
				
			||||||
 | 
					                                     loc.Latitude,
 | 
				
			||||||
                                     Employee = _employee,
 | 
					                                     Employee = _employee,
 | 
				
			||||||
                                     answers = from ans in answers
 | 
					                                     answers = from ans in answers
 | 
				
			||||||
                                               where ans.SurveyResponseId == r.Id
 | 
					                                               where ans.SurveyResponseId == r.Id
 | 
				
			||||||
@ -674,7 +683,9 @@ namespace DamageAssesment.Api.Responses.Providers
 | 
				
			|||||||
                var questions = await questionServiceProvider.getQuestionsAsync(null);
 | 
					                var questions = await questionServiceProvider.getQuestionsAsync(null);
 | 
				
			||||||
                var attachments = await attachmentServiceProvider.getAttachmentsAsync();
 | 
					                var attachments = await attachmentServiceProvider.getAttachmentsAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var Locations = await locationServiceProvider.getLocationsAsync();
 | 
				
			||||||
                var result = from r in surveyResonses
 | 
					                var result = from r in surveyResonses
 | 
				
			||||||
 | 
					                             join loc in Locations on r.LocationId equals loc.Id
 | 
				
			||||||
                             select new
 | 
					                             select new
 | 
				
			||||||
                             {
 | 
					                             {
 | 
				
			||||||
                                 r.Id,
 | 
					                                 r.Id,
 | 
				
			||||||
@ -683,8 +694,10 @@ namespace DamageAssesment.Api.Responses.Providers
 | 
				
			|||||||
                                 r.EmployeeId,
 | 
					                                 r.EmployeeId,
 | 
				
			||||||
                                 r.ClientDevice,
 | 
					                                 r.ClientDevice,
 | 
				
			||||||
                                 r.KeyAnswerResult,
 | 
					                                 r.KeyAnswerResult,
 | 
				
			||||||
                                 r.Longitute,
 | 
					                                 loc.DataValue,
 | 
				
			||||||
                                 r.Latitude,
 | 
					                                 loc.Enrollment,
 | 
				
			||||||
 | 
					                                 loc.Longitute,
 | 
				
			||||||
 | 
					                                 loc.Latitude,
 | 
				
			||||||
                                 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(),
 | 
					                                 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
 | 
					                                 answers = from ans in answers
 | 
				
			||||||
                                           where ans.SurveyResponseId == r.Id
 | 
					                                           where ans.SurveyResponseId == r.Id
 | 
				
			||||||
@ -938,7 +951,9 @@ namespace DamageAssesment.Api.Responses.Providers
 | 
				
			|||||||
                var surveyQuestions = from q in questions where q.SurveyId == surveyId select q;
 | 
					                var surveyQuestions = from q in questions where q.SurveyId == surveyId select q;
 | 
				
			||||||
                var attachments = await attachmentServiceProvider.getAttachmentsAsync();
 | 
					                var attachments = await attachmentServiceProvider.getAttachmentsAsync();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var Locations = await locationServiceProvider.getLocationsAsync();
 | 
				
			||||||
                var result = from r in surveyResonses
 | 
					                var result = from r in surveyResonses
 | 
				
			||||||
 | 
					                             join loc in Locations on r.LocationId equals loc.Id
 | 
				
			||||||
                             select new
 | 
					                             select new
 | 
				
			||||||
                             {
 | 
					                             {
 | 
				
			||||||
                                 r.Id,
 | 
					                                 r.Id,
 | 
				
			||||||
@ -947,8 +962,10 @@ namespace DamageAssesment.Api.Responses.Providers
 | 
				
			|||||||
                                 r.EmployeeId,
 | 
					                                 r.EmployeeId,
 | 
				
			||||||
                                 r.ClientDevice,
 | 
					                                 r.ClientDevice,
 | 
				
			||||||
                                 r.KeyAnswerResult,
 | 
					                                 r.KeyAnswerResult,
 | 
				
			||||||
                                 r.Longitute,
 | 
					                                 loc.DataValue,
 | 
				
			||||||
                                 r.Latitude,
 | 
					                                 loc.Enrollment,
 | 
				
			||||||
 | 
					                                 loc.Longitute,
 | 
				
			||||||
 | 
					                                 loc.Latitude,
 | 
				
			||||||
                                 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(),
 | 
					                                 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
 | 
					                                 answers = from ans in answers
 | 
				
			||||||
                                           where ans.SurveyResponseId == r.Id
 | 
					                                           where ans.SurveyResponseId == r.Id
 | 
				
			||||||
@ -1004,8 +1021,9 @@ namespace DamageAssesment.Api.Responses.Providers
 | 
				
			|||||||
                // var employees = await employeeServiceProvider.getEmployeesAsync();
 | 
					                // var employees = await employeeServiceProvider.getEmployeesAsync();
 | 
				
			||||||
                var answers = await answerServiceProvider.getAnswersAsync();
 | 
					                var answers = await answerServiceProvider.getAnswersAsync();
 | 
				
			||||||
                var attachments = await attachmentServiceProvider.getAttachmentsAsync();
 | 
					                var attachments = await attachmentServiceProvider.getAttachmentsAsync();
 | 
				
			||||||
 | 
					                var Locations = await locationServiceProvider.getLocationsAsync();
 | 
				
			||||||
                var result = from r in surveyResponses
 | 
					                var result = from r in surveyResponses
 | 
				
			||||||
 | 
					                             join loc in Locations on r.LocationId equals loc.Id
 | 
				
			||||||
                             select new
 | 
					                             select new
 | 
				
			||||||
                             {
 | 
					                             {
 | 
				
			||||||
                                 r.Id,
 | 
					                                 r.Id,
 | 
				
			||||||
@ -1014,8 +1032,10 @@ namespace DamageAssesment.Api.Responses.Providers
 | 
				
			|||||||
                                 r.EmployeeId,
 | 
					                                 r.EmployeeId,
 | 
				
			||||||
                                 r.ClientDevice,
 | 
					                                 r.ClientDevice,
 | 
				
			||||||
                                 r.KeyAnswerResult,
 | 
					                                 r.KeyAnswerResult,
 | 
				
			||||||
                                 r.Longitute,
 | 
					                                 loc.DataValue,
 | 
				
			||||||
                                 r.Latitude,
 | 
					                                 loc.Enrollment,
 | 
				
			||||||
 | 
					                                 loc.Longitute,
 | 
				
			||||||
 | 
					                                 loc.Latitude,
 | 
				
			||||||
                                 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(),
 | 
					                                 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
 | 
					                                 answers = from ans in answers
 | 
				
			||||||
                                           where ans.SurveyResponseId == r.Id
 | 
					                                           where ans.SurveyResponseId == r.Id
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user