forked from MDCPS/DamageAssessment_Backend
		
	Compare commits
	
		
			32 Commits
		
	
	
		
			dev
			...
			local-dock
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 513049287c | |||
| fcc0205175 | |||
| 281a789deb | |||
| fc154274a0 | |||
| 19fac4d810 | |||
| 17cd993a56 | |||
| 8285588db9 | |||
| 6fbe21979f | |||
| fc166e65c9 | |||
| ae6b306290 | |||
| d3a751a6ad | |||
| 8624eeeb97 | |||
| 16d45d6632 | |||
| c77e0452c4 | |||
| 8e0a7df68b | |||
| 01ccd97528 | |||
| 26b360e0a9 | |||
| 360a58c026 | |||
| 11c6fc0dc9 | |||
| 99633d8dda | |||
| 8e3f6674c6 | |||
| 14956057cd | |||
| 340ba6fa6d | |||
| 46794057c4 | |||
| 643bc0c76a | |||
| d0023114a3 | |||
| 465bf4b081 | |||
| e04bccfffd | |||
| 0544c7397d | |||
| 9c536a1c52 | |||
| 48be1a74c9 | |||
| eb07c31ff6 | 
							
								
								
									
										
											BIN
										
									
								
								.vs/Backend-API-Services/v17/.wsuo
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								.vs/Backend-API-Services/v17/.wsuo
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										7
									
								
								.vs/VSWorkspaceState.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								.vs/VSWorkspaceState.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | ||||
| { | ||||
|   "ExpandedNodes": [ | ||||
|     "" | ||||
|   ], | ||||
|   "SelectedNode": "\\DamageAssesment.sln", | ||||
|   "PreviewInSolutionExplorer": false | ||||
| } | ||||
							
								
								
									
										25
									
								
								DamageAssesmentApi/.dockerignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								DamageAssesmentApi/.dockerignore
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,25 @@ | ||||
| **/.classpath | ||||
| **/.dockerignore | ||||
| **/.env | ||||
| **/.git | ||||
| **/.gitignore | ||||
| **/.project | ||||
| **/.settings | ||||
| **/.toolstarget | ||||
| **/.vs | ||||
| **/.vscode | ||||
| **/*.*proj.user | ||||
| **/*.dbmdl | ||||
| **/*.jfm | ||||
| **/azds.yaml | ||||
| **/bin | ||||
| **/charts | ||||
| **/docker-compose* | ||||
| **/Dockerfile* | ||||
| **/node_modules | ||||
| **/npm-debug.log | ||||
| **/obj | ||||
| **/secrets.dev.yaml | ||||
| **/values.dev.yaml | ||||
| LICENSE | ||||
| README.md | ||||
							
								
								
									
										1
									
								
								DamageAssesmentApi/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								DamageAssesmentApi/.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -396,3 +396,4 @@ FodyWeavers.xsd | ||||
