forked from MDCPS/DamageAssessment_Backend
		
	attachment and doculinks url changes
This commit is contained in:
		| @ -2,10 +2,12 @@ | ||||
| using DamageAssesment.Api.DocuLinks.Db; | ||||
| using DamageAssesment.Api.DocuLinks.Interfaces; | ||||
| using DamageAssesment.Api.DocuLinks.Models; | ||||
| using Microsoft.AspNetCore.Http; | ||||
| using Microsoft.AspNetCore.Mvc; | ||||
| using Microsoft.EntityFrameworkCore; | ||||
| using Microsoft.EntityFrameworkCore.Metadata.Internal; | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Collections.Immutable; | ||||
| using System.Diagnostics.Eventing.Reader; | ||||
| using System.Reflection.Metadata; | ||||
| @ -23,13 +25,18 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|         private ILogger<DoculinkProvider> logger; | ||||
|         private IUploadService uploadservice; | ||||
|         private IMapper mapper; | ||||
|         private readonly IHttpContextAccessor httpContextAccessor; | ||||
|         private string baseUrl; | ||||
|  | ||||
|         public DoculinkProvider(DoculinkDbContext DocumentDbContext, ILogger<DoculinkProvider> logger, IMapper mapper, IUploadService uploadservice) | ||||
|         public DoculinkProvider(DoculinkDbContext DocumentDbContext, ILogger<DoculinkProvider> logger, IMapper mapper, IUploadService uploadservice, IHttpContextAccessor httpContextAccessor) | ||||
|         { | ||||
|             this.DocumentDbContext = DocumentDbContext; | ||||
|             this.logger = logger; | ||||
|             this.mapper = mapper; | ||||
|             this.uploadservice = uploadservice; | ||||
|             this.httpContextAccessor = httpContextAccessor; | ||||
|             baseUrl = $"{httpContextAccessor.HttpContext.Request.Scheme}://{httpContextAccessor.HttpContext.Request.Host}"; | ||||
|             baseUrl = baseUrl + "/doculinks/download"; | ||||
|             SeedData(); | ||||
|         } | ||||
|  | ||||
| @ -173,15 +180,38 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|         } | ||||
|         private List<Models.DoculinkAttachments> GetDocumentAttachment(int id,string? language) | ||||
|         { | ||||
|             List<Db.DoculinkAttachments> doculinkAttachments = null; | ||||
|             if (string.IsNullOrEmpty(language)) | ||||
|             { | ||||
|                 return  mapper.Map<List<Db.DoculinkAttachments>, List<Models.DoculinkAttachments>>( | ||||
|                     DocumentDbContext.DoclinksAttachments.AsNoTracking().Where(a => a.DocumentId == id).ToList()); | ||||
|                 doculinkAttachments = DocumentDbContext.DoclinksAttachments.AsNoTracking().Where(a => a.DocumentId == id).ToList(); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 return  mapper.Map<List<Db.DoculinkAttachments>, List<Models.DoculinkAttachments>>( | ||||
|                 DocumentDbContext.DoclinksAttachments.AsNoTracking().Where(a => a.DocumentId == id && a.Language == language).ToList()); | ||||
|                 doculinkAttachments = DocumentDbContext.DoclinksAttachments.AsNoTracking().Where(a => a.DocumentId == id && a.Language == language).ToList(); | ||||
|             } | ||||
|             foreach (var attachment in doculinkAttachments) | ||||
|             { | ||||
|                 if (attachment.IsAttachments) | ||||
|                     attachment.Path = $"{baseUrl}/{attachment.Id}"; | ||||
|             } | ||||
|             return mapper.Map<List<Db.DoculinkAttachments>, List<Models.DoculinkAttachments>>(doculinkAttachments); | ||||
|         } | ||||
|         public async Task<(bool IsSuccess, Models.DoculinkAttachments DoculinkAttachments, string Path)> GetDownloadAttachmentAsync(int id) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 Db.DoculinkAttachments Attachment = DocumentDbContext.DoclinksAttachments.AsNoTracking().Where(a => a.Id == id).AsNoTracking().FirstOrDefault(); | ||||
|                 if (Attachment == null) | ||||
|                 { | ||||
|                     return (false, null, "Not Found"); | ||||
|                 } | ||||
|                 return (true, mapper.Map<Db.DoculinkAttachments, Models.DoculinkAttachments>(Attachment), $"Attachment {id}"); | ||||
|             } | ||||
|             catch (Exception ex) | ||||
|             { | ||||
|  | ||||
|                 logger?.LogError(ex.ToString()); | ||||
|                 return (false, null, ex.Message); | ||||
|             } | ||||
|         } | ||||
|         public async Task<(bool IsSuccess, IEnumerable<Models.ResDoculink> documents, string ErrorMessage)> GetdocumentsByLinkTypeIdAsync(int? linkTypeId, string? language, bool? isactive) | ||||
| @ -358,7 +388,7 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|                 result.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(Document.linkTypeId, "")); | ||||
|                 result.titles = multilan.titles; | ||||
|                 result.description = multilan.description; | ||||
|                 result.doclinksAttachments = Document.doclinksAttachments; | ||||
|                 result.doclinksAttachments = GetDocumentAttachment(document.Id,""); | ||||
|                 return (true, result, null); | ||||
|             } | ||||
|             catch (Exception ex) | ||||
| @ -400,7 +430,7 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|                         result.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(document.linkTypeId, "")); | ||||
|                         result.titles = multilan.titles; | ||||
|                         result.description = multilan.description; | ||||
|                         result.doclinksAttachments = Document.doclinksAttachments; | ||||
|                         result.doclinksAttachments = GetDocumentAttachment(document.Id, ""); | ||||
|                         return (true, result, "Successful"); | ||||
|                     } | ||||
|                     else | ||||
| @ -438,7 +468,8 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|                 result.titles = multilan.titles; | ||||
|                 result.description = multilan.description; | ||||
|                 result.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(result.linkTypeId, "")); | ||||
|                 result.doclinksAttachments = GetDocumentAttachment(id, ""); | ||||
|                 result.doclinksAttachments = mapper.Map<List<Db.DoculinkAttachments>, List<Models.DoculinkAttachments>>( | ||||
|                     DocumentDbContext.DoclinksAttachments.AsNoTracking().Where(a => a.DocumentId == id).ToList()); | ||||
|                 Document.IsActive = false; | ||||
|                 DocumentDbContext.Documents.Update(Document); | ||||
|                 DocumentDbContext.SaveChanges(); | ||||
|  | ||||
| @ -25,6 +25,23 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|             uploadpath = configuration.GetValue<string>("Fileupload:folderpath"); | ||||
|             Deletepath = configuration.GetValue<string>("Fileupload:Deletepath"); | ||||
|         } | ||||
|         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 Models.Doculink UploadDocument(int counter, ReqDoculink documentInfo) | ||||
|         { | ||||
| @ -44,7 +61,7 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|                         counter++; | ||||
|                         if (item.IsAttachments) | ||||
|                         { | ||||
|                             UserfileName = Path.GetFileName(item.FileName); | ||||
|                             UserfileName = Path.GetFileName(item.FileName + item.FileExtension); | ||||
|                             var fileName = String.Format("Document_{0}{1}", counter, item.FileExtension); | ||||
|                             path = Path.Combine(fullDirectoryPath, fileName); | ||||
|                             File.WriteAllBytes(path, Convert.FromBase64String(item.FileContent)); | ||||
| @ -85,7 +102,7 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|                     counter++; | ||||
|                     if (item.IsAttachments) | ||||
|                     { | ||||
|                         UserfileName = Path.GetFileName(item.FileName); | ||||
|                         UserfileName = Path.GetFileName(item.FileName+item.FileExtension); | ||||
|                         var fileName = String.Format("Document_{0}{1}", counter, item.FileExtension); | ||||
|                         path = Path.Combine(fullDirectoryPath, fileName); | ||||
|                         File.WriteAllBytes(path, Convert.FromBase64String(item.FileContent)); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user