forked from MDCPS/DamageAssessment_Backend
		
	changed download url format and added new endpoint for doculink isactive update
This commit is contained in:
		| @ -13,11 +13,11 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|         private readonly IDoculinkProvider documentsProvider; | ||||
|         private readonly IUploadService uploadService; | ||||
|  | ||||
|         public DoculinkController(IDoculinkProvider documentsProvider,IUploadService uploadService) | ||||
|         public DoculinkController(IDoculinkProvider documentsProvider, IUploadService uploadService) | ||||
|         { | ||||
|  | ||||
|             this.documentsProvider = documentsProvider; | ||||
|             this.uploadService = uploadService;  | ||||
|             this.uploadService = uploadService; | ||||
|  | ||||
|         } | ||||
|         /// <summary> | ||||
| @ -41,7 +41,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|         [HttpGet] | ||||
|         [Route("doculinks/types/{id}")] | ||||
|         [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); | ||||
|             if (result.IsSuccess) | ||||
| @ -55,11 +55,11 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|         /// </summary> | ||||
|         [HttpPut] | ||||
|         [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) | ||||
|             { | ||||
|                 var result = await this.documentsProvider.UpdateLinkTypeAsync(id,linkType); | ||||
|                 var result = await this.documentsProvider.UpdateLinkTypeAsync(id, linkType); | ||||
|                 if (result.IsSuccess) | ||||
|                 { | ||||
|                     return Ok(result.LinkType); | ||||
| @ -107,24 +107,75 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|         /// download an existing attachment. | ||||
|         /// </summary> | ||||
|         [HttpGet("doculinks/download/{id}")] | ||||
|         public async Task<IActionResult> downloadfile1(int id) | ||||
|         public async Task<IActionResult> downloadfile(int id) | ||||
|         { | ||||
|             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) | ||||
|                 string path = await uploadService.GetFile(result.DoculinkAttachments.Path); | ||||
|                 if (path == null) | ||||
|                     return NotFound(); | ||||
|                 var contentType = "application/octet-stream"; | ||||
|                 return File(fileContent, contentType, result.DoculinkAttachments.docName); | ||||
|                 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. | ||||
| @ -134,7 +185,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|         [Route("doculinks/{linktype:alpha}")] | ||||
|         [Route("doculinks/{linktype:alpha}/{language:alpha}")] | ||||
|         [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); | ||||
|             if (result.IsSuccess) | ||||
| @ -152,7 +203,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|         [HttpGet] | ||||
|         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) | ||||
|             { | ||||
|                 return Ok(result.documents); | ||||
| @ -181,7 +232,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|         [Route("doculinks/{id}")] | ||||
|         [Route("doculinks/{id}/{linktype: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); | ||||
|             if (result.IsSuccess) | ||||
| @ -195,7 +246,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|         /// </summary> | ||||
|         [HttpPut] | ||||
|         [Route("doculinks/{id}")] | ||||
|         public async Task<IActionResult> UpdateDocument(int id,ReqDoculink documentInfo) | ||||
|         public async Task<IActionResult> UpdateDocument(int id, ReqDoculink documentInfo) | ||||
|         { | ||||
|             if (documentInfo != null) | ||||
|             { | ||||
| @ -203,7 +254,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|                 if (dbdoc.IsSuccess) | ||||
|                 { | ||||
|                     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); | ||||
|                     if (result.IsSuccess) | ||||
|                     { | ||||
| @ -216,6 +267,20 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|             return BadRequest(documentInfo); | ||||
|         } | ||||
|         /// <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. | ||||
|         /// </summary> | ||||
|         [HttpPost] | ||||
| @ -227,7 +292,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|                 if (documentInfo != null) | ||||
|                 { | ||||
|                     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); | ||||
|                     if (result.IsSuccess) | ||||
|                     { | ||||
| @ -262,6 +327,6 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|             } | ||||
|             return NotFound(); | ||||
|         } | ||||
|          | ||||
|  | ||||
|     } | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user