143 lines
6.0 KiB
C#
143 lines
6.0 KiB
C#
|
using AutoMapper;
|
|||
|
using Azure;
|
|||
|
using DamageAssesment.Api.DocuLinks.Db;
|
|||
|
using DamageAssesment.Api.DocuLinks.Interfaces;
|
|||
|
using DamageAssesment.Api.DocuLinks.Models;
|
|||
|
using Microsoft.AspNetCore.Http;
|
|||
|
using Microsoft.EntityFrameworkCore.Metadata.Internal;
|
|||
|
using System.Diagnostics.Metrics;
|
|||
|
using System.Net.Http;
|
|||
|
using System.Security.AccessControl;
|
|||
|
using System.Security.Principal;
|
|||
|
|
|||
|
namespace DamageAssesment.Api.DocuLinks.Providers
|
|||
|
{
|
|||
|
public class UploadService : IUploadService
|
|||
|
{
|
|||
|
private ILogger<UploadService> logger;
|
|||
|
private IMapper mapper;
|
|||
|
private string uploadpath = "";
|
|||
|
private string Deletepath = "";
|
|||
|
public UploadService(IConfiguration configuration, ILogger<UploadService> logger, IMapper mapper)
|
|||
|
{
|
|||
|
this.logger = logger;
|
|||
|
this.mapper = mapper;
|
|||
|
uploadpath = configuration.GetValue<string>("Fileupload:folderpath");
|
|||
|
Deletepath = configuration.GetValue<string>("Fileupload:Deletepath");
|
|||
|
}
|
|||
|
|
|||
|
public Models.Doculink UploadDocument(int counter, ReqDoculink documentInfo)
|
|||
|
{
|
|||
|
Models.Doculink Documents = new Models.Doculink();
|
|||
|
List<Models.DoculinkAttachments> attachments = new List<Models.DoculinkAttachments>();
|
|||
|
try
|
|||
|
{
|
|||
|
string path = "", UserfileName="";
|
|||
|
var fullDirectoryPath = Path.Combine(Directory.GetCurrentDirectory(), uploadpath);
|
|||
|
if (!Directory.Exists(fullDirectoryPath)) //Create deirectory if does not exist
|
|||
|
Directory.CreateDirectory(fullDirectoryPath);
|
|||
|
if (documentInfo.Files != null)
|
|||
|
{
|
|||
|
|
|||
|
foreach (var item in documentInfo.Files)
|
|||
|
{
|
|||
|
counter++;
|
|||
|
if (item.IsAttachments)
|
|||
|
{
|
|||
|
UserfileName = Path.GetFileName(item.FileName);
|
|||
|
var fileName = String.Format("Document_{0}{1}", counter, item.FileExtension);
|
|||
|
path = Path.Combine(fullDirectoryPath, fileName);
|
|||
|
File.WriteAllBytes(path, Convert.FromBase64String(item.FileContent));
|
|||
|
}
|
|||
|
else
|
|||
|
path = item.url;
|
|||
|
attachments.Add(new Models.DoculinkAttachments { docName=UserfileName,Path=path,IsAttachments=item.IsAttachments,CustomOrder=item.CustomOrder });
|
|||
|
}
|
|||
|
}
|
|||
|
Documents=new Models.Doculink (){ linkTypeId = documentInfo.linkTypeId,
|
|||
|
documentsTranslations = documentInfo.documentsTranslations,doclinksAttachments=attachments,
|
|||
|
IsDeleted=false,CustomOrder=documentInfo.CustomOrder, IsActive =true};
|
|||
|
|
|||
|
return Documents;
|
|||
|
}
|
|||
|
catch (Exception ex) {
|
|||
|
return new Models.Doculink();
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
public Models.Doculink UpdateDocuments(int counter, Models.Doculink document, ReqDoculink documentInfo)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
foreach (var item in document.doclinksAttachments)
|
|||
|
{
|
|||
|
Movefile(item.Path);
|
|||
|
}
|
|||
|
var fullDirectoryPath = Path.Combine(Directory.GetCurrentDirectory(), uploadpath);
|
|||
|
if (!Directory.Exists(fullDirectoryPath)) //Create deirectory if does not exist
|
|||
|
Directory.CreateDirectory(fullDirectoryPath);
|
|||
|
|
|||
|
string path = "", UserfileName = "";
|
|||
|
List<Models.DoculinkAttachments> attachments = new List<Models.DoculinkAttachments>();
|
|||
|
foreach (var item in documentInfo.Files)
|
|||
|
{
|
|||
|
counter++;
|
|||
|
if (item.IsAttachments)
|
|||
|
{
|
|||
|
UserfileName = Path.GetFileName(item.FileName);
|
|||
|
var fileName = String.Format("Document_{0}{1}", counter, item.FileExtension);
|
|||
|
path = Path.Combine(fullDirectoryPath, fileName);
|
|||
|
File.WriteAllBytes(path, Convert.FromBase64String(item.FileContent));
|
|||
|
}
|
|||
|
else
|
|||
|
path = item.url;
|
|||
|
attachments.Add(new Models.DoculinkAttachments { docName = UserfileName, Path = path,IsAttachments=item.IsAttachments,CustomOrder=item.CustomOrder });
|
|||
|
}
|
|||
|
Models.Doculink Documents = new Models.Doculink()
|
|||
|
{
|
|||
|
Id = documentInfo.Id,
|
|||
|
linkTypeId = documentInfo.linkTypeId,
|
|||
|
documentsTranslations=documentInfo.documentsTranslations,
|
|||
|
IsActive = true,
|
|||
|
IsDeleted=false,
|
|||
|
CustomOrder = documentInfo.CustomOrder,
|
|||
|
doclinksAttachments = attachments
|
|||
|
};
|
|||
|
|
|||
|
return Documents;
|
|||
|
}
|
|||
|
|
|||
|
catch (Exception ex) {
|
|||
|
return new Models.Doculink();
|
|||
|
}
|
|||
|
}
|
|||
|
public void Deletefile(string path)
|
|||
|
{
|
|||
|
if (path != "")
|
|||
|
{
|
|||
|
FileInfo file = new FileInfo(path);
|
|||
|
if (file?.Exists??false)//check file exsit or not
|
|||
|
{
|
|||
|
file.Delete();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
public void Movefile(string path)
|
|||
|
{
|
|||
|
if (path != "")
|
|||
|
{
|
|||
|
var pathToSave = Path.Combine(Directory.GetCurrentDirectory(), Deletepath);
|
|||
|
if (!Directory.Exists(pathToSave)) //Create deirectory if does not exist
|
|||
|
Directory.CreateDirectory(pathToSave);
|
|||
|
FileInfo file = new FileInfo(path);
|
|||
|
if (file?.Exists ?? false)//check file exsit or not
|
|||
|
{
|
|||
|
string filename = file.Name.Replace(file.Extension, " ") + DateTime.Now.ToShortDateString().Replace("/","_") + file.Extension;
|
|||
|
file.MoveTo(pathToSave+"\\"+ filename);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|