|  | ||||
| # JetBrains Rider | ||||
| *.sln.iml | ||||
| **/migrations/ | ||||
| @ -1,17 +1,25 @@ | ||||
| <Project Sdk="Microsoft.NET.Sdk.Web"> | ||||
| <Project Sdk="Microsoft.NET.Sdk.Web"> | ||||
|  | ||||
|   <PropertyGroup> | ||||
|     <TargetFramework>net6.0</TargetFramework> | ||||
|     <Nullable>enable</Nullable> | ||||
|     <ImplicitUsings>enable</ImplicitUsings> | ||||
|     <GenerateDocumentationFile>True</GenerateDocumentationFile> | ||||
|     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | ||||
|     <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath> | ||||
|   </PropertyGroup> | ||||
|  | ||||
|   <ItemGroup> | ||||
|     <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> | ||||
|     <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.9"> | ||||
|       <PrivateAssets>all</PrivateAssets> | ||||
|       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||
|     </PackageReference> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.4" /> | ||||
|     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> | ||||
|   </ItemGroup> | ||||
|  | ||||
|  | ||||
| @ -1,13 +1,19 @@ | ||||
| using Microsoft.EntityFrameworkCore; | ||||
| using Microsoft.Extensions.Configuration; | ||||
|  | ||||
| namespace DamageAssesment.Api.Answers.Db | ||||
| { | ||||
|     public class AnswerDbContext:DbContext | ||||
|     { | ||||
|  | ||||
|         public AnswerDbContext(DbContextOptions options):base(options)  | ||||
|         private IConfiguration _Configuration { get; set; } | ||||
|         public AnswerDbContext(DbContextOptions options,IConfiguration configuration):base(options)  | ||||
|         { | ||||
|              | ||||
|             _Configuration= configuration; | ||||
|         } | ||||
|         protected override void OnConfiguring(DbContextOptionsBuilder options) | ||||
|         { | ||||
|             // connect to sql server with connection string from app settings | ||||
|             options.UseSqlServer(_Configuration.GetConnectionString("AnswerConnection")); | ||||
|         } | ||||
|         public DbSet<Db.Answer> Answers { get; set; } | ||||
|         protected override void OnModelCreating(ModelBuilder modelBuilder) | ||||
|  | ||||
							
								
								
									
										21
									
								
								DamageAssesmentApi/DamageAssesment.Api.Answers/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								DamageAssesmentApi/DamageAssesment.Api.Answers/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| #See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. | ||||
|  | ||||
| FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base | ||||
| WORKDIR /app | ||||
| EXPOSE 80 | ||||
|  | ||||
| FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build | ||||
| WORKDIR /src | ||||
| COPY ["DamageAssesment.Api.Answers/DamageAssesment.Api.Answers.csproj", "DamageAssesment.Api.Answers/"] | ||||
| RUN dotnet restore "DamageAssesment.Api.Answers/DamageAssesment.Api.Answers.csproj" | ||||
| COPY . . | ||||
| WORKDIR "/src/DamageAssesment.Api.Answers" | ||||
| RUN dotnet build "DamageAssesment.Api.Answers.csproj" -c Release -o /app/build | ||||
|  | ||||
| FROM build AS publish | ||||
| RUN dotnet publish "DamageAssesment.Api.Answers.csproj" -c Release -o /app/publish /p:UseAppHost=false | ||||
|  | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
| COPY --from=publish /app/publish . | ||||
| ENTRYPOINT ["dotnet", "DamageAssesment.Api.Answers.dll"] | ||||
| @ -23,7 +23,7 @@ builder.Services.AddScoped<IAnswersProvider, AnswersProvider>(); | ||||
| builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30 | ||||
| builder.Services.AddDbContext<AnswerDbContext>(option => | ||||
| { | ||||
|     option.UseInMemoryDatabase("Answers"); | ||||
|     option.UseSqlServer("AnswerConnection"); | ||||
| }); | ||||
|  | ||||
| var app = builder.Build(); | ||||
|  | ||||
| @ -1,23 +1,14 @@ | ||||
| { | ||||
|   "$schema": "https://json.schemastore.org/launchsettings.json", | ||||
|   "iisSettings": { | ||||
|     "windowsAuthentication": false, | ||||
|     "anonymousAuthentication": true, | ||||
|     "iisExpress": { | ||||
|       "applicationUrl": "http://localhost:18005", | ||||
|       "sslPort": 0 | ||||
|     } | ||||
|   }, | ||||
| { | ||||
|   "profiles": { | ||||
|     "DamageAssesment.Api.Answers": { | ||||
|       "commandName": "Project", | ||||
|       "dotnetRunMessages": true, | ||||
|       "launchBrowser": true, | ||||
|       "launchUrl": "swagger", | ||||
|       "applicationUrl": "http://localhost:5200", | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|       }, | ||||
|       "dotnetRunMessages": true, | ||||
|       "applicationUrl": "http://localhost:5200" | ||||
|     }, | ||||
|     "IIS Express": { | ||||
|       "commandName": "IISExpress", | ||||
| @ -26,6 +17,24 @@ | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|     }, | ||||
|     "Docker": { | ||||
|       "commandName": "Docker", | ||||
|       "launchBrowser": true, | ||||
|       "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger", | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_URLS": "http://+:80" | ||||
|       }, | ||||
|       "publishAllPorts": true | ||||
|     } | ||||
|   }, | ||||
|   "$schema": "https://json.schemastore.org/launchsettings.json", | ||||
|   "iisSettings": { | ||||
|     "windowsAuthentication": false, | ||||
|     "anonymousAuthentication": true, | ||||
|     "iisExpress": { | ||||
|       "applicationUrl": "http://localhost:18005", | ||||
|       "sslPort": 0 | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -198,13 +198,12 @@ namespace DamageAssesment.Api.Answers.Providers | ||||
|         { | ||||
|             if (!answerDbContext.Answers.Any()) | ||||
|             { | ||||
|                 answerDbContext.Answers.Add(new Db.Answer() { Id = 1, AnswerText = "Yes", Comment = "Comment test 4", QuestionId = 1, SurveyResponseId = 1 }); | ||||
|                 answerDbContext.Answers.Add(new Db.Answer() { Id = 2, AnswerText = "No", Comment = "Comment test 5", QuestionId = 2, SurveyResponseId = 1 }); | ||||
|                 // Uncomment the lines below to add more initial data if needed | ||||
|                 //answerDbContext.Answers.Add(new Db.Answer() { Id = 3, AnswerText = "No", Comment = "No Comment", QuestionId = 3, SurveyResponseId = 1 }); | ||||
|                 //answerDbContext.Answers.Add(new Db.Answer() { Id = 4, AnswerText = "Yes", Comment = "No Comment", QuestionId = 1, SurveyResponseId = 2 }); | ||||
|                 //answerDbContext.Answers.Add(new Db.Answer() { Id = 5, AnswerText = "No", Comment = "No Comment", QuestionId = 2, SurveyResponseId = 2 }); | ||||
|                 //answerDbContext.Answers.Add(new Db.Answer() { Id = 6, AnswerText = "No", Comment = "No Comment", QuestionId = 3, SurveyResponseId = 2 }); | ||||
|                 answerDbContext.Answers.Add(new Db.Answer() {  AnswerText = "Yes", Comment = "", QuestionId = 1, SurveyResponseId = 1 }); | ||||
|                 answerDbContext.Answers.Add(new Db.Answer() {  AnswerText = "No", Comment = "myComment", QuestionId = 2, SurveyResponseId = 1 }); | ||||
|                 //answerDbContext.Answers.Add(new Db.Answer() {  AnswerText = "No", Comment = "No Comment", QuestionId = 3, SurveyResponseId = 1 }); | ||||
|                 //answerDbContext.Answers.Add(new Db.Answer() {  AnswerText = "Yes", Comment = "No Comment", QuestionId = 1, SurveyResponseId = 2 }); | ||||
|                 //answerDbContext.Answers.Add(new Db.Answer() {  AnswerText = "No", Comment = "No Comment", QuestionId = 2, SurveyResponseId = 2 }); | ||||
|                 //answerDbContext.Answers.Add(new Db.Answer() {  AnswerText = "No", Comment = "No Comment", QuestionId = 3, SurveyResponseId = 2 }); | ||||
|                 answerDbContext.SaveChanges(); | ||||
|             } | ||||
|         } | ||||
|  | ||||
| @ -8,5 +8,11 @@ | ||||
|       "Microsoft.AspNetCore": "Warning" | ||||
|     } | ||||
|   }, | ||||
|   "AllowedHosts": "*" | ||||
|   "AllowedHosts": "*", | ||||
|   "ConnectionStrings": { | ||||
|     //"AnswerConnection": "Server=DESKTOP-OF5DPLQ\\SQLEXPRESS;Database=da_survey_dev;Trusted_Connection=True;TrustServerCertificate=True;" | ||||
|     // "AnswerConnection": "Server=localhost,1433;Database=da_survey_dev;User Id=sa;Password=Password123;TrustServerCertificate=True;", | ||||
|     "AnswerConnection": "Server=207.180.248.35;Database=da_survey_dev;User Id=sa;Password=YourStrongPassw0rd;TrustServerCertificate=True;" | ||||
|  | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -5,6 +5,8 @@ | ||||
|     <Nullable>enable</Nullable> | ||||
|     <ImplicitUsings>enable</ImplicitUsings> | ||||
|     <GenerateDocumentationFile>True</GenerateDocumentationFile> | ||||
|     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | ||||
|     <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath> | ||||
|   </PropertyGroup> | ||||
|  | ||||
|   <ItemGroup> | ||||
| @ -12,8 +14,20 @@ | ||||
|     <PackageReference Include="Azure.Storage.Blobs" Version="12.16.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.5" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" /> | ||||
|     <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.1.1" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.9"> | ||||
|       <PrivateAssets>all</PrivateAssets> | ||||
|       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||
|     </PackageReference> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.9"> | ||||
|       <PrivateAssets>all</PrivateAssets> | ||||
|       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||
|     </PackageReference> | ||||
|     <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.4" /> | ||||
|     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> | ||||
|   </ItemGroup> | ||||
|  | ||||
|  | ||||
| @ -1,11 +1,19 @@ | ||||
| using Microsoft.EntityFrameworkCore; | ||||
| using Microsoft.Extensions.Configuration; | ||||
|  | ||||
| namespace DamageAssesment.Api.Attachments.Db | ||||
| { | ||||
|     public class AttachmentsDbContext:DbContext | ||||
|     { | ||||
|         public AttachmentsDbContext(DbContextOptions options) : base(options) | ||||
|         private IConfiguration _Configuration { get; set; } | ||||
|         public AttachmentsDbContext(DbContextOptions options, IConfiguration configuration) : base(options) | ||||
|         { | ||||
|             _Configuration = configuration; | ||||
|         } | ||||
|         protected override void OnConfiguring(DbContextOptionsBuilder options) | ||||
|         { | ||||
|             // connect to sql server with connection string from app settings | ||||
|             options.UseSqlServer(_Configuration.GetConnectionString("AttachmentConnection")); | ||||
|         } | ||||
|         public DbSet<Db.Attachment> Attachments { get; set; } | ||||
|         protected override void OnModelCreating(ModelBuilder modelBuilder) | ||||
|  | ||||
| @ -0,0 +1,29 @@ | ||||
| #See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. | ||||
|  | ||||
| FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base | ||||
| WORKDIR /app | ||||
| EXPOSE 80 | ||||
|  | ||||
| FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build | ||||
| WORKDIR /src | ||||
| COPY ["DamageAssesment.Api.Attachments/DamageAssesment.Api.Attachments.csproj", "DamageAssesment.Api.Attachments/"] | ||||
| RUN dotnet restore "DamageAssesment.Api.Attachments/DamageAssesment.Api.Attachments.csproj" | ||||
| COPY . . | ||||
| WORKDIR "/src/DamageAssesment.Api.Attachments" | ||||
| RUN dotnet build "DamageAssesment.Api.Attachments.csproj" -c Release -o /app/build | ||||
|  | ||||
| FROM build AS publish | ||||
| RUN dotnet publish "DamageAssesment.Api.Attachments.csproj" -c Release -o /app/publish /p:UseAppHost=false | ||||
|  | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
| COPY --from=publish /app/publish . | ||||
| # Create directories for attachments and set permissions | ||||
| RUN mkdir -p /app/DMS_Attachments/Active && \ | ||||
|     mkdir -p /app/DMS_Attachments/Deleted && \ | ||||
|     chown -R www-data:www-data /app/DMS_Attachments | ||||
|  | ||||
| # Update appsettings.json with the correct paths for attachments | ||||
| RUN sed -i 's#"folderpath": "DMS_Attachments/Active"#"folderpath": "/app/DMS_Attachments/Active"#' appsettings.json && \ | ||||
|     sed -i 's#"Deletepath": "DMS_Attachments/Deleted"#"Deletepath": "/app/DMS_Attachments/Deleted"#' appsettings.json | ||||
| ENTRYPOINT ["dotnet", "DamageAssesment.Api.Attachments.dll"] | ||||
| @ -9,7 +9,6 @@ namespace DamageAssesment.Api.Attachments.Interfaces | ||||
|         Task<(bool IsSuccess, IEnumerable<Models.Attachment> Attachments, string ErrorMessage)> PostAttachmentAsync(List<Models.Attachment> Attachments); | ||||
|         Task<(bool IsSuccess, IEnumerable<Models.Attachment> Attachments, string ErrorMessage)> PutAttachmentAsync(List<Models.Attachment> Attachments); | ||||
|         Task<(bool IsSuccess, Models.Attachment Attachment, string Path)> DeleteAttachmentAsync(int Id); | ||||
|         Task<(bool IsSuccess, Models.Attachment Attachment, string Path)> GetDownloadAttachmentAsync(int Id); | ||||
|         Task<(bool IsSuccess, int counter, string Path)> DeleteAttachmentsAsync(int responseId, int answerId); | ||||
|         Task<(bool IsSuccess, int counter, string Path)> DeleteBulkAttachmentsAsync(int responseId, List<int> answerIds); | ||||
|         Task<(bool IsSuccess, int counter, string message)> GetAttachmentCounter(); | ||||
|  | ||||
| @ -21,14 +21,13 @@ builder.Services.AddSwaggerGen(c => | ||||
|     var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); | ||||
|     c.IncludeXmlComments(xmlPath); | ||||
| }); | ||||
| builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); | ||||
| builder.Services.AddScoped<IAttachmentsProvider, AttachmentsProvider>(); | ||||
| builder.Services.AddScoped<IUploadService, UploadService>(); | ||||
| builder.Services.AddScoped<IAzureBlobService,AzureBlobService>(); | ||||
| builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30 | ||||
| builder.Services.AddDbContext<AttachmentsDbContext>(option => | ||||
| { | ||||
|     option.UseInMemoryDatabase("Attachments"); | ||||
|     option.UseSqlServer("AttachmentConnection"); | ||||
| }); | ||||
| builder.Services.Configure<FormOptions>(o => | ||||
| { | ||||
|  | ||||
| @ -1,23 +1,14 @@ | ||||
| { | ||||
|   "$schema": "https://json.schemastore.org/launchsettings.json", | ||||
|   "iisSettings": { | ||||
|     "windowsAuthentication": false, | ||||
|     "anonymousAuthentication": true, | ||||
|     "iisExpress": { | ||||
|       "applicationUrl": "http://localhost:65305", | ||||
|       "sslPort": 0 | ||||
|     } | ||||
|   }, | ||||
| { | ||||
|   "profiles": { | ||||
|     "DamageAssesment.Api.Attachments": { | ||||
|       "commandName": "Project", | ||||
|       "dotnetRunMessages": true, | ||||
|       "launchBrowser": true, | ||||
|       "launchUrl": "swagger", | ||||
|       "applicationUrl": "http://localhost:5243", | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|       }, | ||||
|       "dotnetRunMessages": true, | ||||
|       "applicationUrl": "http://localhost:5243" | ||||
|     }, | ||||
|     "IIS Express": { | ||||
|       "commandName": "IISExpress", | ||||
| @ -26,6 +17,24 @@ | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|     }, | ||||
|     "Docker": { | ||||
|       "commandName": "Docker", | ||||
|       "launchBrowser": true, | ||||
|       "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger", | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_URLS": "http://+:80" | ||||
|       }, | ||||
|       "publishAllPorts": true | ||||
|     } | ||||
|   }, | ||||
|   "$schema": "https://json.schemastore.org/launchsettings.json", | ||||
|   "iisSettings": { | ||||
|     "windowsAuthentication": false, | ||||
|     "anonymousAuthentication": true, | ||||
|     "iisExpress": { | ||||
|       "applicationUrl": "http://localhost:65305", | ||||
|       "sslPort": 0 | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -14,18 +14,14 @@ namespace DamageAssesment.Api.Attachments.Providers | ||||
|         private ILogger<AttachmentsProvider> logger; | ||||
|         private IUploadService uploadservice; | ||||
|         private IMapper mapper; | ||||
|         private readonly IHttpContextAccessor httpContextAccessor; | ||||
|         private string baseUrl; | ||||
|         public AttachmentsProvider(AttachmentsDbContext AttachmentDbContext, ILogger<AttachmentsProvider> logger, IMapper mapper,IUploadService uploadservice, IHttpContextAccessor httpContextAccessor) | ||||
|  | ||||
|         public AttachmentsProvider(AttachmentsDbContext AttachmentDbContext, ILogger<AttachmentsProvider> logger, IMapper mapper,IUploadService uploadservice) | ||||
|         { | ||||
|             this.AttachmentDbContext = AttachmentDbContext; | ||||
|             this.logger = logger; | ||||
|             this.mapper = mapper; | ||||
|             this.uploadservice = uploadservice; | ||||
|             this.httpContextAccessor = httpContextAccessor; | ||||
|             baseUrl = $"{httpContextAccessor.HttpContext.Request.Scheme}://{httpContextAccessor.HttpContext.Request.Host}"; | ||||
|             baseUrl = baseUrl + "/attachments/download"; | ||||
|             SeedData(); | ||||
|             //SeedData(); | ||||
|         } | ||||
|         public async Task<(bool IsSuccess, IEnumerable<Models.Attachment> Attachments, string ErrorMessage)> GetAttachmentsAsync() | ||||
|         { | ||||
| @ -36,10 +32,6 @@ namespace DamageAssesment.Api.Attachments.Providers | ||||
|                 var Attachment = await AttachmentDbContext.Attachments.AsNoTracking().Where(a => !a.IsDeleted).ToListAsync(); | ||||
|                 if (Attachment != null) | ||||
|                 { | ||||
|                     foreach (var attachment in Attachment) | ||||
|                     { | ||||
|                         attachment.URI = $"{baseUrl}/{attachment.Id}"; | ||||
|                     } | ||||
|                     logger?.LogInformation($"{Attachment.Count} Attachments(s) found"); | ||||
|                     var result = mapper.Map<IEnumerable<Db.Attachment>, IEnumerable<Models.Attachment>>(Attachment); | ||||
|                     return (true, result, null); | ||||
| @ -62,7 +54,6 @@ namespace DamageAssesment.Api.Attachments.Providers | ||||
|                 if (Attachment != null) | ||||
|                 { | ||||
|                     logger?.LogInformation($"{Attachment} customer(s) found"); | ||||
|                     Attachment.URI = $"{baseUrl}/{Attachment.Id}"; | ||||
|                     var result = mapper.Map<Db.Attachment, Models.Attachment>(Attachment); | ||||
|                     return (true, result, null); | ||||
|                 } | ||||
| @ -82,10 +73,6 @@ namespace DamageAssesment.Api.Attachments.Providers | ||||
|                 List<Db.Attachment> attachments = mapper.Map<List<Models.Attachment>, List<Db.Attachment>>(Attachments); | ||||
|                 AttachmentDbContext.Attachments.AddRange(attachments); | ||||
|                 await AttachmentDbContext.SaveChangesAsync(); | ||||
|                 foreach (var attachment in attachments) | ||||
|                 { | ||||
|                     attachment.URI = $"{baseUrl}/{attachment.Id}"; | ||||
|                 } | ||||
|                 var result = mapper.Map<IEnumerable<Db.Attachment>, IEnumerable<Models.Attachment>>(attachments); | ||||
|                 return (true, result, null); | ||||
|             } | ||||
| @ -104,10 +91,6 @@ namespace DamageAssesment.Api.Attachments.Providers | ||||
|                 List<Db.Attachment> attachments = mapper.Map<List<Models.Attachment>, List<Db.Attachment>>(Attachments); | ||||
|                 AttachmentDbContext.Attachments.UpdateRange(attachments); | ||||
|                 await AttachmentDbContext.SaveChangesAsync(); | ||||
|                 foreach (var attachment in attachments) | ||||
|                 { | ||||
|                     attachment.URI = $"{baseUrl}/{attachment.Id}"; | ||||
|                 } | ||||
|                 var result = mapper.Map<IEnumerable<Db.Attachment>, IEnumerable<Models.Attachment>>(attachments); | ||||
|                 return (true, result, null); | ||||
|             } | ||||
| @ -214,24 +197,6 @@ namespace DamageAssesment.Api.Attachments.Providers | ||||
|         { | ||||
|             return AttachmentDbContext.Attachments.AsNoTracking().Count(e => e.Id == id && !e.IsDeleted) > 0; | ||||
|         } | ||||
|         public async Task<(bool IsSuccess, Models.Attachment Attachment, string Path)> GetDownloadAttachmentAsync(int Id) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 Db.Attachment Attachment = AttachmentDbContext.Attachments.Where(a => a.Id == Id).AsNoTracking().FirstOrDefault(); | ||||
|                 if (Attachment == null) | ||||
|                 { | ||||
|                     return (false, null, "Not Found"); | ||||
|                 } | ||||
|                 return (true, mapper.Map<Db.Attachment, Models.Attachment>(Attachment), $"Attachment {Id}"); | ||||
|             } | ||||
|             catch (Exception ex) | ||||
|             { | ||||
|  | ||||
|                 logger?.LogError(ex.ToString()); | ||||
|                 return (false, null, ex.Message); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         private void SeedData() | ||||
|         { | ||||
|  | ||||
| @ -124,7 +124,7 @@ namespace DamageAssesment.Api.Attachments.Providers | ||||
|                     { | ||||
|                         counter++; | ||||
|  | ||||
|                         var UserfileName = Path.GetFileName(file.FileName+ file.FileExtension); | ||||
|                         var UserfileName = Path.GetFileName(file.FileName); | ||||
|                         var fileName = String.Format("Attachment_{0}{1}", counter, file.FileExtension); | ||||
|                         var dbPath = Path.Combine(fullDirectoryPath, fileName); | ||||
|                         File.WriteAllBytes(dbPath, Convert.FromBase64String(file.FileContent)); | ||||
| @ -161,7 +161,7 @@ namespace DamageAssesment.Api.Attachments.Providers | ||||
|                 foreach (var file in item.postedFiles) | ||||
|                 { | ||||
|                     Models.Attachment attachment= attachments.Where(a=>a.Id == file.AttachmentId).FirstOrDefault(); | ||||
|                     var UserfileName = Path.GetFileName(file.FileName + file.FileExtension); | ||||
|                     var UserfileName = Path.GetFileName(file.FileName); | ||||
|                     var fileName = String.Format("Attachment_{0}{1}", attachment?.Id, file.FileExtension); | ||||
|                     var dbPath = Path.Combine(fullDirectoryPath, fileName); | ||||
|                     File.WriteAllBytes(dbPath, Convert.FromBase64String(file.FileContent)); | ||||
|  | ||||
| @ -12,5 +12,11 @@ | ||||
|   "Fileupload": { | ||||
|     "folderpath": "DMS_Attachments/Active", | ||||
|     "Deletepath": "DMS_Attachments/Deleted" | ||||
|   }, | ||||
|   "ConnectionStrings": { | ||||
|     //"AttachmentConnection": "Server=DESKTOP-OF5DPLQ\\SQLEXPRESS;Database=da_survey_dev;Trusted_Connection=True;TrustServerCertificate=True;" | ||||
|     // "AttachmentConnection": "Server=localhost,1433;Database=da_survey_dev;User Id=sa;Password=Password123;TrustServerCertificate=True;" | ||||
|     "AttachmentConnection": "Server=207.180.248.35;Database=da_survey_dev;User Id=sa;Password=YourStrongPassw0rd;TrustServerCertificate=True;" | ||||
|   } | ||||
| } | ||||
|    | ||||
| @ -1,4 +1,4 @@ | ||||
| <Project Sdk="Microsoft.NET.Sdk"> | ||||
| <Project Sdk="Microsoft.NET.Sdk"> | ||||
|  | ||||
|   <PropertyGroup> | ||||
|     <TargetFramework>net6.0</TargetFramework> | ||||
|  | ||||
| @ -32,7 +32,6 @@ namespace DamageAssesment.Api.DocuLinks.Test | ||||
|                 doclinksAttachments.Add(new DoculinkAttachments() | ||||
|                 { | ||||
|                     docName = "",Path="www.google.com", | ||||
|                     Language = "en", | ||||
|                     IsAttachments=false,CustomOrder=1 | ||||
|                 }); | ||||
|                 list.Add(new DocuLinks.Models.ResDoculink() | ||||
| @ -75,7 +74,6 @@ namespace DamageAssesment.Api.DocuLinks.Test | ||||
|                     docName = "", | ||||
|                     Path = "www.google.com", | ||||
|                     IsAttachments = false, | ||||
|                     Language = "en", | ||||
|                     CustomOrder = 1 | ||||
|                 }); | ||||
|                 list.Add(new DocuLinks.Models.ResDoculink() | ||||
| @ -140,7 +138,6 @@ namespace DamageAssesment.Api.DocuLinks.Test | ||||
|                 docName = "", | ||||
|                 Path = "www.google.com", | ||||
|                 IsAttachments = false, | ||||
|                 Language = "en", | ||||
|                 CustomOrder = 1 | ||||
|             }); | ||||
|             return new Models.Doculink | ||||
| @ -168,7 +165,6 @@ namespace DamageAssesment.Api.DocuLinks.Test | ||||
|                 docName = "", | ||||
|                 Path = "www.google.com", | ||||
|                 IsAttachments = false, | ||||
|                 Language = "en", | ||||
|                 CustomOrder = 1 | ||||
|             }); | ||||
|             List<DocuLinks.Models.Doculink> DocuLinks = new List<Models.Doculink>(); | ||||
|  | ||||
| @ -1,10 +1,12 @@ | ||||
| <Project Sdk="Microsoft.NET.Sdk.Web"> | ||||
| <Project Sdk="Microsoft.NET.Sdk.Web"> | ||||
|  | ||||
|   <PropertyGroup> | ||||
|     <TargetFramework>net6.0</TargetFramework> | ||||
|     <Nullable>enable</Nullable> | ||||
|     <ImplicitUsings>enable</ImplicitUsings> | ||||
|     <GenerateDocumentationFile>True</GenerateDocumentationFile> | ||||
|     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | ||||
|     <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath> | ||||
|   </PropertyGroup> | ||||
|  | ||||
|   <ItemGroup> | ||||
| @ -22,6 +24,7 @@ | ||||
|       <PrivateAssets>all</PrivateAssets> | ||||
|       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||
|     </PackageReference> | ||||
|     <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.4" /> | ||||
|     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> | ||||
|   </ItemGroup> | ||||
|  | ||||
|  | ||||
| @ -15,6 +15,5 @@ namespace DamageAssesment.Api.DocuLinks.Db | ||||
|         public string Path { get; set; } | ||||
|         public bool IsAttachments { get; set; } | ||||
|         public int CustomOrder { get; set; } | ||||
|         public string Language { get; set; } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -7,8 +7,15 @@ namespace DamageAssesment.Api.DocuLinks.Db | ||||
| { | ||||
|     public class DoculinkDbContext : DbContext | ||||
|     { | ||||
|         public DoculinkDbContext(DbContextOptions options) : base(options) | ||||
|         private IConfiguration _Configuration { get; set; } | ||||
|         public DoculinkDbContext(DbContextOptions options, IConfiguration configuration) : base(options) | ||||
|         { | ||||
|             _Configuration = configuration; | ||||
|         } | ||||
|         protected override void OnConfiguring(DbContextOptionsBuilder options) | ||||
|         { | ||||
|             // connect to sql server with connection string from app settings | ||||
|             options.UseSqlServer(_Configuration.GetConnectionString("DoculinConnection")); | ||||
|         } | ||||
|         public DbSet<Db.Doculink> Documents { get; set; } | ||||
|         public DbSet<Db.LinkType> LinkTypes { get; set; } | ||||
|  | ||||
							
								
								
									
										30
									
								
								DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								DamageAssesmentApi/DamageAssesment.Api.DocuLinks/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | ||||
| #See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. | ||||
|  | ||||
| FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base | ||||
| WORKDIR /app | ||||
| EXPOSE 80 | ||||
|  | ||||
| FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build | ||||
| WORKDIR /src | ||||
| COPY ["DamageAssesment.Api.DocuLinks/DamageAssesment.Api.DocuLinks.csproj", "DamageAssesment.Api.DocuLinks/"] | ||||
| RUN dotnet restore "DamageAssesment.Api.DocuLinks/DamageAssesment.Api.DocuLinks.csproj" | ||||
| COPY . . | ||||
| WORKDIR "/src/DamageAssesment.Api.DocuLinks" | ||||
| RUN dotnet build "DamageAssesment.Api.DocuLinks.csproj" -c Release -o /app/build | ||||
|  | ||||
| FROM build AS publish | ||||
| RUN dotnet publish "DamageAssesment.Api.DocuLinks.csproj" -c Release -o /app/publish /p:UseAppHost=false | ||||
|  | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
| COPY --from=publish /app/publish . | ||||
| # Create directories for attachments and set permissions | ||||
| RUN mkdir -p /app/DASA_Documents/Active && \ | ||||
|     mkdir -p /app/DASA_Documents/Deleted && \ | ||||
|     chown -R www-data:www-data /app/DASA_Documents | ||||
|  | ||||
| # Update appsettings.json with the correct paths for attachments | ||||
| RUN sed -i 's#"folderpath": "DASA_Documents/Active"#"folderpath": "/app/DASA_Documents/Active"#' appsettings.json && \ | ||||
|     sed -i 's#"Deletepath": "DASA_Documents/Deleted"#"Deletepath": "/app/DASA_Documents/Deleted"#' appsettings.json | ||||
|  | ||||
| ENTRYPOINT ["dotnet", "DamageAssesment.Api.DocuLinks.dll"] | ||||
| @ -13,7 +13,6 @@ namespace DamageAssesment.Api.DocuLinks.Interfaces | ||||
|         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.DoculinkAttachments DoculinkAttachments, string Path)> GetDownloadAttachmentAsync(int id); | ||||
|         Task<(bool IsSuccess, int counter, string message)> GetDocumentCounter(); | ||||
|  | ||||
|  | ||||
|  | ||||
| @ -8,7 +8,6 @@ namespace DamageAssesment.Api.DocuLinks.Models | ||||
|         public string docName { get; set; } | ||||
|         public string Path { get; set; } | ||||
|         public bool IsAttachments { get; set; } | ||||
|         public string Language { get; set; } | ||||
|         public int CustomOrder { get; set; } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -19,6 +19,5 @@ namespace DamageAssesment.Api.DocuLinks.Models | ||||
|         public int CustomOrder { get; set; } | ||||
|         public string url { get;set; } | ||||
|         public bool IsAttachments { get; set; } | ||||
|         public string Language { get; set; } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -19,14 +19,13 @@ builder.Services.AddSwaggerGen(c => | ||||
| // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle | ||||
| builder.Services.AddEndpointsApiExplorer(); | ||||
| builder.Services.AddSwaggerGen(); | ||||
| builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); | ||||
| builder.Services.AddScoped<IDoculinkProvider, DoculinkProvider>(); | ||||
| builder.Services.AddScoped<IUploadService, UploadService>(); | ||||
| builder.Services.AddScoped<IAzureBlobService, AzureBlobService>(); | ||||
| builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30 | ||||
| builder.Services.AddDbContext<DoculinkDbContext>(option => | ||||
| { | ||||
|     option.UseInMemoryDatabase("DocumentConnection"); | ||||
|     option.UseSqlServer("DoculinConnection"); | ||||
| }); | ||||
| var app = builder.Build(); | ||||
|  | ||||
|  | ||||
| @ -1,23 +1,14 @@ | ||||
| { | ||||
|   "$schema": "https://json.schemastore.org/launchsettings.json", | ||||
|   "iisSettings": { | ||||
|     "windowsAuthentication": false, | ||||
|     "anonymousAuthentication": true, | ||||
|     "iisExpress": { | ||||
|       "applicationUrl": "http://localhost:60754", | ||||
|       "sslPort": 0 | ||||
|     } | ||||
|   }, | ||||
| { | ||||
|   "profiles": { | ||||
|     "DamageAssesment.Api.Questions": { | ||||
|     "DamageAssesment.Api.Doculinks": { | ||||
|       "commandName": "Project", | ||||
|       "dotnetRunMessages": true, | ||||
|       "launchBrowser": true, | ||||
|       "launchUrl": "swagger", | ||||
|       "applicationUrl": "http://localhost:5133", | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|       }, | ||||
|       "dotnetRunMessages": true, | ||||
|       "applicationUrl": "http://localhost:5136" | ||||
|     }, | ||||
|     "IIS Express": { | ||||
|       "commandName": "IISExpress", | ||||
| @ -26,6 +17,24 @@ | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|     }, | ||||
|     "Docker": { | ||||
|       "commandName": "Docker", | ||||
|       "launchBrowser": true, | ||||
|       "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger", | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_URLS": "http://+:80" | ||||
|       }, | ||||
|       "publishAllPorts": true | ||||
|     } | ||||
|   }, | ||||
|   "$schema": "https://json.schemastore.org/launchsettings.json", | ||||
|   "iisSettings": { | ||||
|     "windowsAuthentication": false, | ||||
|     "anonymousAuthentication": true, | ||||
|     "iisExpress": { | ||||
|       "applicationUrl": "http://localhost:14425", | ||||
|       "sslPort": 0 | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -2,16 +2,13 @@ | ||||
| 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; | ||||
| using System.Runtime.CompilerServices; | ||||
| using System.Xml; | ||||
| using System.Xml.Linq; | ||||
|  | ||||
| @ -25,18 +22,13 @@ 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, IHttpContextAccessor httpContextAccessor) | ||||
|         public DoculinkProvider(DoculinkDbContext DocumentDbContext, ILogger<DoculinkProvider> logger, IMapper mapper, IUploadService uploadservice) | ||||
|         { | ||||
|             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(); | ||||
|         } | ||||
|  | ||||
| @ -79,10 +71,10 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|                     { | ||||
|                         linkTypeId = 1; | ||||
|  | ||||
|                         fileModel = new FileModel() { FileName = "Sample" + i, FileExtension = ".txt", FileContent = "c2FtcGxl", IsAttachments = true, CustomOrder = 1, Language = "en"  }; | ||||
|                         fileModel = new FileModel() { FileName = "Sample" + i, FileExtension = ".txt", FileContent = "c2FtcGxl", IsAttachments = true, CustomOrder = 1 }; | ||||
|                     } | ||||
|                     else | ||||
|                         fileModel = new FileModel() { url = "www.google" + i + ".com", IsAttachments = false, CustomOrder = 1,Language="en" }; | ||||
|                         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); | ||||
|                     DocumentDbContext.Documents.Add(mapper.Map<Models.Doculink, Db.Doculink>(document)); | ||||
| @ -178,42 +170,7 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|             MultiLanguage = dicttitle; | ||||
|             return MultiLanguage; | ||||
|         } | ||||
|         private List<Models.DoculinkAttachments> GetDocumentAttachment(int id,string? language) | ||||
|         { | ||||
|             List<Db.DoculinkAttachments> doculinkAttachments = null; | ||||
|             if (string.IsNullOrEmpty(language)) | ||||
|             { | ||||
|                 doculinkAttachments = DocumentDbContext.DoclinksAttachments.AsNoTracking().Where(a => a.DocumentId == id).ToList(); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 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) | ||||
|         { | ||||
|  | ||||
| @ -235,7 +192,8 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|                         item.titles = multilan.titles; | ||||
|                         item.description = multilan.description; | ||||
|                         item.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(item.linkTypeId, language)); | ||||
|                         item.doclinksAttachments = GetDocumentAttachment(item.Id,language); | ||||
|                         item.doclinksAttachments = mapper.Map<List<Db.DoculinkAttachments>, List<Models.DoculinkAttachments>>( | ||||
|                             DocumentDbContext.DoclinksAttachments.AsNoTracking().Where(a => a.DocumentId == item.Id).ToList()); | ||||
|                     } | ||||
|                    // List<ResDoculinks> doculinks = result.GroupBy(a => a.linkTypeId).Select(a => new ResDoculinks() { linkTypeId = a.Key, doculinks = a.ToList() }).ToList(); | ||||
|                     return (true, result, null); | ||||
| @ -270,7 +228,8 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|                         item.titles = multilan.titles; | ||||
|                         item.description = multilan.description; | ||||
|                         item.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(item.linkTypeId, language)); | ||||
|                         item.doclinksAttachments = GetDocumentAttachment(item.Id, language); | ||||
|                         item.doclinksAttachments = mapper.Map<List<Db.DoculinkAttachments>, List<Models.DoculinkAttachments>>( | ||||
|                             DocumentDbContext.DoclinksAttachments.AsNoTracking().Where(a => a.DocumentId == item.Id).ToList()); | ||||
|                     } | ||||
|                     //List<ResDoculinks> doculinks =  result.GroupBy(a => a.linkTypeId).Select(a => new ResDoculinks() { linkTypeId = a.Key, doculinks = a.ToList() }).ToList(); | ||||
|                     return (true, result, null); | ||||
| @ -325,7 +284,8 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|                     result.documentsTranslations = mapper.Map<List<Db.DoculinkTranslation>, List<Models.DoculinkTranslation>>( | ||||
|                             DocumentDbContext.DocumentsTranslations.Where(a => a.DocumentId == result.Id).ToList()); | ||||
|  | ||||
|                     result.doclinksAttachments = GetDocumentAttachment(id, ""); | ||||
|                     result.doclinksAttachments = mapper.Map<List<Db.DoculinkAttachments>, List<Models.DoculinkAttachments>>( | ||||
|                         DocumentDbContext.DoclinksAttachments.AsNoTracking().Where(a => a.DocumentId == id).ToList()); | ||||
|                     return (true, result, null); | ||||
|                 } | ||||
|                 return (false, null, "Not found"); | ||||
| @ -357,7 +317,8 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|                     result.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(result.linkTypeId, language)); | ||||
|                     result.titles = multilan.titles; | ||||
|                     result.description = multilan.description; | ||||
|                     result.doclinksAttachments = GetDocumentAttachment(id, language); | ||||
|                     result.doclinksAttachments = mapper.Map<List<Db.DoculinkAttachments>, List<Models.DoculinkAttachments>>( | ||||
|                         DocumentDbContext.DoclinksAttachments.AsNoTracking().Where(a => a.DocumentId == id).ToList()); | ||||
|                     return (true, result, null); | ||||
|                 } | ||||
|                 return (false, null, "Not found"); | ||||
| @ -388,7 +349,7 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|                 result.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(Document.linkTypeId, "")); | ||||
|                 result.titles = multilan.titles; | ||||
|                 result.description = multilan.description; | ||||
|                 result.doclinksAttachments = GetDocumentAttachment(document.Id,""); | ||||
|                 result.doclinksAttachments = Document.doclinksAttachments; | ||||
|                 return (true, result, null); | ||||
|             } | ||||
|             catch (Exception ex) | ||||
| @ -430,7 +391,7 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|                         result.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(document.linkTypeId, "")); | ||||
|                         result.titles = multilan.titles; | ||||
|                         result.description = multilan.description; | ||||
|                         result.doclinksAttachments = GetDocumentAttachment(document.Id, ""); | ||||
|                         result.doclinksAttachments = Document.doclinksAttachments; | ||||
|                         return (true, result, "Successful"); | ||||
|                     } | ||||
|                     else | ||||
|  | ||||
| @ -52,15 +52,6 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|                     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) | ||||
|         { | ||||
|             Models.Doculink Documents = new Models.Doculink(); | ||||
| @ -79,14 +70,14 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|                         counter++; | ||||
|                         if (item.IsAttachments) | ||||
|                         { | ||||
|                             UserfileName = Path.GetFileName(item.FileName + item.FileExtension); | ||||
|                             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,Language=item.Language }); | ||||
|                         attachments.Add(new Models.DoculinkAttachments { docName=UserfileName,Path=path,IsAttachments=item.IsAttachments,CustomOrder=item.CustomOrder }); | ||||
|                     } | ||||
|                 } | ||||
|                 Documents=new Models.Doculink (){ linkTypeId = documentInfo.linkTypeId, | ||||
| @ -121,14 +112,14 @@ namespace DamageAssesment.Api.DocuLinks.Providers | ||||
|                     counter++; | ||||
|                     if (item.IsAttachments) | ||||
|                     { | ||||
|                         UserfileName = Path.GetFileName(item.FileName+item.FileExtension); | ||||
|                         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,Language=item.Language }); | ||||
|                     attachments.Add(new Models.DoculinkAttachments { docName = UserfileName, Path = path,IsAttachments=item.IsAttachments,CustomOrder=item.CustomOrder }); | ||||
|                 } | ||||
|                 Models.Doculink Documents = new Models.Doculink() | ||||
|                 { | ||||
|  | ||||
| @ -6,6 +6,12 @@ | ||||
|     } | ||||
|   }, | ||||
|   "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;" | ||||
|  | ||||
|   }, | ||||
|   "Fileupload": { | ||||
|     "folderpath": "DASA_Documents/Active", | ||||
|     "Deletepath": "DASA_Documents/Deleted" | ||||
|  | ||||
| @ -5,13 +5,26 @@ | ||||
|     <Nullable>enable</Nullable> | ||||
|     <ImplicitUsings>enable</ImplicitUsings> | ||||
|     <GenerateDocumentationFile>True</GenerateDocumentationFile> | ||||
|     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | ||||
|     <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath> | ||||
|   </PropertyGroup> | ||||
|  | ||||
|   <ItemGroup> | ||||
|     <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> | ||||
|     <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.9"> | ||||
|       <PrivateAssets>all</PrivateAssets> | ||||
|       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||
|     </PackageReference> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.9"> | ||||
|       <PrivateAssets>all</PrivateAssets> | ||||
|       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||
|     </PackageReference> | ||||
|     <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.4" /> | ||||
|     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> | ||||
|   </ItemGroup> | ||||
|  | ||||
|  | ||||
| @ -4,18 +4,23 @@ namespace DamageAssesment.Api.Employees.Db | ||||
| { | ||||
|     public class EmployeeDbContext: DbContext | ||||
|     { | ||||
|         public DbSet<Db.Employee> Employees { get; set; } | ||||
|         public EmployeeDbContext(DbContextOptions options) : base(options) | ||||
|         private IConfiguration _Configuration { get; set; } | ||||
|         public EmployeeDbContext(DbContextOptions options, IConfiguration configuration) : base(options) | ||||
|         { | ||||
|             _Configuration = configuration; | ||||
|         } | ||||
|         protected override void OnConfiguring(DbContextOptionsBuilder options) | ||||
|         { | ||||
|             // connect to sql server with connection string from app settings | ||||
|             options.UseSqlServer(_Configuration.GetConnectionString("EmployeeConnection")); | ||||
|         } | ||||
|  | ||||
|         protected override void OnModelCreating(ModelBuilder modelBuilder) | ||||
|         { | ||||
|             base.OnModelCreating(modelBuilder); | ||||
|  | ||||
|             modelBuilder.Entity<Employee>() | ||||
|                 .Property(item => item.Id) | ||||
|                 .ValueGeneratedOnAdd(); | ||||
|         } | ||||
|         public DbSet<Db.Employee> Employees { get; set; } | ||||
|     } | ||||
| } | ||||
|  | ||||
							
								
								
									
										21
									
								
								DamageAssesmentApi/DamageAssesment.Api.Employees/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								DamageAssesmentApi/DamageAssesment.Api.Employees/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| #See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. | ||||
|  | ||||
| FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base | ||||
| WORKDIR /app | ||||
| EXPOSE 80 | ||||
|  | ||||
| FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build | ||||
| WORKDIR /src | ||||
| COPY ["DamageAssesment.Api.Employees/DamageAssesment.Api.Employees.csproj", "DamageAssesment.Api.Employees/"] | ||||
| RUN dotnet restore "DamageAssesment.Api.Employees/DamageAssesment.Api.Employees.csproj" | ||||
| COPY . . | ||||
| WORKDIR "/src/DamageAssesment.Api.Employees" | ||||
| RUN dotnet build "DamageAssesment.Api.Employees.csproj" -c Release -o /app/build | ||||
|  | ||||
| FROM build AS publish | ||||
| RUN dotnet publish "DamageAssesment.Api.Employees.csproj" -c Release -o /app/publish /p:UseAppHost=false | ||||
|  | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
| COPY --from=publish /app/publish . | ||||
| ENTRYPOINT ["dotnet", "DamageAssesment.Api.Employees.dll"] | ||||
| @ -24,7 +24,7 @@ builder.Services.AddScoped<IEmployeesProvider, EmployeesProvider>(); | ||||
| builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30 | ||||
| builder.Services.AddDbContext<EmployeeDbContext>(option => | ||||
| { | ||||
|     option.UseInMemoryDatabase("Employees"); | ||||
|     option.UseSqlServer("EmployeeConnection"); | ||||
| }); | ||||
|  | ||||
| var app = builder.Build(); | ||||
|  | ||||
| @ -1,23 +1,14 @@ | ||||
| { | ||||
|   "$schema": "https://json.schemastore.org/launchsettings.json", | ||||
|   "iisSettings": { | ||||
|     "windowsAuthentication": false, | ||||
|     "anonymousAuthentication": true, | ||||
|     "iisExpress": { | ||||
|       "applicationUrl": "http://localhost:14425", | ||||
|       "sslPort": 0 | ||||
|     } | ||||
|   }, | ||||
| { | ||||
|   "profiles": { | ||||
|     "DamageAssesment.Api.Employees": { | ||||
|       "commandName": "Project", | ||||
|       "dotnetRunMessages": true, | ||||
|       "launchBrowser": true, | ||||
|       "launchUrl": "swagger", | ||||
|       "applicationUrl": "http://localhost:5135", | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|       }, | ||||
|       "dotnetRunMessages": true, | ||||
|       "applicationUrl": "http://localhost:5135" | ||||
|     }, | ||||
|     "IIS Express": { | ||||
|       "commandName": "IISExpress", | ||||
| @ -26,6 +17,24 @@ | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|     }, | ||||
|     "Docker": { | ||||
|       "commandName": "Docker", | ||||
|       "launchBrowser": true, | ||||
|       "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger", | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_URLS": "http://+:80" | ||||
|       }, | ||||
|       "publishAllPorts": true | ||||
|     } | ||||
|   }, | ||||
|   "$schema": "https://json.schemastore.org/launchsettings.json", | ||||
|   "iisSettings": { | ||||
|     "windowsAuthentication": false, | ||||
|     "anonymousAuthentication": true, | ||||
|     "iisExpress": { | ||||
|       "applicationUrl": "http://localhost:14425", | ||||
|       "sslPort": 0 | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -77,8 +77,7 @@ namespace DamageAssesment.Api.Employees.Providers | ||||
|                     EmployeeDbContext.Employees.Add(_employee); | ||||
|                     Employee.Id = _employee.Id; | ||||
|                     EmployeeDbContext.SaveChanges(); | ||||
|                     //return (true, Employee, null); | ||||
|                     return (true, mapper.Map<Db.Employee, Models.Employee>(_employee), null); | ||||
|                     return (true, Employee, null); | ||||
|                 } | ||||
|                 return (false, null, "Employee code is already exits"); | ||||
|             } | ||||
|  | ||||
| @ -13,5 +13,11 @@ | ||||
|     "endpoint1": "xxx", | ||||
|     "endpoint2": "xxx", | ||||
|     "endpoint3": "xxx" | ||||
|   }, | ||||
|   "ConnectionStrings": { | ||||
|     //"EmployeeConnection": "Server=DESKTOP-OF5DPLQ\\SQLEXPRESS;Database=da_survey_dev;Trusted_Connection=True;TrustServerCertificate=True;", | ||||
|     //"EmployeeConnection": "Server=localhost,1433;Database=da_survey_dev;User Id=sa;Password=Password123;TrustServerCertificate=True;" | ||||
|     "EmployeeConnection": "Server=207.180.248.35;Database=da_survey_dev;User Id=sa;Password=YourStrongPassw0rd;TrustServerCertificate=True;" | ||||
|  | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -5,13 +5,27 @@ | ||||
|     <Nullable>enable</Nullable> | ||||
|     <ImplicitUsings>enable</ImplicitUsings> | ||||
|     <GenerateDocumentationFile>True</GenerateDocumentationFile> | ||||
|     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | ||||
|     <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath> | ||||
|   </PropertyGroup> | ||||
|  | ||||
|   <ItemGroup> | ||||
|     <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.9"> | ||||
|       <PrivateAssets>all</PrivateAssets> | ||||
|       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||
|     </PackageReference> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.9"> | ||||
|       <PrivateAssets>all</PrivateAssets> | ||||
|       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||
|     </PackageReference> | ||||
|     <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" /> | ||||
|     <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.4" /> | ||||
|     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> | ||||
|   </ItemGroup> | ||||
|  | ||||
|  | ||||
| @ -4,6 +4,16 @@ namespace DamageAssesment.Api.Locations.Db | ||||
| { | ||||
|     public class LocationDbContext : DbContext | ||||
|     { | ||||
|         private IConfiguration _Configuration { get; set; } | ||||
|         public LocationDbContext(DbContextOptions options, IConfiguration configuration) : base(options) | ||||
|         { | ||||
|             _Configuration = configuration; | ||||
|         } | ||||
|         protected override void OnConfiguring(DbContextOptionsBuilder options) | ||||
|         { | ||||
|             // connect to sql server with connection string from app settings | ||||
|             options.UseSqlServer(_Configuration.GetConnectionString("LocationConnection")); | ||||
|         } | ||||
|         public DbSet<Db.Location> Locations { get; set; } | ||||
|         public DbSet<Db.Region> Regions { get; set; } | ||||
|         public LocationDbContext(DbContextOptions options) : base(options) | ||||
|  | ||||
							
								
								
									
										21
									
								
								DamageAssesmentApi/DamageAssesment.Api.Locations/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								DamageAssesmentApi/DamageAssesment.Api.Locations/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| #See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. | ||||
|  | ||||
| FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base | ||||
| WORKDIR /app | ||||
| EXPOSE 80 | ||||
|  | ||||
| FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build | ||||
| WORKDIR /src | ||||
| COPY ["DamageAssesment.Api.Locations/DamageAssesment.Api.Locations.csproj", "DamageAssesment.Api.Locations/"] | ||||
| RUN dotnet restore "DamageAssesment.Api.Locations/DamageAssesment.Api.Locations.csproj" | ||||
| COPY . . | ||||
| WORKDIR "/src/DamageAssesment.Api.Locations" | ||||
| RUN dotnet build "DamageAssesment.Api.Locations.csproj" -c Release -o /app/build | ||||
|  | ||||
| FROM build AS publish | ||||
| RUN dotnet publish "DamageAssesment.Api.Locations.csproj" -c Release -o /app/publish /p:UseAppHost=false | ||||
|  | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
| COPY --from=publish /app/publish . | ||||
| ENTRYPOINT ["dotnet", "DamageAssesment.Api.Locations.dll"] | ||||
| @ -24,7 +24,7 @@ builder.Services.AddScoped<IRegionsProvider, RegionsProvider>(); | ||||
| builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30 | ||||
| builder.Services.AddDbContext<LocationDbContext>(option => | ||||
| { | ||||
|     option.UseInMemoryDatabase("Locations"); | ||||
|     option.UseSqlServer("LocationConnection"); | ||||
| }); | ||||
| var app = builder.Build(); | ||||
|  | ||||
|  | ||||
| @ -1,23 +1,14 @@ | ||||
| { | ||||
|   "$schema": "https://json.schemastore.org/launchsettings.json", | ||||
|   "iisSettings": { | ||||
|     "windowsAuthentication": false, | ||||
|     "anonymousAuthentication": true, | ||||
|     "iisExpress": { | ||||
|       "applicationUrl": "http://localhost:20458", | ||||
|       "sslPort": 0 | ||||
|     } | ||||
|   }, | ||||
| { | ||||
|   "profiles": { | ||||
|     "DamageAssesment.Api.Locations": { | ||||
|       "commandName": "Project", | ||||
|       "dotnetRunMessages": true, | ||||
|       "launchBrowser": true, | ||||
|       "launchUrl": "swagger", | ||||
|       "applicationUrl": "http://localhost:5213", | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|       }, | ||||
|       "dotnetRunMessages": true, | ||||
|       "applicationUrl": "http://localhost:5213" | ||||
|     }, | ||||
|     "IIS Express": { | ||||
|       "commandName": "IISExpress", | ||||
| @ -26,6 +17,24 @@ | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|     }, | ||||
|     "Docker": { | ||||
|       "commandName": "Docker", | ||||
|       "launchBrowser": true, | ||||
|       "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger", | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_URLS": "http://+:80" | ||||
|       }, | ||||
|       "publishAllPorts": true | ||||
|     } | ||||
|   }, | ||||
|   "$schema": "https://json.schemastore.org/launchsettings.json", | ||||
|   "iisSettings": { | ||||
|     "windowsAuthentication": false, | ||||
|     "anonymousAuthentication": true, | ||||
|     "iisExpress": { | ||||
|       "applicationUrl": "http://localhost:20458", | ||||
|       "sslPort": 0 | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -8,5 +8,11 @@ | ||||
|       "Microsoft.AspNetCore": "Warning" | ||||
|     } | ||||
|   }, | ||||
|   "AllowedHosts": "*" | ||||
|   "AllowedHosts": "*", | ||||
|   "ConnectionStrings": { | ||||
|     //"LocationConnection": "Server=DESKTOP-OF5DPLQ\\SQLEXPRESS;Database=da_survey_dev;Trusted_Connection=True;TrustServerCertificate=True;", | ||||
|     // "LocationConnection": "Server=localhost,1433;Database=da_survey_dev;User Id=sa;Password=Password123;TrustServerCertificate=True;" | ||||
|     "LocationConnection": "Server=207.180.248.35;Database=da_survey_dev;User Id=sa;Password=YourStrongPassw0rd;TrustServerCertificate=True;" | ||||
|  | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -1,5 +1,4 @@ | ||||
| using DamageAssesment.Api.Questions.Interfaces; | ||||
| using DamageAssesment.Api.Questions.Models; | ||||
| using Microsoft.AspNetCore.Mvc; | ||||
|  | ||||
| namespace DamageAssesment.Api.Questions.Controllers | ||||
| @ -110,26 +109,6 @@ namespace DamageAssesment.Api.Questions.Controllers | ||||
|             return CreatedAtRoute("DefaultApi",questions); | ||||
|         } | ||||
|         /// <summary> | ||||
|         /// PUT request for update a multiple question (multilingual) for survey. | ||||
|         /// </summary> | ||||
|         [HttpPut("questions/multiple/{surveyid}")] | ||||
|         public async Task<IActionResult> CreateQuestions(int surveyid, List<Models.Question> questions) | ||||
|         { | ||||
|             if (questions != null) | ||||
|             { | ||||
|                 var result = await this.questionsProvider.PutQuestionsAsync(surveyid,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). | ||||
|         /// </summary> | ||||
|  | ||||
|  | ||||
| @ -5,13 +5,27 @@ | ||||
|     <Nullable>enable</Nullable> | ||||
|     <ImplicitUsings>enable</ImplicitUsings> | ||||
|     <GenerateDocumentationFile>True</GenerateDocumentationFile> | ||||
|     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | ||||
|     <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath> | ||||
|   </PropertyGroup> | ||||
|  | ||||
|   <ItemGroup> | ||||
|     <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.9"> | ||||
|       <PrivateAssets>all</PrivateAssets> | ||||
|       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||
|     </PackageReference> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.9"> | ||||
|       <PrivateAssets>all</PrivateAssets> | ||||
|       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||
|     </PackageReference> | ||||
|     <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" /> | ||||
|     <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.4" /> | ||||
|     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> | ||||
|   </ItemGroup> | ||||
|  | ||||
|  | ||||
| @ -6,6 +6,16 @@ namespace DamageAssesment.Api.Questions.Db | ||||
| { | ||||
|     public class QuestionDbContext : DbContext | ||||
|     { | ||||
|         private IConfiguration _Configuration { get; set; } | ||||
|         public QuestionDbContext(DbContextOptions options, IConfiguration configuration) : base(options) | ||||
|         { | ||||
|             _Configuration = configuration; | ||||
|         } | ||||
|         protected override void OnConfiguring(DbContextOptionsBuilder options) | ||||
|         { | ||||
|             // connect to sql server with connection string from app settings | ||||
|             options.UseSqlServer(_Configuration.GetConnectionString("QuestionConnection")); | ||||
|         } | ||||
|         public DbSet<Db.Question> Questions { get; set; } | ||||
|         public DbSet<Db.QuestionType> QuestionTypes { get; set; } | ||||
|         public DbSet<Db.QuestionsTranslation> QuestionsTranslations { get; set; } | ||||
|  | ||||
							
								
								
									
										21
									
								
								DamageAssesmentApi/DamageAssesment.Api.Questions/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								DamageAssesmentApi/DamageAssesment.Api.Questions/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| #See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. | ||||
|  | ||||
| FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base | ||||
| WORKDIR /app | ||||
| EXPOSE 80 | ||||
|  | ||||
| FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build | ||||
| WORKDIR /src | ||||
| COPY ["DamageAssesment.Api.Questions/DamageAssesment.Api.Questions.csproj", "DamageAssesment.Api.Questions/"] | ||||
| RUN dotnet restore "DamageAssesment.Api.Questions/DamageAssesment.Api.Questions.csproj" | ||||
| COPY . . | ||||
| WORKDIR "/src/DamageAssesment.Api.Questions" | ||||
| RUN dotnet build "DamageAssesment.Api.Questions.csproj" -c Release -o /app/build | ||||
|  | ||||
| FROM build AS publish | ||||
| RUN dotnet publish "DamageAssesment.Api.Questions.csproj" -c Release -o /app/publish /p:UseAppHost=false | ||||
|  | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
| COPY --from=publish /app/publish . | ||||
| ENTRYPOINT ["dotnet", "DamageAssesment.Api.Questions.dll"] | ||||
| @ -9,7 +9,6 @@ namespace DamageAssesment.Api.Questions.Interfaces | ||||
|         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, IEnumerable<Models.MultiLanguage> Question, string ErrorMessage)> PostQuestionsAsync(List<Models.Question> Questions); | ||||
|         Task<(bool IsSuccess, IEnumerable<Models.MultiLanguage> Question, string ErrorMessage)> PutQuestionsAsync(int surveyId,List<Models.Question> Questions); | ||||
|         Task<(bool IsSuccess, Models.MultiLanguage Question, string ErrorMessage)> UpdateQuestionAsync(Models.Question Question); | ||||
|         Task<(bool IsSuccess, Models.MultiLanguage Question, string ErrorMessage)> DeleteQuestionAsync(int id); | ||||
|  | ||||
|  | ||||
| @ -26,7 +26,7 @@ builder.Services.AddSwaggerGen(c => | ||||
| }); | ||||
| builder.Services.AddDbContext<QuestionDbContext>(option => | ||||
| { | ||||
|     option.UseInMemoryDatabase("Questions"); | ||||
|     option.UseSqlServer("QuestionConnection"); | ||||
| }); | ||||
| var app = builder.Build(); | ||||
|  | ||||
|  | ||||
| @ -1,23 +1,14 @@ | ||||
| { | ||||
|   "$schema": "https://json.schemastore.org/launchsettings.json", | ||||
|   "iisSettings": { | ||||
|     "windowsAuthentication": false, | ||||
|     "anonymousAuthentication": true, | ||||
|     "iisExpress": { | ||||
|       "applicationUrl": "http://localhost:60754", | ||||
|       "sslPort": 0 | ||||
|     } | ||||
|   }, | ||||
| { | ||||
|   "profiles": { | ||||
|     "DamageAssesment.Api.Questions": { | ||||
|       "commandName": "Project", | ||||
|       "dotnetRunMessages": true, | ||||
|       "launchBrowser": true, | ||||
|       "launchUrl": "swagger", | ||||
|       "applicationUrl": "http://localhost:5133", | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|       }, | ||||
|       "dotnetRunMessages": true, | ||||
|       "applicationUrl": "http://localhost:5133" | ||||
|     }, | ||||
|     "IIS Express": { | ||||
|       "commandName": "IISExpress", | ||||
| @ -26,6 +17,24 @@ | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|     }, | ||||
|     "Docker": { | ||||
|       "commandName": "Docker", | ||||
|       "launchBrowser": true, | ||||
|       "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger", | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_URLS": "http://+:80" | ||||
|       }, | ||||
|       "publishAllPorts": true | ||||
|     } | ||||
|   }, | ||||
|   "$schema": "https://json.schemastore.org/launchsettings.json", | ||||
|   "iisSettings": { | ||||
|     "windowsAuthentication": false, | ||||
|     "anonymousAuthentication": true, | ||||
|     "iisExpress": { | ||||
|       "applicationUrl": "http://localhost:60754", | ||||
|       "sslPort": 0 | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -31,8 +31,7 @@ namespace DamageAssesment.Api.Questions.Providers | ||||
|                 questionDbContext.QuestionTypes.Add(new Db.QuestionType() { TypeText = "TextBox" }); | ||||
|                 questionDbContext.SaveChanges(); | ||||
|             } | ||||
|  | ||||
|             if (!questionDbContext.QuestionCategories.Any()) | ||||
|             if (!questionDbContext.QuestionsTranslations.Any()) | ||||
|             { | ||||
|                 questionDbContext.QuestionCategories.Add(new Db.QuestionCategory() { IconName = "Flooding", IconLibrary = "https://example.com/images/img1.png" }); | ||||
|                 questionDbContext.QuestionCategories.Add(new Db.QuestionCategory() { IconName = "Electrical", IconLibrary = "https://example.com/images/img2.png" }); | ||||
| @ -377,36 +376,6 @@ namespace DamageAssesment.Api.Questions.Providers | ||||
|                 return (false, null, ex.Message); | ||||
|             } | ||||
|         } | ||||
|        | ||||
|         public async Task<(bool IsSuccess, IEnumerable<Models.MultiLanguage> Question, string ErrorMessage)> PutQuestionsAsync(int surveyId, List<Models.Question> Questions) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 var questions=await questionDbContext.Questions.AsNoTracking().Where(a=>a.SurveyId == surveyId).ToListAsync(); | ||||
|                 if (questions != null) | ||||
|                 { | ||||
|                     List<int> questionids=questions.Select(a=>a.Id).ToList(); | ||||
|                     var questiontrans = await questionDbContext.QuestionsTranslations.AsNoTracking().Where(x => questionids.Contains(x.QuestionId)).ToListAsync(); | ||||
|                     if (questiontrans != null) | ||||
|                         questionDbContext.QuestionsTranslations.RemoveRange(questiontrans); | ||||
|                     questionDbContext.Questions.RemoveRange(questions); | ||||
|                     questionDbContext.SaveChanges(); | ||||
|                 } | ||||
|                 List<Models.MultiLanguage> results = new List<MultiLanguage>(); | ||||
|                 logger?.LogInformation("Query Question"); | ||||
|                 foreach (Models.Question Question in Questions) | ||||
|                 { | ||||
|                     Question.SurveyId = surveyId; | ||||
|                     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) | ||||
|         { | ||||
|             try | ||||
| @ -440,11 +409,8 @@ namespace DamageAssesment.Api.Questions.Providers | ||||
|  | ||||
|                 if (question != null) | ||||
|                 { | ||||
|                     var questiontrans=await questionDbContext.QuestionsTranslations.AsNoTracking().Where(x=>x.QuestionId== id).ToListAsync(); | ||||
|                     var result = mapper.Map<Db.Question, Models.MultiLanguage>(question); | ||||
|                     result.Text = CreateMultiLanguageObject(GetQuestionsTranslations(result.Id, "")); | ||||
|                     if(questiontrans!=null) | ||||
|                         questionDbContext.QuestionsTranslations.RemoveRange(questiontrans); | ||||
|                     questionDbContext.Questions.Remove(question); | ||||
|                     questionDbContext.SaveChanges(); | ||||
|                     return (true, result, $"QuestionID {id} deleted Successfuly"); | ||||
|  | ||||
| @ -8,5 +8,11 @@ | ||||
|       "Microsoft.AspNetCore": "Warning" | ||||
|     } | ||||
|   }, | ||||
|   "AllowedHosts": "*" | ||||
|   "AllowedHosts": "*", | ||||
|   "ConnectionStrings": { | ||||
|     //"QuestionConnection": "Server=DESKTOP-OF5DPLQ\\SQLEXPRESS;Database=da_survey_dev;Trusted_Connection=True;TrustServerCertificate=True;" | ||||
|     // "QuestionConnection": "Server=localhost,1433;Database=da_survey_dev;User Id=sa;Password=Password123;TrustServerCertificate=True;" | ||||
|     "QuestionConnection": "Server=207.180.248.35;Database=da_survey_dev;User Id=sa;Password=YourStrongPassw0rd;TrustServerCertificate=True;" | ||||
|  | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -10,7 +10,7 @@ | ||||
|   </PropertyGroup> | ||||
|  | ||||
|   <ItemGroup> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" /> | ||||
|     <PackageReference Include="Moq" Version="4.18.4" /> | ||||
|     <PackageReference Include="xunit" Version="2.4.2" /> | ||||
|  | ||||
| @ -5,15 +5,32 @@ | ||||
|     <Nullable>enable</Nullable> | ||||
|     <ImplicitUsings>enable</ImplicitUsings> | ||||
|     <GenerateDocumentationFile>True</GenerateDocumentationFile> | ||||
|     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | ||||
|     <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath> | ||||
|   </PropertyGroup> | ||||
|  | ||||
|   <ItemGroup> | ||||
|     <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> | ||||
|     <PackageReference Include="EPPlus" Version="7.0.0" /> | ||||
|     <PackageReference Include="ClosedXML" Version="0.102.1" /> | ||||
|     <PackageReference Include="EPPlus" Version="6.2.10" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.9"> | ||||
|       <PrivateAssets>all</PrivateAssets> | ||||
|       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||
|     </PackageReference> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.9"> | ||||
|       <PrivateAssets>all</PrivateAssets> | ||||
|       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||
|     </PackageReference> | ||||
|     <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="7.0.0" /> | ||||
|     <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" /> | ||||
|     <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="7.0.5" /> | ||||
|     <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.4" /> | ||||
|     <PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> | ||||
|     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> | ||||
|   </ItemGroup> | ||||
|  | ||||
| @ -4,12 +4,17 @@ namespace DamageAssesment.Api.Responses.Db | ||||
| { | ||||
|     public class SurveyResponseDbContext:DbContext | ||||
|     { | ||||
|         public DbSet<Db.SurveyResponse> SurveyResponses { get; set; } | ||||
|  | ||||
|         public SurveyResponseDbContext(DbContextOptions options) : base(options) | ||||
|         private IConfiguration _Configuration { get; set; } | ||||
|         public SurveyResponseDbContext(DbContextOptions options, IConfiguration configuration) : base(options) | ||||
|         { | ||||
|  | ||||
|             _Configuration = configuration; | ||||
|         } | ||||
|         protected override void OnConfiguring(DbContextOptionsBuilder options) | ||||
|         { | ||||
|             // connect to sql server with connection string from app settings | ||||
|             options.UseSqlServer(_Configuration.GetConnectionString("ResponsesConnection")); | ||||
|         } | ||||
|         public DbSet<Db.SurveyResponse> SurveyResponses { get; set; } | ||||
|  | ||||
|         protected override void OnModelCreating(ModelBuilder modelBuilder) | ||||
|         { | ||||
|  | ||||
							
								
								
									
										21
									
								
								DamageAssesmentApi/DamageAssesment.Api.Responses/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								DamageAssesmentApi/DamageAssesment.Api.Responses/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| #See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. | ||||
|  | ||||
| FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base | ||||
| WORKDIR /app | ||||
| EXPOSE 80 | ||||
|  | ||||
| FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build | ||||
| WORKDIR /src | ||||
| COPY ["DamageAssesment.Api.Responses/DamageAssesment.Api.Responses.csproj", "DamageAssesment.Api.Responses/"] | ||||
| RUN dotnet restore "DamageAssesment.Api.Responses/DamageAssesment.Api.Responses.csproj" | ||||
| COPY . . | ||||
| WORKDIR "/src/DamageAssesment.Api.Responses" | ||||
| RUN dotnet build "DamageAssesment.Api.Responses.csproj" -c Release -o /app/build | ||||
|  | ||||
| FROM build AS publish | ||||
| RUN dotnet publish "DamageAssesment.Api.Responses.csproj" -c Release -o /app/publish /p:UseAppHost=false | ||||
|  | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
| COPY --from=publish /app/publish . | ||||
| ENTRYPOINT ["dotnet", "DamageAssesment.Api.Responses.dll"] | ||||
| @ -5,7 +5,6 @@ | ||||
|         public int CategoryId { get; set; } | ||||
|         public string CategoryName { get; set; } | ||||
|         public string CategoryImage { get; set; } | ||||
|         public object CategoryNames { get; set; } | ||||
|         public List<Question> Questions { get; set; } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -45,7 +45,7 @@ builder.Services.AddSwaggerGen(c => | ||||
| }); | ||||
| builder.Services.AddDbContext<SurveyResponseDbContext>(option => | ||||
| { | ||||
|     option.UseInMemoryDatabase("Responses"); | ||||
|     option.UseSqlServer("ResponsesConnection"); | ||||
| }); | ||||
| var app = builder.Build(); | ||||
|  | ||||
|  | ||||
| @ -1,23 +1,14 @@ | ||||
| { | ||||
|   "$schema": "https://json.schemastore.org/launchsettings.json", | ||||
|   "iisSettings": { | ||||
|     "windowsAuthentication": false, | ||||
|     "anonymousAuthentication": true, | ||||
|     "iisExpress": { | ||||
|       "applicationUrl": "http://localhost:58856", | ||||
|       "sslPort": 0 | ||||
|     } | ||||
|   }, | ||||
| { | ||||
|   "profiles": { | ||||
|     "DamageAssesment.Api.SurveyResponses": { | ||||
|       "commandName": "Project", | ||||
|       "dotnetRunMessages": true, | ||||
|       "launchBrowser": true, | ||||
|       "launchUrl": "swagger", | ||||
|       "applicationUrl": "http://localhost:5104", | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|       }, | ||||
|       "dotnetRunMessages": true, | ||||
|       "applicationUrl": "http://localhost:5104" | ||||
|     }, | ||||
|     "IIS Express": { | ||||
|       "commandName": "IISExpress", | ||||
| @ -26,6 +17,24 @@ | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|     }, | ||||
|     "Docker": { | ||||
|       "commandName": "Docker", | ||||
|       "launchBrowser": true, | ||||
|       "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger", | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_URLS": "http://+:80" | ||||
|       }, | ||||
|       "publishAllPorts": true | ||||
|     } | ||||
|   }, | ||||
|   "$schema": "https://json.schemastore.org/launchsettings.json", | ||||
|   "iisSettings": { | ||||
|     "windowsAuthentication": false, | ||||
|     "anonymousAuthentication": true, | ||||
|     "iisExpress": { | ||||
|       "applicationUrl": "http://localhost:58856", | ||||
|       "sslPort": 0 | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -1,8 +1,8 @@ | ||||
| using DamageAssesment.Api.Responses.Interfaces; | ||||
| using ClosedXML.Excel; | ||||
| using DamageAssesment.Api.Responses.Interfaces; | ||||
| using DamageAssesment.Api.Responses.Models; | ||||
| using OfficeOpenXml; | ||||
| using System.Collections.Generic; | ||||
| using System.ComponentModel; | ||||
|  | ||||
| namespace DamageAssesment.Api.Responses.Providers | ||||
| { | ||||
| @ -10,7 +10,7 @@ namespace DamageAssesment.Api.Responses.Providers | ||||
|     { | ||||
|         public byte[] ExportToExcel<T1>(List<object> responses) | ||||
|         {  | ||||
|             ExcelPackage.LicenseContext = OfficeOpenXml.LicenseContext.NonCommercial; | ||||
|             ExcelPackage.LicenseContext = LicenseContext.NonCommercial; | ||||
|             using (var package = new ExcelPackage()) | ||||
|             { | ||||
|                 // Create the first worksheet and populate it with responses | ||||
|  | ||||
| @ -56,20 +56,16 @@ namespace DamageAssesment.Api.Responses.Providers | ||||
|             try | ||||
|             { | ||||
|                 logger?.LogInformation("Querying to get SurveyResponse object from DB"); | ||||
|                 List<Db.SurveyResponse> listSurveyResponse = null; | ||||
|                 IQueryable<Db.SurveyResponse> listSurveyResponse = null; | ||||
|                 if (employeeid == 0) | ||||
|                 { | ||||
|                     listSurveyResponse = surveyResponseDbContext.SurveyResponses.Where(s => s.SurveyId == surveyId).ToList(); | ||||
|                     listSurveyResponse = surveyResponseDbContext.SurveyResponses.Where(s => s.SurveyId == surveyId); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     listSurveyResponse = surveyResponseDbContext.SurveyResponses.Where(s => s.SurveyId == surveyId && s.EmployeeId == employeeid).ToList(); | ||||
|                     listSurveyResponse = surveyResponseDbContext.SurveyResponses.Where(s => s.SurveyId == surveyId && s.EmployeeId == employeeid); | ||||
|                 } | ||||
|                 listSurveyResponse = listSurveyResponse | ||||
|                .OrderByDescending(obj => obj.Id) | ||||
|                .GroupBy(obj => new { obj.SurveyId,  obj.LocationId })//obj.EmployeeId, | ||||
|                .Select(group => group.FirstOrDefault())  // or .FirstOrDefault() if you want to handle empty groups | ||||
|                .ToList(); | ||||
|  | ||||
|                 if (listSurveyResponse.Any()) | ||||
|                 { | ||||
|                     var answers = await getAnswersByRegionAndSurveyIdAsync(listSurveyResponse); | ||||
| @ -421,13 +417,14 @@ namespace DamageAssesment.Api.Responses.Providers | ||||
|         } | ||||
|  | ||||
|         //Method to get Answers by region with surveyId as input parameter | ||||
|         private async Task<dynamic> getAnswersByRegionAndSurveyIdAsync(List<Db.SurveyResponse> surveyResponses) | ||||
|         private async Task<dynamic> getAnswersByRegionAndSurveyIdAsync(IQueryable<Db.SurveyResponse> surveyResponses) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 var answersList = await answerServiceProvider.getAnswersAsync(); | ||||
|                 if (answersList == null || !answersList.Any()) | ||||
|                     return null; | ||||
|  | ||||
|                 //get all the answers for the particular survey | ||||
|                 var surveyAnswers = answersList.Join( | ||||
|                                        surveyResponses, | ||||
| @ -568,11 +565,7 @@ namespace DamageAssesment.Api.Responses.Providers | ||||
|                     surveyResonses = await surveyResponseDbContext.SurveyResponses.Where(x => x.SurveyId == surveyId && x.EmployeeId == employeeid).ToListAsync(); | ||||
|                     employee = await employeeServiceProvider.getEmployeeAsync(employeeid); | ||||
|                 } | ||||
|                 surveyResonses = surveyResonses | ||||
|                 .OrderByDescending(obj => obj.Id) | ||||
|                 .GroupBy(obj => new { obj.SurveyId, obj.LocationId })//obj.EmployeeId, | ||||
|                 .Select(group => group.FirstOrDefault())  // or .FirstOrDefault() if you want to handle empty groups | ||||
|                 .ToList(); | ||||
|  | ||||
|                 var answers = await answerServiceProvider.getAnswersAsync(); | ||||
|                 var questions = await questionServiceProvider.getQuestionsAsync(null); | ||||
|                 var Locations = await locationServiceProvider.getLocationsAsync(); | ||||
| @ -593,18 +586,18 @@ namespace DamageAssesment.Api.Responses.Providers | ||||
|                                      r.LocationId, | ||||
|                                      r.EmployeeId, | ||||
|                                      r.ClientDevice, | ||||
|                                     // r.KeyAnswerResult, | ||||
|                                      r.KeyAnswerResult, | ||||
|                                      loc.DataValue, | ||||
|                                      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 | ||||
|                                                where ans.SurveyResponseId == r.Id | ||||
|                                                select new | ||||
|                                                { | ||||
|                                                    ans.Id, | ||||
|                                                 //   ans.QuestionId, | ||||
|                                                    ans.QuestionId, | ||||
|                                                    ans.AnswerText, | ||||
|                                                    ans.Comment, | ||||
|                                                    Questions = (from q in surveyQuestions where q.Id == ans.QuestionId select new { q.Id, q.QuestionNumber, q.CategoryId, q.Text }).SingleOrDefault(), | ||||
| @ -630,18 +623,18 @@ namespace DamageAssesment.Api.Responses.Providers | ||||
|                                      r.LocationId, | ||||
|                                      r.EmployeeId, | ||||
|                                      r.ClientDevice, | ||||
|                                    //  r.KeyAnswerResult, | ||||
|                                      r.KeyAnswerResult, | ||||
|                                      loc.DataValue, | ||||
|                                      loc.Enrollment, | ||||
|                                      loc.Longitute, | ||||
|                                      loc.Latitude, | ||||
|                                    //  Employee = _employee, | ||||
|                                      Employee = _employee, | ||||
|                                      answers = from ans in answers | ||||
|                                                where ans.SurveyResponseId == r.Id | ||||
|                                                select new | ||||
|                                                { | ||||
|                                                    ans.Id, | ||||
|                                              //      ans.QuestionId, | ||||
|                                                    ans.QuestionId, | ||||
|                                                    ans.AnswerText, | ||||
|                                                    ans.Comment, | ||||
|                                                    Questions = (from q in questions where q.Id == ans.QuestionId select new { q.Id, q.QuestionNumber, q.CategoryId, q.Text }).SingleOrDefault(), | ||||
| @ -700,18 +693,18 @@ namespace DamageAssesment.Api.Responses.Providers | ||||
|                                  r.LocationId, | ||||
|                                  r.EmployeeId, | ||||
|                                  r.ClientDevice, | ||||
|                                //  r.KeyAnswerResult, | ||||
|                                  r.KeyAnswerResult, | ||||
|                                  loc.DataValue, | ||||
|                                  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 | ||||
|                                            where ans.SurveyResponseId == r.Id | ||||
|                                            select new | ||||
|                                            { | ||||
|                                                ans.Id, | ||||
|                                          //      ans.QuestionId, | ||||
|                                                ans.QuestionId, | ||||
|                                                ans.AnswerText, | ||||
|                                                ans.Comment, | ||||
|                                                Questions = (from q in questions where q.Id == ans.QuestionId select new { q.Id, q.QuestionNumber, q.CategoryId, q.Text }).SingleOrDefault(), | ||||
| @ -952,11 +945,7 @@ namespace DamageAssesment.Api.Responses.Providers | ||||
|                         _employee = new { employee.Id, employee.Name, employee.BirthDate, employee.Email, employee.OfficePhoneNumber }; | ||||
|                     } | ||||
|                 } | ||||
|                 surveyResonses = surveyResonses | ||||
|                 .OrderByDescending(obj => obj.Id) | ||||
|                 .GroupBy(obj => new { obj.SurveyId,  obj.LocationId }) //obj.EmployeeId, | ||||
|                 .Select(group => group.FirstOrDefault())  // or .FirstOrDefault() if you want to handle empty groups | ||||
|                 .ToList(); | ||||
|  | ||||
|                 var answers = await answerServiceProvider.getAnswersAsync(); | ||||
|                 var questions = await questionServiceProvider.getQuestionsAsync(null); | ||||
|                 var surveyQuestions = from q in questions where q.SurveyId == surveyId select q; | ||||
| @ -972,18 +961,18 @@ namespace DamageAssesment.Api.Responses.Providers | ||||
|                                  r.LocationId, | ||||
|                                  r.EmployeeId, | ||||
|                                  r.ClientDevice, | ||||
|                                //  r.KeyAnswerResult, | ||||
|                                  r.KeyAnswerResult, | ||||
|                                  loc.DataValue, | ||||
|                                  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 | ||||
|                                            where ans.SurveyResponseId == r.Id | ||||
|  | ||||
|                                            select new | ||||
|                                            { | ||||
|                                           //     ans.QuestionId, | ||||
|                                                ans.QuestionId, | ||||
|                                                ans.Id, | ||||
|                                                ans.AnswerText, | ||||
|                                                ans.Comment, | ||||
| @ -1027,11 +1016,7 @@ namespace DamageAssesment.Api.Responses.Providers | ||||
|                         _employee = new { employee.Id, employee.Name, employee.BirthDate, employee.Email, employee.OfficePhoneNumber }; | ||||
|                     } | ||||
|                 } | ||||
|                 surveyResponses = surveyResponses | ||||
|                 .OrderByDescending(obj => obj.Id) | ||||
|                 .GroupBy(obj => new { obj.SurveyId, obj.LocationId })//, obj.EmployeeId | ||||
|                 .Select(group => group.FirstOrDefault())  // or .FirstOrDefault() if you want to handle empty groups | ||||
|                 .ToList(); | ||||
|  | ||||
|                 //var surveyResponses = await surveyResponseDbContext.Responses.Where(x => x.SurveyId == survey.Id).ToListAsync(); | ||||
|                 // var employees = await employeeServiceProvider.getEmployeesAsync(); | ||||
|                 var answers = await answerServiceProvider.getAnswersAsync(); | ||||
| @ -1046,12 +1031,12 @@ namespace DamageAssesment.Api.Responses.Providers | ||||
|                                  r.LocationId, | ||||
|                                  r.EmployeeId, | ||||
|                                  r.ClientDevice, | ||||
|                              //    r.KeyAnswerResult, | ||||
|                                  r.KeyAnswerResult, | ||||
|                                  loc.DataValue, | ||||
|                                  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 | ||||
|                                            where ans.SurveyResponseId == r.Id | ||||
|                                            && ans.QuestionId == question.Id | ||||
| @ -1059,7 +1044,7 @@ namespace DamageAssesment.Api.Responses.Providers | ||||
|  | ||||
|                                            select new | ||||
|                                            { | ||||
|                                               // ans.QuestionId, | ||||
|                                                ans.QuestionId, | ||||
|                                                AnswerId = ans.Id, | ||||
|                                                ans.AnswerText, | ||||
|                                                ans.Comment, | ||||
|  | ||||
| @ -6,15 +6,26 @@ | ||||
|     } | ||||
|   }, | ||||
|   "AllowedHosts": "*", | ||||
|  | ||||
|   //"EndPointSettings": { | ||||
|   //  "AnswerUrlBase": "http://localhost:5200", | ||||
|   //  "LocationUrlBase": "http://localhost:5213", | ||||
|   //  "RegionUrlBase": "http://localhost:5211", | ||||
|   //  "QuestionUrlBase": "http://localhost:5133", | ||||
|   //  "EmployeeUrlBase": "http://localhost:5135", | ||||
|   //  "AttachmentUrlBase": "http://localhost:5243", | ||||
|   //  "SurveyUrlBase": "http://localhost:5009" | ||||
|   //}, | ||||
|   //Endpoints for docker-container   | ||||
|   "EndPointSettings": { | ||||
|     "AnswerUrlBase": "http://localhost:5200", | ||||
|     "LocationUrlBase": "http://localhost:5213", | ||||
|     "RegionUrlBase": "http://localhost:5211", | ||||
|     "QuestionUrlBase": "http://localhost:5133", | ||||
|     "EmployeeUrlBase": "http://localhost:5135", | ||||
|     "AttachmentUrlBase": "http://localhost:5243", | ||||
|     "SurveyUrlBase": "http://localhost:5009" | ||||
|     "AnswerUrlBase": "http://damageassesment.api.answers:80", | ||||
|     "LocationUrlBase": "http://damageassesment.api.locations:80", | ||||
|     "QuestionUrlBase": "http://damageassesment.api.questions:80", | ||||
|     "EmployeeUrlBase": "http://damageassesment.api.employees:80", | ||||
|     "AttachmentUrlBase": "http://damageassesment.api.attachments:80", | ||||
|     "SurveyUrlBase": "http://damageassesment.api.surveys:80" | ||||
|   }, | ||||
|  | ||||
|   "RessourceSettings": { | ||||
|     "Employee": "/employees", | ||||
|     "EmployeeById": "/employees/{0}", | ||||
| @ -29,5 +40,10 @@ | ||||
|     "AnswerByResponse": "/answers/byresponse/{0}", | ||||
|     "Location": "/locations", | ||||
|     "Region": "/regions" | ||||
|   }, | ||||
|   "ConnectionStrings": { | ||||
|     //"SurveyResponseConnection": "Server=DESKTOP-OF5DPLQ\\SQLEXPRESS;Database=da_survey_dev;Trusted_Connection=True;TrustServerCertificate=True;" | ||||
|      //"ResponsesConnection": "Server=DESKTOP-OF5DPLQ\\SQLEXPRESS;Database=da_survey_dev;Trusted_Connection=True;TrustServerCertificate=True;" | ||||
|     "ResponsesConnection": "Server=207.180.248.35;Database=da_survey_dev;User Id=sa;Password=YourStrongPassw0rd;TrustServerCertificate=True;" | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -0,0 +1,55 @@ | ||||
| // <auto-generated /> | ||||
| using DamageAssesment.Api.SurveyResponses.Db; | ||||
| using Microsoft.EntityFrameworkCore; | ||||
| using Microsoft.EntityFrameworkCore.Infrastructure; | ||||
| using Microsoft.EntityFrameworkCore.Metadata; | ||||
| using Microsoft.EntityFrameworkCore.Migrations; | ||||
| using Microsoft.EntityFrameworkCore.Storage.ValueConversion; | ||||
|  | ||||
| #nullable disable | ||||
|  | ||||
| namespace DamageAssesment.Api.SurveyResponses.Migrations | ||||
| { | ||||
|     [DbContext(typeof(SurveyResponseDbContext))] | ||||
|     [Migration("20230817221348_InitialSurveyResponse")] | ||||
|     partial class InitialSurveyResponse | ||||
|     { | ||||
|         /// <inheritdoc /> | ||||
|         protected override void BuildTargetModel(ModelBuilder modelBuilder) | ||||
|         { | ||||
| #pragma warning disable 612, 618 | ||||
|             modelBuilder | ||||
|                 .HasAnnotation("ProductVersion", "7.0.9") | ||||
|                 .HasAnnotation("Relational:MaxIdentifierLength", 128); | ||||
|  | ||||
|             SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); | ||||
|  | ||||
|             modelBuilder.Entity("DamageAssesment.Api.SurveyResponses.Db.SurveyResponse", b => | ||||
|                 { | ||||
|                     b.Property<int>("Id") | ||||
|                         .ValueGeneratedOnAdd() | ||||
|                         .HasColumnType("int"); | ||||
|  | ||||
|                     SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id")); | ||||
|  | ||||
|                     b.Property<string>("EmployeeId") | ||||
|                         .IsRequired() | ||||
|                         .HasMaxLength(6) | ||||
|                         .HasColumnType("nvarchar(6)"); | ||||
|  | ||||
|                     b.Property<string>("LocationId") | ||||
|                         .IsRequired() | ||||
|                         .HasMaxLength(4) | ||||
|                         .HasColumnType("nvarchar(4)"); | ||||
|  | ||||
|                     b.Property<int>("SurveyId") | ||||
|                         .HasColumnType("int"); | ||||
|  | ||||
|                     b.HasKey("Id"); | ||||
|  | ||||
|                     b.ToTable("SurveyResponses"); | ||||
|                 }); | ||||
| #pragma warning restore 612, 618 | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,36 @@ | ||||
| using Microsoft.EntityFrameworkCore.Migrations; | ||||
|  | ||||
| #nullable disable | ||||
|  | ||||
| namespace DamageAssesment.Api.SurveyResponses.Migrations | ||||
| { | ||||
|     /// <inheritdoc /> | ||||
|     public partial class InitialSurveyResponse : Migration | ||||
|     { | ||||
|         /// <inheritdoc /> | ||||
|         protected override void Up(MigrationBuilder migrationBuilder) | ||||
|         { | ||||
|             migrationBuilder.CreateTable( | ||||
|                 name: "SurveyResponses", | ||||
|                 columns: table => new | ||||
|                 { | ||||
|                     Id = table.Column<int>(type: "int", nullable: false) | ||||
|                         .Annotation("SqlServer:Identity", "1, 1"), | ||||
|                     SurveyId = table.Column<int>(type: "int", nullable: false), | ||||
|                     LocationId = table.Column<string>(type: "nvarchar(4)", maxLength: 4, nullable: false), | ||||
|                     EmployeeId = table.Column<string>(type: "nvarchar(6)", maxLength: 6, nullable: false) | ||||
|                 }, | ||||
|                 constraints: table => | ||||
|                 { | ||||
|                     table.PrimaryKey("PK_SurveyResponses", x => x.Id); | ||||
|                 }); | ||||
|         } | ||||
|  | ||||
|         /// <inheritdoc /> | ||||
|         protected override void Down(MigrationBuilder migrationBuilder) | ||||
|         { | ||||
|             migrationBuilder.DropTable( | ||||
|                 name: "SurveyResponses"); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,52 @@ | ||||
| // <auto-generated /> | ||||
| using DamageAssesment.Api.SurveyResponses.Db; | ||||
| using Microsoft.EntityFrameworkCore; | ||||
| using Microsoft.EntityFrameworkCore.Infrastructure; | ||||
| using Microsoft.EntityFrameworkCore.Metadata; | ||||
| using Microsoft.EntityFrameworkCore.Storage.ValueConversion; | ||||
|  | ||||
| #nullable disable | ||||
|  | ||||
| namespace DamageAssesment.Api.SurveyResponses.Migrations | ||||
| { | ||||
|     [DbContext(typeof(SurveyResponseDbContext))] | ||||
|     partial class SurveyResponseDbContextModelSnapshot : ModelSnapshot | ||||
|     { | ||||
|         protected override void BuildModel(ModelBuilder modelBuilder) | ||||
|         { | ||||
| #pragma warning disable 612, 618 | ||||
|             modelBuilder | ||||
|                 .HasAnnotation("ProductVersion", "7.0.9") | ||||
|                 .HasAnnotation("Relational:MaxIdentifierLength", 128); | ||||
|  | ||||
|             SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); | ||||
|  | ||||
|             modelBuilder.Entity("DamageAssesment.Api.SurveyResponses.Db.SurveyResponse", b => | ||||
|                 { | ||||
|                     b.Property<int>("Id") | ||||
|                         .ValueGeneratedOnAdd() | ||||
|                         .HasColumnType("int"); | ||||
|  | ||||
|                     SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id")); | ||||
|  | ||||
|                     b.Property<string>("EmployeeId") | ||||
|                         .IsRequired() | ||||
|                         .HasMaxLength(6) | ||||
|                         .HasColumnType("nvarchar(6)"); | ||||
|  | ||||
|                     b.Property<string>("LocationId") | ||||
|                         .IsRequired() | ||||
|                         .HasMaxLength(4) | ||||
|                         .HasColumnType("nvarchar(4)"); | ||||
|  | ||||
|                     b.Property<int>("SurveyId") | ||||
|                         .HasColumnType("int"); | ||||
|  | ||||
|                     b.HasKey("Id"); | ||||
|  | ||||
|                     b.ToTable("SurveyResponses"); | ||||
|                 }); | ||||
| #pragma warning restore 612, 618 | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -34,55 +34,7 @@ namespace DamageAssesment.Api.Surveys.Test | ||||
|  | ||||
|             Assert.Equal(204, result.StatusCode); | ||||
|         } | ||||
|         [Fact(DisplayName = "Get active Surveys - Ok case")] | ||||
|         public async Task GetActiveSurveysAsync_ShouldReturnStatusCode200() | ||||
|         { | ||||
|             var mockSurveyService = new Mock<ISurveyProvider>(); | ||||
|             var mockResponse = await MockData.getOkResponse(); | ||||
|             mockSurveyService.Setup(service => service.GetActiveSurveysAsync(true,null)).ReturnsAsync(mockResponse); | ||||
|  | ||||
|             var surveyProvider = new SurveysController(mockSurveyService.Object); | ||||
|             var result = (OkObjectResult)await surveyProvider.GetActiveSurveysAsync(null); | ||||
|  | ||||
|             Assert.Equal(200, result.StatusCode); | ||||
|         } | ||||
|  | ||||
|         [Fact(DisplayName = "Get active Surveys - NoContent Case")] | ||||
|         public async Task GetActiveSurveysAsync_ShouldReturnStatusCode204() | ||||
|         { | ||||
|             var mockSurveyService = new Mock<ISurveyProvider>(); | ||||
|             var mockResponse = await MockData.getNoContentResponse(); | ||||
|             mockSurveyService.Setup(service => service.GetActiveSurveysAsync(true,null)).ReturnsAsync(mockResponse); | ||||
|  | ||||
|             var surveyProvider = new SurveysController(mockSurveyService.Object); | ||||
|             var result = (NoContentResult)await surveyProvider.GetActiveSurveysAsync(null); | ||||
|  | ||||
|             Assert.Equal(204, result.StatusCode); | ||||
|         } | ||||
|         [Fact(DisplayName = "Get inactive Surveys - Ok case")] | ||||
|         public async Task GetInActiveSurveysAsync_ShouldReturnStatusCode200() | ||||
|         { | ||||
|             var mockSurveyService = new Mock<ISurveyProvider>(); | ||||
|             var mockResponse = await MockData.getOkResponse(); | ||||
|             mockSurveyService.Setup(service => service.GetActiveSurveysAsync(false, null)).ReturnsAsync(mockResponse); | ||||
|  | ||||
|             var surveyProvider = new SurveysController(mockSurveyService.Object); | ||||
|             var result = (OkObjectResult)await surveyProvider.GetInActiveSurveysAsync(null); | ||||
|  | ||||
|             Assert.Equal(200, result.StatusCode); | ||||
|         } | ||||
|         [Fact(DisplayName = "Get in active Surveys - NoContent Case")] | ||||
|         public async Task GetInActiveSurveysAsync_ShouldReturnStatusCode204() | ||||
|         { | ||||
|             var mockSurveyService = new Mock<ISurveyProvider>(); | ||||
|             var mockResponse = await MockData.getNoContentResponse(); | ||||
|             mockSurveyService.Setup(service => service.GetActiveSurveysAsync(false, null)).ReturnsAsync(mockResponse); | ||||
|  | ||||
|             var surveyProvider = new SurveysController(mockSurveyService.Object); | ||||
|             var result = (NoContentResult)await surveyProvider.GetInActiveSurveysAsync(null); | ||||
|  | ||||
|             Assert.Equal(204, result.StatusCode); | ||||
|         } | ||||
|         [Fact(DisplayName = "Get Survey by Id - Ok case")] | ||||
|         public async Task GetSurveyAsync_ShouldReturnStatusCode200() | ||||
|         { | ||||
|  | ||||
| @ -27,36 +27,7 @@ namespace DamageAssesment.Api.Surveys.Controllers | ||||
|             } | ||||
|             return NoContent(); | ||||
|         } | ||||
|         /// <summary> | ||||
|         /// GET request for retrieving all active surveys. | ||||
|         /// </summary> | ||||
|         [Route("surveys/active")] | ||||
|         [Route("surveys/active/{language:alpha}")] | ||||
|         [HttpGet] | ||||
|         public async Task<ActionResult> GetActiveSurveysAsync(string? language) | ||||
|         { | ||||
|             var result = await this.surveyProvider.GetActiveSurveysAsync(true,language); | ||||
|             if (result.IsSuccess) | ||||
|             { | ||||
|                 return Ok(result.Surveys); | ||||
|             } | ||||
|             return NoContent(); | ||||
|         } | ||||
|         /// <summary> | ||||
|         /// GET request for retrieving all inactive surveys. | ||||
|         /// </summary> | ||||
|         [Route("surveys/inactive")] | ||||
|         [Route("surveys/inactive/{language:alpha}")] | ||||
|         [HttpGet] | ||||
|         public async Task<ActionResult> GetInActiveSurveysAsync(string? language) | ||||
|         { | ||||
|             var result = await this.surveyProvider.GetActiveSurveysAsync(false, language); | ||||
|             if (result.IsSuccess) | ||||
|             { | ||||
|                 return Ok(result.Surveys); | ||||
|             } | ||||
|             return NoContent(); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// GET request for retrieving surveys by ID. | ||||
|         /// </summary> | ||||
|  | ||||
| @ -5,13 +5,27 @@ | ||||
|     <Nullable>enable</Nullable> | ||||
|     <ImplicitUsings>enable</ImplicitUsings> | ||||
|     <GenerateDocumentationFile>True</GenerateDocumentationFile> | ||||
|     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | ||||
|     <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath> | ||||
|   </PropertyGroup> | ||||
|  | ||||
|   <ItemGroup> | ||||
|     <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.9"> | ||||
|       <PrivateAssets>all</PrivateAssets> | ||||
|       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||
|     </PackageReference> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.9" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.9"> | ||||
|       <PrivateAssets>all</PrivateAssets> | ||||
|       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||
|     </PackageReference> | ||||
|     <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> | ||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="7.0.5" /> | ||||
|     <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.4" /> | ||||
|     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> | ||||
|   </ItemGroup> | ||||
|  | ||||
|  | ||||
| @ -4,11 +4,18 @@ namespace DamageAssesment.Api.Surveys.Db | ||||
| { | ||||
|     public class SurveysDbContext : DbContext | ||||
|     { | ||||
|         private IConfiguration _Configuration { get; set; } | ||||
|         public SurveysDbContext(DbContextOptions options, IConfiguration configuration) : base(options) | ||||
|         { | ||||
|             _Configuration = configuration; | ||||
|         } | ||||
|          | ||||
|         public DbSet<Db.Survey> Surveys { get; set; } | ||||
|         public DbSet<Db.SurveyTranslation> SurveysTranslation { get; set; } | ||||
|         public SurveysDbContext(DbContextOptions options) : base(options) | ||||
|         protected override void OnConfiguring(DbContextOptionsBuilder options) | ||||
|         { | ||||
|  | ||||
|             // connect to sql server with connection string from app settings | ||||
|             options.UseSqlServer(_Configuration.GetConnectionString("SurveyConnection")); | ||||
|         } | ||||
|         protected override void OnModelCreating(ModelBuilder modelBuilder) | ||||
|         { | ||||
|  | ||||
							
								
								
									
										21
									
								
								DamageAssesmentApi/DamageAssesment.Api.Surveys/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								DamageAssesmentApi/DamageAssesment.Api.Surveys/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| #See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. | ||||
|  | ||||
| FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base | ||||
| WORKDIR /app | ||||
| EXPOSE 80 | ||||
|  | ||||
| FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build | ||||
| WORKDIR /src | ||||
| COPY ["DamageAssesment.Api.Surveys/DamageAssesment.Api.Surveys.csproj", "DamageAssesment.Api.Surveys/"] | ||||
| RUN dotnet restore "DamageAssesment.Api.Surveys/DamageAssesment.Api.Surveys.csproj" | ||||
| COPY . . | ||||
| WORKDIR "/src/DamageAssesment.Api.Surveys" | ||||
| RUN dotnet build "DamageAssesment.Api.Surveys.csproj" -c Release -o /app/build | ||||
|  | ||||
| FROM build AS publish | ||||
| RUN dotnet publish "DamageAssesment.Api.Surveys.csproj" -c Release -o /app/publish /p:UseAppHost=false | ||||
|  | ||||
| FROM base AS final | ||||
| WORKDIR /app | ||||
| COPY --from=publish /app/publish . | ||||
| ENTRYPOINT ["dotnet", "DamageAssesment.Api.Surveys.dll"] | ||||
| @ -3,7 +3,6 @@ | ||||
|     public interface ISurveyProvider | ||||
|     { | ||||
|        Task<(bool IsSuccess, IEnumerable< Models.MultiLanSurvey> Surveys, string ErrorMessage)> GetSurveysAsync(string language); | ||||
|         Task<(bool IsSuccess, IEnumerable<Models.MultiLanSurvey> Surveys, string ErrorMessage)> GetActiveSurveysAsync(bool IsActive,string language); | ||||
|        Task<(bool IsSuccess, Models.MultiLanSurvey Surveys, string ErrorMessage)> GetSurveysAsync(int id, string language); | ||||
|        Task<(bool IsSuccess, Models.MultiLanSurvey Survey, string ErrorMessage)> PostSurveyAsync(Models.Survey Survey); | ||||
|        Task<(bool IsSuccess, Models.MultiLanSurvey Survey, string ErrorMessage)> PutSurveyAsync(int id, Models.Survey Survey); | ||||
|  | ||||
| @ -44,7 +44,7 @@ builder.Services.AddSwaggerGen(c => | ||||
| }); | ||||
| builder.Services.AddDbContext<SurveysDbContext>(option => | ||||
| { | ||||
|     option.UseInMemoryDatabase("Surveys"); | ||||
|     option.UseSqlServer("SurveyConnection"); | ||||
| }); | ||||
| var app = builder.Build(); | ||||
|  | ||||
|  | ||||
| @ -1,23 +1,14 @@ | ||||
| { | ||||
|   "$schema": "https://json.schemastore.org/launchsettings.json", | ||||
|   "iisSettings": { | ||||
|     "windowsAuthentication": false, | ||||
|     "anonymousAuthentication": true, | ||||
|     "iisExpress": { | ||||
|       "applicationUrl": "http://localhost:51498", | ||||
|       "sslPort": 0 | ||||
|     } | ||||
|   }, | ||||
| { | ||||
|   "profiles": { | ||||
|     "DamageAssesment.Api.Surveys": { | ||||
|       "commandName": "Project", | ||||
|       "dotnetRunMessages": true, | ||||
|       "launchBrowser": true, | ||||
|       "launchUrl": "swagger", | ||||
|       "applicationUrl": "http://localhost:5009", | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|       }, | ||||
|       "dotnetRunMessages": true, | ||||
|       "applicationUrl": "http://localhost:5009" | ||||
|     }, | ||||
|     "IIS Express": { | ||||
|       "commandName": "IISExpress", | ||||
| @ -26,6 +17,24 @@ | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_ENVIRONMENT": "Development" | ||||
|       } | ||||
|     }, | ||||
|     "Docker": { | ||||
|       "commandName": "Docker", | ||||
|       "launchBrowser": true, | ||||
|       "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger", | ||||
|       "environmentVariables": { | ||||
|         "ASPNETCORE_URLS": "http://+:80" | ||||
|       }, | ||||
|       "publishAllPorts": true | ||||
|     } | ||||
|   }, | ||||
|   "$schema": "https://json.schemastore.org/launchsettings.json", | ||||
|   "iisSettings": { | ||||
|     "windowsAuthentication": false, | ||||
|     "anonymousAuthentication": true, | ||||
|     "iisExpress": { | ||||
|       "applicationUrl": "http://localhost:51498", | ||||
|       "sslPort": 0 | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -101,43 +101,6 @@ namespace DamageAssesment.Api.Surveys.Providers | ||||
|                 return SurveyStatus.INACTIVE.ToString(); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         // Method to get surveys asynchronously with multi-language support | ||||
|         public async Task<(bool IsSuccess, IEnumerable<Models.MultiLanSurvey> Surveys, string ErrorMessage)> GetActiveSurveysAsync(bool IsActive,string language) | ||||
|         { | ||||
|             IEnumerable<Models.MultiLanSurvey> surveysList = null; | ||||
|             try | ||||
|             { | ||||
|                 string status = SurveyStatus.ACTIVE.ToString(); | ||||
|                 if(!IsActive) status = SurveyStatus.INACTIVE.ToString(); | ||||
|                 logger?.LogInformation("Get all Surveys from DB"); | ||||
|                 //checking is enabled in survey response  | ||||
|                 var surveys = await surveyDbContext.Surveys.ToListAsync();//Where(s => s.IsEnabled == true) | ||||
|  | ||||
|                 if (surveys != null) | ||||
|                 { | ||||
|                     surveysList = from s in surveys | ||||
|                                   select new Models.MultiLanSurvey | ||||
|                                   { | ||||
|                                       Id = s.Id, | ||||
|                                       StartDate = s.StartDate, | ||||
|                                       EndDate = s.EndDate, | ||||
|                                       IsEnabled = s.IsEnabled, | ||||
|                                       CreatedDate = s.CreatedDate, | ||||
|                                       Status = GetStatus(s.StartDate, s.EndDate), | ||||
|                                       Titles = CreateMultiLanguageObject(GetSurveyTranslations(s.Id, null, language)) | ||||
|                                   }; | ||||
|                     logger?.LogInformation($"{surveys.Count} Items(s) found"); | ||||
|                     return (true, surveysList.Where(a=>a.Status==status).OrderByDescending(a=>a.Id), null); | ||||
|                 } | ||||
|                 return (false, null, "Not found"); | ||||
|             } | ||||
|             catch (Exception ex) | ||||
|             { | ||||
|                 logger?.LogError(ex.ToString()); | ||||
|                 return (false, null, ex.Message); | ||||
|             } | ||||
|         } | ||||
|         // Method to get surveys asynchronously with multi-language support | ||||
|         public async Task<(bool IsSuccess, IEnumerable<Models.MultiLanSurvey> Surveys, string ErrorMessage)> GetSurveysAsync(string language) | ||||
|         { | ||||
| @ -216,11 +179,6 @@ namespace DamageAssesment.Api.Surveys.Providers | ||||
|             { | ||||
|                 if (survey != null) | ||||
|                 { | ||||
|                     if (survey.StartDate != null && survey.EndDate != null) | ||||
|                     { | ||||
|                         if(survey.StartDate.Value>survey.EndDate.Value) | ||||
|                             return (false, null, $"Survey start date should be less than enddate"); | ||||
|                     } | ||||
|                     survey.CreatedDate = DateTime.Now; | ||||
|                     Db.Survey _survey = mapper.Map<Models.Survey, Db.Survey>(survey); | ||||
|  | ||||
| @ -257,11 +215,6 @@ namespace DamageAssesment.Api.Surveys.Providers | ||||
|             { | ||||
|                 if (survey != null) | ||||
|                 { | ||||
|                     if (survey.StartDate != null && survey.EndDate != null) | ||||
|                     { | ||||
|                         if (survey.StartDate.Value > survey.EndDate.Value) | ||||
|                             return (false, null, $"Survey start date should be less than enddate"); | ||||
|                     } | ||||
|                     var _survey = await surveyDbContext.Surveys.AsNoTracking().Where(s => s.Id == Id).SingleOrDefaultAsync(); | ||||
|  | ||||
|                     if (_survey != null) | ||||
|  | ||||
| @ -8,5 +8,10 @@ | ||||
|       "Microsoft.AspNetCore": "Warning" | ||||
|     } | ||||
|   }, | ||||
|   "AllowedHosts": "*" | ||||
|   "AllowedHosts": "*", | ||||
|   "ConnectionStrings": { | ||||
|     //"SurveyConnection": "Server=DESKTOP-OF5DPLQ\\SQLEXPRESS;Database=da_survey_dev;Trusted_Connection=True;TrustServerCertificate=True;" | ||||
|     //"SurveyConnection": "Server=localhost,1433;Database=da_survey_dev;User Id=sa;Password=Password123;TrustServerCertificate=True;", | ||||
|     "SurveyConnection": "Server=207.180.248.35;Database=da_survey_dev;User Id=sa;Password=YourStrongPassw0rd;TrustServerCertificate=True;" | ||||
|   } | ||||
| } | ||||
|  | ||||
| @ -11,6 +11,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DamageAssesment.Api.Attachm | ||||
| EndProject | ||||
| Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{4CB40DC2-D9D2-4384-A7A6-9968F5C777A2}" | ||||
| 	ProjectSection(SolutionItems) = preProject | ||||
| 		..\..\..\..\Sample\Migrations.ps1 = ..\..\..\..\Sample\Migrations.ps1 | ||||
| 		ReadMe.txt = ReadMe.txt | ||||
| 		ReadMe4Dev.txt = ReadMe4Dev.txt | ||||
| 	EndProjectSection | ||||
| @ -33,13 +34,15 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DamageAssesment.Api.Employe | ||||
| EndProject | ||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DamageAssesment.Api.Employees.Test", "DamageAssesment.Api.Employees.Test\DamageAssesment.Api.Employees.Test.csproj", "{D6BF9AE9-72FA-4726-A326-35A35D27FFB8}" | ||||
| EndProject | ||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DamageAssesment.Api.DocuLinks", "DamageAssesment.Api.DocuLinks\DamageAssesment.Api.DocuLinks.csproj", "{D356A3C9-B275-4B1A-9B1B-F48600E85E4F}" | ||||
| EndProject | ||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DamageAssesment.Api.DocuLinks.Test", "DamageAssesment.Api.DocuLinks.Test\DamageAssesment.Api.DocuLinks.Test.csproj", "{A7F17ED7-71D2-4FD0-87E5-D83415078FC0}" | ||||
| EndProject | ||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DamageAssesment.Api.Responses", "DamageAssesment.Api.Responses\DamageAssesment.Api.Responses.csproj", "{C7F1C88B-B3C1-406E-A741-1D9A07ED18C0}" | ||||
| Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-compose.dcproj", "{0DD44934-6826-43C8-A438-320A05209967}" | ||||
| EndProject | ||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DamageAssesment.Api.Responses.Test", "DamageAssesment.Api.Responses.Test\DamageAssesment.Api.Responses.Test.csproj", "{26BFCF59-0D24-41C1-9202-D4FFCC52389B}" | ||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DamageAssesment.Api.DocuLinks", "DamageAssesment.Api.DocuLinks\DamageAssesment.Api.DocuLinks.csproj", "{B027FBB9-1357-4FD6-85B3-8ADCE11CAE05}" | ||||
| EndProject | ||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DamageAssesment.Api.Responses", "DamageAssesment.Api.Responses\DamageAssesment.Api.Responses.csproj", "{B5C446DF-30DF-46E3-BD87-DA454C8B9C4F}" | ||||
| EndProject | ||||
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DamageAssesment.Api.Responses.Test", "DamageAssesment.Api.Responses.Test\DamageAssesment.Api.Responses.Test.csproj", "{22014966-BF3D-463A-B561-46635BE75C89}" | ||||
| EndProject | ||||
| Global | ||||
| 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||
| @ -95,22 +98,26 @@ Global | ||||
| 		{D6BF9AE9-72FA-4726-A326-35A35D27FFB8}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{D6BF9AE9-72FA-4726-A326-35A35D27FFB8}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{D6BF9AE9-72FA-4726-A326-35A35D27FFB8}.Release|Any CPU.Build.0 = Release|Any CPU | ||||
| 		{D356A3C9-B275-4B1A-9B1B-F48600E85E4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{D356A3C9-B275-4B1A-9B1B-F48600E85E4F}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{D356A3C9-B275-4B1A-9B1B-F48600E85E4F}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{D356A3C9-B275-4B1A-9B1B-F48600E85E4F}.Release|Any CPU.Build.0 = Release|Any CPU | ||||
| 		{A7F17ED7-71D2-4FD0-87E5-D83415078FC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{A7F17ED7-71D2-4FD0-87E5-D83415078FC0}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{A7F17ED7-71D2-4FD0-87E5-D83415078FC0}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{A7F17ED7-71D2-4FD0-87E5-D83415078FC0}.Release|Any CPU.Build.0 = Release|Any CPU | ||||
| 		{C7F1C88B-B3C1-406E-A741-1D9A07ED18C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{C7F1C88B-B3C1-406E-A741-1D9A07ED18C0}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{C7F1C88B-B3C1-406E-A741-1D9A07ED18C0}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{C7F1C88B-B3C1-406E-A741-1D9A07ED18C0}.Release|Any CPU.Build.0 = Release|Any CPU | ||||
| 		{26BFCF59-0D24-41C1-9202-D4FFCC52389B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{26BFCF59-0D24-41C1-9202-D4FFCC52389B}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{26BFCF59-0D24-41C1-9202-D4FFCC52389B}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{26BFCF59-0D24-41C1-9202-D4FFCC52389B}.Release|Any CPU.Build.0 = Release|Any CPU | ||||
| 		{0DD44934-6826-43C8-A438-320A05209967}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{0DD44934-6826-43C8-A438-320A05209967}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{0DD44934-6826-43C8-A438-320A05209967}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{0DD44934-6826-43C8-A438-320A05209967}.Release|Any CPU.Build.0 = Release|Any CPU | ||||
| 		{B027FBB9-1357-4FD6-85B3-8ADCE11CAE05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{B027FBB9-1357-4FD6-85B3-8ADCE11CAE05}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{B027FBB9-1357-4FD6-85B3-8ADCE11CAE05}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{B027FBB9-1357-4FD6-85B3-8ADCE11CAE05}.Release|Any CPU.Build.0 = Release|Any CPU | ||||
| 		{B5C446DF-30DF-46E3-BD87-DA454C8B9C4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{B5C446DF-30DF-46E3-BD87-DA454C8B9C4F}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{B5C446DF-30DF-46E3-BD87-DA454C8B9C4F}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{B5C446DF-30DF-46E3-BD87-DA454C8B9C4F}.Release|Any CPU.Build.0 = Release|Any CPU | ||||
| 		{22014966-BF3D-463A-B561-46635BE75C89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
| 		{22014966-BF3D-463A-B561-46635BE75C89}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
| 		{22014966-BF3D-463A-B561-46635BE75C89}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
| 		{22014966-BF3D-463A-B561-46635BE75C89}.Release|Any CPU.Build.0 = Release|Any CPU | ||||
| 	EndGlobalSection | ||||
| 	GlobalSection(SolutionProperties) = preSolution | ||||
| 		HideSolutionNode = FALSE | ||||
|  | ||||
| @ -1,18 +0,0 @@ | ||||
| trigger: | ||||
|   - '*' | ||||
|  | ||||
| pr: | ||||
|   - '*' | ||||
|  | ||||
| pool: | ||||
|   vmImage: 'ubuntu-latest' | ||||
|  | ||||
| steps: | ||||
|   - checkout: self | ||||
|  | ||||
|   - script: | | ||||
|       #!/bin/bash | ||||
|  | ||||
|       chmod +x ./Scripts/build_and_push_services2acr.sh | ||||
|       ./Scripts/build_and_push_services2acr.sh | ||||
|     displayName: 'Run build_and_push_services2acr.sh' | ||||
							
								
								
									
										75
									
								
								DamageAssesmentApi/docker-compose.acr.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								DamageAssesmentApi/docker-compose.acr.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,75 @@ | ||||
| version: '3.4' | ||||
|  | ||||
| services: | ||||
|   damageassesment.api.answers: | ||||
|     image: dadeschoolscontainerregistry.azurecr.io/damageassesmentapianswers | ||||
|     build: | ||||
|       context: . | ||||
|       dockerfile: DamageAssesment.Api.Answers/Dockerfile | ||||
|     ports: | ||||
|       - "6001:80" | ||||
|     command: bash -c "docker push dadeschoolscontainerregistry.azurecr.io/damageassesmentapianswers" | ||||
|  | ||||
|   damageassesment.api.attachments: | ||||
|     image: dadeschoolscontainerregistry.azurecr.io/damageassesmentapiattachments | ||||
|     build: | ||||
|       context: . | ||||
|       dockerfile: DamageAssesment.Api.Attachments/Dockerfile | ||||
|     ports: | ||||
|       - "6001:80" | ||||
|     command: bash -c "docker push dadeschoolscontainerregistry.azurecr.io/damageassesmentapiattachments" | ||||
|  | ||||
|   damageassesment.api.employees: | ||||
|     image: dadeschoolscontainerregistry.azurecr.io/damageassesmentapiemployees | ||||
|     build: | ||||
|      context: . | ||||
|      dockerfile: DamageAssesment.Api.Employees/Dockerfile | ||||
|     ports: | ||||
|      - "6003:80" | ||||
|     command: bash -c "docker push dadeschoolscontainerregistry.azurecr.io/damageassesmentapiemployees" | ||||
|  | ||||
|   damageassesment.api.locations: | ||||
|     image: dadeschoolscontainerregistry.azurecr.io/damageassesmentapilocations | ||||
|     build: | ||||
|      context: . | ||||
|      dockerfile: DamageAssesment.Api.Locations/Dockerfile | ||||
|     ports: | ||||
|      - "6004:80" | ||||
|     command: bash -c "docker push dadeschoolscontainerregistry.azurecr.io/damageassesmentapilocations" | ||||
|  | ||||
|   damageassesment.api.questions: | ||||
|     image: dadeschoolscontainerregistry.azurecr.io/damageassesmentapiquestions | ||||
|     build: | ||||
|      context: . | ||||
|      dockerfile: DamageAssesment.Api.Questions/Dockerfile | ||||
|     ports: | ||||
|      - "6005:80" | ||||
|     command: bash -c "docker push dadeschoolscontainerregistry.azurecr.io/damageassesmentapiquestions" | ||||
|  | ||||
|   damageassesment.api.surveys: | ||||
|     image: dadeschoolscontainerregistry.azurecr.io/damageassesmentapisurveys | ||||
|     build: | ||||
|      context: . | ||||
|      dockerfile: DamageAssesment.Api.Surveys/Dockerfile | ||||
|     ports: | ||||
|      - "6006:80" | ||||
|     command: bash -c "docker push dadeschoolscontainerregistry.azurecr.io/damageassesmentapisurveys" | ||||
|   | ||||
|   damageassesment.api.doculinks: | ||||
|     image: dadeschoolscontainerregistry.azurecr.io/damageassesmentapidoculinks | ||||
|     build: | ||||
|      context: . | ||||
|      dockerfile: DamageAssesment.Api.DocuLinks/Dockerfile | ||||
|     ports: | ||||
|      - "6008:80" | ||||
|     command: bash -c "docker push dadeschoolscontainerregistry.azurecr.io/damageassesmentapidoculinks" | ||||
|   | ||||
|   damageassesment.api.responses: | ||||
|     image: dadeschoolscontainerregistry.azurecr.io/damageassesmentapiresponses | ||||
|     build: | ||||
|       context: . | ||||
|       dockerfile: DamageAssesment.Api.Responses/Dockerfile | ||||
|     ports: | ||||
|      - "6007:80" | ||||
|     command: bash -c "docker push dadeschoolscontainerregistry.azurecr.io/damageassesmentapiresponses" | ||||
|   | ||||
							
								
								
									
										80
									
								
								DamageAssesmentApi/docker-compose.asf.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								DamageAssesmentApi/docker-compose.asf.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,80 @@ | ||||
| version: '3.4' | ||||
|  | ||||
| services: | ||||
|   answers: | ||||
|     image: santhoshsnair/damageassesmentapianswers:latest | ||||
|     environment: | ||||
|       - ASPNETCORE_ENVIRONMENT=Development | ||||
|     ports: | ||||
|       - "6001:80" | ||||
|  | ||||
|   attachments: | ||||
|     image: santhoshsnair/damageassesmentapiattachments:latest | ||||
|     environment: | ||||
|       - ASPNETCORE_ENVIRONMENT=Development | ||||
|     ports: | ||||
|       - "6002:80" | ||||
|  | ||||
|  | ||||
|   employees: | ||||
|     image: santhoshsnair/damageassesmentapiemployees:latest | ||||
|     environment: | ||||
|       - ASPNETCORE_ENVIRONMENT=Development | ||||
|     ports: | ||||
|       - "6003:80" | ||||
|  | ||||
|  | ||||
|   locations: | ||||
|     image: santhoshsnair/damageassesmentapilocations:latest | ||||
|     environment: | ||||
|       - ASPNETCORE_ENVIRONMENT=Development | ||||
|     ports: | ||||
|       - "6004:80" | ||||
|  | ||||
|  | ||||
|   questions: | ||||
|     image: santhoshsnair/damageassesmentapiquestions:latest | ||||
|     environment: | ||||
|       - ASPNETCORE_ENVIRONMENT=Development | ||||
|     ports: | ||||
|       - "6005:80" | ||||
|  | ||||
|  | ||||
|   responses: | ||||
|     image: santhoshsnair/damageassesmentapisurveyresponses:latest | ||||
|     environment: | ||||
|       - ASPNETCORE_ENVIRONMENT=Development | ||||
|       - services__Answers=http://10.0.0.4:19081/dasapp/answers/ | ||||
|       - services__Locations=http://10.0.0.4:19081/dasapp/locations/ | ||||
|       - services__Questions=http://10.0.0.4:19081/dasapp/questions/ | ||||
|       - services__Employees=http://10.0.0.4:19081/dasapp/employees/ | ||||
|       - services__Attachments=http://10.0.0.4:19081/dasapp/attachments/ | ||||
|       - services__Surveys=http://10.0.0.4:19081/dasapp/survey/ | ||||
|   | ||||
|     ports: | ||||
|       - "6006:80" | ||||
|  | ||||
|  | ||||
|   surveys: | ||||
|     image: santhoshsnair/damageassesmentapisurveys:latest | ||||
|     environment: | ||||
|       - ASPNETCORE_ENVIRONMENT=Development | ||||
|     ports: | ||||
|       - "6007:80" | ||||
|  | ||||
|  | ||||
|   doculinks: | ||||
|     image: santhoshsnair/damageassesmentapidoculinks:latest | ||||
|     environment: | ||||
|       - ASPNETCORE_ENVIRONMENT=Development | ||||
|     ports: | ||||
|       - "6009:80" | ||||
|   sqlserver: | ||||
|     image: mcr.microsoft.com/mssql/server:2019-latest | ||||
|     environment: | ||||
|       - SA_PASSWORD=your_password | ||||
|       - ACCEPT_EULA=Y | ||||
|     ports: | ||||
|       - "1433:1433" | ||||
|     volumes: | ||||
|       - ./sql_data:/var/opt/mssql/data | ||||
							
								
								
									
										21
									
								
								DamageAssesmentApi/docker-compose.dcproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								DamageAssesmentApi/docker-compose.dcproj
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project ToolsVersion="15.0" Sdk="Microsoft.Docker.Sdk"> | ||||
|   <PropertyGroup Label="Globals"> | ||||
|     <ProjectVersion>2.1</ProjectVersion> | ||||
|     <DockerTargetOS>Linux</DockerTargetOS> | ||||
|     <ProjectGuid>0dd44934-6826-43c8-a438-320a05209967</ProjectGuid> | ||||
|     <DockerLaunchAction>LaunchBrowser</DockerLaunchAction> | ||||
|     <DockerServiceUrl>{Scheme}://localhost:{ServicePort}/swagger</DockerServiceUrl> | ||||
|     <DockerServiceName>damageassesment.api.answers</DockerServiceName> | ||||
|   </PropertyGroup> | ||||
|   <ItemGroup> | ||||
|     <None Include="docker-compos.tst.yml" /> | ||||
|     <None Include="docker-compose.sql.yml" /> | ||||
|     <None Include="docker-compose.asf.yml" /> | ||||
|     <None Include="docker-compose.override.yml"> | ||||
|       <DependentUpon>docker-compose.yml</DependentUpon> | ||||
|     </None> | ||||
|     <None Include="docker-compose.yml" /> | ||||
|     <None Include=".dockerignore" /> | ||||
|   </ItemGroup> | ||||
| </Project> | ||||
							
								
								
									
										66
									
								
								DamageAssesmentApi/docker-compose.override.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								DamageAssesmentApi/docker-compose.override.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,66 @@ | ||||
| version: '3.4' | ||||
|  | ||||
| services: | ||||
|   damageassesment.api.answers: | ||||
|     environment: | ||||
|       - ASPNETCORE_ENVIRONMENT=Development | ||||
|     ports: | ||||
|       - "6001:80" | ||||
|  | ||||
|   damageassesment.api.attachments: | ||||
|     environment: | ||||
|       - ASPNETCORE_ENVIRONMENT=Development | ||||
|     ports: | ||||
|       - "6002:80" | ||||
|  | ||||
|  | ||||
|   damageassesment.api.employees: | ||||
|     environment: | ||||
|       - ASPNETCORE_ENVIRONMENT=Development | ||||
|     ports: | ||||
|       - "6003:80" | ||||
|  | ||||
|  | ||||
|   damageassesment.api.locations: | ||||
|     environment: | ||||
|       - ASPNETCORE_ENVIRONMENT=Development | ||||
|     ports: | ||||
|       - "6004:80" | ||||
|  | ||||
|  | ||||
|   damageassesment.api.questions: | ||||
|     environment: | ||||
|       - ASPNETCORE_ENVIRONMENT=Development | ||||
|     ports: | ||||
|       - "6005:80" | ||||
|  | ||||
|  | ||||
|   damageassesment.api.responses: | ||||
|     environment: | ||||
|       - ASPNETCORE_ENVIRONMENT=Development | ||||
|       - services__Answers=http://damageassesment.api.answers:80 | ||||
|       - services__Locations=http://damageassesment.api.locations:80 | ||||
|       - services__Questions=http://damageassesment.api.questions:80 | ||||
|       - services__Employees=http://damageassesment.api.employees:80 | ||||
|       - services__Attachments=http://damageassesment.api.attachments:80 | ||||
|       - services__Surveys=http://damageassesment.api.survey:80 | ||||
|   | ||||
|     ports: | ||||
|       - "6006:80" | ||||
|  | ||||
|  | ||||
|   damageassesment.api.surveys: | ||||
|     environment: | ||||
|       - ASPNETCORE_ENVIRONMENT=Development | ||||
|     ports: | ||||
|       - "6007:80" | ||||
|  | ||||
|  | ||||
|   damageassesment.api.doculinks: | ||||
|     environment: | ||||
|       - ASPNETCORE_ENVIRONMENT=Development | ||||
|     ports: | ||||
|       - "6009:80" | ||||
|  | ||||
|    | ||||
|  | ||||
							
								
								
									
										13
									
								
								DamageAssesmentApi/docker-compose.sql.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								DamageAssesmentApi/docker-compose.sql.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| version: '3.4' | ||||
|  | ||||
| services: | ||||
|    | ||||
|   sqlserver: | ||||
|     image: mcr.microsoft.com/mssql/server:2019-latest | ||||
|     environment: | ||||
|       - SA_PASSWORD=Test123 | ||||
|       - ACCEPT_EULA=Y | ||||
|     ports: | ||||
|       - "1433:1433" | ||||
|     volumes: | ||||
|       - ./data:/var/opt/mssql  # Mount a volume to persist data  | ||||
							
								
								
									
										57
									
								
								DamageAssesmentApi/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								DamageAssesmentApi/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,57 @@ | ||||
| version: '3.4' | ||||
|  | ||||
| services: | ||||
|   damageassesment.api.answers: | ||||
|     image: ${DOCKER_REGISTRY-}damageassesmentapianswers | ||||
|     build: | ||||
|       context: . | ||||
|       dockerfile: DamageAssesment.Api.Answers/Dockerfile | ||||
|  | ||||
|   damageassesment.api.attachments: | ||||
|     image: ${DOCKER_REGISTRY-}damageassesmentapiattachments | ||||
|     build: | ||||
|       context: . | ||||
|       dockerfile: DamageAssesment.Api.Attachments/Dockerfile | ||||
|  | ||||
|  | ||||
|   damageassesment.api.employees: | ||||
|     image: ${DOCKER_REGISTRY-}damageassesmentapiemployees | ||||
|     build: | ||||
|       context: . | ||||
|       dockerfile: DamageAssesment.Api.Employees/Dockerfile | ||||
|  | ||||
|  | ||||
|   damageassesment.api.locations: | ||||
|     image: ${DOCKER_REGISTRY-}damageassesmentapilocations | ||||
|     build: | ||||
|       context: . | ||||
|       dockerfile: DamageAssesment.Api.Locations/Dockerfile | ||||
|  | ||||
|  | ||||
|   damageassesment.api.questions: | ||||
|     image: ${DOCKER_REGISTRY-}damageassesmentapiquestions | ||||
|     build: | ||||
|       context: . | ||||
|       dockerfile: DamageAssesment.Api.Questions/Dockerfile | ||||
|  | ||||
|   | ||||
|   damageassesment.api.surveys: | ||||
|     image: ${DOCKER_REGISTRY-}damageassesmentapisurveys | ||||
|     build: | ||||
|       context: . | ||||
|       dockerfile: DamageAssesment.Api.Surveys/Dockerfile | ||||
|  | ||||
|  | ||||
|   damageassesment.api.doculinks: | ||||
|     image: ${DOCKER_REGISTRY-}damageassesmentapidoculinks | ||||
|     build: | ||||
|       context: . | ||||
|       dockerfile: DamageAssesment.Api.DocuLinks/Dockerfile | ||||
|  | ||||
|  | ||||
|   damageassesment.api.responses: | ||||
|     image: ${DOCKER_REGISTRY-}damageassesmentapiresponses | ||||
|     build: | ||||
|       context: . | ||||
|       dockerfile: DamageAssesment.Api.Responses/Dockerfile | ||||
|  | ||||
							
								
								
									
										19
									
								
								DamageAssesmentApi/launchSettings.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								DamageAssesmentApi/launchSettings.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | ||||
| { | ||||
|   "profiles": { | ||||
|     "Docker Compose": { | ||||
|       "commandName": "DockerCompose", | ||||
|       "commandVersion": "1.0", | ||||
|       "serviceActions": { | ||||
|         "damageassesment.api.answers": "StartDebugging", | ||||
|         "damageassesment.api.attachments": "StartDebugging", | ||||
|         "damageassesment.api.employees": "StartDebugging", | ||||
|         "damageassesment.api.locations": "StartDebugging", | ||||
|         "damageassesment.api.questions": "StartDebugging", | ||||
|         "damageassesment.api.surveyresponses": "StartDebugging", | ||||
|         "damageassesment.api.surveys": "StartDebugging", | ||||
|         "damageassesment.api.doculinks": "StartDebugging", | ||||
|         "damageassesment.api.responses": "StartDebugging" | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @ -1,30 +0,0 @@ | ||||
| # powershell -ExecutionPolicy Bypass -File .\build_and_push_services2acr.ps1 | ||||
| # Specify the path to your docker-compose.yml | ||||
| $composeFile = "C:\Users\santh\OneDrive\Desktop\DOCKERS\ubuntu\Sprint6\C1011\Backend-API-Services\DamageAssesmentApi\docker-compose.yml" | ||||
|  | ||||
| # List of services to build, tag, and push | ||||
| $services = @( | ||||
|   "damageassesmentapianswers", | ||||
|   "damageassesmentapiattachments", | ||||
|   "damageassesmentapiemployees", | ||||
|   "damageassesmentapilocations", | ||||
|   "damageassesmentapiquestions", | ||||
|   "damageassesmentapisurveys", | ||||
|   "damageassesmentapidoculinks", | ||||
|   "damageassesmentapiresponses" | ||||
| ) | ||||
|  | ||||
| # Log in to ACR (replace ACR_USERNAME and ACR_PASSWORD) | ||||
| docker login dadeschoolscontainerregistry.azurecr.io -u dadeSchoolsContainerRegistry -p k1f8hE0O5hj3tYCCR/5stNrkw5BZoTmAqid/hvaVo8+ACRDc2Arn | ||||
|  | ||||
| # Loop through the services and build, tag, and push | ||||
| foreach ($service in $services) { | ||||
|   # Build the service | ||||
|   docker-compose -f $composeFile build $service | ||||
|  | ||||
|   # Tag the image for ACR | ||||
|   docker tag "$service" "dadeschoolscontainerregistry.azurecr.io/$service" | ||||
|  | ||||
|   # Push the image to ACR | ||||
|   docker push "dadeschoolscontainerregistry.azurecr.io/$service" | ||||
| } | ||||
| @ -1,39 +0,0 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| # Determine the current directory (where the script is located) | ||||
| script_directory="$( cd "$(dirname "$0")" ; pwd -P )" | ||||
|  | ||||
| # Use the 'find' command to locate the 'docker-compose.yml' file within the repository directory | ||||
| composeFile=$(find "$script_directory/.." -name "docker-compose.yml" -type f | head -n 1) | ||||
|  | ||||
| if [ -z "$composeFile" ]; then | ||||
|   echo "docker-compose.yml not found." | ||||
|   exit 1 | ||||
| fi | ||||
|  | ||||
| # List of services to build, tag, and push | ||||
| services=( | ||||
|   "damageassesmentapianswers" | ||||
|   "damageassesmentapiattachments" | ||||
|   "damageassesmentapiemployees" | ||||
|   "damageassesmentapilocations" | ||||
|   "damageassesmentapiquestions" | ||||
|   "damageassesmentapisurveys" | ||||
|   "damageassesmentapidoculinks" | ||||
|   "damageassesmentapiresponses" | ||||
| ) | ||||
|  | ||||
| # Log in to ACR (replace ACR_USERNAME and ACR_PASSWORD) | ||||
| docker login dadeschoolscontainerregistry.azurecr.io -u dadeSchoolsContainerRegistry -p k1f8hE0O5hj3tYCCR/5stNrkw5BZoTmAqid/hvaVo8+ACRDc2Arn | ||||
|  | ||||
| # Loop through the services and build, tag, and push | ||||
| for service in "${services[@]}"; do | ||||
|   # Build the service | ||||
|   docker-compose -f "$composeFile" build "$service" | ||||
|  | ||||
|   # Tag the image for ACR | ||||
|   docker tag "$service" "dadeschoolscontainerregistry.azurecr.io/$service" | ||||
|  | ||||
|   # Push the image to ACR | ||||
|   docker push "dadeschoolscontainerregistry.azurecr.io/$service" | ||||
| done | ||||
							
								
								
									
										39
									
								
								db/migrate-sqldb_v1.ps1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								db/migrate-sqldb_v1.ps1
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,39 @@ | ||||
| # Define the path to your application's root directory | ||||
| $applicationRoot = "C:\Users\santh\OneDrive\Desktop\DOCKERS\ubuntu\Sprint6\C1011\Backend-API-Services\DamageAssesmentApi\" | ||||
| #To execute: powershell -ExecutionPolicy Bypass -File .\migrate-sqldb.ps1 | ||||
| # Define the list of microservice directories | ||||
| $microservices = @( | ||||
|     "DamageAssesment.Api.Answers", | ||||
|     "DamageAssesment.Api.Attachments", | ||||
|     "DamageAssesment.Api.DocuLinks", | ||||
|     "DamageAssesment.Api.Employees", | ||||
|     "DamageAssesment.Api.Locations", | ||||
|     "DamageAssesment.Api.Questions", | ||||
|     "DamageAssesment.Api.Responses", | ||||
|     "DamageAssesment.Api.Surveys" | ||||
| ) | ||||
|  | ||||
|  | ||||
| # Define the migration name with the current date and time | ||||
| $migrationName = "Migration_" + (Get-Date -Format "yyyyMMdd_HHmmss") | ||||
|  | ||||
| # Function to run migrations for a microservice | ||||
| Function Run-Migrations { | ||||
|     param ( | ||||
|         [string]$microservicePath | ||||
|     ) | ||||
|  | ||||
|     Write-Host "Running Migrations for $microservicePath..." | ||||
|     Set-Location -Path $microservicePath | ||||
|     dotnet ef migrations add $migrationName | ||||
|     dotnet ef database update | ||||
|     Write-Host "Migrations for $microservicePath completed." | ||||
| } | ||||
|  | ||||
| # Run migrations for each microservice | ||||
| $microservices | ForEach-Object { | ||||
|     $microservicePath = Join-Path -Path $applicationRoot -ChildPath $_ | ||||
|     Run-Migrations -microservicePath $microservicePath | ||||
| } | ||||
|  | ||||
| Write-Host "All Migrations Completed." | ||||
		Reference in New Issue
	
	Block a user
	