forked from MDCPS/DamageAssessment_Backend
		
	merged azure and user access changes to docker azure branch
This commit is contained in:
		| @ -2,6 +2,7 @@ | ||||
| using DamageAssesment.Api.DocuLinks.Interfaces; | ||||
| using DamageAssesment.Api.DocuLinks.Models; | ||||
| using DamageAssesment.Api.DocuLinks.Providers; | ||||
| using Microsoft.AspNetCore.Authorization; | ||||
| using Microsoft.AspNetCore.Http; | ||||
| using Microsoft.AspNetCore.Mvc; | ||||
|  | ||||
| @ -12,18 +13,20 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|     { | ||||
|         private readonly IDoculinkProvider documentsProvider; | ||||
|         private readonly IUploadService uploadService; | ||||
|         private readonly IAzureBlobService azureBlobService; | ||||
|  | ||||
|         public DoculinkController(IDoculinkProvider documentsProvider,IUploadService uploadService) | ||||
|         public DoculinkController(IDoculinkProvider documentsProvider, IAzureBlobService azureBlobService) | ||||
|         { | ||||
|  | ||||
|             this.documentsProvider = documentsProvider; | ||||
|             this.uploadService = uploadService;  | ||||
|             this.azureBlobService = azureBlobService; | ||||
|  | ||||
|         } | ||||
|         /// <summary> | ||||
|         /// Get all Doculink type. | ||||
|         /// </summary> | ||||
|         [HttpGet] | ||||
|         [Authorize(Roles = "admin")] | ||||
|         [Route("doculinks/types")] | ||||
|         [Route("doculinks/types/{language:alpha}")] | ||||
|         public async Task<IActionResult> GetLinkTypesAsync(string? language) | ||||
| @ -38,6 +41,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|         /// <summary> | ||||
|         /// Get a Doculink type by id. | ||||
|         /// </summary> | ||||
|         [Authorize(Roles = "admin")] | ||||
|         [HttpGet] | ||||
|         [Route("doculinks/types/{id}")] | ||||
|         [Route("doculinks/types/{id}/{language:alpha}")] | ||||
| @ -53,6 +57,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|         /// <summary> | ||||
|         /// Update a existing Doculink type. | ||||
|         /// </summary> | ||||
|         [Authorize(Roles = "admin")] | ||||
|         [HttpPut] | ||||
|         [Route("doculinks/types/{id}")] | ||||
|         public async Task<IActionResult> UpdateLinkType(int id,Models.LinkType linkType) | ||||
| @ -74,6 +79,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|         /// <summary> | ||||
|         /// Create a new Doculink type. | ||||
|         /// </summary> | ||||
|         [Authorize(Roles = "admin")] | ||||
|         [HttpPost] | ||||
|         [Route("doculinks/types")] | ||||
|         public async Task<IActionResult> CreateLinkType(Models.LinkType linkType) | ||||
| @ -92,6 +98,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|         /// <summary> | ||||
|         /// Delete a  existing Doculink type by id. | ||||
|         /// </summary> | ||||
|         [Authorize(Roles = "admin")] | ||||
|         [HttpDelete] | ||||
|         [Route("doculinks/types/{id}")] | ||||
|         public async Task<IActionResult> DeleteLinkType(int id) | ||||
| @ -104,9 +111,10 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|             return NotFound(); | ||||
|         } | ||||
|         /// <summary> | ||||
|         /// Get all Doculink. | ||||
|         /// Get all documents. | ||||
|         /// </summary> | ||||
|         ///  | ||||
|          | ||||
|         [Authorize(Roles = "admin")] | ||||
|         [Route("doculinks")] | ||||
|         [Route("doculinks/{linktype:alpha}")] | ||||
|         [Route("doculinks/{linktype:alpha}/{language:alpha}")] | ||||
| @ -154,6 +162,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|         /// <summary> | ||||
|         /// Get a Doculink by id. | ||||
|         /// </summary> | ||||
|         [Authorize(Roles = "admin")] | ||||
|         [HttpGet] | ||||
|         [Route("doculinks/{id}")] | ||||
|         [Route("doculinks/{id}/{linktype:alpha}")] | ||||
| @ -170,6 +179,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|         /// <summary> | ||||
|         /// update existing doclink. | ||||
|         /// </summary> | ||||
|         [Authorize(Roles = "admin")] | ||||
|         [HttpPut] | ||||
|         [Route("doculinks/{id}")] | ||||
|         public async Task<IActionResult> UpdateDocument(int id,ReqDoculink documentInfo) | ||||
| @ -180,7 +190,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= await azureBlobService.UpdateDocuments(documents.counter,dbdoc.Document, documentInfo); | ||||
|                     var result = await this.documentsProvider.UpdateDocumentAsync(id, DocuLink); | ||||
|                     if (result.IsSuccess) | ||||
|                     { | ||||
| @ -195,6 +205,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|         /// <summary> | ||||
|         /// Create new doclink. | ||||
|         /// </summary> | ||||
|        // [Authorize(Roles = "admin")] | ||||
|         [HttpPost] | ||||
|         [Route("doculinks")] | ||||
|         public async Task<IActionResult> CreateDocument(ReqDoculink documentInfo) | ||||
| @ -203,8 +214,8 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|             { | ||||
|                 if (documentInfo != null) | ||||
|                 { | ||||
|                     var documents = await this.documentsProvider.GetDocumentCounter(); | ||||
|                     Models.Doculink DocuLink= uploadService.UploadDocument(documents.counter, documentInfo); | ||||
|                     //var documents = await this.documentsProvider.GetDocumentCounter(); | ||||
|                     Models.Doculink DocuLink= await azureBlobService.UploadDocument(1, documentInfo); | ||||
|                     var result = await this.documentsProvider.PostDocumentAsync(DocuLink); | ||||
|                     if (result.IsSuccess) | ||||
|                     { | ||||
| @ -222,6 +233,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|         /// <summary> | ||||
|         /// Delete Doculink by id. | ||||
|         /// </summary> | ||||
|         [Authorize(Roles = "admin")] | ||||
|         [HttpDelete] | ||||
|         [Route("doculinks/{id}")] | ||||
|         public async Task<IActionResult> DeleteDocument(int id) | ||||
| @ -233,7 +245,7 @@ namespace DamageAssesment.Api.DocuLinks.Controllers | ||||
|                 // deleting file from folder | ||||
|                 foreach (var item in result.Document.doclinksAttachments) | ||||
|                 { | ||||
|                     uploadService.Movefile(item.Path); | ||||
|                     azureBlobService.Movefile(item.Path); | ||||
|                 } | ||||
|                 return Ok(result.Document); | ||||
|             } | ||||
|  | ||||
| @ -11,7 +11,8 @@ | ||||
|  | ||||
|   <ItemGroup> | ||||
|     <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> | ||||
|     <PackageReference Include="Azure.Storage.Blobs" Version="12.16.0" /> | ||||
|     <PackageReference Include="Azure.Storage.Blobs" Version="12.18.0" /> | ||||
|     <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> | ||||
|     <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.2.7" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.9"> | ||||
|  | ||||
| @ -15,7 +15,7 @@ namespace DamageAssesment.Api.DocuLinks.Db | ||||
|         protected override void OnConfiguring(DbContextOptionsBuilder options) | ||||
|         { | ||||
|             // connect to sql server with connection string from app settings | ||||
|             options.UseSqlServer(_Configuration.GetConnectionString("DoculinConnection")); | ||||
|             options.UseSqlServer(_Configuration.GetConnectionString("DoculinkConnection")); | ||||
|         } | ||||
|         public DbSet<Db.Doculink> Documents { get; set; } | ||||
|         public DbSet<Db.LinkType> LinkTypes { get; set; } | ||||
|  | ||||
| @ -1,10 +1,14 @@ | ||||
| using Azure.Storage.Blobs.Models; | ||||
| using DamageAssesment.Api.DocuLinks.Models; | ||||
|  | ||||
| namespace DamageAssesment.Api.DocuLinks.Interfaces | ||||
| { | ||||
|     public interface IAzureBlobService | ||||
|     { | ||||
|         Task<List<Azure.Response<BlobContentInfo>>> UploadFiles(List<IFormFile> files); | ||||
|         Task<Models.Doculink> UploadDocument(int counter, ReqDoculink documentInfo); | ||||
|         Task<Models.Doculink> UpdateDocuments(int counter, Models.Doculink document, ReqDoculink documentInfo); | ||||
|         void DeleteFile(string path); | ||||
|         void Movefile(string path); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -2,19 +2,69 @@ using DamageAssesment.Api.DocuLinks.Db; | ||||
| using DamageAssesment.Api.DocuLinks.Interfaces; | ||||
| using DamageAssesment.Api.DocuLinks.Providers; | ||||
| using Microsoft.EntityFrameworkCore; | ||||
| using Microsoft.AspNetCore.Authentication.JwtBearer; | ||||
| using Microsoft.IdentityModel.Tokens; | ||||
| using System.Reflection; | ||||
| using System.Text; | ||||
| using Microsoft.OpenApi.Models; | ||||
|  | ||||
| var builder = WebApplication.CreateBuilder(args); | ||||
|  | ||||
| // Add services to the container. | ||||
|  | ||||
| var authkey = builder.Configuration.GetValue<string>("JwtSettings:securitykey"); | ||||
| builder.Services.AddAuthentication(item => | ||||
| { | ||||
|     item.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; | ||||
|     item.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; | ||||
| }).AddJwtBearer(item => | ||||
| { | ||||
|     item.RequireHttpsMetadata = true; | ||||
|     item.SaveToken = true; | ||||
|     item.TokenValidationParameters = new TokenValidationParameters() | ||||
|     { | ||||
|         ValidateIssuerSigningKey = true, | ||||
|         IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(authkey)), | ||||
|         ValidateIssuer = false, | ||||
|         ValidateAudience = false, | ||||
|         ClockSkew = TimeSpan.Zero | ||||
|     }; | ||||
| }); | ||||
| builder.Services.AddControllers(); | ||||
| builder.Services.AddSwaggerGen(c => | ||||
| builder.Services.AddSwaggerGen(options => | ||||
| { | ||||
|     // Include XML comments from your assembly | ||||
|     var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; | ||||
|     var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); | ||||
|     c.IncludeXmlComments(xmlPath); | ||||
|     options.IncludeXmlComments(xmlPath); | ||||
|  | ||||
|     OpenApiSecurityScheme securityDefinition = new OpenApiSecurityScheme() | ||||
|     { | ||||
|         Name = "Bearer", | ||||
|         BearerFormat = "JWT", | ||||
|         Scheme = "bearer", | ||||
|         Description = "Specify the authorization token.", | ||||
|         In = ParameterLocation.Header, | ||||
|         Type = SecuritySchemeType.Http, | ||||
|     }; | ||||
|  | ||||
|     options.AddSecurityDefinition("jwt_auth", securityDefinition); | ||||
|  | ||||
|     // Make sure swagger UI requires a Bearer token specified | ||||
|     OpenApiSecurityScheme securityScheme = new OpenApiSecurityScheme() | ||||
|     { | ||||
|         Reference = new OpenApiReference() | ||||
|         { | ||||
|             Id = "jwt_auth", | ||||
|             Type = ReferenceType.SecurityScheme | ||||
|         } | ||||
|     }; | ||||
|  | ||||
|     OpenApiSecurityRequirement securityRequirements = new OpenApiSecurityRequirement() | ||||
|     { | ||||
|         {securityScheme, new string[] { }}, | ||||
|     }; | ||||
|  | ||||
|     options.AddSecurityRequirement(securityRequirements); | ||||
| }); | ||||
| // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle | ||||
| builder.Services.AddEndpointsApiExplorer(); | ||||
| @ -25,7 +75,7 @@ builder.Services.AddScoped<IAzureBlobService, AzureBlobService>(); | ||||
| builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30 | ||||
| builder.Services.AddDbContext<DoculinkDbContext>(option => | ||||
| { | ||||
|     option.UseSqlServer("DoculinConnection"); | ||||
|     option.UseSqlServer("DoculinkConnection"); | ||||
| }); | ||||
| var app = builder.Build(); | ||||
|  | ||||
| @ -36,6 +86,7 @@ if (app.Environment.IsDevelopment()) | ||||
|     app.UseSwaggerUI(); | ||||
| } | ||||
|  | ||||
| app.UseAuthentication(); | ||||
| app.UseAuthorization(); | ||||
|  | ||||
| app.MapControllers(); | ||||
|  | ||||
| @ -1,8 +1,17 @@ | ||||
|  | ||||
| using Azure; | ||||
| using Azure.Storage.Blobs; | ||||
| using Azure.Storage.Blobs.Models; | ||||
| using Azure.Storage.Blobs.Specialized; | ||||
| using DamageAssesment.Api.DocuLinks.Interfaces; | ||||
| using DamageAssesment.Api.DocuLinks.Models; | ||||
| using Microsoft.AspNetCore.Mvc.Filters; | ||||
| using Microsoft.Extensions.Configuration; | ||||
| using Microsoft.VisualBasic; | ||||
| using System.ComponentModel; | ||||
| using System.IO; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace DamageAssesment.Api.DocuLinks.Providers | ||||
| { | ||||
| @ -10,11 +19,111 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|     { | ||||
|         BlobServiceClient _blobClient; | ||||
|         BlobContainerClient _containerClient; | ||||
|         string azureConnectionString = "<Primary Connection String>"; | ||||
|         public AzureBlobService() | ||||
|         string azureConnectionString; | ||||
|         private string uploadpath = ""; | ||||
|         private string Deletepath = ""; | ||||
|         public AzureBlobService(IConfiguration configuration) | ||||
|         { | ||||
|             _blobClient = new BlobServiceClient(azureConnectionString); | ||||
|             _containerClient = _blobClient.GetBlobContainerClient("apiimages"); | ||||
|             uploadpath = configuration.GetValue<string>("Fileupload:folderpath"); | ||||
|             Deletepath = configuration.GetValue<string>("Fileupload:Deletepath"); | ||||
|             _blobClient = new BlobServiceClient(configuration.GetValue<string>("Fileupload:BlobConnectionString")); | ||||
|             _containerClient = _blobClient.GetBlobContainerClient(configuration.GetValue<string>("Fileupload:BlobContainerName")); | ||||
|         } | ||||
|         public async Task<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 = ""; | ||||
|                 if (documentInfo.Files != null) | ||||
|                 { | ||||
|  | ||||
|                     int counter1 = 1; | ||||
|                     foreach (var item in documentInfo.Files) | ||||
|                     { | ||||
|                         if (item.IsAttachments) | ||||
|                         { | ||||
|                             UserfileName = Path.GetFileName(item.FileName); | ||||
|                             var fileName = String.Format("Document_{0}_{1}{2}", counter, counter1, item.FileExtension); | ||||
|                             byte[] byteArray = Convert.FromBase64String(item.FileContent); | ||||
|                             MemoryStream stream = new MemoryStream(byteArray); | ||||
|                             BlobClient client = _containerClient.GetBlobClient(uploadpath + "/" + fileName); | ||||
|                             var result = await client.UploadAsync(stream, true); | ||||
|                             path = uploadpath + "/" + fileName; | ||||
|                             counter1++; | ||||
|                         } | ||||
|                         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 async Task<Models.Doculink> UpdateDocuments(int counter, Models.Doculink document, ReqDoculink documentInfo) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 foreach (var item in document.doclinksAttachments) | ||||
|                 { | ||||
|                      Movefile(item.Path); | ||||
|                 } | ||||
|                 string path = "", UserfileName = ""; | ||||
|                 List<Models.DoculinkAttachments> attachments = new List<Models.DoculinkAttachments>(); | ||||
|                 int counter1 = 1; | ||||
|                 foreach (var item in documentInfo.Files) | ||||
|                 { | ||||
|                     if (item.IsAttachments) | ||||
|                     { | ||||
|                         UserfileName = Path.GetFileName(item.FileName); | ||||
|                         var fileName = String.Format("Document_{0}_{1}{2)", document.Id, counter1, item.FileExtension); | ||||
|                         byte[] byteArray = Encoding.UTF8.GetBytes(item.FileContent); | ||||
|                         MemoryStream stream = new MemoryStream(byteArray); | ||||
|                         BlobClient client = _containerClient.GetBlobClient(uploadpath + "/" + fileName); | ||||
|                         path = uploadpath + "/" + fileName; | ||||
|                         var result = await client.UploadAsync(stream, true); | ||||
|                         counter1++; | ||||
|                     } | ||||
|                     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 async Task<List<Azure.Response<BlobContentInfo>>> UploadFiles(List<IFormFile> files) | ||||
| @ -35,10 +144,52 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|  | ||||
|             return azureResponse; | ||||
|         } | ||||
|         public string getMovefilename(string movefilename) | ||||
|         { | ||||
|             var list = movefilename.Split('.'); | ||||
|             if (list.Length > 0) | ||||
|                 list[list.Length - 1] = DateTime.Now.ToShortDateString().Replace("/", "_") +"_"+ DateTime.Now.ToShortTimeString().Replace("/", "_")+"." + list[list.Length - 1]; | ||||
|             return string.Join("_", list); | ||||
|         } | ||||
|         public void Movefile(string path) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 if (path != "") | ||||
|                 { | ||||
|                     string MovePath = getMovefilename(path.Replace(uploadpath, Deletepath)); | ||||
|                     // Get references to the source and destination blobs | ||||
|                     BlobClient sourceBlobClient = _containerClient.GetBlobClient(path); | ||||
|                     BlobClient destinationBlobClient = _containerClient.GetBlobClient(MovePath); | ||||
|                     // Start the copy operation from the source to the destination | ||||
|                      destinationBlobClient.StartCopyFromUri(sourceBlobClient.Uri); | ||||
|  | ||||
|                     // Check if the copy operation completed successfully | ||||
|                      WaitForCopyToComplete(destinationBlobClient); | ||||
|  | ||||
|                     // Delete the source blob after a successful copy | ||||
|                      sourceBlobClient.DeleteIfExists(); | ||||
|                 } | ||||
|             } | ||||
|             catch(Exception ex) | ||||
|             { | ||||
|  | ||||
|             } | ||||
|         } | ||||
|         static void  WaitForCopyToComplete(BlobClient blobClient) | ||||
|         { | ||||
|             BlobProperties properties =  blobClient.GetProperties(); | ||||
|  | ||||
|             while (properties.CopyStatus == CopyStatus.Pending) | ||||
|             { | ||||
|                  Task.Delay(TimeSpan.FromSeconds(1)); | ||||
|                 properties =  blobClient.GetProperties(); | ||||
|             } | ||||
|         } | ||||
|         public void DeleteFile(string url) | ||||
|         { | ||||
|             var blob = _containerClient.GetBlockBlobClient(url); | ||||
|             blob.DeleteIfExists(); | ||||
|             BlobClient sourceBlobClient = _containerClient.GetBlobClient(url); | ||||
|             sourceBlobClient.DeleteIfExists(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -21,20 +21,22 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|         private DoculinkDbContext DocumentDbContext; | ||||
|         private ILogger<DoculinkProvider> logger; | ||||
|         private IUploadService uploadservice; | ||||
|         private IAzureBlobService azureBlobService; | ||||
|         private IMapper mapper; | ||||
|  | ||||
|         public DoculinkProvider(DoculinkDbContext DocumentDbContext, ILogger<DoculinkProvider> logger, IMapper mapper, IUploadService uploadservice) | ||||
|         public DoculinkProvider(DoculinkDbContext DocumentDbContext, ILogger<DoculinkProvider> logger, IMapper mapper, IUploadService uploadservice, IAzureBlobService azureBlobService) | ||||
|         { | ||||
|             this.DocumentDbContext = DocumentDbContext; | ||||
|             this.logger = logger; | ||||
|             this.mapper = mapper; | ||||
|             this.uploadservice = uploadservice; | ||||
|             SeedData(); | ||||
|             this.azureBlobService = azureBlobService; | ||||
|             //SeedData(); | ||||
|         } | ||||
|  | ||||
|  | ||||
|  | ||||
|         private void SeedData() | ||||
|         private async Task SeedDataAsync() | ||||
|         { | ||||
|             if (!DocumentDbContext.LinkTypes.Any()) | ||||
|             { | ||||
| @ -76,7 +78,7 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|                     else | ||||
|                         fileModel = new FileModel() { url = "www.google" + i + ".com", IsAttachments = false, CustomOrder = 1 }; | ||||
|                     ReqDoculink documentInfo = new ReqDoculink() { linkTypeId = i, CustomOrder = i, Files = new List<FileModel>() { fileModel } }; | ||||
|                     Models.Doculink document = uploadservice.UploadDocument(counter, documentInfo); | ||||
|                     Models.Doculink document = await azureBlobService.UploadDocument(counter, documentInfo); | ||||
|                     DocumentDbContext.Documents.Add(mapper.Map<Models.Doculink, Db.Doculink>(document)); | ||||
|                     DocumentDbContext.SaveChanges(); | ||||
|                     var dbattachments = mapper.Map<List<Models.DoculinkAttachments>, List<Db.DoculinkAttachments>>(document.doclinksAttachments); | ||||
|  | ||||
| @ -80,15 +80,16 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|  | ||||
|                 string path = "", UserfileName = ""; | ||||
|                 List<Models.DoculinkAttachments> attachments = new List<Models.DoculinkAttachments>(); | ||||
|                 int counter1 = 1; | ||||
|                 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); | ||||
|                         var fileName = String.Format("Document_{0}_{1}{2}", document.Id, counter1, item.FileExtension); | ||||
|                         path = Path.Combine(fullDirectoryPath, fileName); | ||||
|                         File.WriteAllBytes(path, Convert.FromBase64String(item.FileContent)); | ||||
|                         counter1++; | ||||
|                     } | ||||
|                     else | ||||
|                         path = item.url; | ||||
|  | ||||
| @ -1,4 +1,7 @@ | ||||
| { | ||||
|   "JwtSettings": { | ||||
|     "securitykey": "bWlhbWkgZGFkZSBzY2hvb2xzIHNlY3JldCBrZXk=" | ||||
|   }, | ||||
|   "Logging": { | ||||
|     "LogLevel": { | ||||
|       "Default": "Information", | ||||
| @ -7,13 +10,14 @@ | ||||
|   }, | ||||
|   "AllowedHosts": "*", | ||||
|   "ConnectionStrings": { | ||||
|     //"DoculinConnection": "Server=DESKTOP-OF5DPLQ\\SQLEXPRESS;Database=da_survey_dev;Trusted_Connection=True;TrustServerCertificate=True;", | ||||
|     //"DoculinConnection": "Server=localhost,1433;Database=da_survey_dev;User Id=sa;Password=Password123;TrustServerCertificate=True;" | ||||
|     "DoculinConnection": "Server=207.180.248.35;Database=da_survey_dev;User Id=sa;Password=YourStrongPassw0rd;TrustServerCertificate=True;" | ||||
|     //"DoculinkConnection": "Server=DESKTOP-OF5DPLQ\\SQLEXPRESS;Database=da_survey_dev;Trusted_Connection=True;TrustServerCertificate=True;" | ||||
|     "DoculinkConnection": "Server=tcp:da-dev.database.windows.net,1433;Initial Catalog=da-dev-db;Encrypt=True;User ID=admin-dev;Password=b3tgRABw8LGE75k;TrustServerCertificate=False;Connection Timeout=30;" | ||||
|  | ||||
|   }, | ||||
|   "Fileupload": { | ||||
|     "folderpath": "DASA_Documents/Active", | ||||
|     "Deletepath": "DASA_Documents/Deleted" | ||||
|     "Deletepath": "DASA_Documents/Deleted", | ||||
|     "BlobConnectionString": "DefaultEndpointsProtocol=https;AccountName=damagedoculink;AccountKey=blynpwrAQtthEneXC5f4vFewJ3tPV+QZUt1AX3nefZScPPjkr5hMoC18B9ni6/ZYdhRiERPQw+hB+AStonf+iw==;EndpointSuffix=core.windows.net", | ||||
|     "BlobContainerName": "doculinks" | ||||
|   } | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user