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 | # JetBrains Rider | ||||||
| *.sln.iml | *.sln.iml | ||||||
|  | **/migrations/ | ||||||
| @ -1,17 +1,25 @@ | |||||||
| <Project Sdk="Microsoft.NET.Sdk.Web"> | <Project Sdk="Microsoft.NET.Sdk.Web"> | ||||||
|  |  | ||||||
|   <PropertyGroup> |   <PropertyGroup> | ||||||
|     <TargetFramework>net6.0</TargetFramework> |     <TargetFramework>net6.0</TargetFramework> | ||||||
|     <Nullable>enable</Nullable> |     <Nullable>enable</Nullable> | ||||||
|     <ImplicitUsings>enable</ImplicitUsings> |     <ImplicitUsings>enable</ImplicitUsings> | ||||||
|     <GenerateDocumentationFile>True</GenerateDocumentationFile> |     <GenerateDocumentationFile>True</GenerateDocumentationFile> | ||||||
|  |     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | ||||||
|  |     <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath> | ||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> |     <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> | ||||||
|     <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> |     <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> | ||||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" /> |     <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.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" /> |     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  |  | ||||||
|  | |||||||
| @ -1,13 +1,19 @@ | |||||||
| using Microsoft.EntityFrameworkCore; | using Microsoft.EntityFrameworkCore; | ||||||
|  | using Microsoft.Extensions.Configuration; | ||||||
|  |  | ||||||
| namespace DamageAssesment.Api.Answers.Db | namespace DamageAssesment.Api.Answers.Db | ||||||
| { | { | ||||||
|     public class AnswerDbContext:DbContext |     public class AnswerDbContext:DbContext | ||||||
|     { |     { | ||||||
|  |         private IConfiguration _Configuration { get; set; } | ||||||
|         public AnswerDbContext(DbContextOptions options):base(options)  |         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; } |         public DbSet<Db.Answer> Answers { get; set; } | ||||||
|         protected override void OnModelCreating(ModelBuilder modelBuilder) |         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.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30 | ||||||
| builder.Services.AddDbContext<AnswerDbContext>(option => | builder.Services.AddDbContext<AnswerDbContext>(option => | ||||||
| { | { | ||||||
|     option.UseInMemoryDatabase("Answers"); |     option.UseSqlServer("AnswerConnection"); | ||||||
| }); | }); | ||||||
|  |  | ||||||
| var app = builder.Build(); | 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": { |   "profiles": { | ||||||
|     "DamageAssesment.Api.Answers": { |     "DamageAssesment.Api.Answers": { | ||||||
|       "commandName": "Project", |       "commandName": "Project", | ||||||
|       "dotnetRunMessages": true, |  | ||||||
|       "launchBrowser": true, |       "launchBrowser": true, | ||||||
|       "launchUrl": "swagger", |       "launchUrl": "swagger", | ||||||
|       "applicationUrl": "http://localhost:5200", |  | ||||||
|       "environmentVariables": { |       "environmentVariables": { | ||||||
|         "ASPNETCORE_ENVIRONMENT": "Development" |         "ASPNETCORE_ENVIRONMENT": "Development" | ||||||
|       } |       }, | ||||||
|  |       "dotnetRunMessages": true, | ||||||
|  |       "applicationUrl": "http://localhost:5200" | ||||||
|     }, |     }, | ||||||
|     "IIS Express": { |     "IIS Express": { | ||||||
|       "commandName": "IISExpress", |       "commandName": "IISExpress", | ||||||
| @ -26,6 +17,24 @@ | |||||||
|       "environmentVariables": { |       "environmentVariables": { | ||||||
|         "ASPNETCORE_ENVIRONMENT": "Development" |         "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()) |             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() {  AnswerText = "Yes", Comment = "", QuestionId = 1, SurveyResponseId = 1 }); | ||||||
|                 answerDbContext.Answers.Add(new Db.Answer() { Id = 2, AnswerText = "No", Comment = "Comment test 5", QuestionId = 2, SurveyResponseId = 1 }); |                 answerDbContext.Answers.Add(new Db.Answer() {  AnswerText = "No", Comment = "myComment", QuestionId = 2, SurveyResponseId = 1 }); | ||||||
|                 // Uncomment the lines below to add more initial data if needed |                 //answerDbContext.Answers.Add(new Db.Answer() {  AnswerText = "No", Comment = "No Comment", QuestionId = 3, SurveyResponseId = 1 }); | ||||||
|                 //answerDbContext.Answers.Add(new Db.Answer() { Id = 3, 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() { Id = 4, 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() { Id = 5, 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.Answers.Add(new Db.Answer() { Id = 6, AnswerText = "No", Comment = "No Comment", QuestionId = 3, SurveyResponseId = 2 }); |  | ||||||
|                 answerDbContext.SaveChanges(); |                 answerDbContext.SaveChanges(); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -8,5 +8,11 @@ | |||||||
|       "Microsoft.AspNetCore": "Warning" |       "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> |     <Nullable>enable</Nullable> | ||||||
|     <ImplicitUsings>enable</ImplicitUsings> |     <ImplicitUsings>enable</ImplicitUsings> | ||||||
|     <GenerateDocumentationFile>True</GenerateDocumentationFile> |     <GenerateDocumentationFile>True</GenerateDocumentationFile> | ||||||
|  |     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | ||||||
|  |     <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath> | ||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
| @ -12,8 +14,20 @@ | |||||||
|     <PackageReference Include="Azure.Storage.Blobs" Version="12.16.0" /> |     <PackageReference Include="Azure.Storage.Blobs" Version="12.16.0" /> | ||||||
|     <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> |     <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> | ||||||
|     <PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.2.7" /> |     <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.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" /> |     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  |  | ||||||
|  | |||||||
| @ -1,11 +1,19 @@ | |||||||
| using Microsoft.EntityFrameworkCore; | using Microsoft.EntityFrameworkCore; | ||||||
|  | using Microsoft.Extensions.Configuration; | ||||||
|  |  | ||||||
| namespace DamageAssesment.Api.Attachments.Db | namespace DamageAssesment.Api.Attachments.Db | ||||||
| { | { | ||||||
|     public class AttachmentsDbContext:DbContext |     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; } |         public DbSet<Db.Attachment> Attachments { get; set; } | ||||||
|         protected override void OnModelCreating(ModelBuilder modelBuilder) |         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)> PostAttachmentAsync(List<Models.Attachment> Attachments); | ||||||
|         Task<(bool IsSuccess, IEnumerable<Models.Attachment> Attachments, string ErrorMessage)> PutAttachmentAsync(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)> 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)> DeleteAttachmentsAsync(int responseId, int answerId); | ||||||
|         Task<(bool IsSuccess, int counter, string Path)> DeleteBulkAttachmentsAsync(int responseId, List<int> answerIds); |         Task<(bool IsSuccess, int counter, string Path)> DeleteBulkAttachmentsAsync(int responseId, List<int> answerIds); | ||||||
|         Task<(bool IsSuccess, int counter, string message)> GetAttachmentCounter(); |         Task<(bool IsSuccess, int counter, string message)> GetAttachmentCounter(); | ||||||
|  | |||||||
| @ -21,14 +21,13 @@ builder.Services.AddSwaggerGen(c => | |||||||
|     var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); |     var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); | ||||||
|     c.IncludeXmlComments(xmlPath); |     c.IncludeXmlComments(xmlPath); | ||||||
| }); | }); | ||||||
| builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); |  | ||||||
| builder.Services.AddScoped<IAttachmentsProvider, AttachmentsProvider>(); | builder.Services.AddScoped<IAttachmentsProvider, AttachmentsProvider>(); | ||||||
| builder.Services.AddScoped<IUploadService, UploadService>(); | builder.Services.AddScoped<IUploadService, UploadService>(); | ||||||
| builder.Services.AddScoped<IAzureBlobService,AzureBlobService>(); | builder.Services.AddScoped<IAzureBlobService,AzureBlobService>(); | ||||||
| builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30 | builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30 | ||||||
| builder.Services.AddDbContext<AttachmentsDbContext>(option => | builder.Services.AddDbContext<AttachmentsDbContext>(option => | ||||||
| { | { | ||||||
|     option.UseInMemoryDatabase("Attachments"); |     option.UseSqlServer("AttachmentConnection"); | ||||||
| }); | }); | ||||||
| builder.Services.Configure<FormOptions>(o => | 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": { |   "profiles": { | ||||||
|     "DamageAssesment.Api.Attachments": { |     "DamageAssesment.Api.Attachments": { | ||||||
|       "commandName": "Project", |       "commandName": "Project", | ||||||
|       "dotnetRunMessages": true, |  | ||||||
|       "launchBrowser": true, |       "launchBrowser": true, | ||||||
|       "launchUrl": "swagger", |       "launchUrl": "swagger", | ||||||
|       "applicationUrl": "http://localhost:5243", |  | ||||||
|       "environmentVariables": { |       "environmentVariables": { | ||||||
|         "ASPNETCORE_ENVIRONMENT": "Development" |         "ASPNETCORE_ENVIRONMENT": "Development" | ||||||
|       } |       }, | ||||||
|  |       "dotnetRunMessages": true, | ||||||
|  |       "applicationUrl": "http://localhost:5243" | ||||||
|     }, |     }, | ||||||
|     "IIS Express": { |     "IIS Express": { | ||||||
|       "commandName": "IISExpress", |       "commandName": "IISExpress", | ||||||
| @ -26,6 +17,24 @@ | |||||||
|       "environmentVariables": { |       "environmentVariables": { | ||||||
|         "ASPNETCORE_ENVIRONMENT": "Development" |         "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 ILogger<AttachmentsProvider> logger; | ||||||
|         private IUploadService uploadservice; |         private IUploadService uploadservice; | ||||||
|         private IMapper mapper; |         private IMapper mapper; | ||||||
|         private readonly IHttpContextAccessor httpContextAccessor; |  | ||||||
|         private string baseUrl; |         public AttachmentsProvider(AttachmentsDbContext AttachmentDbContext, ILogger<AttachmentsProvider> logger, IMapper mapper,IUploadService uploadservice) | ||||||
|         public AttachmentsProvider(AttachmentsDbContext AttachmentDbContext, ILogger<AttachmentsProvider> logger, IMapper mapper,IUploadService uploadservice, IHttpContextAccessor httpContextAccessor) |  | ||||||
|         { |         { | ||||||
|             this.AttachmentDbContext = AttachmentDbContext; |             this.AttachmentDbContext = AttachmentDbContext; | ||||||
|             this.logger = logger; |             this.logger = logger; | ||||||
|             this.mapper = mapper; |             this.mapper = mapper; | ||||||
|             this.uploadservice = uploadservice; |             this.uploadservice = uploadservice; | ||||||
|             this.httpContextAccessor = httpContextAccessor; |             //SeedData(); | ||||||
|             baseUrl = $"{httpContextAccessor.HttpContext.Request.Scheme}://{httpContextAccessor.HttpContext.Request.Host}"; |  | ||||||
|             baseUrl = baseUrl + "/attachments/download"; |  | ||||||
|             SeedData(); |  | ||||||
|         } |         } | ||||||
|         public async Task<(bool IsSuccess, IEnumerable<Models.Attachment> Attachments, string ErrorMessage)> GetAttachmentsAsync() |         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(); |                 var Attachment = await AttachmentDbContext.Attachments.AsNoTracking().Where(a => !a.IsDeleted).ToListAsync(); | ||||||
|                 if (Attachment != null) |                 if (Attachment != null) | ||||||
|                 { |                 { | ||||||
|                     foreach (var attachment in Attachment) |  | ||||||
|                     { |  | ||||||
|                         attachment.URI = $"{baseUrl}/{attachment.Id}"; |  | ||||||
|                     } |  | ||||||
|                     logger?.LogInformation($"{Attachment.Count} Attachments(s) found"); |                     logger?.LogInformation($"{Attachment.Count} Attachments(s) found"); | ||||||
|                     var result = mapper.Map<IEnumerable<Db.Attachment>, IEnumerable<Models.Attachment>>(Attachment); |                     var result = mapper.Map<IEnumerable<Db.Attachment>, IEnumerable<Models.Attachment>>(Attachment); | ||||||
|                     return (true, result, null); |                     return (true, result, null); | ||||||
| @ -62,7 +54,6 @@ namespace DamageAssesment.Api.Attachments.Providers | |||||||
|                 if (Attachment != null) |                 if (Attachment != null) | ||||||
|                 { |                 { | ||||||
|                     logger?.LogInformation($"{Attachment} customer(s) found"); |                     logger?.LogInformation($"{Attachment} customer(s) found"); | ||||||
|                     Attachment.URI = $"{baseUrl}/{Attachment.Id}"; |  | ||||||
|                     var result = mapper.Map<Db.Attachment, Models.Attachment>(Attachment); |                     var result = mapper.Map<Db.Attachment, Models.Attachment>(Attachment); | ||||||
|                     return (true, result, null); |                     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); |                 List<Db.Attachment> attachments = mapper.Map<List<Models.Attachment>, List<Db.Attachment>>(Attachments); | ||||||
|                 AttachmentDbContext.Attachments.AddRange(attachments); |                 AttachmentDbContext.Attachments.AddRange(attachments); | ||||||
|                 await AttachmentDbContext.SaveChangesAsync(); |                 await AttachmentDbContext.SaveChangesAsync(); | ||||||
|                 foreach (var attachment in attachments) |  | ||||||
|                 { |  | ||||||
|                     attachment.URI = $"{baseUrl}/{attachment.Id}"; |  | ||||||
|                 } |  | ||||||
|                 var result = mapper.Map<IEnumerable<Db.Attachment>, IEnumerable<Models.Attachment>>(attachments); |                 var result = mapper.Map<IEnumerable<Db.Attachment>, IEnumerable<Models.Attachment>>(attachments); | ||||||
|                 return (true, result, null); |                 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); |                 List<Db.Attachment> attachments = mapper.Map<List<Models.Attachment>, List<Db.Attachment>>(Attachments); | ||||||
|                 AttachmentDbContext.Attachments.UpdateRange(attachments); |                 AttachmentDbContext.Attachments.UpdateRange(attachments); | ||||||
|                 await AttachmentDbContext.SaveChangesAsync(); |                 await AttachmentDbContext.SaveChangesAsync(); | ||||||
|                 foreach (var attachment in attachments) |  | ||||||
|                 { |  | ||||||
|                     attachment.URI = $"{baseUrl}/{attachment.Id}"; |  | ||||||
|                 } |  | ||||||
|                 var result = mapper.Map<IEnumerable<Db.Attachment>, IEnumerable<Models.Attachment>>(attachments); |                 var result = mapper.Map<IEnumerable<Db.Attachment>, IEnumerable<Models.Attachment>>(attachments); | ||||||
|                 return (true, result, null); |                 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; |             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() |         private void SeedData() | ||||||
|         { |         { | ||||||
|  | |||||||
| @ -124,7 +124,7 @@ namespace DamageAssesment.Api.Attachments.Providers | |||||||
|                     { |                     { | ||||||
|                         counter++; |                         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 fileName = String.Format("Attachment_{0}{1}", counter, file.FileExtension); | ||||||
|                         var dbPath = Path.Combine(fullDirectoryPath, fileName); |                         var dbPath = Path.Combine(fullDirectoryPath, fileName); | ||||||
|                         File.WriteAllBytes(dbPath, Convert.FromBase64String(file.FileContent)); |                         File.WriteAllBytes(dbPath, Convert.FromBase64String(file.FileContent)); | ||||||
| @ -161,7 +161,7 @@ namespace DamageAssesment.Api.Attachments.Providers | |||||||
|                 foreach (var file in item.postedFiles) |                 foreach (var file in item.postedFiles) | ||||||
|                 { |                 { | ||||||
|                     Models.Attachment attachment= attachments.Where(a=>a.Id == file.AttachmentId).FirstOrDefault(); |                     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 fileName = String.Format("Attachment_{0}{1}", attachment?.Id, file.FileExtension); | ||||||
|                     var dbPath = Path.Combine(fullDirectoryPath, fileName); |                     var dbPath = Path.Combine(fullDirectoryPath, fileName); | ||||||
|                     File.WriteAllBytes(dbPath, Convert.FromBase64String(file.FileContent)); |                     File.WriteAllBytes(dbPath, Convert.FromBase64String(file.FileContent)); | ||||||
|  | |||||||
| @ -12,5 +12,11 @@ | |||||||
|   "Fileupload": { |   "Fileupload": { | ||||||
|     "folderpath": "DMS_Attachments/Active", |     "folderpath": "DMS_Attachments/Active", | ||||||
|     "Deletepath": "DMS_Attachments/Deleted" |     "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> |   <PropertyGroup> | ||||||
|     <TargetFramework>net6.0</TargetFramework> |     <TargetFramework>net6.0</TargetFramework> | ||||||
|  | |||||||
| @ -32,8 +32,7 @@ namespace DamageAssesment.Api.DocuLinks.Test | |||||||
|                 doclinksAttachments.Add(new DoculinkAttachments() |                 doclinksAttachments.Add(new DoculinkAttachments() | ||||||
|                 { |                 { | ||||||
|                     docName = "",Path="www.google.com", |                     docName = "",Path="www.google.com", | ||||||
|                     Language = "en", |                     IsAttachments=false,CustomOrder=1 | ||||||
|                     IsAttachments =false,CustomOrder=1 |  | ||||||
|                 }); |                 }); | ||||||
|                 list.Add(new DocuLinks.Models.ResDoculink() |                 list.Add(new DocuLinks.Models.ResDoculink() | ||||||
|                 { |                 { | ||||||
| @ -75,7 +74,6 @@ namespace DamageAssesment.Api.DocuLinks.Test | |||||||
|                     docName = "", |                     docName = "", | ||||||
|                     Path = "www.google.com", |                     Path = "www.google.com", | ||||||
|                     IsAttachments = false, |                     IsAttachments = false, | ||||||
|                     Language = "en", |  | ||||||
|                     CustomOrder = 1 |                     CustomOrder = 1 | ||||||
|                 }); |                 }); | ||||||
|                 list.Add(new DocuLinks.Models.ResDoculink() |                 list.Add(new DocuLinks.Models.ResDoculink() | ||||||
| @ -140,7 +138,6 @@ namespace DamageAssesment.Api.DocuLinks.Test | |||||||
|                 docName = "", |                 docName = "", | ||||||
|                 Path = "www.google.com", |                 Path = "www.google.com", | ||||||
|                 IsAttachments = false, |                 IsAttachments = false, | ||||||
|                 Language = "en", |  | ||||||
|                 CustomOrder = 1 |                 CustomOrder = 1 | ||||||
|             }); |             }); | ||||||
|             return new Models.Doculink |             return new Models.Doculink | ||||||
| @ -168,7 +165,6 @@ namespace DamageAssesment.Api.DocuLinks.Test | |||||||
|                 docName = "", |                 docName = "", | ||||||
|                 Path = "www.google.com", |                 Path = "www.google.com", | ||||||
|                 IsAttachments = false, |                 IsAttachments = false, | ||||||
|                 Language = "en", |  | ||||||
|                 CustomOrder = 1 |                 CustomOrder = 1 | ||||||
|             }); |             }); | ||||||
|             List<DocuLinks.Models.Doculink> DocuLinks = new List<Models.Doculink>(); |             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> |   <PropertyGroup> | ||||||
|     <TargetFramework>net6.0</TargetFramework> |     <TargetFramework>net6.0</TargetFramework> | ||||||
|     <Nullable>enable</Nullable> |     <Nullable>enable</Nullable> | ||||||
|     <ImplicitUsings>enable</ImplicitUsings> |     <ImplicitUsings>enable</ImplicitUsings> | ||||||
|     <GenerateDocumentationFile>True</GenerateDocumentationFile> |     <GenerateDocumentationFile>True</GenerateDocumentationFile> | ||||||
|  |     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | ||||||
|  |     <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath> | ||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
| @ -22,6 +24,7 @@ | |||||||
|       <PrivateAssets>all</PrivateAssets> |       <PrivateAssets>all</PrivateAssets> | ||||||
|       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> |       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||||
|     </PackageReference> |     </PackageReference> | ||||||
|  |     <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.4" /> | ||||||
|     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> |     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  |  | ||||||
|  | |||||||
| @ -15,6 +15,5 @@ namespace DamageAssesment.Api.DocuLinks.Db | |||||||
|         public string Path { get; set; } |         public string Path { get; set; } | ||||||
|         public bool IsAttachments { get; set; } |         public bool IsAttachments { get; set; } | ||||||
|         public int CustomOrder { 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 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.Doculink> Documents { get; set; } | ||||||
|         public DbSet<Db.LinkType> LinkTypes { 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, Models.Doculink Document); | ||||||
|         Task<(bool IsSuccess, Models.ResDoculink Document, string ErrorMessage)> UpdateDocumentAsync(int id, bool isactive); |         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.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(); |         Task<(bool IsSuccess, int counter, string message)> GetDocumentCounter(); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | |||||||
| @ -8,7 +8,6 @@ namespace DamageAssesment.Api.DocuLinks.Models | |||||||
|         public string docName { get; set; } |         public string docName { get; set; } | ||||||
|         public string Path { get; set; } |         public string Path { get; set; } | ||||||
|         public bool IsAttachments { get; set; } |         public bool IsAttachments { get; set; } | ||||||
|         public string Language { get; set; } |  | ||||||
|         public int CustomOrder { get; set; } |         public int CustomOrder { get; set; } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -19,6 +19,5 @@ namespace DamageAssesment.Api.DocuLinks.Models | |||||||
|         public int CustomOrder { get; set; } |         public int CustomOrder { get; set; } | ||||||
|         public string url { get;set; } |         public string url { get;set; } | ||||||
|         public bool IsAttachments { 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 | // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle | ||||||
| builder.Services.AddEndpointsApiExplorer(); | builder.Services.AddEndpointsApiExplorer(); | ||||||
| builder.Services.AddSwaggerGen(); | builder.Services.AddSwaggerGen(); | ||||||
| builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); |  | ||||||
| builder.Services.AddScoped<IDoculinkProvider, DoculinkProvider>(); | builder.Services.AddScoped<IDoculinkProvider, DoculinkProvider>(); | ||||||
| builder.Services.AddScoped<IUploadService, UploadService>(); | builder.Services.AddScoped<IUploadService, UploadService>(); | ||||||
| builder.Services.AddScoped<IAzureBlobService, AzureBlobService>(); | builder.Services.AddScoped<IAzureBlobService, AzureBlobService>(); | ||||||
| builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30 | builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30 | ||||||
| builder.Services.AddDbContext<DoculinkDbContext>(option => | builder.Services.AddDbContext<DoculinkDbContext>(option => | ||||||
| { | { | ||||||
|     option.UseInMemoryDatabase("DocumentConnection"); |     option.UseSqlServer("DoculinConnection"); | ||||||
| }); | }); | ||||||
| var app = builder.Build(); | 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": { |   "profiles": { | ||||||
|     "DamageAssesment.Api.Questions": { |     "DamageAssesment.Api.Doculinks": { | ||||||
|       "commandName": "Project", |       "commandName": "Project", | ||||||
|       "dotnetRunMessages": true, |  | ||||||
|       "launchBrowser": true, |       "launchBrowser": true, | ||||||
|       "launchUrl": "swagger", |       "launchUrl": "swagger", | ||||||
|       "applicationUrl": "http://localhost:5133", |  | ||||||
|       "environmentVariables": { |       "environmentVariables": { | ||||||
|         "ASPNETCORE_ENVIRONMENT": "Development" |         "ASPNETCORE_ENVIRONMENT": "Development" | ||||||
|       } |       }, | ||||||
|  |       "dotnetRunMessages": true, | ||||||
|  |       "applicationUrl": "http://localhost:5136" | ||||||
|     }, |     }, | ||||||
|     "IIS Express": { |     "IIS Express": { | ||||||
|       "commandName": "IISExpress", |       "commandName": "IISExpress", | ||||||
| @ -26,6 +17,24 @@ | |||||||
|       "environmentVariables": { |       "environmentVariables": { | ||||||
|         "ASPNETCORE_ENVIRONMENT": "Development" |         "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.Db; | ||||||
| using DamageAssesment.Api.DocuLinks.Interfaces; | using DamageAssesment.Api.DocuLinks.Interfaces; | ||||||
| using DamageAssesment.Api.DocuLinks.Models; | using DamageAssesment.Api.DocuLinks.Models; | ||||||
| using Microsoft.AspNetCore.Http; |  | ||||||
| using Microsoft.AspNetCore.Mvc; | using Microsoft.AspNetCore.Mvc; | ||||||
| using Microsoft.EntityFrameworkCore; | using Microsoft.EntityFrameworkCore; | ||||||
| using Microsoft.EntityFrameworkCore.Metadata.Internal; | using Microsoft.EntityFrameworkCore.Metadata.Internal; | ||||||
| using System; | using System; | ||||||
| using System.Collections.Generic; |  | ||||||
| using System.Collections.Immutable; | using System.Collections.Immutable; | ||||||
| using System.Diagnostics.Eventing.Reader; | using System.Diagnostics.Eventing.Reader; | ||||||
| using System.Reflection.Metadata; | using System.Reflection.Metadata; | ||||||
| using System.Runtime.CompilerServices; |  | ||||||
| using System.Xml; | using System.Xml; | ||||||
| using System.Xml.Linq; | using System.Xml.Linq; | ||||||
|  |  | ||||||
| @ -25,18 +22,13 @@ namespace DamageAssesment.Api.DocuLinks.Providers | |||||||
|         private ILogger<DoculinkProvider> logger; |         private ILogger<DoculinkProvider> logger; | ||||||
|         private IUploadService uploadservice; |         private IUploadService uploadservice; | ||||||
|         private IMapper mapper; |         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.DocumentDbContext = DocumentDbContext; | ||||||
|             this.logger = logger; |             this.logger = logger; | ||||||
|             this.mapper = mapper; |             this.mapper = mapper; | ||||||
|             this.uploadservice = uploadservice; |             this.uploadservice = uploadservice; | ||||||
|             this.httpContextAccessor = httpContextAccessor; |  | ||||||
|             baseUrl = $"{httpContextAccessor.HttpContext.Request.Scheme}://{httpContextAccessor.HttpContext.Request.Host}"; |  | ||||||
|             baseUrl = baseUrl + "/doculinks/download"; |  | ||||||
|             SeedData(); |             SeedData(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @ -79,10 +71,10 @@ namespace DamageAssesment.Api.DocuLinks.Providers | |||||||
|                     { |                     { | ||||||
|                         linkTypeId = 1; |                         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 |                     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 } }; |                     ReqDoculink documentInfo = new ReqDoculink() { linkTypeId = i, CustomOrder = i, Files = new List<FileModel>() { fileModel } }; | ||||||
|                     Models.Doculink document = uploadservice.UploadDocument(counter, documentInfo); |                     Models.Doculink document = uploadservice.UploadDocument(counter, documentInfo); | ||||||
|                     DocumentDbContext.Documents.Add(mapper.Map<Models.Doculink, Db.Doculink>(document)); |                     DocumentDbContext.Documents.Add(mapper.Map<Models.Doculink, Db.Doculink>(document)); | ||||||
| @ -178,42 +170,7 @@ namespace DamageAssesment.Api.DocuLinks.Providers | |||||||
|             MultiLanguage = dicttitle; |             MultiLanguage = dicttitle; | ||||||
|             return MultiLanguage; |             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) |         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.titles = multilan.titles; | ||||||
|                         item.description = multilan.description; |                         item.description = multilan.description; | ||||||
|                         item.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(item.linkTypeId, language)); |                         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(); |                    // List<ResDoculinks> doculinks = result.GroupBy(a => a.linkTypeId).Select(a => new ResDoculinks() { linkTypeId = a.Key, doculinks = a.ToList() }).ToList(); | ||||||
|                     return (true, result, null); |                     return (true, result, null); | ||||||
| @ -270,7 +228,8 @@ namespace DamageAssesment.Api.DocuLinks.Providers | |||||||
|                         item.titles = multilan.titles; |                         item.titles = multilan.titles; | ||||||
|                         item.description = multilan.description; |                         item.description = multilan.description; | ||||||
|                         item.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(item.linkTypeId, language)); |                         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(); |                     //List<ResDoculinks> doculinks =  result.GroupBy(a => a.linkTypeId).Select(a => new ResDoculinks() { linkTypeId = a.Key, doculinks = a.ToList() }).ToList(); | ||||||
|                     return (true, result, null); |                     return (true, result, null); | ||||||
| @ -325,7 +284,8 @@ namespace DamageAssesment.Api.DocuLinks.Providers | |||||||
|                     result.documentsTranslations = mapper.Map<List<Db.DoculinkTranslation>, List<Models.DoculinkTranslation>>( |                     result.documentsTranslations = mapper.Map<List<Db.DoculinkTranslation>, List<Models.DoculinkTranslation>>( | ||||||
|                             DocumentDbContext.DocumentsTranslations.Where(a => a.DocumentId == result.Id).ToList()); |                             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 (true, result, null); | ||||||
|                 } |                 } | ||||||
|                 return (false, null, "Not found"); |                 return (false, null, "Not found"); | ||||||
| @ -357,7 +317,8 @@ namespace DamageAssesment.Api.DocuLinks.Providers | |||||||
|                     result.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(result.linkTypeId, language)); |                     result.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(result.linkTypeId, language)); | ||||||
|                     result.titles = multilan.titles; |                     result.titles = multilan.titles; | ||||||
|                     result.description = multilan.description; |                     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 (true, result, null); | ||||||
|                 } |                 } | ||||||
|                 return (false, null, "Not found"); |                 return (false, null, "Not found"); | ||||||
| @ -388,7 +349,7 @@ namespace DamageAssesment.Api.DocuLinks.Providers | |||||||
|                 result.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(Document.linkTypeId, "")); |                 result.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(Document.linkTypeId, "")); | ||||||
|                 result.titles = multilan.titles; |                 result.titles = multilan.titles; | ||||||
|                 result.description = multilan.description; |                 result.description = multilan.description; | ||||||
|                 result.doclinksAttachments = GetDocumentAttachment(document.Id,""); |                 result.doclinksAttachments = Document.doclinksAttachments; | ||||||
|                 return (true, result, null); |                 return (true, result, null); | ||||||
|             } |             } | ||||||
|             catch (Exception ex) |             catch (Exception ex) | ||||||
| @ -430,7 +391,7 @@ namespace DamageAssesment.Api.DocuLinks.Providers | |||||||
|                         result.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(document.linkTypeId, "")); |                         result.linktypes = CreateMultiLanguageLinkTypeObject(GetLinkTypeTranslations(document.linkTypeId, "")); | ||||||
|                         result.titles = multilan.titles; |                         result.titles = multilan.titles; | ||||||
|                         result.description = multilan.description; |                         result.description = multilan.description; | ||||||
|                         result.doclinksAttachments = GetDocumentAttachment(document.Id, ""); |                         result.doclinksAttachments = Document.doclinksAttachments; | ||||||
|                         return (true, result, "Successful"); |                         return (true, result, "Successful"); | ||||||
|                     } |                     } | ||||||
|                     else |                     else | ||||||
|  | |||||||
| @ -52,15 +52,6 @@ namespace DamageAssesment.Api.DocuLinks.Providers | |||||||
|                     return await System.IO.File.ReadAllBytesAsync(path); |                     return await System.IO.File.ReadAllBytesAsync(path); | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 return null; // File not found |  | ||||||
|             } |  | ||||||
|             catch (Exception ex) |  | ||||||
|             { |  | ||||||
|                 // Handle or log the exception as needed |  | ||||||
|                 throw; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         public Models.Doculink UploadDocument(int counter, ReqDoculink documentInfo) |         public Models.Doculink UploadDocument(int counter, ReqDoculink documentInfo) | ||||||
|         { |         { | ||||||
|             Models.Doculink Documents = new Models.Doculink(); |             Models.Doculink Documents = new Models.Doculink(); | ||||||
| @ -79,14 +70,14 @@ namespace DamageAssesment.Api.DocuLinks.Providers | |||||||
|                         counter++; |                         counter++; | ||||||
|                         if (item.IsAttachments) |                         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); |                             var fileName = String.Format("Document_{0}{1}", counter, item.FileExtension); | ||||||
|                             path = Path.Combine(fullDirectoryPath, fileName); |                             path = Path.Combine(fullDirectoryPath, fileName); | ||||||
|                             File.WriteAllBytes(path, Convert.FromBase64String(item.FileContent)); |                             File.WriteAllBytes(path, Convert.FromBase64String(item.FileContent)); | ||||||
|                         } |                         } | ||||||
|                         else |                         else | ||||||
|                             path = item.url; |                             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, |                 Documents=new Models.Doculink (){ linkTypeId = documentInfo.linkTypeId, | ||||||
| @ -121,14 +112,14 @@ namespace DamageAssesment.Api.DocuLinks.Providers | |||||||
|                     counter++; |                     counter++; | ||||||
|                     if (item.IsAttachments) |                     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); |                         var fileName = String.Format("Document_{0}{1}", counter, item.FileExtension); | ||||||
|                         path = Path.Combine(fullDirectoryPath, fileName); |                         path = Path.Combine(fullDirectoryPath, fileName); | ||||||
|                         File.WriteAllBytes(path, Convert.FromBase64String(item.FileContent)); |                         File.WriteAllBytes(path, Convert.FromBase64String(item.FileContent)); | ||||||
|                     } |                     } | ||||||
|                     else |                     else | ||||||
|                         path = item.url; |                         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() |                 Models.Doculink Documents = new Models.Doculink() | ||||||
|                 { |                 { | ||||||
|  | |||||||
| @ -6,6 +6,12 @@ | |||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   "AllowedHosts": "*", |   "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": { |   "Fileupload": { | ||||||
|     "folderpath": "DASA_Documents/Active", |     "folderpath": "DASA_Documents/Active", | ||||||
|     "Deletepath": "DASA_Documents/Deleted" |     "Deletepath": "DASA_Documents/Deleted" | ||||||
|  | |||||||
| @ -5,13 +5,26 @@ | |||||||
|     <Nullable>enable</Nullable> |     <Nullable>enable</Nullable> | ||||||
|     <ImplicitUsings>enable</ImplicitUsings> |     <ImplicitUsings>enable</ImplicitUsings> | ||||||
|     <GenerateDocumentationFile>True</GenerateDocumentationFile> |     <GenerateDocumentationFile>True</GenerateDocumentationFile> | ||||||
|  |     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | ||||||
|  |     <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath> | ||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> |     <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> | ||||||
|     <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> |     <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.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" /> |     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  |  | ||||||
|  | |||||||
| @ -4,18 +4,23 @@ namespace DamageAssesment.Api.Employees.Db | |||||||
| { | { | ||||||
|     public class EmployeeDbContext: DbContext |     public class EmployeeDbContext: DbContext | ||||||
|     { |     { | ||||||
|         public DbSet<Db.Employee> Employees { get; set; } |         private IConfiguration _Configuration { get; set; } | ||||||
|         public EmployeeDbContext(DbContextOptions options) : base(options) |         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) |         protected override void OnModelCreating(ModelBuilder modelBuilder) | ||||||
|         { |         { | ||||||
|             base.OnModelCreating(modelBuilder); |             base.OnModelCreating(modelBuilder); | ||||||
|  |  | ||||||
|             modelBuilder.Entity<Employee>() |             modelBuilder.Entity<Employee>() | ||||||
|                 .Property(item => item.Id) |                 .Property(item => item.Id) | ||||||
|                 .ValueGeneratedOnAdd(); |                 .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.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30 | ||||||
| builder.Services.AddDbContext<EmployeeDbContext>(option => | builder.Services.AddDbContext<EmployeeDbContext>(option => | ||||||
| { | { | ||||||
|     option.UseInMemoryDatabase("Employees"); |     option.UseSqlServer("EmployeeConnection"); | ||||||
| }); | }); | ||||||
|  |  | ||||||
| var app = builder.Build(); | 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": { |   "profiles": { | ||||||
|     "DamageAssesment.Api.Employees": { |     "DamageAssesment.Api.Employees": { | ||||||
|       "commandName": "Project", |       "commandName": "Project", | ||||||
|       "dotnetRunMessages": true, |  | ||||||
|       "launchBrowser": true, |       "launchBrowser": true, | ||||||
|       "launchUrl": "swagger", |       "launchUrl": "swagger", | ||||||
|       "applicationUrl": "http://localhost:5135", |  | ||||||
|       "environmentVariables": { |       "environmentVariables": { | ||||||
|         "ASPNETCORE_ENVIRONMENT": "Development" |         "ASPNETCORE_ENVIRONMENT": "Development" | ||||||
|       } |       }, | ||||||
|  |       "dotnetRunMessages": true, | ||||||
|  |       "applicationUrl": "http://localhost:5135" | ||||||
|     }, |     }, | ||||||
|     "IIS Express": { |     "IIS Express": { | ||||||
|       "commandName": "IISExpress", |       "commandName": "IISExpress", | ||||||
| @ -26,6 +17,24 @@ | |||||||
|       "environmentVariables": { |       "environmentVariables": { | ||||||
|         "ASPNETCORE_ENVIRONMENT": "Development" |         "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); |                     EmployeeDbContext.Employees.Add(_employee); | ||||||
|                     Employee.Id = _employee.Id; |                     Employee.Id = _employee.Id; | ||||||
|                     EmployeeDbContext.SaveChanges(); |                     EmployeeDbContext.SaveChanges(); | ||||||
|                     //return (true, Employee, null); |                     return (true, Employee, null); | ||||||
|                     return (true, mapper.Map<Db.Employee, Models.Employee>(_employee), null); |  | ||||||
|                 } |                 } | ||||||
|                 return (false, null, "Employee code is already exits"); |                 return (false, null, "Employee code is already exits"); | ||||||
|             } |             } | ||||||
|  | |||||||
| @ -13,5 +13,11 @@ | |||||||
|     "endpoint1": "xxx", |     "endpoint1": "xxx", | ||||||
|     "endpoint2": "xxx", |     "endpoint2": "xxx", | ||||||
|     "endpoint3": "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> |     <Nullable>enable</Nullable> | ||||||
|     <ImplicitUsings>enable</ImplicitUsings> |     <ImplicitUsings>enable</ImplicitUsings> | ||||||
|     <GenerateDocumentationFile>True</GenerateDocumentationFile> |     <GenerateDocumentationFile>True</GenerateDocumentationFile> | ||||||
|  |     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | ||||||
|  |     <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath> | ||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> |     <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.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> | ||||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> |     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> | ||||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" 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" /> |     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  |  | ||||||
|  | |||||||
| @ -4,6 +4,16 @@ namespace DamageAssesment.Api.Locations.Db | |||||||
| { | { | ||||||
|     public class LocationDbContext : DbContext |     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.Location> Locations { get; set; } | ||||||
|         public DbSet<Db.Region> Regions { get; set; } |         public DbSet<Db.Region> Regions { get; set; } | ||||||
|         public LocationDbContext(DbContextOptions options) : base(options) |         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.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()); //4/30 | ||||||
| builder.Services.AddDbContext<LocationDbContext>(option => | builder.Services.AddDbContext<LocationDbContext>(option => | ||||||
| { | { | ||||||
|     option.UseInMemoryDatabase("Locations"); |     option.UseSqlServer("LocationConnection"); | ||||||
| }); | }); | ||||||
| var app = builder.Build(); | 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": { |   "profiles": { | ||||||
|     "DamageAssesment.Api.Locations": { |     "DamageAssesment.Api.Locations": { | ||||||
|       "commandName": "Project", |       "commandName": "Project", | ||||||
|       "dotnetRunMessages": true, |  | ||||||
|       "launchBrowser": true, |       "launchBrowser": true, | ||||||
|       "launchUrl": "swagger", |       "launchUrl": "swagger", | ||||||
|       "applicationUrl": "http://localhost:5213", |  | ||||||
|       "environmentVariables": { |       "environmentVariables": { | ||||||
|         "ASPNETCORE_ENVIRONMENT": "Development" |         "ASPNETCORE_ENVIRONMENT": "Development" | ||||||
|       } |       }, | ||||||
|  |       "dotnetRunMessages": true, | ||||||
|  |       "applicationUrl": "http://localhost:5213" | ||||||
|     }, |     }, | ||||||
|     "IIS Express": { |     "IIS Express": { | ||||||
|       "commandName": "IISExpress", |       "commandName": "IISExpress", | ||||||
| @ -26,6 +17,24 @@ | |||||||
|       "environmentVariables": { |       "environmentVariables": { | ||||||
|         "ASPNETCORE_ENVIRONMENT": "Development" |         "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" |       "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.Interfaces; | ||||||
| using DamageAssesment.Api.Questions.Models; |  | ||||||
| using Microsoft.AspNetCore.Mvc; | using Microsoft.AspNetCore.Mvc; | ||||||
|  |  | ||||||
| namespace DamageAssesment.Api.Questions.Controllers | namespace DamageAssesment.Api.Questions.Controllers | ||||||
| @ -110,26 +109,6 @@ namespace DamageAssesment.Api.Questions.Controllers | |||||||
|             return CreatedAtRoute("DefaultApi",questions); |             return CreatedAtRoute("DefaultApi",questions); | ||||||
|         } |         } | ||||||
|         /// <summary> |         /// <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). |         /// POST request for creating a new question (multilingual). | ||||||
|         /// </summary> |         /// </summary> | ||||||
|  |  | ||||||
|  | |||||||
| @ -5,13 +5,27 @@ | |||||||
|     <Nullable>enable</Nullable> |     <Nullable>enable</Nullable> | ||||||
|     <ImplicitUsings>enable</ImplicitUsings> |     <ImplicitUsings>enable</ImplicitUsings> | ||||||
|     <GenerateDocumentationFile>True</GenerateDocumentationFile> |     <GenerateDocumentationFile>True</GenerateDocumentationFile> | ||||||
|  |     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | ||||||
|  |     <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath> | ||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> |     <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.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> | ||||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> |     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> | ||||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" 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" /> |     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  |  | ||||||
|  | |||||||
| @ -6,6 +6,16 @@ namespace DamageAssesment.Api.Questions.Db | |||||||
| { | { | ||||||
|     public class QuestionDbContext : DbContext |     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.Question> Questions { get; set; } | ||||||
|         public DbSet<Db.QuestionType> QuestionTypes { get; set; } |         public DbSet<Db.QuestionType> QuestionTypes { get; set; } | ||||||
|         public DbSet<Db.QuestionsTranslation> QuestionsTranslations { 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, 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, 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)> 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)> UpdateQuestionAsync(Models.Question Question); | ||||||
|         Task<(bool IsSuccess, Models.MultiLanguage Question, string ErrorMessage)> DeleteQuestionAsync(int id); |         Task<(bool IsSuccess, Models.MultiLanguage Question, string ErrorMessage)> DeleteQuestionAsync(int id); | ||||||
|  |  | ||||||
|  | |||||||
| @ -26,7 +26,7 @@ builder.Services.AddSwaggerGen(c => | |||||||
| }); | }); | ||||||
| builder.Services.AddDbContext<QuestionDbContext>(option => | builder.Services.AddDbContext<QuestionDbContext>(option => | ||||||
| { | { | ||||||
|     option.UseInMemoryDatabase("Questions"); |     option.UseSqlServer("QuestionConnection"); | ||||||
| }); | }); | ||||||
| var app = builder.Build(); | 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": { |   "profiles": { | ||||||
|     "DamageAssesment.Api.Questions": { |     "DamageAssesment.Api.Questions": { | ||||||
|       "commandName": "Project", |       "commandName": "Project", | ||||||
|       "dotnetRunMessages": true, |  | ||||||
|       "launchBrowser": true, |       "launchBrowser": true, | ||||||
|       "launchUrl": "swagger", |       "launchUrl": "swagger", | ||||||
|       "applicationUrl": "http://localhost:5133", |  | ||||||
|       "environmentVariables": { |       "environmentVariables": { | ||||||
|         "ASPNETCORE_ENVIRONMENT": "Development" |         "ASPNETCORE_ENVIRONMENT": "Development" | ||||||
|       } |       }, | ||||||
|  |       "dotnetRunMessages": true, | ||||||
|  |       "applicationUrl": "http://localhost:5133" | ||||||
|     }, |     }, | ||||||
|     "IIS Express": { |     "IIS Express": { | ||||||
|       "commandName": "IISExpress", |       "commandName": "IISExpress", | ||||||
| @ -26,6 +17,24 @@ | |||||||
|       "environmentVariables": { |       "environmentVariables": { | ||||||
|         "ASPNETCORE_ENVIRONMENT": "Development" |         "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.QuestionTypes.Add(new Db.QuestionType() { TypeText = "TextBox" }); | ||||||
|                 questionDbContext.SaveChanges(); |                 questionDbContext.SaveChanges(); | ||||||
|             } |             } | ||||||
|  |             if (!questionDbContext.QuestionsTranslations.Any()) | ||||||
|             if (!questionDbContext.QuestionCategories.Any()) |  | ||||||
|             { |             { | ||||||
|                 questionDbContext.QuestionCategories.Add(new Db.QuestionCategory() { IconName = "Flooding", IconLibrary = "https://example.com/images/img1.png" }); |                 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" }); |                 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); |                 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) |         public async Task<(bool IsSuccess, Models.MultiLanguage Question, string ErrorMessage)> UpdateQuestionAsync(Models.Question Question) | ||||||
|         { |         { | ||||||
|             try |             try | ||||||
| @ -440,11 +409,8 @@ namespace DamageAssesment.Api.Questions.Providers | |||||||
|  |  | ||||||
|                 if (question != null) |                 if (question != null) | ||||||
|                 { |                 { | ||||||
|                     var questiontrans=await questionDbContext.QuestionsTranslations.AsNoTracking().Where(x=>x.QuestionId== id).ToListAsync(); |  | ||||||
|                     var result = mapper.Map<Db.Question, Models.MultiLanguage>(question); |                     var result = mapper.Map<Db.Question, Models.MultiLanguage>(question); | ||||||
|                     result.Text = CreateMultiLanguageObject(GetQuestionsTranslations(result.Id, "")); |                     result.Text = CreateMultiLanguageObject(GetQuestionsTranslations(result.Id, "")); | ||||||
|                     if(questiontrans!=null) |  | ||||||
|                         questionDbContext.QuestionsTranslations.RemoveRange(questiontrans); |  | ||||||
|                     questionDbContext.Questions.Remove(question); |                     questionDbContext.Questions.Remove(question); | ||||||
|                     questionDbContext.SaveChanges(); |                     questionDbContext.SaveChanges(); | ||||||
|                     return (true, result, $"QuestionID {id} deleted Successfuly"); |                     return (true, result, $"QuestionID {id} deleted Successfuly"); | ||||||
|  | |||||||
| @ -8,5 +8,11 @@ | |||||||
|       "Microsoft.AspNetCore": "Warning" |       "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> |   </PropertyGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <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="Microsoft.NET.Test.Sdk" Version="17.5.0" /> | ||||||
|     <PackageReference Include="Moq" Version="4.18.4" /> |     <PackageReference Include="Moq" Version="4.18.4" /> | ||||||
|     <PackageReference Include="xunit" Version="2.4.2" /> |     <PackageReference Include="xunit" Version="2.4.2" /> | ||||||
|  | |||||||
| @ -5,15 +5,32 @@ | |||||||
|     <Nullable>enable</Nullable> |     <Nullable>enable</Nullable> | ||||||
|     <ImplicitUsings>enable</ImplicitUsings> |     <ImplicitUsings>enable</ImplicitUsings> | ||||||
|     <GenerateDocumentationFile>True</GenerateDocumentationFile> |     <GenerateDocumentationFile>True</GenerateDocumentationFile> | ||||||
|  |     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | ||||||
|  |     <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath> | ||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> |     <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.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> | ||||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> |     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> | ||||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" 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.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="Newtonsoft.Json" Version="13.0.3" /> | ||||||
|     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> |     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  | |||||||
| @ -4,12 +4,17 @@ namespace DamageAssesment.Api.Responses.Db | |||||||
| { | { | ||||||
|     public class SurveyResponseDbContext:DbContext |     public class SurveyResponseDbContext:DbContext | ||||||
|     { |     { | ||||||
|         public DbSet<Db.SurveyResponse> SurveyResponses { get; set; } |         private IConfiguration _Configuration { get; set; } | ||||||
|  |         public SurveyResponseDbContext(DbContextOptions options, IConfiguration configuration) : base(options) | ||||||
|         public SurveyResponseDbContext(DbContextOptions options) : 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) |         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 int CategoryId { get; set; } | ||||||
|         public string CategoryName { get; set; } |         public string CategoryName { get; set; } | ||||||
|         public string CategoryImage { get; set; } |         public string CategoryImage { get; set; } | ||||||
|         public object CategoryNames { get; set; } |  | ||||||
|         public List<Question> Questions { get; set; } |         public List<Question> Questions { get; set; } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -45,7 +45,7 @@ builder.Services.AddSwaggerGen(c => | |||||||
| }); | }); | ||||||
| builder.Services.AddDbContext<SurveyResponseDbContext>(option => | builder.Services.AddDbContext<SurveyResponseDbContext>(option => | ||||||
| { | { | ||||||
|     option.UseInMemoryDatabase("Responses"); |     option.UseSqlServer("ResponsesConnection"); | ||||||
| }); | }); | ||||||
| var app = builder.Build(); | 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": { |   "profiles": { | ||||||
|     "DamageAssesment.Api.SurveyResponses": { |     "DamageAssesment.Api.SurveyResponses": { | ||||||
|       "commandName": "Project", |       "commandName": "Project", | ||||||
|       "dotnetRunMessages": true, |  | ||||||
|       "launchBrowser": true, |       "launchBrowser": true, | ||||||
|       "launchUrl": "swagger", |       "launchUrl": "swagger", | ||||||
|       "applicationUrl": "http://localhost:5104", |  | ||||||
|       "environmentVariables": { |       "environmentVariables": { | ||||||
|         "ASPNETCORE_ENVIRONMENT": "Development" |         "ASPNETCORE_ENVIRONMENT": "Development" | ||||||
|       } |       }, | ||||||
|  |       "dotnetRunMessages": true, | ||||||
|  |       "applicationUrl": "http://localhost:5104" | ||||||
|     }, |     }, | ||||||
|     "IIS Express": { |     "IIS Express": { | ||||||
|       "commandName": "IISExpress", |       "commandName": "IISExpress", | ||||||
| @ -26,6 +17,24 @@ | |||||||
|       "environmentVariables": { |       "environmentVariables": { | ||||||
|         "ASPNETCORE_ENVIRONMENT": "Development" |         "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,16 +1,16 @@ | |||||||
| using DamageAssesment.Api.Responses.Interfaces; | using ClosedXML.Excel; | ||||||
|  | using DamageAssesment.Api.Responses.Interfaces; | ||||||
| using DamageAssesment.Api.Responses.Models; | using DamageAssesment.Api.Responses.Models; | ||||||
| using OfficeOpenXml; | using OfficeOpenXml; | ||||||
| using System.Collections.Generic; | using System.Collections.Generic; | ||||||
| using System.ComponentModel; |  | ||||||
|  |  | ||||||
| namespace DamageAssesment.Api.Responses.Providers | namespace DamageAssesment.Api.Responses.Providers | ||||||
| { | { | ||||||
|     public class ExcelExportService : IExcelExportService |     public class ExcelExportService: IExcelExportService | ||||||
|     { |     { | ||||||
|         public byte[] ExportToExcel<T1>(List<object> responses) |         public byte[] ExportToExcel<T1>(List<object> responses) | ||||||
|         {  |         {  | ||||||
|             ExcelPackage.LicenseContext = OfficeOpenXml.LicenseContext.NonCommercial; |             ExcelPackage.LicenseContext = LicenseContext.NonCommercial; | ||||||
|             using (var package = new ExcelPackage()) |             using (var package = new ExcelPackage()) | ||||||
|             { |             { | ||||||
|                 // Create the first worksheet and populate it with responses |                 // Create the first worksheet and populate it with responses | ||||||
| @ -29,7 +29,7 @@ namespace DamageAssesment.Api.Responses.Providers | |||||||
|                 for (int col = 1; col <= properties.Length; col++) |                 for (int col = 1; col <= properties.Length; col++) | ||||||
|                 { |                 { | ||||||
|                     worksheet.Cells[1, col].Value = properties[col - 1].Name; |                     worksheet.Cells[1, col].Value = properties[col - 1].Name; | ||||||
|                     if (properties[col - 1].Name.ToLower().Contains("attachment")) |                     if(properties[col - 1].Name.ToLower().Contains("attachment")) | ||||||
|                         IsAttchments.Add(col); |                         IsAttchments.Add(col); | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
| @ -39,7 +39,7 @@ namespace DamageAssesment.Api.Responses.Providers | |||||||
|                     for (int col = 1; col <= properties.Length; col++) |                     for (int col = 1; col <= properties.Length; col++) | ||||||
|                     { |                     { | ||||||
|                         |                         | ||||||
|                         string value = Convert.ToString(properties[col - 1].GetValue(data[row - 2])); |                             string value = Convert.ToString(properties[col - 1].GetValue(data[row - 2])); | ||||||
|                         if (IsAttchments.Where(a => a == col).Count() > 0 && !string.IsNullOrEmpty(value)) |                         if (IsAttchments.Where(a => a == col).Count() > 0 && !string.IsNullOrEmpty(value)) | ||||||
|                         { |                         { | ||||||
|                             List<string> attachments = value.Split("##").ToList(); |                             List<string> attachments = value.Split("##").ToList(); | ||||||
|  | |||||||
| @ -56,20 +56,16 @@ namespace DamageAssesment.Api.Responses.Providers | |||||||
|             try |             try | ||||||
|             { |             { | ||||||
|                 logger?.LogInformation("Querying to get SurveyResponse object from DB"); |                 logger?.LogInformation("Querying to get SurveyResponse object from DB"); | ||||||
|                 List<Db.SurveyResponse> listSurveyResponse = null; |                 IQueryable<Db.SurveyResponse> listSurveyResponse = null; | ||||||
|                 if (employeeid == 0) |                 if (employeeid == 0) | ||||||
|                 { |                 { | ||||||
|                     listSurveyResponse = surveyResponseDbContext.SurveyResponses.Where(s => s.SurveyId == surveyId).ToList(); |                     listSurveyResponse = surveyResponseDbContext.SurveyResponses.Where(s => s.SurveyId == surveyId); | ||||||
|                 } |                 } | ||||||
|                 else |                 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()) |                 if (listSurveyResponse.Any()) | ||||||
|                 { |                 { | ||||||
|                     var answers = await getAnswersByRegionAndSurveyIdAsync(listSurveyResponse); |                     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 |         //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 |             try | ||||||
|             { |             { | ||||||
|                 var answersList = await answerServiceProvider.getAnswersAsync(); |                 var answersList = await answerServiceProvider.getAnswersAsync(); | ||||||
|                 if (answersList == null || !answersList.Any()) |                 if (answersList == null || !answersList.Any()) | ||||||
|                     return null; |                     return null; | ||||||
|  |  | ||||||
|                 //get all the answers for the particular survey |                 //get all the answers for the particular survey | ||||||
|                 var surveyAnswers = answersList.Join( |                 var surveyAnswers = answersList.Join( | ||||||
|                                        surveyResponses, |                                        surveyResponses, | ||||||
| @ -568,11 +565,7 @@ namespace DamageAssesment.Api.Responses.Providers | |||||||
|                     surveyResonses = await surveyResponseDbContext.SurveyResponses.Where(x => x.SurveyId == surveyId && x.EmployeeId == employeeid).ToListAsync(); |                     surveyResonses = await surveyResponseDbContext.SurveyResponses.Where(x => x.SurveyId == surveyId && x.EmployeeId == employeeid).ToListAsync(); | ||||||
|                     employee = await employeeServiceProvider.getEmployeeAsync(employeeid); |                     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 answers = await answerServiceProvider.getAnswersAsync(); | ||||||
|                 var questions = await questionServiceProvider.getQuestionsAsync(null); |                 var questions = await questionServiceProvider.getQuestionsAsync(null); | ||||||
|                 var Locations = await locationServiceProvider.getLocationsAsync(); |                 var Locations = await locationServiceProvider.getLocationsAsync(); | ||||||
| @ -593,18 +586,18 @@ namespace DamageAssesment.Api.Responses.Providers | |||||||
|                                      r.LocationId, |                                      r.LocationId, | ||||||
|                                      r.EmployeeId, |                                      r.EmployeeId, | ||||||
|                                      r.ClientDevice, |                                      r.ClientDevice, | ||||||
|                                     // r.KeyAnswerResult, |                                      r.KeyAnswerResult, | ||||||
|                                      loc.DataValue, |                                      loc.DataValue, | ||||||
|                                      loc.Enrollment, |                                      loc.Enrollment, | ||||||
|                                      loc.Longitute, |                                      loc.Longitute, | ||||||
|                                      loc.Latitude, |                                      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 |                                      answers = from ans in answers | ||||||
|                                                where ans.SurveyResponseId == r.Id |                                                where ans.SurveyResponseId == r.Id | ||||||
|                                                select new |                                                select new | ||||||
|                                                { |                                                { | ||||||
|                                                    ans.Id, |                                                    ans.Id, | ||||||
|                                                 //   ans.QuestionId, |                                                    ans.QuestionId, | ||||||
|                                                    ans.AnswerText, |                                                    ans.AnswerText, | ||||||
|                                                    ans.Comment, |                                                    ans.Comment, | ||||||
|                                                    Questions = (from q in surveyQuestions where q.Id == ans.QuestionId select new { q.Id, q.QuestionNumber, q.CategoryId, q.Text }).SingleOrDefault(), |                                                    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.LocationId, | ||||||
|                                      r.EmployeeId, |                                      r.EmployeeId, | ||||||
|                                      r.ClientDevice, |                                      r.ClientDevice, | ||||||
|                                    //  r.KeyAnswerResult, |                                      r.KeyAnswerResult, | ||||||
|                                      loc.DataValue, |                                      loc.DataValue, | ||||||
|                                      loc.Enrollment, |                                      loc.Enrollment, | ||||||
|                                      loc.Longitute, |                                      loc.Longitute, | ||||||
|                                      loc.Latitude, |                                      loc.Latitude, | ||||||
|                                    //  Employee = _employee, |                                      Employee = _employee, | ||||||
|                                      answers = from ans in answers |                                      answers = from ans in answers | ||||||
|                                                where ans.SurveyResponseId == r.Id |                                                where ans.SurveyResponseId == r.Id | ||||||
|                                                select new |                                                select new | ||||||
|                                                { |                                                { | ||||||
|                                                    ans.Id, |                                                    ans.Id, | ||||||
|                                              //      ans.QuestionId, |                                                    ans.QuestionId, | ||||||
|                                                    ans.AnswerText, |                                                    ans.AnswerText, | ||||||
|                                                    ans.Comment, |                                                    ans.Comment, | ||||||
|                                                    Questions = (from q in questions where q.Id == ans.QuestionId select new { q.Id, q.QuestionNumber, q.CategoryId, q.Text }).SingleOrDefault(), |                                                    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.LocationId, | ||||||
|                                  r.EmployeeId, |                                  r.EmployeeId, | ||||||
|                                  r.ClientDevice, |                                  r.ClientDevice, | ||||||
|                                //  r.KeyAnswerResult, |                                  r.KeyAnswerResult, | ||||||
|                                  loc.DataValue, |                                  loc.DataValue, | ||||||
|                                  loc.Enrollment, |                                  loc.Enrollment, | ||||||
|                                  loc.Longitute, |                                  loc.Longitute, | ||||||
|                                  loc.Latitude, |                                  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 |                                  answers = from ans in answers | ||||||
|                                            where ans.SurveyResponseId == r.Id |                                            where ans.SurveyResponseId == r.Id | ||||||
|                                            select new |                                            select new | ||||||
|                                            { |                                            { | ||||||
|                                                ans.Id, |                                                ans.Id, | ||||||
|                                          //      ans.QuestionId, |                                                ans.QuestionId, | ||||||
|                                                ans.AnswerText, |                                                ans.AnswerText, | ||||||
|                                                ans.Comment, |                                                ans.Comment, | ||||||
|                                                Questions = (from q in questions where q.Id == ans.QuestionId select new { q.Id, q.QuestionNumber, q.CategoryId, q.Text }).SingleOrDefault(), |                                                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 }; |                         _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 answers = await answerServiceProvider.getAnswersAsync(); | ||||||
|                 var questions = await questionServiceProvider.getQuestionsAsync(null); |                 var questions = await questionServiceProvider.getQuestionsAsync(null); | ||||||
|                 var surveyQuestions = from q in questions where q.SurveyId == surveyId select q; |                 var surveyQuestions = from q in questions where q.SurveyId == surveyId select q; | ||||||
| @ -972,18 +961,18 @@ namespace DamageAssesment.Api.Responses.Providers | |||||||
|                                  r.LocationId, |                                  r.LocationId, | ||||||
|                                  r.EmployeeId, |                                  r.EmployeeId, | ||||||
|                                  r.ClientDevice, |                                  r.ClientDevice, | ||||||
|                                //  r.KeyAnswerResult, |                                  r.KeyAnswerResult, | ||||||
|                                  loc.DataValue, |                                  loc.DataValue, | ||||||
|                                  loc.Enrollment, |                                  loc.Enrollment, | ||||||
|                                  loc.Longitute, |                                  loc.Longitute, | ||||||
|                                  loc.Latitude, |                                  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 |                                  answers = from ans in answers | ||||||
|                                            where ans.SurveyResponseId == r.Id |                                            where ans.SurveyResponseId == r.Id | ||||||
|  |  | ||||||
|                                            select new |                                            select new | ||||||
|                                            { |                                            { | ||||||
|                                           //     ans.QuestionId, |                                                ans.QuestionId, | ||||||
|                                                ans.Id, |                                                ans.Id, | ||||||
|                                                ans.AnswerText, |                                                ans.AnswerText, | ||||||
|                                                ans.Comment, |                                                ans.Comment, | ||||||
| @ -1027,11 +1016,7 @@ namespace DamageAssesment.Api.Responses.Providers | |||||||
|                         _employee = new { employee.Id, employee.Name, employee.BirthDate, employee.Email, employee.OfficePhoneNumber }; |                         _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 surveyResponses = await surveyResponseDbContext.Responses.Where(x => x.SurveyId == survey.Id).ToListAsync(); | ||||||
|                 // var employees = await employeeServiceProvider.getEmployeesAsync(); |                 // var employees = await employeeServiceProvider.getEmployeesAsync(); | ||||||
|                 var answers = await answerServiceProvider.getAnswersAsync(); |                 var answers = await answerServiceProvider.getAnswersAsync(); | ||||||
| @ -1046,12 +1031,12 @@ namespace DamageAssesment.Api.Responses.Providers | |||||||
|                                  r.LocationId, |                                  r.LocationId, | ||||||
|                                  r.EmployeeId, |                                  r.EmployeeId, | ||||||
|                                  r.ClientDevice, |                                  r.ClientDevice, | ||||||
|                              //    r.KeyAnswerResult, |                                  r.KeyAnswerResult, | ||||||
|                                  loc.DataValue, |                                  loc.DataValue, | ||||||
|                                  loc.Enrollment, |                                  loc.Enrollment, | ||||||
|                                  loc.Longitute, |                                  loc.Longitute, | ||||||
|                                  loc.Latitude, |                                  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 |                                  answers = from ans in answers | ||||||
|                                            where ans.SurveyResponseId == r.Id |                                            where ans.SurveyResponseId == r.Id | ||||||
|                                            && ans.QuestionId == question.Id |                                            && ans.QuestionId == question.Id | ||||||
| @ -1059,7 +1044,7 @@ namespace DamageAssesment.Api.Responses.Providers | |||||||
|  |  | ||||||
|                                            select new |                                            select new | ||||||
|                                            { |                                            { | ||||||
|                                               // ans.QuestionId, |                                                ans.QuestionId, | ||||||
|                                                AnswerId = ans.Id, |                                                AnswerId = ans.Id, | ||||||
|                                                ans.AnswerText, |                                                ans.AnswerText, | ||||||
|                                                ans.Comment, |                                                ans.Comment, | ||||||
|  | |||||||
| @ -6,15 +6,26 @@ | |||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   "AllowedHosts": "*", |   "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": { |   "EndPointSettings": { | ||||||
|     "AnswerUrlBase": "http://localhost:5200", |     "AnswerUrlBase": "http://damageassesment.api.answers:80", | ||||||
|     "LocationUrlBase": "http://localhost:5213", |     "LocationUrlBase": "http://damageassesment.api.locations:80", | ||||||
|     "RegionUrlBase": "http://localhost:5211", |     "QuestionUrlBase": "http://damageassesment.api.questions:80", | ||||||
|     "QuestionUrlBase": "http://localhost:5133", |     "EmployeeUrlBase": "http://damageassesment.api.employees:80", | ||||||
|     "EmployeeUrlBase": "http://localhost:5135", |     "AttachmentUrlBase": "http://damageassesment.api.attachments:80", | ||||||
|     "AttachmentUrlBase": "http://localhost:5243", |     "SurveyUrlBase": "http://damageassesment.api.surveys:80" | ||||||
|     "SurveyUrlBase": "http://localhost:5009" |  | ||||||
|   }, |   }, | ||||||
|  |  | ||||||
|   "RessourceSettings": { |   "RessourceSettings": { | ||||||
|     "Employee": "/employees", |     "Employee": "/employees", | ||||||
|     "EmployeeById": "/employees/{0}", |     "EmployeeById": "/employees/{0}", | ||||||
| @ -29,5 +40,10 @@ | |||||||
|     "AnswerByResponse": "/answers/byresponse/{0}", |     "AnswerByResponse": "/answers/byresponse/{0}", | ||||||
|     "Location": "/locations", |     "Location": "/locations", | ||||||
|     "Region": "/regions" |     "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); |             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")] |         [Fact(DisplayName = "Get Survey by Id - Ok case")] | ||||||
|         public async Task GetSurveyAsync_ShouldReturnStatusCode200() |         public async Task GetSurveyAsync_ShouldReturnStatusCode200() | ||||||
|         { |         { | ||||||
|  | |||||||
| @ -27,36 +27,7 @@ namespace DamageAssesment.Api.Surveys.Controllers | |||||||
|             } |             } | ||||||
|             return NoContent(); |             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> |         /// <summary> | ||||||
|         /// GET request for retrieving surveys by ID. |         /// GET request for retrieving surveys by ID. | ||||||
|         /// </summary> |         /// </summary> | ||||||
|  | |||||||
| @ -5,13 +5,27 @@ | |||||||
|     <Nullable>enable</Nullable> |     <Nullable>enable</Nullable> | ||||||
|     <ImplicitUsings>enable</ImplicitUsings> |     <ImplicitUsings>enable</ImplicitUsings> | ||||||
|     <GenerateDocumentationFile>True</GenerateDocumentationFile> |     <GenerateDocumentationFile>True</GenerateDocumentationFile> | ||||||
|  |     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | ||||||
|  |     <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath> | ||||||
|   </PropertyGroup> |   </PropertyGroup> | ||||||
|  |  | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" /> |     <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.AspNetCore.Authentication.JwtBearer" Version="6.0.21" /> | ||||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> |     <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" /> | ||||||
|     <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" 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" /> |     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  |  | ||||||
|  | |||||||
| @ -4,11 +4,18 @@ namespace DamageAssesment.Api.Surveys.Db | |||||||
| { | { | ||||||
|     public class SurveysDbContext : DbContext |     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.Survey> Surveys { get; set; } | ||||||
|         public DbSet<Db.SurveyTranslation> SurveysTranslation { 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) |         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 |     public interface ISurveyProvider | ||||||
|     { |     { | ||||||
|        Task<(bool IsSuccess, IEnumerable< Models.MultiLanSurvey> Surveys, string ErrorMessage)> GetSurveysAsync(string language); |        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 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)> PostSurveyAsync(Models.Survey Survey); | ||||||
|        Task<(bool IsSuccess, Models.MultiLanSurvey Survey, string ErrorMessage)> PutSurveyAsync(int id, 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 => | builder.Services.AddDbContext<SurveysDbContext>(option => | ||||||
| { | { | ||||||
|     option.UseInMemoryDatabase("Surveys"); |     option.UseSqlServer("SurveyConnection"); | ||||||
| }); | }); | ||||||
| var app = builder.Build(); | 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": { |   "profiles": { | ||||||
|     "DamageAssesment.Api.Surveys": { |     "DamageAssesment.Api.Surveys": { | ||||||
|       "commandName": "Project", |       "commandName": "Project", | ||||||
|       "dotnetRunMessages": true, |  | ||||||
|       "launchBrowser": true, |       "launchBrowser": true, | ||||||
|       "launchUrl": "swagger", |       "launchUrl": "swagger", | ||||||
|       "applicationUrl": "http://localhost:5009", |  | ||||||
|       "environmentVariables": { |       "environmentVariables": { | ||||||
|         "ASPNETCORE_ENVIRONMENT": "Development" |         "ASPNETCORE_ENVIRONMENT": "Development" | ||||||
|       } |       }, | ||||||
|  |       "dotnetRunMessages": true, | ||||||
|  |       "applicationUrl": "http://localhost:5009" | ||||||
|     }, |     }, | ||||||
|     "IIS Express": { |     "IIS Express": { | ||||||
|       "commandName": "IISExpress", |       "commandName": "IISExpress", | ||||||
| @ -26,6 +17,24 @@ | |||||||
|       "environmentVariables": { |       "environmentVariables": { | ||||||
|         "ASPNETCORE_ENVIRONMENT": "Development" |         "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 | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
| @ -85,7 +85,7 @@ namespace DamageAssesment.Api.Surveys.Providers | |||||||
|             MultiLanguage = dict; |             MultiLanguage = dict; | ||||||
|             return MultiLanguage; |             return MultiLanguage; | ||||||
|         } |         } | ||||||
|         public string GetStatus(DateTime? StartDate, DateTime? EndDate) |         public string GetStatus(DateTime? StartDate,DateTime? EndDate) | ||||||
|         { |         { | ||||||
|             try |             try | ||||||
|             { |             { | ||||||
| @ -101,43 +101,6 @@ namespace DamageAssesment.Api.Surveys.Providers | |||||||
|                 return SurveyStatus.INACTIVE.ToString(); |                 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 |         // Method to get surveys asynchronously with multi-language support | ||||||
|         public async Task<(bool IsSuccess, IEnumerable<Models.MultiLanSurvey> Surveys, string ErrorMessage)> GetSurveysAsync(string language) |         public async Task<(bool IsSuccess, IEnumerable<Models.MultiLanSurvey> Surveys, string ErrorMessage)> GetSurveysAsync(string language) | ||||||
|         { |         { | ||||||
| @ -158,7 +121,7 @@ namespace DamageAssesment.Api.Surveys.Providers | |||||||
|                                       EndDate = s.EndDate, |                                       EndDate = s.EndDate, | ||||||
|                                       IsEnabled = s.IsEnabled, |                                       IsEnabled = s.IsEnabled, | ||||||
|                                       CreatedDate = s.CreatedDate, |                                       CreatedDate = s.CreatedDate, | ||||||
|                                       Status = GetStatus(s.StartDate, s.EndDate), |                                       Status= GetStatus(s.StartDate,s.EndDate), | ||||||
|                                       Titles = CreateMultiLanguageObject(GetSurveyTranslations(s.Id, null, language)) |                                       Titles = CreateMultiLanguageObject(GetSurveyTranslations(s.Id, null, language)) | ||||||
|                                   }; |                                   }; | ||||||
|  |  | ||||||
| @ -216,11 +179,6 @@ namespace DamageAssesment.Api.Surveys.Providers | |||||||
|             { |             { | ||||||
|                 if (survey != null) |                 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; |                     survey.CreatedDate = DateTime.Now; | ||||||
|                     Db.Survey _survey = mapper.Map<Models.Survey, Db.Survey>(survey); |                     Db.Survey _survey = mapper.Map<Models.Survey, Db.Survey>(survey); | ||||||
|  |  | ||||||
| @ -257,11 +215,6 @@ namespace DamageAssesment.Api.Surveys.Providers | |||||||
|             { |             { | ||||||
|                 if (survey != null) |                 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(); |                     var _survey = await surveyDbContext.Surveys.AsNoTracking().Where(s => s.Id == Id).SingleOrDefaultAsync(); | ||||||
|  |  | ||||||
|                     if (_survey != null) |                     if (_survey != null) | ||||||
|  | |||||||
| @ -8,5 +8,10 @@ | |||||||
|       "Microsoft.AspNetCore": "Warning" |       "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 | EndProject | ||||||
| Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{4CB40DC2-D9D2-4384-A7A6-9968F5C777A2}" | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{4CB40DC2-D9D2-4384-A7A6-9968F5C777A2}" | ||||||
| 	ProjectSection(SolutionItems) = preProject | 	ProjectSection(SolutionItems) = preProject | ||||||
|  | 		..\..\..\..\Sample\Migrations.ps1 = ..\..\..\..\Sample\Migrations.ps1 | ||||||
| 		ReadMe.txt = ReadMe.txt | 		ReadMe.txt = ReadMe.txt | ||||||
| 		ReadMe4Dev.txt = ReadMe4Dev.txt | 		ReadMe4Dev.txt = ReadMe4Dev.txt | ||||||
| 	EndProjectSection | 	EndProjectSection | ||||||
| @ -33,13 +34,15 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DamageAssesment.Api.Employe | |||||||
| EndProject | 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}" | 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 | 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}" | 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 | 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 | 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 | EndProject | ||||||
| Global | Global | ||||||
| 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | 	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}.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.ActiveCfg = Release|Any CPU | ||||||
| 		{D6BF9AE9-72FA-4726-A326-35A35D27FFB8}.Release|Any CPU.Build.0 = 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.ActiveCfg = Debug|Any CPU | ||||||
| 		{A7F17ED7-71D2-4FD0-87E5-D83415078FC0}.Debug|Any CPU.Build.0 = 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.ActiveCfg = Release|Any CPU | ||||||
| 		{A7F17ED7-71D2-4FD0-87E5-D83415078FC0}.Release|Any CPU.Build.0 = 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 | 		{0DD44934-6826-43C8-A438-320A05209967}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
| 		{C7F1C88B-B3C1-406E-A741-1D9A07ED18C0}.Debug|Any CPU.Build.0 = Debug|Any CPU | 		{0DD44934-6826-43C8-A438-320A05209967}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||||
| 		{C7F1C88B-B3C1-406E-A741-1D9A07ED18C0}.Release|Any CPU.ActiveCfg = Release|Any CPU | 		{0DD44934-6826-43C8-A438-320A05209967}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||||
| 		{C7F1C88B-B3C1-406E-A741-1D9A07ED18C0}.Release|Any CPU.Build.0 = Release|Any CPU | 		{0DD44934-6826-43C8-A438-320A05209967}.Release|Any CPU.Build.0 = Release|Any CPU | ||||||
| 		{26BFCF59-0D24-41C1-9202-D4FFCC52389B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | 		{B027FBB9-1357-4FD6-85B3-8ADCE11CAE05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||||
| 		{26BFCF59-0D24-41C1-9202-D4FFCC52389B}.Debug|Any CPU.Build.0 = Debug|Any CPU | 		{B027FBB9-1357-4FD6-85B3-8ADCE11CAE05}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||||
| 		{26BFCF59-0D24-41C1-9202-D4FFCC52389B}.Release|Any CPU.ActiveCfg = Release|Any CPU | 		{B027FBB9-1357-4FD6-85B3-8ADCE11CAE05}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||||
| 		{26BFCF59-0D24-41C1-9202-D4FFCC52389B}.Release|Any CPU.Build.0 = 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 | 	EndGlobalSection | ||||||
| 	GlobalSection(SolutionProperties) = preSolution | 	GlobalSection(SolutionProperties) = preSolution | ||||||
| 		HideSolutionNode = FALSE | 		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
	