mirror of
				https://github.com/D4M13N-D3V/art_platform.git
				synced 2025-10-31 17:45:39 +00:00 
			
		
		
		
	API
This commit is contained in:
		
							parent
							
								
									93198c680b
								
							
						
					
					
						commit
						1cba55bdb1
					
				
							
								
								
									
										55
									
								
								.github/workflows/build-image.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								.github/workflows/build-image.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,55 @@ | |||||||
|  | name: build-image | ||||||
|  | on: | ||||||
|  |   push: | ||||||
|  |     branches: [main] | ||||||
|  | 
 | ||||||
|  | jobs: | ||||||
|  |   build-image: | ||||||
|  |     runs-on: [ubuntu-latest] | ||||||
|  |     env: | ||||||
|  |       DOTNET_INSTALL_DIR: "/home/runner" | ||||||
|  |     permissions: | ||||||
|  |       contents: write | ||||||
|  |       packages: write | ||||||
|  |     steps: | ||||||
|  |       - name: 'Cleanup build folder' | ||||||
|  |         run: | | ||||||
|  |           rm ./* -r || true | ||||||
|  |           rm ./.??* -r  || true | ||||||
|  |          | ||||||
|  |       - uses: actions/setup-dotnet@v3 | ||||||
|  |         with: | ||||||
|  |           dotnet-version: 6.0.x | ||||||
|  | 
 | ||||||
|  |       - name: Set up GitVersion | ||||||
|  |         uses: gittools/actions/gitversion/setup@v0.9.15 | ||||||
|  |         with: | ||||||
|  |           versionSpec: '5.x' | ||||||
|  |      | ||||||
|  |       - name: Checkout code | ||||||
|  |         uses: actions/checkout@v3 | ||||||
|  |         with: | ||||||
|  |           fetch-depth: 0 | ||||||
|  | 
 | ||||||
|  |       - name: Execute GitVersion | ||||||
|  |         uses: gittools/actions/gitversion/execute@v0.9.15 | ||||||
|  |         with: | ||||||
|  |           useConfigFile: true | ||||||
|  |           configFilePath: GitVersion.yml | ||||||
|  | 
 | ||||||
|  |       - name: login into registry | ||||||
|  |         run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login https://ghcr.io -u $ --password-stdin | ||||||
|  | 
 | ||||||
|  |       - name: Build image | ||||||
|  |         env: | ||||||
|  |           dockerfile: ./src/ArtPlatform.API/Dockerfile | ||||||
|  |           docker_image_name: ghcr.io/damientehdemon/artplatform-api | ||||||
|  |         run: | | ||||||
|  |           docker build --build-arg NUGET_SOURCE=https://nuget.pkg.github.com/data443/index.json --build-arg NUGET_API_KEY=${{ secrets.PACKAGE_TOKEN }} -t ${{ env.docker_image_name }}:${{ env.GitVersion_MajorMinorPatch }} -f ${{ env.dockerfile }} --force-rm . | ||||||
|  |           docker tag ${{ env.docker_image_name }}:${{ env.GitVersion_MajorMinorPatch }} ${{ env.docker_image_name }}:latest | ||||||
|  |           docker push --all-tags ${{ env.docker_image_name }} | ||||||
|  | 
 | ||||||
|  |       - name: Tag branch | ||||||
|  |         run: | | ||||||
|  |           git tag ${{ env.GitVersion_MajorMinorPatch }} | ||||||
|  |           git push origin ${{ env.GitVersion_MajorMinorPatch }} | ||||||
							
								
								
									
										210
									
								
								ArtPlatform.Database/.idea/.idea.ArtPlatform/.idea/workspace.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										210
									
								
								ArtPlatform.Database/.idea/.idea.ArtPlatform/.idea/workspace.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @ -0,0 +1,210 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <project version="4"> | ||||||
|  |   <component name="AutoGeneratedRunConfigurationManager"> | ||||||
|  |     <projectFile profileName="http">ArtPlatform.API/ArtPlatform.API.csproj</projectFile> | ||||||
|  |     <projectFile profileName="https">ArtPlatform.API/ArtPlatform.API.csproj</projectFile> | ||||||
|  |     <projectFile>ArtPlatform.Database.Migrator/ArtPlatform.Database.Migrator.csproj</projectFile> | ||||||
|  |     <projectFile profileName="http">ArtPlatform/ArtPlatform.csproj</projectFile> | ||||||
|  |     <projectFile profileName="https">ArtPlatform/ArtPlatform.csproj</projectFile> | ||||||
|  |   </component> | ||||||
|  |   <component name="AutoImportSettings"> | ||||||
|  |     <option name="autoReloadType" value="SELECTIVE" /> | ||||||
|  |   </component> | ||||||
|  |   <component name="ChangeListManager"> | ||||||
|  |     <list default="true" id="e251c08f-6fd2-4319-a6ec-5f03319157f3" name="Changes" comment=""> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/../src/ArtPlatform.Database.Migrator/ArtPlatform.Database.Migrator.csproj" afterDir="false" /> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/../src/ArtPlatform.Database.Migrator/Program.cs" afterDir="false" /> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/../src/ArtPlatform.Database/ApplicationDbContext.cs" afterDir="false" /> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/../src/ArtPlatform.Database/ArtPlatform.Database.csproj" afterDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/.dockerignore" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/.idea/.idea.ArtPlatform/.idea/.gitignore" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/.idea/.idea.ArtPlatform/.idea/aws.xml" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/.idea/.idea.ArtPlatform/.idea/encodings.xml" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/.idea/.idea.ArtPlatform/.idea/indexLayout.xml" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/.idea/.idea.ArtPlatform/.idea/vcs.xml" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlaform.DAL/ArtPlaform.DAL.csproj" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlaform.DAL/Class1.cs" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/ArtPlatform.Api.csproj" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/Controllers/WeatherForecastController.cs" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/Dockerfile" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/Program.cs" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/Properties/launchSettings.json" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/WeatherForecast.cs" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/appsettings.Development.json" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/appsettings.json" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.DatabaseUpdater/ArtPlatform.DatabaseUpdater.csproj" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.DatabaseUpdater/Dockerfile" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.DatabaseUpdater/Program.cs" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.sln" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../Damien.ArtPlatform/.idea/.idea.Damien.ArtPlatform/.idea/aws.xml" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../Damien.ArtPlatform/.idea/.idea.Damien.ArtPlatform/.idea/indexLayout.xml" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../Damien.ArtPlatform/.idea/.idea.Damien.ArtPlatform/.idea/projectSettingsUpdater.xml" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../Damien.ArtPlatform/.idea/.idea.Damien.ArtPlatform/.idea/vcs.xml" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../Damien.ArtPlatform/.idea/.idea.Damien.ArtPlatform/.idea/workspace.xml" beforeDir="false" /> | ||||||
|  |     </list> | ||||||
|  |     <option name="SHOW_DIALOG" value="false" /> | ||||||
|  |     <option name="HIGHLIGHT_CONFLICTS" value="true" /> | ||||||
|  |     <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> | ||||||
|  |     <option name="LAST_RESOLUTION" value="IGNORE" /> | ||||||
|  |   </component> | ||||||
|  |   <component name="Git.Settings"> | ||||||
|  |     <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." /> | ||||||
|  |   </component> | ||||||
|  |   <component name="KubernetesApiProvider">{ | ||||||
|  |   "contexts": [ | ||||||
|  |     { | ||||||
|  |       "name": "minikube", | ||||||
|  |       "originalNamespace": "default" | ||||||
|  |     } | ||||||
|  |   ], | ||||||
|  |   "isMigrated": true | ||||||
|  | }</component> | ||||||
|  |   <component name="KubernetesSettings"> | ||||||
|  |     <option name="contextName" value="minikube" /> | ||||||
|  |   </component> | ||||||
|  |   <component name="ProjectColorInfo">{ | ||||||
|  |   "associatedIndex": 8 | ||||||
|  | }</component> | ||||||
|  |   <component name="ProjectId" id="2bVSVHjAxjbTSogi69zTRZwrMUs" /> | ||||||
|  |   <component name="ProjectLevelVcsManager"> | ||||||
|  |     <ConfirmationsSetting value="2" id="Add" /> | ||||||
|  |   </component> | ||||||
|  |   <component name="ProjectViewState"> | ||||||
|  |     <option name="hideEmptyMiddlePackages" value="true" /> | ||||||
|  |     <option name="showLibraryContents" value="true" /> | ||||||
|  |   </component> | ||||||
|  |   <component name="PropertiesComponent"><![CDATA[{ | ||||||
|  |   "keyToString": { | ||||||
|  |     ".NET Launch Settings Profile.ArtPlatform.API: https.executor": "Run", | ||||||
|  |     ".NET Project.ArtPlatform.Database.Migrator.executor": "Run", | ||||||
|  |     "Docker.ArtPlatform.API/Dockerfile.executor": "Run", | ||||||
|  |     "HTTP Request.All in generated-requests.executor": "Run", | ||||||
|  |     "RunOnceActivity.OpenProjectViewOnStart": "true", | ||||||
|  |     "RunOnceActivity.ShowReadmeOnStart": "true", | ||||||
|  |     "git-widget-placeholder": "main", | ||||||
|  |     "node.js.detected.package.eslint": "true", | ||||||
|  |     "node.js.detected.package.tslint": "true", | ||||||
|  |     "node.js.selected.package.eslint": "(autodetect)", | ||||||
|  |     "node.js.selected.package.tslint": "(autodetect)", | ||||||
|  |     "nodejs_package_manager_path": "npm", | ||||||
|  |     "settings.editor.selected.configurable": "preferences.pluginManager", | ||||||
|  |     "vue.rearranger.settings.migration": "true" | ||||||
|  |   }, | ||||||
|  |   "keyToStringList": { | ||||||
|  |     "DatabaseDriversLRU": [ | ||||||
|  |       "postgresql" | ||||||
|  |     ], | ||||||
|  |     "rider.external.source.directories": [ | ||||||
|  |       "/home/damienostler/.config/JetBrains/Rider2023.3/resharper-host/DecompilerCache", | ||||||
|  |       "/home/damienostler/.config/JetBrains/Rider2023.3/resharper-host/SourcesCache", | ||||||
|  |       "/home/damienostler/.local/share/Symbols/src" | ||||||
|  |     ] | ||||||
|  |   } | ||||||
|  | }]]></component> | ||||||
|  |   <component name="RunManager" selected=".NET Launch Settings Profile.ArtPlatform.API: https"> | ||||||
|  |     <configuration name="ArtPlatform.Database.Migrator" type="DotNetProject" factoryName=".NET Project"> | ||||||
|  |       <option name="EXE_PATH" value="" /> | ||||||
|  |       <option name="PROGRAM_PARAMETERS" value="" /> | ||||||
|  |       <option name="WORKING_DIRECTORY" value="" /> | ||||||
|  |       <option name="PASS_PARENT_ENVS" value="1" /> | ||||||
|  |       <option name="USE_EXTERNAL_CONSOLE" value="0" /> | ||||||
|  |       <option name="USE_MONO" value="0" /> | ||||||
|  |       <option name="RUNTIME_ARGUMENTS" value="" /> | ||||||
|  |       <option name="PROJECT_PATH" value="$PROJECT_DIR$/ArtPlatform.Database.Migrator/ArtPlatform.Database.Migrator.csproj" /> | ||||||
|  |       <option name="PROJECT_EXE_PATH_TRACKING" value="1" /> | ||||||
|  |       <option name="PROJECT_ARGUMENTS_TRACKING" value="1" /> | ||||||
|  |       <option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" /> | ||||||
|  |       <option name="PROJECT_KIND" value="DotNetCore" /> | ||||||
|  |       <option name="PROJECT_TFM" value="" /> | ||||||
|  |       <method v="2"> | ||||||
|  |         <option name="Build" /> | ||||||
|  |       </method> | ||||||
|  |     </configuration> | ||||||
|  |     <configuration name="All in generated-requests" type="HttpClient.HttpRequestRunConfigurationType" factoryName="HTTP Request" temporary="true" path="$APPLICATION_CONFIG_DIR$/scratches/generated-requests.http"> | ||||||
|  |       <method v="2" /> | ||||||
|  |     </configuration> | ||||||
|  |     <configuration name="ArtPlatform.API: http" type="LaunchSettings" factoryName=".NET Launch Settings Profile"> | ||||||
|  |       <option name="LAUNCH_PROFILE_PROJECT_FILE_PATH" value="$PROJECT_DIR$/ArtPlatform.API/ArtPlatform.API.csproj" /> | ||||||
|  |       <option name="LAUNCH_PROFILE_TFM" value="net8.0" /> | ||||||
|  |       <option name="LAUNCH_PROFILE_NAME" value="http" /> | ||||||
|  |       <option name="USE_EXTERNAL_CONSOLE" value="0" /> | ||||||
|  |       <option name="USE_MONO" value="0" /> | ||||||
|  |       <option name="RUNTIME_ARGUMENTS" value="" /> | ||||||
|  |       <option name="GENERATE_APPLICATIONHOST_CONFIG" value="1" /> | ||||||
|  |       <option name="SHOW_IIS_EXPRESS_OUTPUT" value="0" /> | ||||||
|  |       <option name="SEND_DEBUG_REQUEST" value="1" /> | ||||||
|  |       <option name="ADDITIONAL_IIS_EXPRESS_ARGUMENTS" value="" /> | ||||||
|  |       <method v="2"> | ||||||
|  |         <option name="Build" /> | ||||||
|  |       </method> | ||||||
|  |     </configuration> | ||||||
|  |     <configuration name="ArtPlatform.API: https" type="LaunchSettings" factoryName=".NET Launch Settings Profile"> | ||||||
|  |       <option name="LAUNCH_PROFILE_PROJECT_FILE_PATH" value="$PROJECT_DIR$/ArtPlatform.API/ArtPlatform.API.csproj" /> | ||||||
|  |       <option name="LAUNCH_PROFILE_TFM" value="net8.0" /> | ||||||
|  |       <option name="LAUNCH_PROFILE_NAME" value="https" /> | ||||||
|  |       <option name="USE_EXTERNAL_CONSOLE" value="0" /> | ||||||
|  |       <option name="USE_MONO" value="0" /> | ||||||
|  |       <option name="RUNTIME_ARGUMENTS" value="" /> | ||||||
|  |       <option name="GENERATE_APPLICATIONHOST_CONFIG" value="1" /> | ||||||
|  |       <option name="SHOW_IIS_EXPRESS_OUTPUT" value="0" /> | ||||||
|  |       <option name="SEND_DEBUG_REQUEST" value="1" /> | ||||||
|  |       <option name="ADDITIONAL_IIS_EXPRESS_ARGUMENTS" value="" /> | ||||||
|  |       <method v="2"> | ||||||
|  |         <option name="Build" /> | ||||||
|  |       </method> | ||||||
|  |     </configuration> | ||||||
|  |     <configuration name="ArtPlatform.API/Dockerfile" type="docker-deploy" factoryName="dockerfile" server-name="Docker"> | ||||||
|  |       <deployment type="dockerfile"> | ||||||
|  |         <settings> | ||||||
|  |           <option name="imageTag" value="artplatform.api" /> | ||||||
|  |           <option name="containerName" value="artplatform.api" /> | ||||||
|  |           <option name="contextFolderPath" value="$PROJECT_DIR$" /> | ||||||
|  |           <option name="portBindings"> | ||||||
|  |             <list> | ||||||
|  |               <DockerPortBindingImpl> | ||||||
|  |                 <option name="containerPort" value="8080" /> | ||||||
|  |                 <option name="hostIp" value="127.0.0.1" /> | ||||||
|  |                 <option name="hostPort" value="8080" /> | ||||||
|  |               </DockerPortBindingImpl> | ||||||
|  |             </list> | ||||||
|  |           </option> | ||||||
|  |           <option name="sourceFilePath" value="ArtPlatform.API/Dockerfile" /> | ||||||
|  |         </settings> | ||||||
|  |       </deployment> | ||||||
|  |       <EXTENSION ID="com.jetbrains.rider.docker.debug" isFastModeEnabled="true" isSslEnabled="false" /> | ||||||
|  |       <method v="2" /> | ||||||
|  |     </configuration> | ||||||
|  |     <configuration default="true" type="docker-deploy" factoryName="dockerfile" temporary="true"> | ||||||
|  |       <deployment type="dockerfile"> | ||||||
|  |         <settings /> | ||||||
|  |       </deployment> | ||||||
|  |       <EXTENSION ID="com.jetbrains.rider.docker.debug" isFastModeEnabled="true" isSslEnabled="false" /> | ||||||
|  |       <method v="2" /> | ||||||
|  |     </configuration> | ||||||
|  |     <recent_temporary> | ||||||
|  |       <list> | ||||||
|  |         <item itemvalue="HTTP Request.All in generated-requests" /> | ||||||
|  |       </list> | ||||||
|  |     </recent_temporary> | ||||||
|  |   </component> | ||||||
|  |   <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" /> | ||||||
|  |   <component name="TaskManager"> | ||||||
|  |     <task active="true" id="Default" summary="Default task"> | ||||||
|  |       <changelist id="e251c08f-6fd2-4319-a6ec-5f03319157f3" name="Changes" comment="" /> | ||||||
|  |       <created>1706298775013</created> | ||||||
|  |       <option name="number" value="Default" /> | ||||||
|  |       <option name="presentableId" value="Default" /> | ||||||
|  |       <updated>1706298775013</updated> | ||||||
|  |       <workItem from="1706298780176" duration="5462000" /> | ||||||
|  |       <workItem from="1706328737604" duration="1191000" /> | ||||||
|  |       <workItem from="1706329945610" duration="25965000" /> | ||||||
|  |     </task> | ||||||
|  |     <servers /> | ||||||
|  |   </component> | ||||||
|  |   <component name="TypeScriptGeneratedFilesManager"> | ||||||
|  |     <option name="version" value="3" /> | ||||||
|  |   </component> | ||||||
|  |   <component name="VcsManagerConfiguration"> | ||||||
|  |     <option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="true" /> | ||||||
|  |   </component> | ||||||
|  | </project> | ||||||
| @ -1,9 +0,0 @@ | |||||||
| <Project Sdk="Microsoft.NET.Sdk"> |  | ||||||
| 
 |  | ||||||
|     <PropertyGroup> |  | ||||||
|         <TargetFramework>net6.0</TargetFramework> |  | ||||||
|         <ImplicitUsings>enable</ImplicitUsings> |  | ||||||
|         <Nullable>enable</Nullable> |  | ||||||
|     </PropertyGroup> |  | ||||||
| 
 |  | ||||||
| </Project> |  | ||||||
| @ -1,5 +0,0 @@ | |||||||
| namespace ArtPlaform.DAL; |  | ||||||
| 
 |  | ||||||
| public class Class1 |  | ||||||
| { |  | ||||||
| } |  | ||||||
| @ -1,20 +0,0 @@ | |||||||
| <Project Sdk="Microsoft.NET.Sdk.Web"> |  | ||||||
| 
 |  | ||||||
|     <PropertyGroup> |  | ||||||
|         <TargetFramework>net6.0</TargetFramework> |  | ||||||
|         <Nullable>enable</Nullable> |  | ||||||
|         <ImplicitUsings>enable</ImplicitUsings> |  | ||||||
|         <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> |  | ||||||
|     </PropertyGroup> |  | ||||||
| 
 |  | ||||||
|     <ItemGroup> |  | ||||||
|         <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0"/> |  | ||||||
|     </ItemGroup> |  | ||||||
| 
 |  | ||||||
|     <ItemGroup> |  | ||||||
|       <Content Include="..\.dockerignore"> |  | ||||||
|         <Link>.dockerignore</Link> |  | ||||||
|       </Content> |  | ||||||
|     </ItemGroup> |  | ||||||
| 
 |  | ||||||
| </Project> |  | ||||||
| @ -1,32 +0,0 @@ | |||||||
| using Microsoft.AspNetCore.Mvc; |  | ||||||
| 
 |  | ||||||
| namespace ArtPlatform.Api.Controllers; |  | ||||||
| 
 |  | ||||||
| [ApiController] |  | ||||||
| [Route("[controller]")]
 |  | ||||||
| public class WeatherForecastController : ControllerBase |  | ||||||
| { |  | ||||||
|     private static readonly string[] Summaries = new[] |  | ||||||
|     { |  | ||||||
|         "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     private readonly ILogger<WeatherForecastController> _logger; |  | ||||||
| 
 |  | ||||||
|     public WeatherForecastController(ILogger<WeatherForecastController> logger) |  | ||||||
|     { |  | ||||||
|         _logger = logger; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     [HttpGet(Name = "GetWeatherForecast")] |  | ||||||
|     public IEnumerable<WeatherForecast> Get() |  | ||||||
|     { |  | ||||||
|         return Enumerable.Range(1, 5).Select(index => new WeatherForecast |  | ||||||
|             { |  | ||||||
|                 Date = DateTime.Now.AddDays(index), |  | ||||||
|                 TemperatureC = Random.Shared.Next(-20, 55), |  | ||||||
|                 Summary = Summaries[Random.Shared.Next(Summaries.Length)] |  | ||||||
|             }) |  | ||||||
|             .ToArray(); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,22 +0,0 @@ | |||||||
| FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base |  | ||||||
| WORKDIR /app |  | ||||||
| EXPOSE 80 |  | ||||||
| EXPOSE 443 |  | ||||||
| 
 |  | ||||||
| FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build |  | ||||||
| ARG BUILD_CONFIGURATION=Release |  | ||||||
| WORKDIR /src |  | ||||||
| COPY ["ArtPlatform.Api/ArtPlatform.Api.csproj", "ArtPlatform.Api/"] |  | ||||||
| RUN dotnet restore "ArtPlatform.Api/ArtPlatform.Api.csproj" |  | ||||||
| COPY . . |  | ||||||
| WORKDIR "/src/ArtPlatform.Api" |  | ||||||
| RUN dotnet build "ArtPlatform.Api.csproj" -c $BUILD_CONFIGURATION -o /app/build |  | ||||||
| 
 |  | ||||||
| FROM build AS publish |  | ||||||
| ARG BUILD_CONFIGURATION=Release |  | ||||||
| RUN dotnet publish "ArtPlatform.Api.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false |  | ||||||
| 
 |  | ||||||
| FROM base AS final |  | ||||||
| WORKDIR /app |  | ||||||
| COPY --from=publish /app/publish . |  | ||||||
| ENTRYPOINT ["dotnet", "ArtPlatform.Api.dll"] |  | ||||||
| @ -1,25 +0,0 @@ | |||||||
| var builder = WebApplication.CreateBuilder(args); |  | ||||||
| 
 |  | ||||||
| // Add services to the container. |  | ||||||
| 
 |  | ||||||
| builder.Services.AddControllers(); |  | ||||||
| // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle |  | ||||||
| builder.Services.AddEndpointsApiExplorer(); |  | ||||||
| builder.Services.AddSwaggerGen(); |  | ||||||
| 
 |  | ||||||
| var app = builder.Build(); |  | ||||||
| 
 |  | ||||||
| // Configure the HTTP request pipeline. |  | ||||||
| if (app.Environment.IsDevelopment()) |  | ||||||
| { |  | ||||||
|     app.UseSwagger(); |  | ||||||
|     app.UseSwaggerUI(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| app.UseHttpsRedirection(); |  | ||||||
| 
 |  | ||||||
| app.UseAuthorization(); |  | ||||||
| 
 |  | ||||||
| app.MapControllers(); |  | ||||||
| 
 |  | ||||||
| app.Run(); |  | ||||||
| @ -1,12 +0,0 @@ | |||||||
| namespace ArtPlatform.Api; |  | ||||||
| 
 |  | ||||||
| public class WeatherForecast |  | ||||||
| { |  | ||||||
|     public DateTime Date { get; set; } |  | ||||||
| 
 |  | ||||||
|     public int TemperatureC { get; set; } |  | ||||||
| 
 |  | ||||||
|     public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); |  | ||||||
| 
 |  | ||||||
|     public string? Summary { get; set; } |  | ||||||
| } |  | ||||||
| @ -1,9 +0,0 @@ | |||||||
| { |  | ||||||
|   "Logging": { |  | ||||||
|     "LogLevel": { |  | ||||||
|       "Default": "Information", |  | ||||||
|       "Microsoft.AspNetCore": "Warning" |  | ||||||
|     } |  | ||||||
|   }, |  | ||||||
|   "AllowedHosts": "*" |  | ||||||
| } |  | ||||||
| @ -1,17 +0,0 @@ | |||||||
| <Project Sdk="Microsoft.NET.Sdk"> |  | ||||||
| 
 |  | ||||||
|     <PropertyGroup> |  | ||||||
|         <OutputType>Exe</OutputType> |  | ||||||
|         <TargetFramework>net6.0</TargetFramework> |  | ||||||
|         <ImplicitUsings>enable</ImplicitUsings> |  | ||||||
|         <Nullable>enable</Nullable> |  | ||||||
|         <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> |  | ||||||
|     </PropertyGroup> |  | ||||||
| 
 |  | ||||||
|     <ItemGroup> |  | ||||||
|       <Content Include="..\.dockerignore"> |  | ||||||
|         <Link>.dockerignore</Link> |  | ||||||
|       </Content> |  | ||||||
|     </ItemGroup> |  | ||||||
| 
 |  | ||||||
| </Project> |  | ||||||
| @ -1,20 +0,0 @@ | |||||||
| FROM mcr.microsoft.com/dotnet/runtime:6.0 AS base |  | ||||||
| WORKDIR /app |  | ||||||
| 
 |  | ||||||
| FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build |  | ||||||
| ARG BUILD_CONFIGURATION=Release |  | ||||||
| WORKDIR /src |  | ||||||
| COPY ["ArtPlatform.DatabaseUpdater/ArtPlatform.DatabaseUpdater.csproj", "ArtPlatform.DatabaseUpdater/"] |  | ||||||
| RUN dotnet restore "ArtPlatform.DatabaseUpdater/ArtPlatform.DatabaseUpdater.csproj" |  | ||||||
| COPY . . |  | ||||||
| WORKDIR "/src/ArtPlatform.DatabaseUpdater" |  | ||||||
| RUN dotnet build "ArtPlatform.DatabaseUpdater.csproj" -c $BUILD_CONFIGURATION -o /app/build |  | ||||||
| 
 |  | ||||||
| FROM build AS publish |  | ||||||
| ARG BUILD_CONFIGURATION=Release |  | ||||||
| RUN dotnet publish "ArtPlatform.DatabaseUpdater.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false |  | ||||||
| 
 |  | ||||||
| FROM base AS final |  | ||||||
| WORKDIR /app |  | ||||||
| COPY --from=publish /app/publish . |  | ||||||
| ENTRYPOINT ["dotnet", "ArtPlatform.DatabaseUpdater.dll"] |  | ||||||
| @ -1 +0,0 @@ | |||||||
| Console.WriteLine("Hello, World!"); |  | ||||||
| @ -1,28 +0,0 @@ | |||||||
|  |  | ||||||
| Microsoft Visual Studio Solution File, Format Version 12.00 |  | ||||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArtPlatform.Api", "ArtPlatform.Api\ArtPlatform.Api.csproj", "{BC5949C8-6B4E-447E-92AC-8472116FCD9D}" |  | ||||||
| EndProject |  | ||||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArtPlaform.DAL", "ArtPlaform.DAL\ArtPlaform.DAL.csproj", "{9950751C-C51D-4846-AFA4-D516F55620C3}" |  | ||||||
| EndProject |  | ||||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ArtPlatform.DatabaseUpdater", "ArtPlatform.DatabaseUpdater\ArtPlatform.DatabaseUpdater.csproj", "{10EE4F10-8980-4C5F-AE6D-AC159EF95024}" |  | ||||||
| EndProject |  | ||||||
| Global |  | ||||||
| 	GlobalSection(SolutionConfigurationPlatforms) = preSolution |  | ||||||
| 		Debug|Any CPU = Debug|Any CPU |  | ||||||
| 		Release|Any CPU = Release|Any CPU |  | ||||||
| 	EndGlobalSection |  | ||||||
| 	GlobalSection(ProjectConfigurationPlatforms) = postSolution |  | ||||||
| 		{BC5949C8-6B4E-447E-92AC-8472116FCD9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{BC5949C8-6B4E-447E-92AC-8472116FCD9D}.Debug|Any CPU.Build.0 = Debug|Any CPU |  | ||||||
| 		{BC5949C8-6B4E-447E-92AC-8472116FCD9D}.Release|Any CPU.ActiveCfg = Release|Any CPU |  | ||||||
| 		{BC5949C8-6B4E-447E-92AC-8472116FCD9D}.Release|Any CPU.Build.0 = Release|Any CPU |  | ||||||
| 		{9950751C-C51D-4846-AFA4-D516F55620C3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{9950751C-C51D-4846-AFA4-D516F55620C3}.Debug|Any CPU.Build.0 = Debug|Any CPU |  | ||||||
| 		{9950751C-C51D-4846-AFA4-D516F55620C3}.Release|Any CPU.ActiveCfg = Release|Any CPU |  | ||||||
| 		{9950751C-C51D-4846-AFA4-D516F55620C3}.Release|Any CPU.Build.0 = Release|Any CPU |  | ||||||
| 		{10EE4F10-8980-4C5F-AE6D-AC159EF95024}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |  | ||||||
| 		{10EE4F10-8980-4C5F-AE6D-AC159EF95024}.Debug|Any CPU.Build.0 = Debug|Any CPU |  | ||||||
| 		{10EE4F10-8980-4C5F-AE6D-AC159EF95024}.Release|Any CPU.ActiveCfg = Release|Any CPU |  | ||||||
| 		{10EE4F10-8980-4C5F-AE6D-AC159EF95024}.Release|Any CPU.Build.0 = Release|Any CPU |  | ||||||
| 	EndGlobalSection |  | ||||||
| EndGlobal |  | ||||||
| @ -1,20 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> |  | ||||||
|   <component name="accountSettings"> |  | ||||||
|     <option name="activeProfile" value="profile:default" /> |  | ||||||
|     <option name="activeRegion" value="us-east-1" /> |  | ||||||
|     <option name="recentlyUsedProfiles"> |  | ||||||
|       <list> |  | ||||||
|         <option value="profile:default" /> |  | ||||||
|       </list> |  | ||||||
|     </option> |  | ||||||
|     <option name="recentlyUsedRegions"> |  | ||||||
|       <list> |  | ||||||
|         <option value="us-east-1" /> |  | ||||||
|       </list> |  | ||||||
|     </option> |  | ||||||
|   </component> |  | ||||||
|   <component name="explorerToolWindow"> |  | ||||||
|     <option name="selectedTab" value="Amazon Q + CodeWhisperer" /> |  | ||||||
|   </component> |  | ||||||
| </project> |  | ||||||
| @ -1,8 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> |  | ||||||
|   <component name="UserContentModel"> |  | ||||||
|     <attachedFolders /> |  | ||||||
|     <explicitIncludes /> |  | ||||||
|     <explicitExcludes /> |  | ||||||
|   </component> |  | ||||||
| </project> |  | ||||||
| @ -1,6 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> |  | ||||||
|   <component name="RiderProjectSettingsUpdater"> |  | ||||||
|     <option name="vcsConfiguration" value="2" /> |  | ||||||
|   </component> |  | ||||||
| </project> |  | ||||||
| @ -1,6 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> |  | ||||||
|   <component name="VcsDirectoryMappings"> |  | ||||||
|     <mapping directory="$PROJECT_DIR$/.." vcs="Git" /> |  | ||||||
|   </component> |  | ||||||
| </project> |  | ||||||
| @ -1,114 +0,0 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> |  | ||||||
|   <component name="AutoGeneratedRunConfigurationManager"> |  | ||||||
|     <projectFile profileName="Damien.ArtPlatform">Damien.ArtPlatform.csproj</projectFile> |  | ||||||
|   </component> |  | ||||||
|   <component name="AutoImportSettings"> |  | ||||||
|     <option name="autoReloadType" value="SELECTIVE" /> |  | ||||||
|   </component> |  | ||||||
|   <component name="ChangeListManager"> |  | ||||||
|     <list default="true" id="254f5558-0caf-48c9-8139-28250aa5f655" name="Changes" comment=""> |  | ||||||
|       <change afterPath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/ArtPlatform.Api.csproj" afterDir="false" /> |  | ||||||
|       <change afterPath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/Controllers/WeatherForecastController.cs" afterDir="false" /> |  | ||||||
|       <change afterPath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/Program.cs" afterDir="false" /> |  | ||||||
|       <change afterPath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/Properties/launchSettings.json" afterDir="false" /> |  | ||||||
|       <change afterPath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/WeatherForecast.cs" afterDir="false" /> |  | ||||||
|       <change afterPath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/appsettings.Development.json" afterDir="false" /> |  | ||||||
|       <change afterPath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/appsettings.json" afterDir="false" /> |  | ||||||
|     </list> |  | ||||||
|     <option name="SHOW_DIALOG" value="false" /> |  | ||||||
|     <option name="HIGHLIGHT_CONFLICTS" value="true" /> |  | ||||||
|     <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> |  | ||||||
|     <option name="LAST_RESOLUTION" value="IGNORE" /> |  | ||||||
|   </component> |  | ||||||
|   <component name="Git.Settings"> |  | ||||||
|     <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." /> |  | ||||||
|   </component> |  | ||||||
|   <component name="ProjectColorInfo"><![CDATA[{ |  | ||||||
|   "associatedIndex": 6 |  | ||||||
| }]]></component> |  | ||||||
|   <component name="ProjectId" id="2bKuauvXoud9NB1keP5ijmPwhnY" /> |  | ||||||
|   <component name="ProjectLevelVcsManager"> |  | ||||||
|     <ConfirmationsSetting value="2" id="Add" /> |  | ||||||
|   </component> |  | ||||||
|   <component name="ProjectViewState"> |  | ||||||
|     <option name="hideEmptyMiddlePackages" value="true" /> |  | ||||||
|     <option name="showLibraryContents" value="true" /> |  | ||||||
|   </component> |  | ||||||
|   <component name="PropertiesComponent"><![CDATA[{ |  | ||||||
|   "keyToString": { |  | ||||||
|     "ASKED_ADD_EXTERNAL_FILES": "true", |  | ||||||
|     "RunOnceActivity.OpenProjectViewOnStart": "true", |  | ||||||
|     "RunOnceActivity.ShowReadmeOnStart": "true", |  | ||||||
|     "git-widget-placeholder": "main", |  | ||||||
|     "node.js.detected.package.eslint": "true", |  | ||||||
|     "node.js.detected.package.tslint": "true", |  | ||||||
|     "node.js.selected.package.eslint": "(autodetect)", |  | ||||||
|     "node.js.selected.package.tslint": "(autodetect)", |  | ||||||
|     "nodejs_package_manager_path": "npm", |  | ||||||
|     "settings.editor.selected.configurable": "preferences.pluginManager", |  | ||||||
|     "vue.rearranger.settings.migration": "true" |  | ||||||
|   } |  | ||||||
| }]]></component> |  | ||||||
|   <component name="RunManager" selected=".NET Launch Settings Profile.Damien.ArtPlatform"> |  | ||||||
|     <configuration name="Damien.ArtPlatform" type="LaunchSettings" factoryName=".NET Launch Settings Profile"> |  | ||||||
|       <option name="LAUNCH_PROFILE_PROJECT_FILE_PATH" value="$PROJECT_DIR$/Damien.ArtPlatform.csproj" /> |  | ||||||
|       <option name="LAUNCH_PROFILE_TFM" value="net6.0" /> |  | ||||||
|       <option name="LAUNCH_PROFILE_NAME" value="Damien.ArtPlatform" /> |  | ||||||
|       <option name="USE_EXTERNAL_CONSOLE" value="0" /> |  | ||||||
|       <option name="USE_MONO" value="0" /> |  | ||||||
|       <option name="RUNTIME_ARGUMENTS" value="" /> |  | ||||||
|       <option name="GENERATE_APPLICATIONHOST_CONFIG" value="1" /> |  | ||||||
|       <option name="SHOW_IIS_EXPRESS_OUTPUT" value="0" /> |  | ||||||
|       <option name="SEND_DEBUG_REQUEST" value="1" /> |  | ||||||
|       <option name="ADDITIONAL_IIS_EXPRESS_ARGUMENTS" value="" /> |  | ||||||
|       <method v="2"> |  | ||||||
|         <option name="Build" /> |  | ||||||
|       </method> |  | ||||||
|     </configuration> |  | ||||||
|     <configuration name="Dockerfile" type="docker-deploy" factoryName="dockerfile" server-name="Docker"> |  | ||||||
|       <deployment type="dockerfile"> |  | ||||||
|         <settings> |  | ||||||
|           <option name="imageTag" value="damien.artplatform" /> |  | ||||||
|           <option name="containerName" value="damien.artplatform" /> |  | ||||||
|           <option name="contextFolderPath" value="$PROJECT_DIR$" /> |  | ||||||
|           <option name="portBindings"> |  | ||||||
|             <list> |  | ||||||
|               <DockerPortBindingImpl> |  | ||||||
|                 <option name="containerPort" value="80" /> |  | ||||||
|                 <option name="hostIp" value="127.0.0.1" /> |  | ||||||
|                 <option name="hostPort" value="8080" /> |  | ||||||
|               </DockerPortBindingImpl> |  | ||||||
|             </list> |  | ||||||
|           </option> |  | ||||||
|           <option name="sourceFilePath" value="Dockerfile" /> |  | ||||||
|         </settings> |  | ||||||
|       </deployment> |  | ||||||
|       <EXTENSION ID="com.jetbrains.rider.docker.debug" isFastModeEnabled="true" isSslEnabled="false" /> |  | ||||||
|       <method v="2" /> |  | ||||||
|     </configuration> |  | ||||||
|     <configuration default="true" type="docker-deploy" factoryName="dockerfile" temporary="true"> |  | ||||||
|       <deployment type="dockerfile" /> |  | ||||||
|       <method v="2" /> |  | ||||||
|     </configuration> |  | ||||||
|   </component> |  | ||||||
|   <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" /> |  | ||||||
|   <component name="TaskManager"> |  | ||||||
|     <task active="true" id="Default" summary="Default task"> |  | ||||||
|       <changelist id="254f5558-0caf-48c9-8139-28250aa5f655" name="Changes" comment="" /> |  | ||||||
|       <created>1705976158668</created> |  | ||||||
|       <option name="number" value="Default" /> |  | ||||||
|       <option name="presentableId" value="Default" /> |  | ||||||
|       <updated>1705976158668</updated> |  | ||||||
|       <workItem from="1705976159791" duration="435000" /> |  | ||||||
|     </task> |  | ||||||
|     <servers /> |  | ||||||
|   </component> |  | ||||||
|   <component name="TypeScriptGeneratedFilesManager"> |  | ||||||
|     <option name="version" value="3" /> |  | ||||||
|   </component> |  | ||||||
|   <component name="VcsManagerConfiguration"> |  | ||||||
|     <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" /> |  | ||||||
|     <option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="true" /> |  | ||||||
|   </component> |  | ||||||
| </project> |  | ||||||
							
								
								
									
										370
									
								
								src/.idea/.idea.ArtPlatform.Database/.idea/workspace.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										370
									
								
								src/.idea/.idea.ArtPlatform.Database/.idea/workspace.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @ -0,0 +1,370 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <project version="4"> | ||||||
|  |   <component name="AutoGeneratedRunConfigurationManager"> | ||||||
|  |     <projectFile profileName="http">ArtPlatform.API/ArtPlatform.API.csproj</projectFile> | ||||||
|  |     <projectFile profileName="https">ArtPlatform.API/ArtPlatform.API.csproj</projectFile> | ||||||
|  |     <projectFile profileName="http">ArtPlatform.App/ArtPlatform.App.csproj</projectFile> | ||||||
|  |     <projectFile profileName="https">ArtPlatform.App/ArtPlatform.App.csproj</projectFile> | ||||||
|  |     <projectFile>ArtPlatform.Database.Migrator/ArtPlatform.Database.Migrator.csproj</projectFile> | ||||||
|  |     <projectFile profileName="https">ArtPlatform.UI/ArtPlatform.UI.csproj</projectFile> | ||||||
|  |     <projectFile profileName="http">ArtPlatform.WebApp/ArtPlatform.WebApp.csproj</projectFile> | ||||||
|  |     <projectFile profileName="https">ArtPlatform.WebApp/ArtPlatform.WebApp.csproj</projectFile> | ||||||
|  |     <projectFile profileName="http">ArtPlatform.WebApplication/ArtPlatform.WebApplication.csproj</projectFile> | ||||||
|  |     <projectFile profileName="https">ArtPlatform.WebApplication/ArtPlatform.WebApplication.csproj</projectFile> | ||||||
|  |     <projectFile profileName="http">ArtPlatform/ArtPlatform.csproj</projectFile> | ||||||
|  |     <projectFile profileName="https">ArtPlatform/ArtPlatform.csproj</projectFile> | ||||||
|  |   </component> | ||||||
|  |   <component name="AutoImportSettings"> | ||||||
|  |     <option name="autoReloadType" value="SELECTIVE" /> | ||||||
|  |   </component> | ||||||
|  |   <component name="ChangeListManager"> | ||||||
|  |     <list default="true" id="e251c08f-6fd2-4319-a6ec-5f03319157f3" name="Changes" comment=""> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/.dockerignore" afterDir="false" /> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/.idea/.idea.ArtPlatform.Database/.idea/workspace.xml" afterDir="false" /> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/ArtPlatform.Database/ApplicationDatabaseConfigurationModel.cs" afterDir="false" /> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/ArtPlatform.Database/ApplicationDbContext.cs" afterDir="false" /> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/ArtPlatform.Database/ArtPlatform.Database.csproj" afterDir="false" /> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/ArtPlatform.Database/Entities/SellerConfiguredSetting.cs" afterDir="false" /> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/ArtPlatform.Database/Entities/SellerProfilePortfolioPiece.cs" afterDir="false" /> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/ArtPlatform.Database/Entities/SellerService.cs" afterDir="false" /> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/ArtPlatform.Database/Entities/SellerServiceOrder.cs" afterDir="false" /> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/ArtPlatform.Database/Entities/SellerServiceOrderMessage.cs" afterDir="false" /> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/ArtPlatform.Database/Entities/SellerServiceOrderMessageAttachment.cs" afterDir="false" /> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/ArtPlatform.Database/Entities/SellerServiceOrderReview.cs" afterDir="false" /> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/ArtPlatform.Database/Entities/SellerSetting.cs" afterDir="false" /> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/ArtPlatform.Database/Entities/User.cs" afterDir="false" /> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/ArtPlatform.Database/Entities/UserSellerProfile.cs" afterDir="false" /> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/ArtPlatform.Database/Enums/EnumOrderStatus.cs" afterDir="false" /> | ||||||
|  |       <change afterPath="$PROJECT_DIR$/ArtPlatform.sln" afterDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/.dockerignore" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/.idea/.idea.ArtPlatform/.idea/.gitignore" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/.idea/.idea.ArtPlatform/.idea/aws.xml" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/.idea/.idea.ArtPlatform/.idea/encodings.xml" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/.idea/.idea.ArtPlatform/.idea/indexLayout.xml" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/.idea/.idea.ArtPlatform/.idea/vcs.xml" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlaform.DAL/ArtPlaform.DAL.csproj" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlaform.DAL/Class1.cs" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/ArtPlatform.Api.csproj" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/Controllers/WeatherForecastController.cs" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/Dockerfile" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/Program.cs" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/Properties/launchSettings.json" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/WeatherForecast.cs" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/appsettings.Development.json" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.Api/appsettings.json" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.DatabaseUpdater/ArtPlatform.DatabaseUpdater.csproj" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.DatabaseUpdater/Dockerfile" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.DatabaseUpdater/Program.cs" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../ArtPlatform/ArtPlatform.sln" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../Damien.ArtPlatform/.idea/.idea.Damien.ArtPlatform/.idea/aws.xml" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../Damien.ArtPlatform/.idea/.idea.Damien.ArtPlatform/.idea/indexLayout.xml" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../Damien.ArtPlatform/.idea/.idea.Damien.ArtPlatform/.idea/projectSettingsUpdater.xml" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../Damien.ArtPlatform/.idea/.idea.Damien.ArtPlatform/.idea/vcs.xml" beforeDir="false" /> | ||||||
|  |       <change beforePath="$PROJECT_DIR$/../Damien.ArtPlatform/.idea/.idea.Damien.ArtPlatform/.idea/workspace.xml" beforeDir="false" /> | ||||||
|  |     </list> | ||||||
|  |     <option name="SHOW_DIALOG" value="false" /> | ||||||
|  |     <option name="HIGHLIGHT_CONFLICTS" value="true" /> | ||||||
|  |     <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" /> | ||||||
|  |     <option name="LAST_RESOLUTION" value="IGNORE" /> | ||||||
|  |   </component> | ||||||
|  |   <component name="Git.Settings"> | ||||||
|  |     <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." /> | ||||||
|  |   </component> | ||||||
|  |   <component name="ProjectColorInfo"><![CDATA[{ | ||||||
|  |   "associatedIndex": 8 | ||||||
|  | }]]></component> | ||||||
|  |   <component name="ProjectId" id="2bVSVHjAxjbTSogi69zTRZwrMUs" /> | ||||||
|  |   <component name="ProjectLevelVcsManager"> | ||||||
|  |     <ConfirmationsSetting value="2" id="Add" /> | ||||||
|  |   </component> | ||||||
|  |   <component name="ProjectViewState"> | ||||||
|  |     <option name="hideEmptyMiddlePackages" value="true" /> | ||||||
|  |     <option name="showLibraryContents" value="true" /> | ||||||
|  |   </component> | ||||||
|  |   <component name="PropertiesComponent"><![CDATA[{ | ||||||
|  |   "keyToString": { | ||||||
|  |     ".NET Launch Settings Profile.ArtPlatform.API: http.executor": "Run", | ||||||
|  |     ".NET Launch Settings Profile.ArtPlatform.App: http.executor": "Run", | ||||||
|  |     ".NET Launch Settings Profile.ArtPlatform.WebApp: http.executor": "Run", | ||||||
|  |     "RunOnceActivity.OpenProjectViewOnStart": "true", | ||||||
|  |     "RunOnceActivity.ShowReadmeOnStart": "true", | ||||||
|  |     "git-widget-placeholder": "main", | ||||||
|  |     "last_opened_file_path": "/home/damienostler/Documents/Github Repositories/art_platform/ArtPlatform.Database/ArtPlatform/ArtPlatform.sln", | ||||||
|  |     "node.js.detected.package.eslint": "true", | ||||||
|  |     "node.js.detected.package.tslint": "true", | ||||||
|  |     "node.js.selected.package.eslint": "(autodetect)", | ||||||
|  |     "node.js.selected.package.tslint": "(autodetect)", | ||||||
|  |     "nodejs_package_manager_path": "npm", | ||||||
|  |     "settings.editor.selected.configurable": "preferences.pluginManager", | ||||||
|  |     "vue.rearranger.settings.migration": "true" | ||||||
|  |   }, | ||||||
|  |   "keyToStringList": { | ||||||
|  |     "DatabaseDriversLRU": [ | ||||||
|  |       "postgresql" | ||||||
|  |     ], | ||||||
|  |     "rider.external.source.directories": [ | ||||||
|  |       "/home/damienostler/.config/JetBrains/Rider2023.3/resharper-host/DecompilerCache", | ||||||
|  |       "/home/damienostler/.config/JetBrains/Rider2023.3/resharper-host/SourcesCache", | ||||||
|  |       "/home/damienostler/.local/share/Symbols/src" | ||||||
|  |     ] | ||||||
|  |   } | ||||||
|  | }]]></component> | ||||||
|  |   <component name="RunManager" selected=".NET Launch Settings Profile.ArtPlatform.App: http"> | ||||||
|  |     <configuration name="ArtPlatform.Database.Migrator" type="DotNetProject" factoryName=".NET Project"> | ||||||
|  |       <option name="EXE_PATH" value="" /> | ||||||
|  |       <option name="PROGRAM_PARAMETERS" value="" /> | ||||||
|  |       <option name="WORKING_DIRECTORY" value="" /> | ||||||
|  |       <option name="PASS_PARENT_ENVS" value="1" /> | ||||||
|  |       <option name="USE_EXTERNAL_CONSOLE" value="0" /> | ||||||
|  |       <option name="USE_MONO" value="0" /> | ||||||
|  |       <option name="RUNTIME_ARGUMENTS" value="" /> | ||||||
|  |       <option name="PROJECT_PATH" value="$PROJECT_DIR$/ArtPlatform.Database.Migrator/ArtPlatform.Database.Migrator.csproj" /> | ||||||
|  |       <option name="PROJECT_EXE_PATH_TRACKING" value="1" /> | ||||||
|  |       <option name="PROJECT_ARGUMENTS_TRACKING" value="1" /> | ||||||
|  |       <option name="PROJECT_WORKING_DIRECTORY_TRACKING" value="1" /> | ||||||
|  |       <option name="PROJECT_KIND" value="DotNetCore" /> | ||||||
|  |       <option name="PROJECT_TFM" value="" /> | ||||||
|  |       <method v="2"> | ||||||
|  |         <option name="Build" /> | ||||||
|  |       </method> | ||||||
|  |     </configuration> | ||||||
|  |     <configuration name="ArtPlatform: http" type="LaunchSettings" factoryName=".NET Launch Settings Profile"> | ||||||
|  |       <option name="LAUNCH_PROFILE_PROJECT_FILE_PATH" value="$PROJECT_DIR$/ArtPlatform/ArtPlatform.csproj" /> | ||||||
|  |       <option name="LAUNCH_PROFILE_TFM" value="net8.0" /> | ||||||
|  |       <option name="LAUNCH_PROFILE_NAME" value="http" /> | ||||||
|  |       <option name="USE_EXTERNAL_CONSOLE" value="0" /> | ||||||
|  |       <option name="USE_MONO" value="0" /> | ||||||
|  |       <option name="RUNTIME_ARGUMENTS" value="" /> | ||||||
|  |       <option name="GENERATE_APPLICATIONHOST_CONFIG" value="1" /> | ||||||
|  |       <option name="SHOW_IIS_EXPRESS_OUTPUT" value="0" /> | ||||||
|  |       <option name="SEND_DEBUG_REQUEST" value="1" /> | ||||||
|  |       <option name="ADDITIONAL_IIS_EXPRESS_ARGUMENTS" value="" /> | ||||||
|  |       <method v="2"> | ||||||
|  |         <option name="Build" /> | ||||||
|  |       </method> | ||||||
|  |     </configuration> | ||||||
|  |     <configuration name="ArtPlatform: https" type="LaunchSettings" factoryName=".NET Launch Settings Profile"> | ||||||
|  |       <option name="LAUNCH_PROFILE_PROJECT_FILE_PATH" value="$PROJECT_DIR$/ArtPlatform/ArtPlatform.csproj" /> | ||||||
|  |       <option name="LAUNCH_PROFILE_TFM" value="net8.0" /> | ||||||
|  |       <option name="LAUNCH_PROFILE_NAME" value="https" /> | ||||||
|  |       <option name="USE_EXTERNAL_CONSOLE" value="0" /> | ||||||
|  |       <option name="USE_MONO" value="0" /> | ||||||
|  |       <option name="RUNTIME_ARGUMENTS" value="" /> | ||||||
|  |       <option name="GENERATE_APPLICATIONHOST_CONFIG" value="1" /> | ||||||
|  |       <option name="SHOW_IIS_EXPRESS_OUTPUT" value="0" /> | ||||||
|  |       <option name="SEND_DEBUG_REQUEST" value="1" /> | ||||||
|  |       <option name="ADDITIONAL_IIS_EXPRESS_ARGUMENTS" value="" /> | ||||||
|  |       <method v="2"> | ||||||
|  |         <option name="Build" /> | ||||||
|  |       </method> | ||||||
|  |     </configuration> | ||||||
|  |     <configuration name="ArtPlatform.API: https" type="LaunchSettings" factoryName=".NET Launch Settings Profile"> | ||||||
|  |       <option name="LAUNCH_PROFILE_PROJECT_FILE_PATH" value="$PROJECT_DIR$/ArtPlatform.API/ArtPlatform.API.csproj" /> | ||||||
|  |       <option name="LAUNCH_PROFILE_TFM" value="net8.0" /> | ||||||
|  |       <option name="LAUNCH_PROFILE_NAME" value="https" /> | ||||||
|  |       <option name="USE_EXTERNAL_CONSOLE" value="0" /> | ||||||
|  |       <option name="USE_MONO" value="0" /> | ||||||
|  |       <option name="RUNTIME_ARGUMENTS" value="" /> | ||||||
|  |       <option name="GENERATE_APPLICATIONHOST_CONFIG" value="1" /> | ||||||
|  |       <option name="SHOW_IIS_EXPRESS_OUTPUT" value="0" /> | ||||||
|  |       <option name="SEND_DEBUG_REQUEST" value="1" /> | ||||||
|  |       <option name="ADDITIONAL_IIS_EXPRESS_ARGUMENTS" value="" /> | ||||||
|  |       <method v="2"> | ||||||
|  |         <option name="Build" /> | ||||||
|  |       </method> | ||||||
|  |     </configuration> | ||||||
|  |     <configuration name="ArtPlatform.App: http" type="LaunchSettings" factoryName=".NET Launch Settings Profile"> | ||||||
|  |       <option name="LAUNCH_PROFILE_PROJECT_FILE_PATH" value="$PROJECT_DIR$/ArtPlatform.App/ArtPlatform.App.csproj" /> | ||||||
|  |       <option name="LAUNCH_PROFILE_TFM" value="net8.0" /> | ||||||
|  |       <option name="LAUNCH_PROFILE_NAME" value="http" /> | ||||||
|  |       <option name="USE_EXTERNAL_CONSOLE" value="0" /> | ||||||
|  |       <option name="USE_MONO" value="0" /> | ||||||
|  |       <option name="RUNTIME_ARGUMENTS" value="" /> | ||||||
|  |       <option name="GENERATE_APPLICATIONHOST_CONFIG" value="1" /> | ||||||
|  |       <option name="SHOW_IIS_EXPRESS_OUTPUT" value="0" /> | ||||||
|  |       <option name="SEND_DEBUG_REQUEST" value="1" /> | ||||||
|  |       <option name="ADDITIONAL_IIS_EXPRESS_ARGUMENTS" value="" /> | ||||||
|  |       <method v="2"> | ||||||
|  |         <option name="Build" /> | ||||||
|  |       </method> | ||||||
|  |     </configuration> | ||||||
|  |     <configuration name="ArtPlatform.App: https" type="LaunchSettings" factoryName=".NET Launch Settings Profile"> | ||||||
|  |       <option name="LAUNCH_PROFILE_PROJECT_FILE_PATH" value="$PROJECT_DIR$/ArtPlatform.App/ArtPlatform.App.csproj" /> | ||||||
|  |       <option name="LAUNCH_PROFILE_TFM" value="net8.0" /> | ||||||
|  |       <option name="LAUNCH_PROFILE_NAME" value="https" /> | ||||||
|  |       <option name="USE_EXTERNAL_CONSOLE" value="0" /> | ||||||
|  |       <option name="USE_MONO" value="0" /> | ||||||
|  |       <option name="RUNTIME_ARGUMENTS" value="" /> | ||||||
|  |       <option name="GENERATE_APPLICATIONHOST_CONFIG" value="1" /> | ||||||
|  |       <option name="SHOW_IIS_EXPRESS_OUTPUT" value="0" /> | ||||||
|  |       <option name="SEND_DEBUG_REQUEST" value="1" /> | ||||||
|  |       <option name="ADDITIONAL_IIS_EXPRESS_ARGUMENTS" value="" /> | ||||||
|  |       <method v="2"> | ||||||
|  |         <option name="Build" /> | ||||||
|  |       </method> | ||||||
|  |     </configuration> | ||||||
|  |     <configuration name="ArtPlatform.WebApplication: https" type="LaunchSettings" factoryName=".NET Launch Settings Profile"> | ||||||
|  |       <option name="LAUNCH_PROFILE_PROJECT_FILE_PATH" value="$PROJECT_DIR$/ArtPlatform.WebApplication/ArtPlatform.WebApplication.csproj" /> | ||||||
|  |       <option name="LAUNCH_PROFILE_TFM" value="net8.0" /> | ||||||
|  |       <option name="LAUNCH_PROFILE_NAME" value="https" /> | ||||||
|  |       <option name="USE_EXTERNAL_CONSOLE" value="0" /> | ||||||
|  |       <option name="USE_MONO" value="0" /> | ||||||
|  |       <option name="RUNTIME_ARGUMENTS" value="" /> | ||||||
|  |       <option name="GENERATE_APPLICATIONHOST_CONFIG" value="1" /> | ||||||
|  |       <option name="SHOW_IIS_EXPRESS_OUTPUT" value="0" /> | ||||||
|  |       <option name="SEND_DEBUG_REQUEST" value="1" /> | ||||||
|  |       <option name="ADDITIONAL_IIS_EXPRESS_ARGUMENTS" value="" /> | ||||||
|  |       <method v="2"> | ||||||
|  |         <option name="Build" /> | ||||||
|  |       </method> | ||||||
|  |     </configuration> | ||||||
|  |     <configuration name="ArtPlatform.API/Dockerfile" type="docker-deploy" factoryName="dockerfile" server-name="Docker"> | ||||||
|  |       <deployment type="dockerfile"> | ||||||
|  |         <settings> | ||||||
|  |           <option name="imageTag" value="artplatform.api" /> | ||||||
|  |           <option name="containerName" value="artplatform.api" /> | ||||||
|  |           <option name="contextFolderPath" value="$PROJECT_DIR$" /> | ||||||
|  |           <option name="portBindings"> | ||||||
|  |             <list> | ||||||
|  |               <DockerPortBindingImpl> | ||||||
|  |                 <option name="containerPort" value="8080" /> | ||||||
|  |                 <option name="hostIp" value="127.0.0.1" /> | ||||||
|  |                 <option name="hostPort" value="8080" /> | ||||||
|  |               </DockerPortBindingImpl> | ||||||
|  |             </list> | ||||||
|  |           </option> | ||||||
|  |           <option name="sourceFilePath" value="ArtPlatform.API/Dockerfile" /> | ||||||
|  |         </settings> | ||||||
|  |       </deployment> | ||||||
|  |       <EXTENSION ID="com.jetbrains.rider.docker.debug" isFastModeEnabled="true" isSslEnabled="false" /> | ||||||
|  |       <method v="2" /> | ||||||
|  |     </configuration> | ||||||
|  |     <configuration name="ArtPlatform.App/Dockerfile" type="docker-deploy" factoryName="dockerfile" server-name="Docker"> | ||||||
|  |       <deployment type="dockerfile"> | ||||||
|  |         <settings> | ||||||
|  |           <option name="imageTag" value="artplatform.app" /> | ||||||
|  |           <option name="containerName" value="artplatform.app" /> | ||||||
|  |           <option name="contextFolderPath" value="$PROJECT_DIR$" /> | ||||||
|  |           <option name="portBindings"> | ||||||
|  |             <list> | ||||||
|  |               <DockerPortBindingImpl> | ||||||
|  |                 <option name="containerPort" value="8080" /> | ||||||
|  |                 <option name="hostIp" value="127.0.0.1" /> | ||||||
|  |                 <option name="hostPort" value="8080" /> | ||||||
|  |               </DockerPortBindingImpl> | ||||||
|  |             </list> | ||||||
|  |           </option> | ||||||
|  |           <option name="sourceFilePath" value="ArtPlatform.App/Dockerfile" /> | ||||||
|  |         </settings> | ||||||
|  |       </deployment> | ||||||
|  |       <EXTENSION ID="com.jetbrains.rider.docker.debug" isFastModeEnabled="true" isSslEnabled="false" /> | ||||||
|  |       <method v="2" /> | ||||||
|  |     </configuration> | ||||||
|  |     <configuration name="ArtPlatform/Dockerfile" type="docker-deploy" factoryName="dockerfile" server-name="Docker"> | ||||||
|  |       <deployment type="dockerfile"> | ||||||
|  |         <settings> | ||||||
|  |           <option name="imageTag" value="artplatform" /> | ||||||
|  |           <option name="containerName" value="artplatform" /> | ||||||
|  |           <option name="contextFolderPath" value="$PROJECT_DIR$" /> | ||||||
|  |           <option name="portBindings"> | ||||||
|  |             <list> | ||||||
|  |               <DockerPortBindingImpl> | ||||||
|  |                 <option name="containerPort" value="8080" /> | ||||||
|  |                 <option name="hostIp" value="127.0.0.1" /> | ||||||
|  |                 <option name="hostPort" value="8080" /> | ||||||
|  |               </DockerPortBindingImpl> | ||||||
|  |             </list> | ||||||
|  |           </option> | ||||||
|  |           <option name="sourceFilePath" value="ArtPlatform/Dockerfile" /> | ||||||
|  |         </settings> | ||||||
|  |       </deployment> | ||||||
|  |       <EXTENSION ID="com.jetbrains.rider.docker.debug" isFastModeEnabled="true" isSslEnabled="false" /> | ||||||
|  |       <method v="2" /> | ||||||
|  |     </configuration> | ||||||
|  |     <configuration name="ArtPlatform.UI/Dockerfile" type="docker-deploy" factoryName="dockerfile" server-name="Docker"> | ||||||
|  |       <deployment type="dockerfile"> | ||||||
|  |         <settings> | ||||||
|  |           <option name="imageTag" value="artplatform.ui" /> | ||||||
|  |           <option name="containerName" value="artplatform.ui" /> | ||||||
|  |           <option name="contextFolderPath" value="$PROJECT_DIR$" /> | ||||||
|  |           <option name="portBindings"> | ||||||
|  |             <list> | ||||||
|  |               <DockerPortBindingImpl> | ||||||
|  |                 <option name="containerPort" value="8080" /> | ||||||
|  |                 <option name="hostIp" value="127.0.0.1" /> | ||||||
|  |                 <option name="hostPort" value="8080" /> | ||||||
|  |               </DockerPortBindingImpl> | ||||||
|  |             </list> | ||||||
|  |           </option> | ||||||
|  |           <option name="sourceFilePath" value="ArtPlatform.UI/Dockerfile" /> | ||||||
|  |         </settings> | ||||||
|  |       </deployment> | ||||||
|  |       <EXTENSION ID="com.jetbrains.rider.docker.debug" isFastModeEnabled="true" isSslEnabled="false" /> | ||||||
|  |       <method v="2" /> | ||||||
|  |     </configuration> | ||||||
|  |     <configuration name="ArtPlatform.WebApp/Dockerfile" type="docker-deploy" factoryName="dockerfile" server-name="Docker"> | ||||||
|  |       <deployment type="dockerfile"> | ||||||
|  |         <settings> | ||||||
|  |           <option name="imageTag" value="artplatform.webapp" /> | ||||||
|  |           <option name="containerName" value="artplatform.webapp" /> | ||||||
|  |           <option name="contextFolderPath" value="$PROJECT_DIR$" /> | ||||||
|  |           <option name="portBindings"> | ||||||
|  |             <list> | ||||||
|  |               <DockerPortBindingImpl> | ||||||
|  |                 <option name="containerPort" value="8080" /> | ||||||
|  |                 <option name="hostIp" value="127.0.0.1" /> | ||||||
|  |                 <option name="hostPort" value="8080" /> | ||||||
|  |               </DockerPortBindingImpl> | ||||||
|  |             </list> | ||||||
|  |           </option> | ||||||
|  |           <option name="sourceFilePath" value="ArtPlatform.WebApp/Dockerfile" /> | ||||||
|  |         </settings> | ||||||
|  |       </deployment> | ||||||
|  |       <EXTENSION ID="com.jetbrains.rider.docker.debug" isFastModeEnabled="true" isSslEnabled="false" /> | ||||||
|  |       <method v="2" /> | ||||||
|  |     </configuration> | ||||||
|  |     <configuration name="ArtPlatform.WebApplication/Dockerfile" type="docker-deploy" factoryName="dockerfile" server-name="Docker"> | ||||||
|  |       <deployment type="dockerfile"> | ||||||
|  |         <settings> | ||||||
|  |           <option name="imageTag" value="artplatform.webapplication" /> | ||||||
|  |           <option name="containerName" value="artplatform.webapplication" /> | ||||||
|  |           <option name="contextFolderPath" value="$PROJECT_DIR$" /> | ||||||
|  |           <option name="portBindings"> | ||||||
|  |             <list> | ||||||
|  |               <DockerPortBindingImpl> | ||||||
|  |                 <option name="containerPort" value="8080" /> | ||||||
|  |                 <option name="hostIp" value="127.0.0.1" /> | ||||||
|  |                 <option name="hostPort" value="8080" /> | ||||||
|  |               </DockerPortBindingImpl> | ||||||
|  |             </list> | ||||||
|  |           </option> | ||||||
|  |           <option name="sourceFilePath" value="ArtPlatform.WebApplication/Dockerfile" /> | ||||||
|  |         </settings> | ||||||
|  |       </deployment> | ||||||
|  |       <EXTENSION ID="com.jetbrains.rider.docker.debug" isFastModeEnabled="true" isSslEnabled="false" /> | ||||||
|  |       <method v="2" /> | ||||||
|  |     </configuration> | ||||||
|  |     <configuration default="true" type="docker-deploy" factoryName="dockerfile" temporary="true"> | ||||||
|  |       <deployment type="dockerfile" /> | ||||||
|  |       <method v="2" /> | ||||||
|  |     </configuration> | ||||||
|  |   </component> | ||||||
|  |   <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" /> | ||||||
|  |   <component name="TaskManager"> | ||||||
|  |     <task active="true" id="Default" summary="Default task"> | ||||||
|  |       <changelist id="e251c08f-6fd2-4319-a6ec-5f03319157f3" name="Changes" comment="" /> | ||||||
|  |       <created>1706298775013</created> | ||||||
|  |       <option name="number" value="Default" /> | ||||||
|  |       <option name="presentableId" value="Default" /> | ||||||
|  |       <updated>1706298775013</updated> | ||||||
|  |       <workItem from="1706298780176" duration="10198000" /> | ||||||
|  |     </task> | ||||||
|  |     <servers /> | ||||||
|  |   </component> | ||||||
|  |   <component name="TypeScriptGeneratedFilesManager"> | ||||||
|  |     <option name="version" value="3" /> | ||||||
|  |   </component> | ||||||
|  |   <component name="VcsManagerConfiguration"> | ||||||
|  |     <option name="CLEAR_INITIAL_COMMIT_MESSAGE" value="true" /> | ||||||
|  |   </component> | ||||||
|  | </project> | ||||||
| @ -2,10 +2,10 @@ | |||||||
| /shelf/ | /shelf/ | ||||||
| /workspace.xml | /workspace.xml | ||||||
| # Rider ignored files | # Rider ignored files | ||||||
| /.idea.ArtPlatform.iml |  | ||||||
| /contentModel.xml |  | ||||||
| /modules.xml | /modules.xml | ||||||
|  | /contentModel.xml | ||||||
| /projectSettingsUpdater.xml | /projectSettingsUpdater.xml | ||||||
|  | /.idea.ArtPlatform.Database.iml | ||||||
| # Editor-based HTTP Client requests | # Editor-based HTTP Client requests | ||||||
| /httpRequests/ | /httpRequests/ | ||||||
| # Datasource local storage ignored files | # Datasource local storage ignored files | ||||||
							
								
								
									
										1
									
								
								src/.idea/.idea.ArtPlatform/.idea/.name
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/.idea/.idea.ArtPlatform/.idea/.name
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | ArtPlatform | ||||||
							
								
								
									
										19
									
								
								src/.idea/.idea.ArtPlatform/.idea/dataSources.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/.idea/.idea.ArtPlatform/.idea/dataSources.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <project version="4"> | ||||||
|  |   <component name="DataSourceManagerImpl" format="xml" multifile-model="true"> | ||||||
|  |     <data-source source="LOCAL" name="postgres@localhost" uuid="f139dccd-eb47-4ad5-bb4f-f457f16ec1b7"> | ||||||
|  |       <driver-ref>postgresql</driver-ref> | ||||||
|  |       <synchronize>true</synchronize> | ||||||
|  |       <jdbc-driver>org.postgresql.Driver</jdbc-driver> | ||||||
|  |       <jdbc-url>jdbc:postgresql://localhost:5432/postgres</jdbc-url> | ||||||
|  |       <working-dir>$ProjectFileDir$</working-dir> | ||||||
|  |     </data-source> | ||||||
|  |     <data-source source="LOCAL" name="artplatform@localhost" uuid="e4a3d98b-bfa1-4036-a59a-24d9e362740e"> | ||||||
|  |       <driver-ref>postgresql</driver-ref> | ||||||
|  |       <synchronize>true</synchronize> | ||||||
|  |       <jdbc-driver>org.postgresql.Driver</jdbc-driver> | ||||||
|  |       <jdbc-url>jdbc:postgresql://localhost:5432/artplatform</jdbc-url> | ||||||
|  |       <working-dir>$ProjectFileDir$</working-dir> | ||||||
|  |     </data-source> | ||||||
|  |   </component> | ||||||
|  | </project> | ||||||
							
								
								
									
										30
									
								
								src/ArtPlatform.API/ArtPlatform.API.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								src/ArtPlatform.API/ArtPlatform.API.csproj
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | |||||||
|  | <Project Sdk="Microsoft.NET.Sdk.Web"> | ||||||
|  | 
 | ||||||
|  |     <PropertyGroup> | ||||||
|  |         <TargetFramework>net8.0</TargetFramework> | ||||||
|  |         <Nullable>enable</Nullable> | ||||||
|  |         <ImplicitUsings>enable</ImplicitUsings> | ||||||
|  |         <InvariantGlobalization>true</InvariantGlobalization> | ||||||
|  |         <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | ||||||
|  |     </PropertyGroup> | ||||||
|  |     <PropertyGroup> | ||||||
|  |         <GenerateDocumentationFile>true</GenerateDocumentationFile> | ||||||
|  |     </PropertyGroup> | ||||||
|  |     <ItemGroup> | ||||||
|  |         <PackageReference Include="Auth0.AspNetCore.Authentication" Version="1.4.1" /> | ||||||
|  |         <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.1" /> | ||||||
|  |         <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="8.0.1"/> | ||||||
|  |         <PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0"/> | ||||||
|  |     </ItemGroup> | ||||||
|  | 
 | ||||||
|  |     <ItemGroup> | ||||||
|  |       <Content Include="..\.dockerignore"> | ||||||
|  |         <Link>.dockerignore</Link> | ||||||
|  |       </Content> | ||||||
|  |     </ItemGroup> | ||||||
|  | 
 | ||||||
|  |     <ItemGroup> | ||||||
|  |       <ProjectReference Include="..\ArtPlatform.Database\ArtPlatform.Database.csproj" /> | ||||||
|  |     </ItemGroup> | ||||||
|  | 
 | ||||||
|  | </Project> | ||||||
| @ -0,0 +1,69 @@ | |||||||
|  | using ArtPlatform.API.Models.SellerProfileRequest; | ||||||
|  | using ArtPlatform.Database; | ||||||
|  | using ArtPlatform.Database.Entities; | ||||||
|  | using Microsoft.AspNetCore.Authorization; | ||||||
|  | using Microsoft.AspNetCore.Mvc; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.API.Controllers; | ||||||
|  | 
 | ||||||
|  | [ApiController] | ||||||
|  | [Route("api/[controller]")]
 | ||||||
|  | public class AdminSellerProfileRequestsController : Controller | ||||||
|  | { | ||||||
|  |     private readonly ApplicationDbContext _dbContext; | ||||||
|  | 
 | ||||||
|  |     public AdminSellerProfileRequestsController(ApplicationDbContext dbContext) | ||||||
|  |     { | ||||||
|  |         _dbContext = dbContext; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpGet] | ||||||
|  |     [Authorize("read:seller-profile-request")] | ||||||
|  |     [Route("SellerRequests")] | ||||||
|  |     public async Task<IActionResult> GetSellerRequests(int offset = 0, int pageSize = 10) | ||||||
|  |     { | ||||||
|  |         var requests = _dbContext.SellerProfileRequests.Skip(offset).Take(pageSize).ToList(); | ||||||
|  |         var result = requests.Select(x=>x.ToModel()).ToList(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpGet] | ||||||
|  |     [Authorize("read:seller-profile-request")] | ||||||
|  |     [Route("SellerRequests/Count")] | ||||||
|  |     public async Task<IActionResult> GetSellerRequestsCount() | ||||||
|  |     { | ||||||
|  |         var result = _dbContext.SellerProfileRequests.Count(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpPut] | ||||||
|  |     [Authorize("write:seller-profile-request")] | ||||||
|  |     [Route("SellerRequests/{userId}")] | ||||||
|  |     public async Task<IActionResult> AcceptSellerRequest(string userId) | ||||||
|  |     { | ||||||
|  |         var request = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId); | ||||||
|  |          | ||||||
|  |         if(request==null) | ||||||
|  |             return NotFound("No request for that user exists."); | ||||||
|  |          | ||||||
|  |         if (request.Accepted == true) | ||||||
|  |             return BadRequest("User is already a seller."); | ||||||
|  | 
 | ||||||
|  |         request.Accepted = true; | ||||||
|  |         request.AcceptedDate = DateTime.UtcNow; | ||||||
|  | 
 | ||||||
|  |         var newSellerProfile = new UserSellerProfile() | ||||||
|  |         { | ||||||
|  |             UserId = userId, | ||||||
|  |             AgeRestricted = false, | ||||||
|  |             Biography = string.Empty, | ||||||
|  |             SocialMediaLinks = new List<string>(){} | ||||||
|  |         }; | ||||||
|  |         _dbContext.UserSellerProfiles.Add(newSellerProfile); | ||||||
|  |         request = _dbContext.SellerProfileRequests.Update(request).Entity; | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         var result = request.ToModel(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										118
									
								
								src/ArtPlatform.API/Controllers/DiscoveryController.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										118
									
								
								src/ArtPlatform.API/Controllers/DiscoveryController.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,118 @@ | |||||||
|  | using ArtPlatform.API.Models.Discovery; | ||||||
|  | using ArtPlatform.API.Models.SellerProfile; | ||||||
|  | using ArtPlatform.API.Models.SellerService; | ||||||
|  | using ArtPlatform.Database; | ||||||
|  | using Microsoft.AspNetCore.Mvc; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.API.Controllers; | ||||||
|  | 
 | ||||||
|  | [ApiController] | ||||||
|  | [Route("api/[controller]")]
 | ||||||
|  | public class DiscoveryController : Controller | ||||||
|  | { | ||||||
|  |     private readonly ApplicationDbContext _dbContext; | ||||||
|  | 
 | ||||||
|  |     public DiscoveryController(ApplicationDbContext dbContext) | ||||||
|  |     { | ||||||
|  |         _dbContext = dbContext; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpGet] | ||||||
|  |     [Route("Sellers")] | ||||||
|  |     public async Task<IActionResult> GetSellers(string search="",int offset = 0, int pageSize = 10) | ||||||
|  |     { | ||||||
|  |         var sellers = await _dbContext.UserSellerProfiles | ||||||
|  |             .Where(x=>x.User.DisplayName.Contains(search)) | ||||||
|  |             .Include(x=>x.User) | ||||||
|  |             .Skip(offset).Take(pageSize).ToListAsync(); | ||||||
|  |         var result = sellers.Select(x=>x.ToDiscoveryModel()).ToList(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpGet] | ||||||
|  |     [Route("Sellers/Count")] | ||||||
|  |     public async Task<IActionResult> GetSellersCount(string search="") | ||||||
|  |     { | ||||||
|  |         var result = await _dbContext.UserSellerProfiles | ||||||
|  |             .Where(x=>x.User.DisplayName.Contains(search)) | ||||||
|  |             .Include(x=>x.User) | ||||||
|  |             .CountAsync(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpGet] | ||||||
|  |     [Route("Sellers/{sellerId:int}/Services")] | ||||||
|  |     public async Task<IActionResult> GetSellerServices(int sellerId, int offset = 0, int pageSize = 10) | ||||||
|  |     { | ||||||
|  |         var seller = await _dbContext.UserSellerProfiles | ||||||
|  |             .Include(x=>x.User) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==sellerId); | ||||||
|  |         if(seller==null) | ||||||
|  |             return NotFound("Seller not found."); | ||||||
|  |         var sellerServices = await _dbContext.SellerServices | ||||||
|  |             .Include(x=>x.Reviews) | ||||||
|  |             .Where(x=>x.SellerProfileId==sellerId) | ||||||
|  |             .Skip(offset).Take(pageSize).ToListAsync(); | ||||||
|  |         var result = sellerServices.Select(x=>x.ToModel()).ToList(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpGet] | ||||||
|  |     [Route("Sellers/{sellerId:int}/Services/Count")] | ||||||
|  |     public async Task<IActionResult> GetSellerServicesCount(int sellerId) | ||||||
|  |     { | ||||||
|  |         var seller = await _dbContext.UserSellerProfiles | ||||||
|  |             .Include(x=>x.User) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==sellerId); | ||||||
|  |         if(seller==null) | ||||||
|  |             return NotFound("Seller not found."); | ||||||
|  |         var sellerServices = await _dbContext.SellerServices | ||||||
|  |             .Include(x=>x.Reviews) | ||||||
|  |             .Where(x=>x.SellerProfileId==sellerId) | ||||||
|  |             .ToListAsync(); | ||||||
|  |         var result = sellerServices.Count; | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpGet] | ||||||
|  |     [Route("Sellers/{sellerId:int}/Services/{serviceId:int}/Reviews")] | ||||||
|  |     public async Task<IActionResult> GetSellerServiceReviews(int sellerId, int serviceId, int offset = 0, int pageSize = 10) | ||||||
|  |     { | ||||||
|  |         var seller = await _dbContext.UserSellerProfiles | ||||||
|  |             .Include(x=>x.User) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==sellerId); | ||||||
|  |         if(seller==null) | ||||||
|  |             return NotFound("Seller not found."); | ||||||
|  |         var sellerService = await _dbContext.SellerServices | ||||||
|  |             .Include(x=>x.Reviews).ThenInclude(x=>x.Reviewer) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==serviceId); | ||||||
|  |         if(sellerService==null) | ||||||
|  |             return NotFound("Seller service not found."); | ||||||
|  |         var result = sellerService.Reviews.Select(x=> new DiscoveryReviewModel() | ||||||
|  |         { | ||||||
|  |             Rating = x.Rating, | ||||||
|  |             WriterDisplayName = x.Reviewer.DisplayName, | ||||||
|  |             WriterId = x.ReviewerId, | ||||||
|  |         }).ToList(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpGet] | ||||||
|  |     [Route("Sellers/{sellerId:int}/Services/{serviceId:int}/Reviews/Count")] | ||||||
|  |     public async Task<IActionResult> GetSellerServiceReviewsCount(int sellerId, int serviceId) | ||||||
|  |     { | ||||||
|  |         var seller = await _dbContext.UserSellerProfiles | ||||||
|  |             .Include(x=>x.User) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==sellerId); | ||||||
|  |         if(seller==null) | ||||||
|  |             return NotFound("Seller not found."); | ||||||
|  |         var sellerService = await _dbContext.SellerServices | ||||||
|  |             .Include(x=>x.Reviews).ThenInclude(x=>x.Reviewer) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==serviceId); | ||||||
|  |         if(sellerService==null) | ||||||
|  |             return NotFound("Seller service not found."); | ||||||
|  |         var result = sellerService.Reviews.Count; | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										333
									
								
								src/ArtPlatform.API/Controllers/OrderController.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										333
									
								
								src/ArtPlatform.API/Controllers/OrderController.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,333 @@ | |||||||
|  | using ArtPlatform.API.Extensions; | ||||||
|  | using ArtPlatform.API.Models.Order; | ||||||
|  | using ArtPlatform.API.Services.Storage; | ||||||
|  | using ArtPlatform.Database; | ||||||
|  | using ArtPlatform.Database.Entities; | ||||||
|  | using ArtPlatform.Database.Enums; | ||||||
|  | using Microsoft.AspNetCore.Authorization; | ||||||
|  | using Microsoft.AspNetCore.Mvc; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.API.Controllers; | ||||||
|  | 
 | ||||||
|  | [ApiController] | ||||||
|  | [Route("api/[controller]")]
 | ||||||
|  | public class OrderController : Controller | ||||||
|  | { | ||||||
|  |     private readonly ApplicationDbContext _dbContext; | ||||||
|  |     private readonly IStorage _storage; | ||||||
|  |   | ||||||
|  |     public OrderController(ApplicationDbContext dbContext, IStorage storage) | ||||||
|  |     { | ||||||
|  |         _storage = storage; | ||||||
|  |         _dbContext = dbContext; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     [HttpGet] | ||||||
|  |     [Route("Orders")] | ||||||
|  |     [Authorize("read:orders")] | ||||||
|  |     public async Task<IActionResult> GetOrders(int offset = 0, int pageSize = 10, EnumOrderStatus? status = null) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var orders = await _dbContext.SellerServiceOrders | ||||||
|  |             .Where(x => x.BuyerId == userId && status==null ? true : status==x.Status) | ||||||
|  |             .Skip(offset).Take(pageSize).ToListAsync(); | ||||||
|  |         var result = orders.Select(x => x.ToModel()).ToList(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpPost] | ||||||
|  |     [Route("Sellers/{sellerId:int}/Services/{serviceId:int}")] | ||||||
|  |     [Authorize("write:orders")] | ||||||
|  |     public async Task<IActionResult> CreateOrder(int sellerId, int serviceId) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var seller = await _dbContext.UserSellerProfiles | ||||||
|  |             .Include(x=>x.User) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==sellerId); | ||||||
|  |         if(seller==null) | ||||||
|  |             return NotFound("Seller not found."); | ||||||
|  |         var service = await _dbContext.SellerServices | ||||||
|  |             .Include(x=>x.Reviews) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==serviceId); | ||||||
|  |         if(service==null) | ||||||
|  |             return NotFound("Service not found."); | ||||||
|  |          | ||||||
|  |         if(_dbContext.SellerServiceOrders.Where(x=>x.BuyerId==userId && x.Status!=EnumOrderStatus.Completed && x.Status!=EnumOrderStatus.Cancelled).Count()>=3) | ||||||
|  |             return BadRequest("You already have an order in progress. There is a limit of three at a time."); | ||||||
|  |          | ||||||
|  |         var order = new SellerServiceOrder() | ||||||
|  |         { | ||||||
|  |             BuyerId = userId, | ||||||
|  |             SellerId = seller.Id, | ||||||
|  |             SellerServiceId = serviceId, | ||||||
|  |             Status = EnumOrderStatus.PendingAcceptance, | ||||||
|  |             CreatedDate = DateTime.UtcNow, | ||||||
|  |             Price = service.Price, | ||||||
|  |             SellerService = service, | ||||||
|  |             Buyer = await _dbContext.Users.FirstOrDefaultAsync(x=>x.Id==userId), | ||||||
|  |         }; | ||||||
|  |         order = _dbContext.SellerServiceOrders.Add(order).Entity; | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         var result = order.ToModel(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpDelete] | ||||||
|  |     [Authorize("write:orders")] | ||||||
|  |     [Route("Orders/{orderId:int}")] | ||||||
|  |     public async Task<IActionResult> CancelOrder(int orderId) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var order = await _dbContext.SellerServiceOrders | ||||||
|  |             .Include(x=>x.SellerService) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==orderId && x.BuyerId==userId); | ||||||
|  |         if(order==null) | ||||||
|  |             return NotFound("Order not found."); | ||||||
|  |         if(order.BuyerId!=userId) | ||||||
|  |             return BadRequest("You are not the buyer of this order."); | ||||||
|  |         if(order.Status==EnumOrderStatus.Completed) | ||||||
|  |             return BadRequest("Order is not in a cancellable state."); | ||||||
|  |         order.Status = EnumOrderStatus.Cancelled; | ||||||
|  |         order.EndDate = DateTime.UtcNow; | ||||||
|  |         order = _dbContext.SellerServiceOrders.Update(order).Entity; | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         var result = order.ToModel(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpPut] | ||||||
|  |     [Authorize("write:orders")] | ||||||
|  |     [Route("Orders/{orderId:int}/AcceptPrice")] | ||||||
|  |     public async Task<IActionResult> AcceptPrice(int orderId) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var order = await _dbContext.SellerServiceOrders | ||||||
|  |             .Include(x=>x.SellerService) | ||||||
|  |             .Include(x=>x.Seller) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==orderId && x.BuyerId==userId); | ||||||
|  |         if(order==null) | ||||||
|  |             return NotFound("Order not found."); | ||||||
|  |         if(order.Seller.UserId!=userId) | ||||||
|  |             return BadRequest("You are not the seller of this order."); | ||||||
|  |         if(order.Status==EnumOrderStatus.Completed) | ||||||
|  |             return BadRequest("Order is already complete."); | ||||||
|  |         if(order.Status<EnumOrderStatus.DiscussingRequirements) | ||||||
|  |             return BadRequest("Order has not been started yet."); | ||||||
|  |         order.Status = EnumOrderStatus.InProgress; | ||||||
|  |         order.TermsAcceptedDate = DateTime.UtcNow; | ||||||
|  |         order = _dbContext.SellerServiceOrders.Update(order).Entity; | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         var result = order.ToModel(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpPut] | ||||||
|  |     [Authorize("write:orders")] | ||||||
|  |     [Route("Orders/{orderId:int}/Accept")] | ||||||
|  |     public async Task<IActionResult> Accept(int orderId) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var order = await _dbContext.SellerServiceOrders | ||||||
|  |             .Include(x=>x.Seller) | ||||||
|  |             .Include(x=>x.SellerService) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==orderId && x.BuyerId==userId); | ||||||
|  |         if(order==null) | ||||||
|  |             return NotFound("Order not found."); | ||||||
|  |         if(order.Seller.UserId!=userId) | ||||||
|  |             return BadRequest("You are not the seller of this order."); | ||||||
|  |         if(order.Status==EnumOrderStatus.Completed) | ||||||
|  |             return BadRequest("Order is already complete."); | ||||||
|  |         if(order.Status<EnumOrderStatus.InProgress) | ||||||
|  |             return BadRequest("Order has not been started yet."); | ||||||
|  |         if(order.Status<EnumOrderStatus.PendingReview) | ||||||
|  |             return BadRequest("Order is in progress and not pending review."); | ||||||
|  |         order.Status = EnumOrderStatus.Completed; | ||||||
|  |         order.TermsAcceptedDate = DateTime.UtcNow; | ||||||
|  |         order = _dbContext.SellerServiceOrders.Update(order).Entity; | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         var result = order.ToModel(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpDelete] | ||||||
|  |     [Authorize("write:orders")] | ||||||
|  |     [Route("Orders/{orderId:int}/Deny")] | ||||||
|  |     public async Task<IActionResult> Deny(int orderId) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var order = await _dbContext.SellerServiceOrders | ||||||
|  |             .Include(x=>x.Seller) | ||||||
|  |             .Include(x=>x.SellerService) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==orderId && x.BuyerId==userId); | ||||||
|  |         if(order==null) | ||||||
|  |             return NotFound("Order not found."); | ||||||
|  |         if(order.Seller.UserId!=userId) | ||||||
|  |             return BadRequest("You are not the seller of this order."); | ||||||
|  |         if(order.Status==EnumOrderStatus.Completed) | ||||||
|  |             return BadRequest("Order is already complete."); | ||||||
|  |         if(order.Status<EnumOrderStatus.InProgress) | ||||||
|  |             return BadRequest("Order has not been started yet."); | ||||||
|  |         if(order.Status<EnumOrderStatus.PendingReview) | ||||||
|  |             return BadRequest("Order is in progress and not pending review."); | ||||||
|  |         order.Status = EnumOrderStatus.InProgress; | ||||||
|  |         order.TermsAcceptedDate = DateTime.UtcNow; | ||||||
|  |         order = _dbContext.SellerServiceOrders.Update(order).Entity; | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         var result = order.ToModel(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpPost] | ||||||
|  |     [Authorize("write:orders")] | ||||||
|  |     [Route("Orders/{orderId:int}/Review")] | ||||||
|  |     public async Task<IActionResult> Review(int orderId, [FromBody] SellerServiceOrderReviewModel model) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var order = await _dbContext.SellerServiceOrders | ||||||
|  |             .Include(x=>x.Reviews) | ||||||
|  |             .Include(x=>x.Seller) | ||||||
|  |             .Include(x=>x.SellerService) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==orderId && x.BuyerId==userId); | ||||||
|  |         if(order==null) | ||||||
|  |             return NotFound("Order not found."); | ||||||
|  |         if(order.BuyerId!=userId) | ||||||
|  |             return BadRequest("You are not the buyer of this order."); | ||||||
|  |         if(order.Status!=EnumOrderStatus.Completed) | ||||||
|  |             return BadRequest("Order is not complete."); | ||||||
|  |         if(order.Reviews.Any(x=>x.SellerServiceOrderId==orderId)) | ||||||
|  |             return BadRequest("Order has already been reviewed."); | ||||||
|  |         var review = new SellerServiceOrderReview() | ||||||
|  |         { | ||||||
|  |             SellerServiceOrderId = orderId, | ||||||
|  |             SellerServiceId = order.SellerServiceId, | ||||||
|  |             Rating = model.Rating, | ||||||
|  |             Review = model.Review, | ||||||
|  |             ReviewDate = DateTime.UtcNow, | ||||||
|  |             ReviewerId = userId, | ||||||
|  |             Reviewer = await _dbContext.Users.FirstOrDefaultAsync(x=>x.Id==userId), | ||||||
|  |         }; | ||||||
|  |         await _dbContext.SellerServiceOrderReviews.AddAsync(review); | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         return Ok(); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpGet] | ||||||
|  |     [Authorize("read:orders")] | ||||||
|  |     [Route("Orders/{orderId:int}/Messages")] | ||||||
|  |     public async Task<IActionResult> GetMessages(int orderId, int offset = 0, int pageSize = 10) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var order = await _dbContext.SellerServiceOrders | ||||||
|  |             .Include(x=>x.Seller) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==orderId && x.BuyerId==userId); | ||||||
|  |         if(order==null) | ||||||
|  |             return NotFound("Order not found."); | ||||||
|  |         if(order.BuyerId!=userId && order.Seller.UserId!=userId) | ||||||
|  |             return BadRequest("You are not the buyer or seller of this order."); | ||||||
|  |         var messages = _dbContext.SellerServiceOrderMessages | ||||||
|  |             .Include(x=>x.Sender) | ||||||
|  |             .Include(x=>x.Attachments) | ||||||
|  |             .OrderBy(x=>x.SentAt) | ||||||
|  |             .Where(x=>x.SellerServiceOrderId==orderId) | ||||||
|  |             .Skip(offset).Take(pageSize).ToList(); | ||||||
|  |         var result = messages.Select(x=>x.ToModel()).ToList(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpPost] | ||||||
|  |     [Authorize("write:orders")] | ||||||
|  |     [Route("Orders/{orderId:int}/Message")] | ||||||
|  |     public async Task<IActionResult> Message(int orderId, [FromBody] SellerServiceOrderMessageModel model) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var order = await _dbContext.SellerServiceOrders | ||||||
|  |             .Include(x=>x.Messages) | ||||||
|  |             .Include(x=>x.Seller) | ||||||
|  |             .Include(x=>x.SellerService) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==orderId && x.BuyerId==userId); | ||||||
|  |         if(order==null) | ||||||
|  |             return NotFound("Order not found."); | ||||||
|  |         if(order.Status==EnumOrderStatus.Completed || order.Status==EnumOrderStatus.Cancelled) | ||||||
|  |             return BadRequest("Order is already complete."); | ||||||
|  |         if(order.BuyerId!=userId && order.Seller.UserId!=userId) | ||||||
|  |             return BadRequest("You are not the buyer or seller of this order."); | ||||||
|  |         if(order.Status<EnumOrderStatus.Waitlist) | ||||||
|  |             return BadRequest("Order is not accepted."); | ||||||
|  |         var message = new SellerServiceOrderMessage() | ||||||
|  |         { | ||||||
|  |             SellerServiceOrderId = orderId, | ||||||
|  |             Message = model.Message, | ||||||
|  |             SentAt = DateTime.UtcNow, | ||||||
|  |             SenderId = userId, | ||||||
|  |             Sender = await _dbContext.Users.FirstOrDefaultAsync(x=>x.Id==userId), | ||||||
|  |         }; | ||||||
|  |         var dbMessage = _dbContext.SellerServiceOrderMessages.Add(message).Entity; | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         return Ok(); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpPost] | ||||||
|  |     [Authorize("write:orders")] | ||||||
|  |     [Route("Orders/{orderId:int}/Message/{messageId:int}/Attachment")] | ||||||
|  |     public async Task<IActionResult> MessageAttachment(int orderId, int messageId,IFormFile file) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var order = await _dbContext.SellerServiceOrders | ||||||
|  |             .Include(x=>x.Messages) | ||||||
|  |             .Include(x=>x.Seller) | ||||||
|  |             .Include(x=>x.SellerService) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==orderId); | ||||||
|  |         if(order==null) | ||||||
|  |             return NotFound("Order not found."); | ||||||
|  |         if(order.BuyerId!=userId && order.Seller.UserId!=userId) | ||||||
|  |             return BadRequest("You are not the buyer or seller of this order."); | ||||||
|  |         if(order.Status==EnumOrderStatus.Completed || order.Status==EnumOrderStatus.Cancelled) | ||||||
|  |             return BadRequest("Order is already complete."); | ||||||
|  |         if(order.Status<EnumOrderStatus.Waitlist) | ||||||
|  |             return BadRequest("Order is not accepted."); | ||||||
|  |          | ||||||
|  |         var message = _dbContext.SellerServiceOrderMessages.First(x=>x.Id==messageId && x.SellerServiceOrderId==orderId); | ||||||
|  |         if(message==null) | ||||||
|  |             return BadRequest("Message does not exist or does not belong to this order."); | ||||||
|  |          | ||||||
|  |         var url = await _storage.UploadImageAsync(file, Guid.NewGuid().ToString()); | ||||||
|  |         var attachment = new SellerServiceOrderMessageAttachment() | ||||||
|  |         { | ||||||
|  |             SellerServiceOrderMessageId = message.Id, | ||||||
|  |             FileReference = url | ||||||
|  |         }; | ||||||
|  |         _dbContext.SellerServiceOrderMessageAttachments.Add(attachment); | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         return Ok(); | ||||||
|  |     } | ||||||
|  |     [HttpGet] | ||||||
|  |     [Authorize("read:orders")] | ||||||
|  |     [Route("Orders/{orderId:int}/Message/{messageId:int}/Attachment")] | ||||||
|  |     public async Task<IActionResult> MessageAttachments(int orderId, int messageId) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var order = await _dbContext.SellerServiceOrders | ||||||
|  |             .Include(x=>x.Messages) | ||||||
|  |             .Include(x=>x.Seller) | ||||||
|  |             .Include(x=>x.SellerService) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==orderId); | ||||||
|  |         if(order==null) | ||||||
|  |             return NotFound("Order not found."); | ||||||
|  |         if(order.BuyerId!=userId && order.Seller.UserId!=userId) | ||||||
|  |             return BadRequest("You are not the buyer or seller of this order."); | ||||||
|  |         if(order.Status==EnumOrderStatus.Completed || order.Status==EnumOrderStatus.Cancelled) | ||||||
|  |             return BadRequest("Order is already complete."); | ||||||
|  |         if(order.Status<EnumOrderStatus.Waitlist) | ||||||
|  |             return BadRequest("Order is not accepted."); | ||||||
|  |          | ||||||
|  |         var message = _dbContext.SellerServiceOrderMessages.Include(x=>x.Attachments) | ||||||
|  |             .First(x=>x.Id==messageId && x.SellerServiceOrderId==orderId); | ||||||
|  |         if(message==null) | ||||||
|  |             return BadRequest("Message does not exist or does not belong to this order."); | ||||||
|  |          | ||||||
|  |         var content = await _storage.DownloadImageAsync(message.Attachments.First().FileReference); | ||||||
|  |         return new FileStreamResult(content, "application/octet-stream"); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
							
								
								
									
										285
									
								
								src/ArtPlatform.API/Controllers/SellerOrderController.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										285
									
								
								src/ArtPlatform.API/Controllers/SellerOrderController.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,285 @@ | |||||||
|  | using ArtPlatform.API.Extensions; | ||||||
|  | using ArtPlatform.API.Models.Order; | ||||||
|  | using ArtPlatform.API.Services.Storage; | ||||||
|  | using ArtPlatform.Database; | ||||||
|  | using ArtPlatform.Database.Entities; | ||||||
|  | using ArtPlatform.Database.Enums; | ||||||
|  | using Microsoft.AspNetCore.Authorization; | ||||||
|  | using Microsoft.AspNetCore.Mvc; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.API.Controllers; | ||||||
|  | 
 | ||||||
|  | [ApiController] | ||||||
|  | [Route("api/[controller]")]
 | ||||||
|  | public class SellerOrderController : Controller | ||||||
|  | { | ||||||
|  |     private readonly ApplicationDbContext _dbContext; | ||||||
|  |     private readonly IStorage _storage; | ||||||
|  |      | ||||||
|  |     public SellerOrderController(IStorage storage, ApplicationDbContext dbContext) | ||||||
|  |     { | ||||||
|  |         _storage = storage; | ||||||
|  |         _dbContext = dbContext; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     [HttpGet] | ||||||
|  |     [Route("Orders")] | ||||||
|  |     [Authorize("read:seller-orders")] | ||||||
|  |     public async Task<IActionResult> GetOrders(int offset = 0, int pageSize = 10, EnumOrderStatus? status = null) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var orders = await _dbContext.SellerServiceOrders | ||||||
|  |             .Include(x=>x.Seller) | ||||||
|  |             .Where(x => x.Seller.UserId == userId && status==null ? true : status==x.Status) | ||||||
|  |             .Skip(offset).Take(pageSize).ToListAsync(); | ||||||
|  |         var result = orders.Select(x => x.ToModel()).ToList(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpDelete] | ||||||
|  |     [Authorize("write:seller-orders")] | ||||||
|  |     [Route("Orders/{orderId:int}/Cancel")] | ||||||
|  |     public async Task<IActionResult> CancelOrder(int orderId) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var order = await _dbContext.SellerServiceOrders | ||||||
|  |             .Include(x=>x.SellerService) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==orderId && x.Seller.UserId==userId); | ||||||
|  |         if(order==null) | ||||||
|  |             return NotFound("Order not found."); | ||||||
|  |         if(order.Status==EnumOrderStatus.Completed || order.Status== EnumOrderStatus.Cancelled) | ||||||
|  |             return BadRequest("Order is already complete."); | ||||||
|  |         if(order.BuyerId!=userId) | ||||||
|  |             return BadRequest("You are not the buyer of this order."); | ||||||
|  |         if(order.Status!=EnumOrderStatus.Completed && order.Status!= EnumOrderStatus.Cancelled) | ||||||
|  |             return BadRequest("Order is not in a cancellable state."); | ||||||
|  |         order.Status = EnumOrderStatus.Cancelled; | ||||||
|  |         order.EndDate = DateTime.UtcNow; | ||||||
|  |         order = _dbContext.SellerServiceOrders.Update(order).Entity; | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         var result = order.ToModel(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpPut] | ||||||
|  |     [Authorize("write:seller-orders")] | ||||||
|  |     [Route("Orders/{orderId:int}/Accept")] | ||||||
|  |     public async Task<IActionResult> AcceptOrder(int orderId) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var order = await _dbContext.SellerServiceOrders | ||||||
|  |             .Include(x=>x.SellerService) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==orderId && x.Seller.UserId==userId); | ||||||
|  |         if(order==null) | ||||||
|  |             return NotFound("Order not found."); | ||||||
|  |         if(order.Status==EnumOrderStatus.Completed || order.Status== EnumOrderStatus.Cancelled) | ||||||
|  |             return BadRequest("Order is already complete."); | ||||||
|  |         if(order.BuyerId!=userId) | ||||||
|  |             return BadRequest("You are not the buyer of this order."); | ||||||
|  |         if(order.Status!=EnumOrderStatus.PendingAcceptance) | ||||||
|  |             return BadRequest("Order has already been accepted."); | ||||||
|  |         order.Status = EnumOrderStatus.Waitlist; | ||||||
|  |         order = _dbContext.SellerServiceOrders.Update(order).Entity; | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         var result = order.ToModel(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpPut] | ||||||
|  |     [Authorize("write:seller-orders")] | ||||||
|  |     [Route("Orders/{orderId:int}/Start")] | ||||||
|  |     public async Task<IActionResult> StartOrder(int orderId) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var order = await _dbContext.SellerServiceOrders | ||||||
|  |             .Include(x=>x.SellerService) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==orderId && x.Seller.UserId==userId); | ||||||
|  |         if(order==null) | ||||||
|  |             return NotFound("Order not found."); | ||||||
|  |         if(order.Status==EnumOrderStatus.Completed || order.Status== EnumOrderStatus.Cancelled) | ||||||
|  |             return BadRequest("Order is already complete."); | ||||||
|  |         if(order.BuyerId!=userId) | ||||||
|  |             return BadRequest("You are not the buyer of this order."); | ||||||
|  |         if(order.Status!=EnumOrderStatus.Waitlist) | ||||||
|  |             return BadRequest("Order has already been started."); | ||||||
|  |         order.Status = EnumOrderStatus.DiscussingRequirements; | ||||||
|  |         order = _dbContext.SellerServiceOrders.Update(order).Entity; | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         var result = order.ToModel(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpPut] | ||||||
|  |     [Authorize("write:seller-orders")] | ||||||
|  |     [Route("Orders/{orderId:int}/AdjustPrice")] | ||||||
|  |     public async Task<IActionResult> AdjustPrice(int orderId,[FromQuery]double price) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var order = await _dbContext.SellerServiceOrders | ||||||
|  |             .Include(x=>x.Seller) | ||||||
|  |             .Include(x=>x.SellerService) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==orderId && x.Seller.UserId==userId); | ||||||
|  |         if(order==null) | ||||||
|  |             return NotFound("Order not found."); | ||||||
|  |         if(order.Seller.UserId!=userId) | ||||||
|  |             return BadRequest("You are not the seller of this order."); | ||||||
|  |         if(order.Status==EnumOrderStatus.Completed || order.Status== EnumOrderStatus.Cancelled) | ||||||
|  |             return BadRequest("Order is already complete."); | ||||||
|  |         if(order.Status>EnumOrderStatus.DiscussingRequirements) | ||||||
|  |             return BadRequest("Order requirements and price have already been confirmed."); | ||||||
|  |         if(order.Status<EnumOrderStatus.DiscussingRequirements) | ||||||
|  |             return BadRequest("Order has not been started."); | ||||||
|  |         order.Price = price; | ||||||
|  |         order = _dbContext.SellerServiceOrders.Update(order).Entity; | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         var result = order.ToModel(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpPut] | ||||||
|  |     [Authorize("write:seller-orders")] | ||||||
|  |     [Route("Orders/{orderId:int}/CompleteRevision")] | ||||||
|  |     public async Task<IActionResult> CompleteRevision(int orderId) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var order = await _dbContext.SellerServiceOrders | ||||||
|  |             .Include(x=>x.Seller) | ||||||
|  |             .Include(x=>x.SellerService) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==orderId && x.Seller.UserId==userId); | ||||||
|  |         if(order==null) | ||||||
|  |             return NotFound("Order not found."); | ||||||
|  |         if(order.Seller.UserId!=userId) | ||||||
|  |             return BadRequest("You are not the seller of this order."); | ||||||
|  |         if(order.Status==EnumOrderStatus.Completed || order.Status== EnumOrderStatus.Cancelled) | ||||||
|  |             return BadRequest("Order is already complete."); | ||||||
|  |         if(order.Status<EnumOrderStatus.InProgress) | ||||||
|  |             return BadRequest("Order has not been started."); | ||||||
|  |         if(order.Status>EnumOrderStatus.InProgress) | ||||||
|  |             return BadRequest("Order is pending review already."); | ||||||
|  |         order.Status = EnumOrderStatus.PendingReview; | ||||||
|  |         order = _dbContext.SellerServiceOrders.Update(order).Entity; | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         var result = order.ToModel(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpGet] | ||||||
|  |     [Authorize("read:orders")] | ||||||
|  |     [Route("Orders/{orderId:int}/Messages")] | ||||||
|  |     public async Task<IActionResult> GetMessages(int orderId, int offset = 0, int pageSize = 10) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var order = await _dbContext.SellerServiceOrders | ||||||
|  |             .Include(x=>x.Seller) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==orderId && x.Seller.UserId==userId); | ||||||
|  |         if(order==null) | ||||||
|  |             return NotFound("Order not found."); | ||||||
|  |         if(order.BuyerId!=userId && order.Seller.UserId!=userId) | ||||||
|  |             return BadRequest("You are not the buyer or seller of this order."); | ||||||
|  |         var messages = _dbContext.SellerServiceOrderMessages | ||||||
|  |             .Include(x=>x.Sender) | ||||||
|  |             .Include(x=>x.Attachments) | ||||||
|  |             .OrderBy(x=>x.SentAt) | ||||||
|  |             .Where(x=>x.SellerServiceOrderId==orderId) | ||||||
|  |             .Skip(offset).Take(pageSize).ToList(); | ||||||
|  |         var result = messages.Select(x=>x.ToModel()).ToList(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |     [HttpPost] | ||||||
|  |     [Authorize("write:orders")] | ||||||
|  |     [Route("Orders/{orderId:int}/Message")] | ||||||
|  |     public async Task<IActionResult> Message(int orderId, [FromBody] SellerServiceOrderMessageModel model) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var order = await _dbContext.SellerServiceOrders | ||||||
|  |             .Include(x=>x.Messages) | ||||||
|  |             .Include(x=>x.Seller) | ||||||
|  |             .Include(x=>x.SellerService) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==orderId && x.Seller.UserId==userId); | ||||||
|  |         if(order==null) | ||||||
|  |             return NotFound("Order not found."); | ||||||
|  |         if(order.Status==EnumOrderStatus.Completed || order.Status==EnumOrderStatus.Cancelled) | ||||||
|  |             return BadRequest("Order is already complete."); | ||||||
|  |         if(order.BuyerId!=userId && order.Seller.UserId!=userId) | ||||||
|  |             return BadRequest("You are not the buyer or seller of this order."); | ||||||
|  |         if(order.Status<EnumOrderStatus.Waitlist) | ||||||
|  |             return BadRequest("Order is not accepted."); | ||||||
|  |         var message = new SellerServiceOrderMessage() | ||||||
|  |         { | ||||||
|  |             SellerServiceOrderId = orderId, | ||||||
|  |             Message = model.Message, | ||||||
|  |             SentAt = DateTime.UtcNow, | ||||||
|  |             SenderId = userId, | ||||||
|  |             Sender = await _dbContext.Users.FirstOrDefaultAsync(x=>x.Id==userId), | ||||||
|  |         }; | ||||||
|  |         var dbMessage = _dbContext.SellerServiceOrderMessages.Add(message).Entity; | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         return Ok(); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpPost] | ||||||
|  |     [Authorize("write:orders")] | ||||||
|  |     [Route("Orders/{orderId:int}/Message/{messageId:int}/Attachment")] | ||||||
|  |     public async Task<IActionResult> MessageAttachment(int orderId, int messageId,IFormFile file) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var order = await _dbContext.SellerServiceOrders | ||||||
|  |             .Include(x=>x.Messages) | ||||||
|  |             .Include(x=>x.Seller) | ||||||
|  |             .Include(x=>x.SellerService) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==orderId && x.Seller.UserId==userId); | ||||||
|  |         if(order==null) | ||||||
|  |             return NotFound("Order not found."); | ||||||
|  |         if(order.BuyerId!=userId && order.Seller.UserId!=userId) | ||||||
|  |             return BadRequest("You are not the buyer or seller of this order."); | ||||||
|  |         if(order.Status==EnumOrderStatus.Completed || order.Status==EnumOrderStatus.Cancelled) | ||||||
|  |             return BadRequest("Order is already complete."); | ||||||
|  |         if(order.Status<EnumOrderStatus.Waitlist) | ||||||
|  |             return BadRequest("Order is not accepted."); | ||||||
|  |          | ||||||
|  |         var message = _dbContext.SellerServiceOrderMessages.First(x=>x.Id==messageId && x.SellerServiceOrderId==orderId); | ||||||
|  |         if(message==null) | ||||||
|  |             return BadRequest("Message does not exist or does not belong to this order."); | ||||||
|  |          | ||||||
|  |         var url = await _storage.UploadImageAsync(file, Guid.NewGuid().ToString()); | ||||||
|  |         var attachment = new SellerServiceOrderMessageAttachment() | ||||||
|  |         { | ||||||
|  |             SellerServiceOrderMessageId = message.Id, | ||||||
|  |             FileReference = url | ||||||
|  |         }; | ||||||
|  |         _dbContext.SellerServiceOrderMessageAttachments.Add(attachment); | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         return Ok(); | ||||||
|  |     } | ||||||
|  |     [HttpGet] | ||||||
|  |     [Authorize("read:orders")] | ||||||
|  |     [Route("Orders/{orderId:int}/Message/{messageId:int}/Attachment")] | ||||||
|  |     public async Task<IActionResult> MessageAttachments(int orderId, int messageId) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var order = await _dbContext.SellerServiceOrders | ||||||
|  |             .Include(x=>x.Messages) | ||||||
|  |             .Include(x=>x.Seller) | ||||||
|  |             .Include(x=>x.SellerService) | ||||||
|  |             .FirstOrDefaultAsync(x=>x.Id==orderId); | ||||||
|  |         if(order==null) | ||||||
|  |             return NotFound("Order not found."); | ||||||
|  |         if(order.BuyerId!=userId && order.Seller.UserId!=userId) | ||||||
|  |             return BadRequest("You are not the buyer or seller of this order."); | ||||||
|  |         if(order.Status==EnumOrderStatus.Completed || order.Status==EnumOrderStatus.Cancelled) | ||||||
|  |             return BadRequest("Order is already complete."); | ||||||
|  |         if(order.Status<EnumOrderStatus.Waitlist) | ||||||
|  |             return BadRequest("Order is not accepted."); | ||||||
|  |          | ||||||
|  |         var message = _dbContext.SellerServiceOrderMessages.Include(x=>x.Attachments) | ||||||
|  |             .First(x=>x.Id==messageId && x.SellerServiceOrderId==orderId); | ||||||
|  |         if(message==null) | ||||||
|  |             return BadRequest("Message does not exist or does not belong to this order."); | ||||||
|  |         var attachment = message.Attachments.FirstOrDefault(); | ||||||
|  |         if(attachment==null) | ||||||
|  |             return BadRequest("Message does not have an attachment."); | ||||||
|  |         var content = await _storage.DownloadImageAsync(message.Attachments.First().FileReference); | ||||||
|  |         return new FileStreamResult(content, "application/octet-stream"); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										181
									
								
								src/ArtPlatform.API/Controllers/SellerProfileController.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										181
									
								
								src/ArtPlatform.API/Controllers/SellerProfileController.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,181 @@ | |||||||
|  | using ArtPlatform.API.Extensions; | ||||||
|  | using ArtPlatform.API.Models.PortfolioModel; | ||||||
|  | using ArtPlatform.API.Models.SellerProfile; | ||||||
|  | using ArtPlatform.API.Services.Storage; | ||||||
|  | using ArtPlatform.Database; | ||||||
|  | using ArtPlatform.Database.Entities; | ||||||
|  | using Microsoft.AspNetCore.Authorization; | ||||||
|  | using Microsoft.AspNetCore.Mvc; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.API.Controllers; | ||||||
|  | 
 | ||||||
|  | [ApiController] | ||||||
|  | [Route("api/[controller]")]
 | ||||||
|  | public class SellerProfileController : Controller | ||||||
|  | { | ||||||
|  |     private readonly ApplicationDbContext _dbContext; | ||||||
|  |     private readonly IStorage _storage; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     public SellerProfileController(ApplicationDbContext dbContext, IStorage storage) | ||||||
|  |     { | ||||||
|  |         _storage = storage; | ||||||
|  |         _dbContext = dbContext; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpGet] | ||||||
|  |     [Authorize("read:seller-profile")] | ||||||
|  |     public async Task<IActionResult> GetSellerProfile() | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var sellerProfile = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId); | ||||||
|  |         if(sellerProfile==null) | ||||||
|  |         { | ||||||
|  |             var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false); | ||||||
|  |             if(sellerProfileRequest!=null) | ||||||
|  |                 return BadRequest("Account has requested to be a seller and not been approved yet."); | ||||||
|  |             return Unauthorized("Account is not a seller."); | ||||||
|  |         } | ||||||
|  |         var result = sellerProfile.ToModel(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpPut] | ||||||
|  |     [Authorize("write:seller-profile")] | ||||||
|  |     public async Task<IActionResult> UpdateSellerProfile(SellerProfileModel model) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var existingSellerProfile = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId); | ||||||
|  |         if (existingSellerProfile == null) | ||||||
|  |         { | ||||||
|  |             var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false); | ||||||
|  |             if(sellerProfileRequest!=null) | ||||||
|  |                 return BadRequest("Account has requested to be a seller and not been approved yet."); | ||||||
|  |             return Unauthorized("Account is not a seller."); | ||||||
|  |         } | ||||||
|  |         var updatedSellerProfile = model.ToModel(existingSellerProfile); | ||||||
|  |         updatedSellerProfile = _dbContext.UserSellerProfiles.Update(updatedSellerProfile).Entity; | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         var result = updatedSellerProfile.ToModel(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpPost] | ||||||
|  |     [Authorize("write:seller-profile")] | ||||||
|  |     public async Task<IActionResult> RequestSellerProfile(SellerProfileModel model) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |          | ||||||
|  |         var existingSellerProfile = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId); | ||||||
|  |         if (existingSellerProfile != null) | ||||||
|  |         { | ||||||
|  |             return Unauthorized("Account is already a seller."); | ||||||
|  |         } | ||||||
|  |          | ||||||
|  |         var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId); | ||||||
|  |         if(sellerProfileRequest!=null) | ||||||
|  |             return BadRequest("Account has already requested to be a seller."); | ||||||
|  |          | ||||||
|  |         sellerProfileRequest = new SellerProfileRequest() | ||||||
|  |         { | ||||||
|  |             Accepted = false, | ||||||
|  |             RequestDate = DateTime.UtcNow, | ||||||
|  |             UserId = userId | ||||||
|  |         }; | ||||||
|  |         _dbContext.SellerProfileRequests.Add(sellerProfileRequest); | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         return Ok(); | ||||||
|  |     } | ||||||
|  |     [HttpGet] | ||||||
|  |     [Authorize("read:seller-profile")] | ||||||
|  |     [Route("{sellerServiceId:int}/Portfolio/{portfolioId:int}")] | ||||||
|  |     public async Task<IActionResult> GetPortfolio(int sellerServiceId, int portfolioId) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var existingSellerProfile = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId); | ||||||
|  |         if (existingSellerProfile == null) | ||||||
|  |         { | ||||||
|  |             var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false); | ||||||
|  |             if(sellerProfileRequest!=null) | ||||||
|  |                 return BadRequest("Account has requested to be a seller and not been approved yet."); | ||||||
|  |             return Unauthorized("Account is not a seller."); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         var portfolio = await _dbContext.SellerProfilePortfolioPieces | ||||||
|  |             .FirstAsync(x => x.SellerProfileId == existingSellerProfile.Id && x.Id==portfolioId); | ||||||
|  |         var content = await _storage.DownloadImageAsync(portfolio.FileReference); | ||||||
|  |         return new FileStreamResult(content, "application/octet-stream"); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     [HttpGet] | ||||||
|  |     [Route("Portfolio")] | ||||||
|  |     [Authorize("read:seller-profile")] | ||||||
|  |     public async Task<IActionResult> GetPortfolio() | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var existingSellerProfile = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId); | ||||||
|  |         if (existingSellerProfile == null) | ||||||
|  |         { | ||||||
|  |             var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false); | ||||||
|  |             if(sellerProfileRequest!=null) | ||||||
|  |                 return BadRequest("Account has requested to be a seller and not been approved yet."); | ||||||
|  |             return Unauthorized("Account is not a seller."); | ||||||
|  |         } | ||||||
|  |         var portfolio = await _dbContext.SellerProfilePortfolioPieces.Where(x=>x.SellerProfileId==existingSellerProfile.Id).ToListAsync(); | ||||||
|  |         var result = portfolio.Select(x=>x.ToModel()).ToList(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpPost] | ||||||
|  |     [Route("Portfolio")] | ||||||
|  |     [Authorize("write:seller-profile")] | ||||||
|  |     public async Task<IActionResult> AddPortfolio(IFormFile file) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var existingSellerProfile = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId); | ||||||
|  |         if (existingSellerProfile == null) | ||||||
|  |         { | ||||||
|  |             var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false); | ||||||
|  |             if(sellerProfileRequest!=null) | ||||||
|  |                 return BadRequest("Account has requested to be a seller and not been approved yet."); | ||||||
|  |             return Unauthorized("Account is not a seller."); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         var url = await _storage.UploadImageAsync(file, Guid.NewGuid().ToString()); | ||||||
|  |         var portfolio = new SellerProfilePortfolioPiece() | ||||||
|  |         { | ||||||
|  |             SellerProfileId = existingSellerProfile.Id, | ||||||
|  |             FileReference = url | ||||||
|  |         }; | ||||||
|  |         portfolio.SellerProfileId = existingSellerProfile.Id; | ||||||
|  |         _dbContext.SellerProfilePortfolioPieces.Add(portfolio); | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         var result = portfolio.ToModel(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpDelete] | ||||||
|  |     [Authorize("write:seller-profile")] | ||||||
|  |     [Route("Portfolio/{portfolioId:int}")] | ||||||
|  |     public async Task<IActionResult> DeletePortfolio(int portfolioId) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var existingSellerProfile = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId); | ||||||
|  |         if (existingSellerProfile == null) | ||||||
|  |         { | ||||||
|  |             var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false); | ||||||
|  |             if(sellerProfileRequest!=null) | ||||||
|  |                 return BadRequest("Account has requested to be a seller and not been approved yet."); | ||||||
|  |             return Unauthorized("Account is not a seller."); | ||||||
|  |         } | ||||||
|  |         var portfolio = await _dbContext.SellerProfilePortfolioPieces.FirstOrDefaultAsync(x=>x.Id==portfolioId); | ||||||
|  |         if(portfolio==null) | ||||||
|  |             return NotFound("Portfolio piece not found."); | ||||||
|  |         if(portfolio.SellerProfileId!=existingSellerProfile.Id) | ||||||
|  |             return BadRequest("Portfolio piece does not belong to this seller."); | ||||||
|  |         _dbContext.SellerProfilePortfolioPieces.Remove(portfolio); | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         return Ok(); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										222
									
								
								src/ArtPlatform.API/Controllers/SellerServiceController.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										222
									
								
								src/ArtPlatform.API/Controllers/SellerServiceController.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,222 @@ | |||||||
|  | using ArtPlatform.API.Extensions; | ||||||
|  | using ArtPlatform.API.Models.PortfolioModel; | ||||||
|  | using ArtPlatform.API.Models.SellerService; | ||||||
|  | using ArtPlatform.API.Services.Storage; | ||||||
|  | using ArtPlatform.Database; | ||||||
|  | using ArtPlatform.Database.Entities; | ||||||
|  | using Microsoft.AspNetCore.Authorization; | ||||||
|  | using Microsoft.AspNetCore.Mvc; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.API.Controllers; | ||||||
|  | 
 | ||||||
|  | [ApiController] | ||||||
|  | [Route("api/[controller]")]
 | ||||||
|  | public class SellerServiceController : Controller | ||||||
|  | { | ||||||
|  |     private readonly ApplicationDbContext _dbContext; | ||||||
|  |     private readonly IStorage _storage; | ||||||
|  | 
 | ||||||
|  |     public SellerServiceController(ApplicationDbContext dbContext, IStorage storage) | ||||||
|  |     { | ||||||
|  |         _storage = storage; | ||||||
|  |         _dbContext = dbContext; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpGet] | ||||||
|  |     [Authorize("read:seller-service")] | ||||||
|  |     public async Task<IActionResult> GetSellerServices(int offset=0, int pageSize=10) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var seller = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId); | ||||||
|  |          | ||||||
|  |         if(seller==null) | ||||||
|  |             return BadRequest("Account is not a seller."); | ||||||
|  | 
 | ||||||
|  |         var sellerServices = await _dbContext.SellerServices.Include(x=>x.Reviews) | ||||||
|  |             .Skip(offset).Take(pageSize).ToListAsync(); | ||||||
|  |         var result = sellerServices.Select(x=>x.ToModel()).ToList(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpGet] | ||||||
|  |     [Route("Count")] | ||||||
|  |     [Authorize("read:seller-service")] | ||||||
|  |     public async Task<IActionResult> GetSellerServicesCount() | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var seller = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId); | ||||||
|  |          | ||||||
|  |         if(seller==null) | ||||||
|  |             return BadRequest("Account is not a seller."); | ||||||
|  | 
 | ||||||
|  |         var sellerServices = await _dbContext.SellerServices.Include(x => x.Reviews).ToListAsync(); | ||||||
|  |         var result = sellerServices.Count; | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpPost] | ||||||
|  |     [Authorize("write:seller-service")] | ||||||
|  |     public async Task<IActionResult> CreateSellerService([FromBody] SellerServiceCreateModel model) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var seller = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId); | ||||||
|  |          | ||||||
|  |         if(seller==null) | ||||||
|  |             return BadRequest("Account is not a seller."); | ||||||
|  | 
 | ||||||
|  |         var sellerService = new Database.Entities.SellerService() | ||||||
|  |         { | ||||||
|  |             Name = model.Name, | ||||||
|  |             Description = model.Description, | ||||||
|  |             Price = model.Price, | ||||||
|  |             SellerProfileId = seller.Id | ||||||
|  |         }; | ||||||
|  |         sellerService = _dbContext.SellerServices.Add(sellerService).Entity; | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         var result = sellerService.ToModel(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpPut] | ||||||
|  |     [Authorize("write:seller-service")] | ||||||
|  |     [Route("{sellerServiceId:int}")] | ||||||
|  |     public async Task<IActionResult> UpdateSellerService([FromBody] SellerServiceUpdateModel model, int sellerServiceId) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var seller = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId); | ||||||
|  |          | ||||||
|  |         if(seller==null) | ||||||
|  |             return BadRequest("Account is not a seller."); | ||||||
|  | 
 | ||||||
|  |         var sellerService = await _dbContext.SellerServices.FirstOrDefaultAsync(sellerService=>sellerService.Id==sellerServiceId); | ||||||
|  |          | ||||||
|  |         if(sellerService==null) | ||||||
|  |             return NotFound("Seller service not found."); | ||||||
|  | 
 | ||||||
|  |         sellerService.Name = model.Name; | ||||||
|  |         sellerService.Description = model.Description; | ||||||
|  |         sellerService.Price = model.Price; | ||||||
|  |          | ||||||
|  |         sellerService = _dbContext.SellerServices.Update(sellerService).Entity; | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         var result = sellerService.ToModel(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpDelete] | ||||||
|  |     [Authorize("write:seller-service")] | ||||||
|  |     [Route("{sellerServiceId:int}")] | ||||||
|  |     public async Task<IActionResult> DeleteSellerService(int sellerServiceId) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var seller = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId); | ||||||
|  |          | ||||||
|  |         if(seller==null) | ||||||
|  |             return BadRequest("Account is not a seller."); | ||||||
|  | 
 | ||||||
|  |         var sellerService = await _dbContext.SellerServices.FirstOrDefaultAsync(sellerService=>sellerService.Id==sellerServiceId); | ||||||
|  |          | ||||||
|  |         if(sellerService==null) | ||||||
|  |             return NotFound("Seller service not found."); | ||||||
|  | 
 | ||||||
|  |         _dbContext.SellerServices.Remove(sellerService); | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         return Ok(); | ||||||
|  |     }    | ||||||
|  |      | ||||||
|  |     [HttpGet] | ||||||
|  |     [Route("{sellerServiceId:int}/Portfolio/")] | ||||||
|  |     public async Task<IActionResult> GetPortfolio(int sellerServiceId) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var existingSellerProfile = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId); | ||||||
|  |         if (existingSellerProfile == null) | ||||||
|  |         { | ||||||
|  |             var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false); | ||||||
|  |             if(sellerProfileRequest!=null) | ||||||
|  |                 return BadRequest("Account has requested to be a seller and not been approved yet."); | ||||||
|  |             return Unauthorized("Account is not a seller."); | ||||||
|  |         } | ||||||
|  |         var portfolio = await _dbContext.SellerProfilePortfolioPieces.Where(x=>x.SellerProfileId==existingSellerProfile.Id && x.SellerServiceId==sellerServiceId).ToListAsync(); | ||||||
|  |         var result = portfolio.Select(x=>x.ToModel()).ToList(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |      | ||||||
|  |     [HttpGet] | ||||||
|  |     [Authorize("read:seller-service")] | ||||||
|  |     [Route("{sellerServiceId:int}/Portfolio/{portfolioId:int}")] | ||||||
|  |     public async Task<IActionResult> GetPortfolio(int sellerServiceId, int portfolioId) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var existingSellerProfile = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId); | ||||||
|  |         if (existingSellerProfile == null) | ||||||
|  |         { | ||||||
|  |             var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false); | ||||||
|  |             if(sellerProfileRequest!=null) | ||||||
|  |                 return BadRequest("Account has requested to be a seller and not been approved yet."); | ||||||
|  |             return Unauthorized("Account is not a seller."); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         var portfolio = await _dbContext.SellerProfilePortfolioPieces | ||||||
|  |             .FirstAsync(x => x.SellerProfileId == existingSellerProfile.Id | ||||||
|  |                              && x.SellerServiceId == sellerServiceId && x.Id==portfolioId); | ||||||
|  |         var content = await _storage.DownloadImageAsync(portfolio.FileReference); | ||||||
|  |         return new FileStreamResult(content, "application/octet-stream"); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpPost] | ||||||
|  |     [Authorize("write:seller-service")] | ||||||
|  |     [Route("{sellerServiceId:int}/Portfolio")] | ||||||
|  |     public async Task<IActionResult> AddPortfolio(IFormFile file, int sellerServiceId) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var existingSellerProfile = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId); | ||||||
|  |         if (existingSellerProfile == null) | ||||||
|  |         { | ||||||
|  |             var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false); | ||||||
|  |             if(sellerProfileRequest!=null) | ||||||
|  |                 return BadRequest("Account has requested to be a seller and not been approved yet."); | ||||||
|  |             return Unauthorized("Account is not a seller."); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         var url = await _storage.UploadImageAsync(file, Guid.NewGuid().ToString()); | ||||||
|  |         var portfolio = new SellerProfilePortfolioPiece() | ||||||
|  |         { | ||||||
|  |             SellerProfileId = existingSellerProfile.Id, | ||||||
|  |             FileReference = url, | ||||||
|  |             SellerServiceId = sellerServiceId | ||||||
|  |         }; | ||||||
|  |         portfolio.SellerProfileId = existingSellerProfile.Id; | ||||||
|  |         _dbContext.SellerProfilePortfolioPieces.Add(portfolio); | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         var result = portfolio.ToModel(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [HttpDelete] | ||||||
|  |     [Authorize("write:seller-service")] | ||||||
|  |     [Route("{sellerServiceId:int}/Portfolio/{portfolioId:int}")] | ||||||
|  |     public async Task<IActionResult> DeletePortfolio(int portfolioId) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var existingSellerProfile = await _dbContext.UserSellerProfiles.FirstOrDefaultAsync(sellerProfile=>sellerProfile.UserId==userId); | ||||||
|  |         if (existingSellerProfile == null) | ||||||
|  |         { | ||||||
|  |             var sellerProfileRequest = await _dbContext.SellerProfileRequests.FirstOrDefaultAsync(request=>request.UserId==userId && request.Accepted==false); | ||||||
|  |             if(sellerProfileRequest!=null) | ||||||
|  |                 return BadRequest("Account has requested to be a seller and not been approved yet."); | ||||||
|  |             return Unauthorized("Account is not a seller."); | ||||||
|  |         } | ||||||
|  |         var portfolio = await _dbContext.SellerProfilePortfolioPieces.FirstOrDefaultAsync(x=>x.Id==portfolioId); | ||||||
|  |         if(portfolio==null) | ||||||
|  |             return NotFound("Portfolio piece not found."); | ||||||
|  |         if(portfolio.SellerProfileId!=existingSellerProfile.Id) | ||||||
|  |             return BadRequest("Portfolio piece does not belong to this seller."); | ||||||
|  |         _dbContext.SellerProfilePortfolioPieces.Remove(portfolio); | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         return Ok(); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
							
								
								
									
										44
									
								
								src/ArtPlatform.API/Controllers/UserController.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								src/ArtPlatform.API/Controllers/UserController.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,44 @@ | |||||||
|  | using System.Security.Claims; | ||||||
|  | using ArtPlatform.API.Extensions; | ||||||
|  | using ArtPlatform.API.Models.User; | ||||||
|  | using ArtPlatform.Database; | ||||||
|  | using Microsoft.AspNetCore.Authorization; | ||||||
|  | using Microsoft.AspNetCore.Mvc; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.API.Controllers; | ||||||
|  | 
 | ||||||
|  | [ApiController] | ||||||
|  | [Route("api/[controller]")]
 | ||||||
|  | public class UserController : Controller | ||||||
|  | { | ||||||
|  |     private readonly ApplicationDbContext _dbContext; | ||||||
|  | 
 | ||||||
|  |     public UserController(ApplicationDbContext dbContext) | ||||||
|  |     { | ||||||
|  |         _dbContext = dbContext; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [Authorize("read:user")] | ||||||
|  |     [HttpGet] | ||||||
|  |     public async Task<IActionResult> GetUser() | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var user = await _dbContext.Users.FirstAsync(user=>user.Id==userId); | ||||||
|  |         var result = user.ToModel(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     [Authorize("write:user")] | ||||||
|  |     [HttpPut] | ||||||
|  |     public async Task<IActionResult> UpdateUser(UserInfoUpdateModel model) | ||||||
|  |     { | ||||||
|  |         var userId = User.GetUserId(); | ||||||
|  |         var existingUser = await _dbContext.Users.FirstAsync(user=>user.Id==userId); | ||||||
|  |         var updatedUser = model.ToEntity(existingUser); | ||||||
|  |         updatedUser = _dbContext.Users.Update(updatedUser).Entity; | ||||||
|  |         await _dbContext.SaveChangesAsync(); | ||||||
|  |         var result = updatedUser.ToModel(); | ||||||
|  |         return Ok(result); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										23
									
								
								src/ArtPlatform.API/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								src/ArtPlatform.API/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,23 @@ | |||||||
|  | FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base | ||||||
|  | USER $APP_UID | ||||||
|  | WORKDIR /app | ||||||
|  | EXPOSE 8080 | ||||||
|  | EXPOSE 8081 | ||||||
|  | 
 | ||||||
|  | FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build | ||||||
|  | ARG BUILD_CONFIGURATION=Release | ||||||
|  | WORKDIR /src | ||||||
|  | COPY ["ArtPlatform.API/ArtPlatform.API.csproj", "ArtPlatform.API/"] | ||||||
|  | RUN dotnet restore "ArtPlatform.API/ArtPlatform.API.csproj" | ||||||
|  | COPY . . | ||||||
|  | WORKDIR "/src/ArtPlatform.API" | ||||||
|  | RUN dotnet build "ArtPlatform.API.csproj" -c $BUILD_CONFIGURATION -o /app/build | ||||||
|  | 
 | ||||||
|  | FROM build AS publish | ||||||
|  | ARG BUILD_CONFIGURATION=Release | ||||||
|  | RUN dotnet publish "ArtPlatform.API.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false | ||||||
|  | 
 | ||||||
|  | FROM base AS final | ||||||
|  | WORKDIR /app | ||||||
|  | COPY --from=publish /app/publish . | ||||||
|  | ENTRYPOINT ["dotnet", "ArtPlatform.API.dll"] | ||||||
							
								
								
									
										11
									
								
								src/ArtPlatform.API/Extensions/UserExtension.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/ArtPlatform.API/Extensions/UserExtension.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,11 @@ | |||||||
|  | using System.Security.Claims; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.API.Extensions; | ||||||
|  | 
 | ||||||
|  | public static class UserExtension | ||||||
|  | { | ||||||
|  |     public static string GetUserId(this ClaimsPrincipal user) | ||||||
|  |     { | ||||||
|  |         return user.Claims.First(claim => claim.Type == ClaimTypes.NameIdentifier).Value; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,22 @@ | |||||||
|  | using Microsoft.AspNetCore.Authorization; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.API.Middleware.Authentication; | ||||||
|  | 
 | ||||||
|  | public class HasScopeHandler : AuthorizationHandler<HasScopeRequirement> | ||||||
|  | { | ||||||
|  |     protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, HasScopeRequirement requirement) | ||||||
|  |     { | ||||||
|  |         // If user does not have the scope claim, get out of here | ||||||
|  |         if (!context.User.HasClaim(c => c.Type == "scope" && c.Issuer == requirement.Issuer)) | ||||||
|  |             return Task.CompletedTask; | ||||||
|  | 
 | ||||||
|  |         // Split the scopes string into an array | ||||||
|  |         var scopes = context.User.FindFirst(c => c.Type == "scope" && c.Issuer == requirement.Issuer).Value.Split(' '); | ||||||
|  | 
 | ||||||
|  |         // Succeed if the scope array contains the required scope | ||||||
|  |         if (scopes.Any(s => s == requirement.Scope)) | ||||||
|  |             context.Succeed(requirement); | ||||||
|  | 
 | ||||||
|  |         return Task.CompletedTask; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,15 @@ | |||||||
|  | using Microsoft.AspNetCore.Authorization; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.API.Middleware.Authentication; | ||||||
|  | 
 | ||||||
|  | public class HasScopeRequirement : IAuthorizationRequirement | ||||||
|  | { | ||||||
|  |     public string Issuer { get; } | ||||||
|  |     public string Scope { get; } | ||||||
|  | 
 | ||||||
|  |     public HasScopeRequirement(string scope, string issuer) | ||||||
|  |     { | ||||||
|  |         Scope = scope ?? throw new ArgumentNullException(nameof(scope)); | ||||||
|  |         Issuer = issuer ?? throw new ArgumentNullException(nameof(issuer)); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										49
									
								
								src/ArtPlatform.API/Middleware/UserMiddleware.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								src/ArtPlatform.API/Middleware/UserMiddleware.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,49 @@ | |||||||
|  | using System.Security.Claims; | ||||||
|  | using ArtPlatform.Database; | ||||||
|  | using ArtPlatform.Database.Entities; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.API.Middleware; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | public class UserMiddleware | ||||||
|  | { | ||||||
|  |     private readonly RequestDelegate _next; | ||||||
|  | 
 | ||||||
|  |     public UserMiddleware(RequestDelegate next) | ||||||
|  |     { | ||||||
|  |         _next = next; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public async Task InvokeAsync(HttpContext context, ApplicationDbContext dbContext) | ||||||
|  |     { | ||||||
|  |         if (context.User.Identity.IsAuthenticated) | ||||||
|  |         { | ||||||
|  |             var userId = context.User.Claims.First(c => c.Type == ClaimTypes.NameIdentifier).Value; | ||||||
|  | 
 | ||||||
|  |             var user = await dbContext.Users.FindAsync(userId); | ||||||
|  | 
 | ||||||
|  |             if (user == null) | ||||||
|  |             { | ||||||
|  |                 user = new User | ||||||
|  |                 { | ||||||
|  |                     Id = userId,  | ||||||
|  |                     DisplayName = context.User.Identity.Name ?? "Anonymous",  | ||||||
|  |                     Biography = string.Empty, | ||||||
|  |                     Email = context.User.Claims.FirstOrDefault(x=>x.Type=="email")?.Value ?? string.Empty, | ||||||
|  |                     FirstName = string.Empty, | ||||||
|  |                     LastName = string.Empty, | ||||||
|  |                     AddressCountry = string.Empty, | ||||||
|  |                     AddressCity = string.Empty, | ||||||
|  |                     AddressStreet = string.Empty, | ||||||
|  |                     AddressHouseNumber = string.Empty, | ||||||
|  |                     AddressPostalCode = string.Empty, | ||||||
|  |                     AddressRegion = string.Empty | ||||||
|  |                 }; | ||||||
|  |                 dbContext.Users.Add(user); | ||||||
|  |                 await dbContext.SaveChangesAsync(); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         await _next(context); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,8 @@ | |||||||
|  | namespace ArtPlatform.API.Models.Discovery; | ||||||
|  | 
 | ||||||
|  | public class DiscoveryReviewModel | ||||||
|  | { | ||||||
|  |     public string WriterDisplayName { get; set; } | ||||||
|  |     public string WriterId { get; set; } | ||||||
|  |     public double Rating { get; set; } | ||||||
|  | } | ||||||
| @ -0,0 +1,8 @@ | |||||||
|  | namespace ArtPlatform.API.Models.Discovery; | ||||||
|  | 
 | ||||||
|  | public class DiscoverySellerModel | ||||||
|  | { | ||||||
|  |     public int Id { get; set; } | ||||||
|  |     public List<string> SocialMediaLinks { get; set; } | ||||||
|  |     public string Biography { get; set; } | ||||||
|  | } | ||||||
							
								
								
									
										10
									
								
								src/ArtPlatform.API/Models/Order/MessageModel.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								src/ArtPlatform.API/Models/Order/MessageModel.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | |||||||
|  | namespace ArtPlatform.API.Models.Order; | ||||||
|  | 
 | ||||||
|  | public class MessageModel | ||||||
|  | { | ||||||
|  |     public int Id { get; set; } | ||||||
|  |     public string SenderId { get; set; } | ||||||
|  |     public string SenderDisplayName { get; set; } | ||||||
|  |     public string Message { get; set; } | ||||||
|  |     public int[] Attachments { get; set; } | ||||||
|  | } | ||||||
							
								
								
									
										19
									
								
								src/ArtPlatform.API/Models/Order/MessageModelExtensions.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/ArtPlatform.API/Models/Order/MessageModelExtensions.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,19 @@ | |||||||
|  | using ArtPlatform.Database.Entities; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.API.Models.Order; | ||||||
|  | 
 | ||||||
|  | public static class MessageModelExtensions | ||||||
|  | { | ||||||
|  |      | ||||||
|  |     public static MessageModel ToModel(this SellerServiceOrderMessage sellerProfile) | ||||||
|  |     { | ||||||
|  |         return new MessageModel() | ||||||
|  |         { | ||||||
|  |             Id = sellerProfile.Id, | ||||||
|  |             SenderId = sellerProfile.SenderId, | ||||||
|  |             SenderDisplayName = sellerProfile.Sender.DisplayName, | ||||||
|  |             Message = sellerProfile.Message, | ||||||
|  |             Attachments = sellerProfile.Attachments.Select(x=>x.Id).ToArray() | ||||||
|  |         }; | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										15
									
								
								src/ArtPlatform.API/Models/Order/OrderModel.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/ArtPlatform.API/Models/Order/OrderModel.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | |||||||
|  | using ArtPlatform.Database.Enums; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.API.Models.Order; | ||||||
|  | 
 | ||||||
|  | public class OrderModel | ||||||
|  | { | ||||||
|  |     public int Id { get; set; } | ||||||
|  |     public string BuyerId { get; set; } | ||||||
|  |     public int SellerServiceId { get; set; } | ||||||
|  |     public int SellerId { get; set; } | ||||||
|  |     public EnumOrderStatus Status { get; set; } | ||||||
|  | 
 | ||||||
|  |     public string StatusLabel => Status.ToString(); | ||||||
|  |     public double Price { get; set; } | ||||||
|  | } | ||||||
							
								
								
									
										20
									
								
								src/ArtPlatform.API/Models/Order/OrderModelExtensions.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/ArtPlatform.API/Models/Order/OrderModelExtensions.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | |||||||
|  | using ArtPlatform.Database.Entities; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.API.Models.Order; | ||||||
|  | 
 | ||||||
|  | public static class OrderModelExtensions | ||||||
|  | { | ||||||
|  |      | ||||||
|  |     public static OrderModel ToModel(this SellerServiceOrder sellerProfile) | ||||||
|  |     { | ||||||
|  |         return new OrderModel() | ||||||
|  |         { | ||||||
|  |             Id = sellerProfile.Id, | ||||||
|  |             BuyerId = sellerProfile.BuyerId, | ||||||
|  |             SellerServiceId = sellerProfile.SellerServiceId, | ||||||
|  |             SellerId = sellerProfile.SellerId, | ||||||
|  |             Status = sellerProfile.Status, | ||||||
|  |             Price = sellerProfile.Price | ||||||
|  |         }; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,7 @@ | |||||||
|  | namespace ArtPlatform.API.Models.Order; | ||||||
|  | 
 | ||||||
|  | public class SellerServiceOrderReviewModel | ||||||
|  | { | ||||||
|  |     public int Rating { get; set; } | ||||||
|  |     public string? Review { get; set; } | ||||||
|  | } | ||||||
| @ -0,0 +1,7 @@ | |||||||
|  | namespace ArtPlatform.API.Models.PortfolioModel; | ||||||
|  | 
 | ||||||
|  | public class PortfolioModel | ||||||
|  | { | ||||||
|  |     public int Id { get; set; } | ||||||
|  |     public int? SellerServiceId { get; set; } | ||||||
|  | } | ||||||
| @ -0,0 +1,13 @@ | |||||||
|  | namespace ArtPlatform.API.Models.PortfolioModel; | ||||||
|  | 
 | ||||||
|  | public static class PortfolioModelExtensions | ||||||
|  | { | ||||||
|  |     public static PortfolioModel ToModel(this Database.Entities.SellerProfilePortfolioPiece sellerProfileRequest) | ||||||
|  |     { | ||||||
|  |         return new PortfolioModel() | ||||||
|  |         { | ||||||
|  |             Id = sellerProfileRequest.Id, | ||||||
|  |             SellerServiceId = sellerProfileRequest.SellerServiceId | ||||||
|  |         }; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,7 @@ | |||||||
|  | namespace ArtPlatform.API.Models.SellerProfile; | ||||||
|  | 
 | ||||||
|  | public class SellerProfileModel | ||||||
|  | { | ||||||
|  |     public List<string> SocialMediaLinks { get; set; } | ||||||
|  |     public string Biography { get; set; } | ||||||
|  | } | ||||||
| @ -0,0 +1,31 @@ | |||||||
|  | using ArtPlatform.API.Models.Discovery; | ||||||
|  | using ArtPlatform.Database.Entities; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.API.Models.SellerProfile; | ||||||
|  | 
 | ||||||
|  | public static class SellerProfileModelExtensions | ||||||
|  | { | ||||||
|  |     public static SellerProfileModel ToModel(this UserSellerProfile sellerProfile) | ||||||
|  |     { | ||||||
|  |         return new SellerProfileModel() | ||||||
|  |         { | ||||||
|  |             SocialMediaLinks = sellerProfile.SocialMediaLinks, | ||||||
|  |             Biography = sellerProfile.Biography | ||||||
|  |         }; | ||||||
|  |     } | ||||||
|  |     public static DiscoverySellerModel ToDiscoveryModel(this UserSellerProfile sellerProfile) | ||||||
|  |     { | ||||||
|  |         return new DiscoverySellerModel() | ||||||
|  |         { | ||||||
|  |             Id = sellerProfile.Id, | ||||||
|  |             SocialMediaLinks = sellerProfile.SocialMediaLinks, | ||||||
|  |             Biography = sellerProfile.Biography | ||||||
|  |         }; | ||||||
|  |     } | ||||||
|  |     public static UserSellerProfile ToModel(this SellerProfileModel sellerProfile, UserSellerProfile existingSellerProfile) | ||||||
|  |     { | ||||||
|  |         existingSellerProfile.SocialMediaLinks = sellerProfile.SocialMediaLinks; | ||||||
|  |         existingSellerProfile.Biography = sellerProfile.Biography; | ||||||
|  |         return existingSellerProfile; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,11 @@ | |||||||
|  | namespace ArtPlatform.API.Models.SellerProfileRequest; | ||||||
|  | 
 | ||||||
|  | public class SellerProfileRequestModel | ||||||
|  | { | ||||||
|  |     public int Id { get; set; } | ||||||
|  |     public DateTime RequestDate { get; set; } | ||||||
|  |     public string UserId { get; set; } | ||||||
|  |     public bool Accepted { get; set; } | ||||||
|  |      | ||||||
|  |     public virtual Database.Entities.User User { get; set; } = null!; | ||||||
|  | } | ||||||
| @ -0,0 +1,15 @@ | |||||||
|  | namespace ArtPlatform.API.Models.SellerProfileRequest; | ||||||
|  | 
 | ||||||
|  | public static class SellerProfileRequestModelExtensions | ||||||
|  | { | ||||||
|  |     public static SellerProfileRequestModel ToModel(this Database.Entities.SellerProfileRequest sellerProfileRequest) | ||||||
|  |     { | ||||||
|  |         return new SellerProfileRequestModel() | ||||||
|  |         { | ||||||
|  |             Id = sellerProfileRequest.Id, | ||||||
|  |             UserId = sellerProfileRequest.UserId, | ||||||
|  |             RequestDate = sellerProfileRequest.RequestDate, | ||||||
|  |             Accepted = sellerProfileRequest.Accepted | ||||||
|  |         }; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,8 @@ | |||||||
|  | namespace ArtPlatform.API.Models.SellerService; | ||||||
|  | 
 | ||||||
|  | public class SellerServiceCreateModel | ||||||
|  | { | ||||||
|  |     public string Name { get; set; } | ||||||
|  |     public string Description { get; set; } | ||||||
|  |     public double Price { get; set; } | ||||||
|  | } | ||||||
| @ -0,0 +1,11 @@ | |||||||
|  | namespace ArtPlatform.API.Models.SellerService; | ||||||
|  | 
 | ||||||
|  | public class SellerServiceModel | ||||||
|  | { | ||||||
|  |     public int Id { get; set; } | ||||||
|  |     public string Name { get; set; } = null!; | ||||||
|  |     public string Description { get; set; } = null!; | ||||||
|  |     public double Price { get; set; } | ||||||
|  |     public double AverageRating { get; set; } | ||||||
|  |     public int NumberOfRatings { get; set; } | ||||||
|  | } | ||||||
| @ -0,0 +1,26 @@ | |||||||
|  | namespace ArtPlatform.API.Models.SellerService; | ||||||
|  | 
 | ||||||
|  | public static class SellerServiceModelExtensions | ||||||
|  | { | ||||||
|  |      | ||||||
|  |     public static SellerServiceModel ToModel(this Database.Entities.SellerService sellerProfileRequest) | ||||||
|  |     { | ||||||
|  |         double avgRating = 0; | ||||||
|  |         int reviewCount = 0; | ||||||
|  |         var ratings = sellerProfileRequest.Reviews; | ||||||
|  |         if (ratings.Any()) | ||||||
|  |         { | ||||||
|  |             avgRating = ratings.Average(x => x.Rating); | ||||||
|  |             reviewCount = sellerProfileRequest.Reviews.Count; | ||||||
|  |         } | ||||||
|  |         return new SellerServiceModel() | ||||||
|  |         { | ||||||
|  |             Id = sellerProfileRequest.Id, | ||||||
|  |             Name = sellerProfileRequest.Name, | ||||||
|  |             Description = sellerProfileRequest.Description, | ||||||
|  |             Price = sellerProfileRequest.Price, | ||||||
|  |             AverageRating = avgRating, | ||||||
|  |             NumberOfRatings = reviewCount | ||||||
|  |         }; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,8 @@ | |||||||
|  | namespace ArtPlatform.API.Models.SellerService; | ||||||
|  | 
 | ||||||
|  | public class SellerServiceUpdateModel | ||||||
|  | { | ||||||
|  |     public string Name { get; set; } | ||||||
|  |     public string Description { get; set; } | ||||||
|  |     public double Price { get; set; } | ||||||
|  | } | ||||||
							
								
								
									
										9
									
								
								src/ArtPlatform.API/Models/User/UserInfoModel.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/ArtPlatform.API/Models/User/UserInfoModel.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | |||||||
|  | namespace ArtPlatform.API.Models.User; | ||||||
|  | 
 | ||||||
|  | public class UserInfoModel | ||||||
|  | { | ||||||
|  |     public string Id { get; set; } = string.Empty; | ||||||
|  |     public string DisplayName { get; init; } = string.Empty; | ||||||
|  |     public string Biography { get; init; } = string.Empty; | ||||||
|  |     public string Email { get; init; } = string.Empty; | ||||||
|  | } | ||||||
							
								
								
									
										22
									
								
								src/ArtPlatform.API/Models/User/UserInfoModelExtensions.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/ArtPlatform.API/Models/User/UserInfoModelExtensions.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | |||||||
|  | namespace ArtPlatform.API.Models.User; | ||||||
|  | 
 | ||||||
|  | public static class UserInfoModelExtensions | ||||||
|  | { | ||||||
|  |     public static UserInfoModel ToModel(this Database.Entities.User user) | ||||||
|  |     { | ||||||
|  |         return new() | ||||||
|  |         { | ||||||
|  |             Id = user.Id, | ||||||
|  |             DisplayName = user.DisplayName, | ||||||
|  |             Biography = user.Biography, | ||||||
|  |             Email = user.Email | ||||||
|  |         }; | ||||||
|  |     } | ||||||
|  |     public static Database.Entities.User ToEntity(this UserInfoUpdateModel user, Database.Entities.User existingUser) | ||||||
|  |     { | ||||||
|  |         existingUser.DisplayName = user.DisplayName; | ||||||
|  |         existingUser.Biography = user.Biography; | ||||||
|  |         existingUser.Email = user.Email; | ||||||
|  |         return existingUser; | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										8
									
								
								src/ArtPlatform.API/Models/User/UserInfoUpdateModel.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								src/ArtPlatform.API/Models/User/UserInfoUpdateModel.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | namespace ArtPlatform.API.Models.User; | ||||||
|  | 
 | ||||||
|  | public class UserInfoUpdateModel | ||||||
|  | { | ||||||
|  |     public string DisplayName { get; init; } = string.Empty; | ||||||
|  |     public string Biography { get; init; } = string.Empty; | ||||||
|  |     public string Email { get; init; } = string.Empty; | ||||||
|  | } | ||||||
							
								
								
									
										156
									
								
								src/ArtPlatform.API/Program.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										156
									
								
								src/ArtPlatform.API/Program.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,156 @@ | |||||||
|  | using System.Reflection; | ||||||
|  | using System.Security.Claims; | ||||||
|  | using ArtPlatform.API.Middleware; | ||||||
|  | using ArtPlatform.API.Middleware.Authentication; | ||||||
|  | using ArtPlatform.API.Services.Storage; | ||||||
|  | using ArtPlatform.Database; | ||||||
|  | using Auth0.AspNetCore.Authentication; | ||||||
|  | using Microsoft.AspNetCore.Authentication.JwtBearer; | ||||||
|  | using Microsoft.AspNetCore.Authorization; | ||||||
|  | using Microsoft.IdentityModel.Tokens; | ||||||
|  | using Microsoft.OpenApi.Models; | ||||||
|  | 
 | ||||||
|  | var builder = WebApplication.CreateBuilder(args); | ||||||
|  | 
 | ||||||
|  | // Add services to the container. | ||||||
|  | // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle | ||||||
|  | 
 | ||||||
|  | builder.Services.AddSingleton<IStorage,ImgCdnProvider>(); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | builder.Services.AddHttpContextAccessor(); | ||||||
|  | builder.Services.AddEndpointsApiExplorer(); | ||||||
|  | builder.Services.AddSingleton<ApplicationDbContext>(); | ||||||
|  | builder.Services.AddSwaggerGen(options => | ||||||
|  | { | ||||||
|  |     options.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo | ||||||
|  |     { | ||||||
|  |         Title = "API Documentation", | ||||||
|  |         Version = "v1.0", | ||||||
|  |         Description = "" | ||||||
|  |     }); | ||||||
|  |     options.ResolveConflictingActions(x => x.First()); | ||||||
|  |     options.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme | ||||||
|  |     { | ||||||
|  |         Type = SecuritySchemeType.OAuth2, | ||||||
|  |         BearerFormat = "JWT", | ||||||
|  |         Flows = new OpenApiOAuthFlows | ||||||
|  |         { | ||||||
|  |             Implicit  = new OpenApiOAuthFlow | ||||||
|  |             { | ||||||
|  |                 TokenUrl = new Uri($"{builder.Configuration.GetValue<string>("Auth0:Domain")}oauth/token"), | ||||||
|  |                 AuthorizationUrl = new Uri($"{builder.Configuration.GetValue<string>("Auth0:Domain")}authorize?audience={builder.Configuration.GetValue<string>("Auth0:Audience")}"), | ||||||
|  |                 Scopes = new Dictionary<string, string> | ||||||
|  |                 { | ||||||
|  |                     { "openid", "OpenId" }, | ||||||
|  |                     { "email", "Email" }, | ||||||
|  |                     { "profile", "Profile" }, | ||||||
|  |                     { "read:user",  "Read your profile information." }, | ||||||
|  |                     { "write:user", "Update your profile information." }, | ||||||
|  |                     { "read:billing-information", "Read your billing information." }, | ||||||
|  |                     { "write:billing-information", "Update your billing information." }, | ||||||
|  |                     { "read:seller-profile", "Read your seller profile information."}, | ||||||
|  |                     { "write:seller-profile", "Update your seller profile information."}, | ||||||
|  |                     { "write:seller-profile-request", "Accept seller profile requests."}, | ||||||
|  |                     { "read:seller-profile-request", "Read seller profile requests."}, | ||||||
|  |                     { "read:seller-service", "Read services on your seller profile."}, | ||||||
|  |                     { "write:seller-service", "Update services on your seller profile."}, | ||||||
|  |                     { "write:orders", "Create new orders and take action against existing ones."}, | ||||||
|  |                     { "read:orders", "View your orders."}, | ||||||
|  |                     { "read:seller-orders", "View orders on your seller profile."}, | ||||||
|  |                     { "write:seller-orders", "Update orders on your seller profile."} | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     }); | ||||||
|  |     options.AddSecurityRequirement(new OpenApiSecurityRequirement | ||||||
|  |     { | ||||||
|  |         { | ||||||
|  |             new OpenApiSecurityScheme | ||||||
|  |             { | ||||||
|  |                 Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "oauth2" } | ||||||
|  |             }, | ||||||
|  |             new[] { "openid", "email", "profile" } | ||||||
|  |         } | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; | ||||||
|  |     var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); | ||||||
|  |     options.IncludeXmlComments(xmlPath); | ||||||
|  | 
 | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | builder.Services.AddControllers() | ||||||
|  |     .AddJsonOptions(options=> | ||||||
|  |         options.JsonSerializerOptions.ReferenceHandler = System.Text.Json.Serialization.ReferenceHandler.IgnoreCycles | ||||||
|  |         ); | ||||||
|  | 
 | ||||||
|  | builder.Services.AddAuthentication(options => | ||||||
|  | { | ||||||
|  |     options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; | ||||||
|  |     options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; | ||||||
|  | }).AddJwtBearer(options => | ||||||
|  | { | ||||||
|  |     options.Authority = $"{builder.Configuration.GetValue<string>("Auth0:Domain")}"; | ||||||
|  |     options.Audience = $"{builder.Configuration.GetValue<string>("Auth0:Audience")}"; | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | builder.Services.AddAuthorization(options => | ||||||
|  | { | ||||||
|  |     options.AddPolicy("read:user", policy => policy.Requirements.Add(new  | ||||||
|  |         HasScopeRequirement("read:user", builder.Configuration.GetValue<string>("Auth0:Domain")))); | ||||||
|  |     options.AddPolicy("write:user", policy => policy.Requirements.Add(new  | ||||||
|  |         HasScopeRequirement("write:user", builder.Configuration.GetValue<string>("Auth0:Domain")))); | ||||||
|  |      | ||||||
|  |     options.AddPolicy("read:billing-information", policy => policy.Requirements.Add(new  | ||||||
|  |         HasScopeRequirement("read:billing-information", builder.Configuration.GetValue<string>("Auth0:Domain")))); | ||||||
|  |     options.AddPolicy("write:billing-information", policy => policy.Requirements.Add(new  | ||||||
|  |         HasScopeRequirement("write:billing-information", builder.Configuration.GetValue<string>("Auth0:Domain")))); | ||||||
|  |      | ||||||
|  |     options.AddPolicy("read:seller-profile", policy => policy.Requirements.Add(new  | ||||||
|  |         HasScopeRequirement("read:seller-profile", builder.Configuration.GetValue<string>("Auth0:Domain")))); | ||||||
|  |     options.AddPolicy("write:seller-profile", policy => policy.Requirements.Add(new  | ||||||
|  |         HasScopeRequirement("write:seller-profile", builder.Configuration.GetValue<string>("Auth0:Domain")))); | ||||||
|  |      | ||||||
|  |     options.AddPolicy("read:seller-profile-request", policy => policy.Requirements.Add(new  | ||||||
|  |         HasScopeRequirement("read:seller-profile-request", builder.Configuration.GetValue<string>("Auth0:Domain")))); | ||||||
|  |     options.AddPolicy("write:seller-profile-request", policy => policy.Requirements.Add(new  | ||||||
|  |         HasScopeRequirement("write:seller-profile-request", builder.Configuration.GetValue<string>("Auth0:Domain")))); | ||||||
|  |      | ||||||
|  |     options.AddPolicy("read:seller-service", policy => policy.Requirements.Add(new  | ||||||
|  |         HasScopeRequirement("read:seller-service", builder.Configuration.GetValue<string>("Auth0:Domain")))); | ||||||
|  |     options.AddPolicy("write:seller-service", policy => policy.Requirements.Add(new  | ||||||
|  |         HasScopeRequirement("write:seller-service", builder.Configuration.GetValue<string>("Auth0:Domain")))); | ||||||
|  |      | ||||||
|  |     options.AddPolicy("write:orders", policy => policy.Requirements.Add(new  | ||||||
|  |         HasScopeRequirement("write:orders", builder.Configuration.GetValue<string>("Auth0:Domain")))); | ||||||
|  |     options.AddPolicy("read:orders", policy => policy.Requirements.Add(new  | ||||||
|  |         HasScopeRequirement("read:orders", builder.Configuration.GetValue<string>("Auth0:Domain")))); | ||||||
|  |      | ||||||
|  |     options.AddPolicy("read:seller-orders", policy => policy.Requirements.Add(new  | ||||||
|  |         HasScopeRequirement("read:seller-orders", builder.Configuration.GetValue<string>("Auth0:Domain")))); | ||||||
|  |     options.AddPolicy("write:seller-orders", policy => policy.Requirements.Add(new  | ||||||
|  |         HasScopeRequirement("write:seller-orders", builder.Configuration.GetValue<string>("Auth0:Domain")))); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | builder.Services.AddSingleton<IAuthorizationHandler, HasScopeHandler>(); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | var app = builder.Build(); | ||||||
|  | app.UseSwagger(); | ||||||
|  | app.UseSwaggerUI(settings => | ||||||
|  | { | ||||||
|  |     if (app.Environment.IsDevelopment()) | ||||||
|  |     { | ||||||
|  |         settings.OAuthClientId(builder.Configuration.GetValue<string>("Auth0:ClientId")); | ||||||
|  |         settings.OAuthClientSecret(builder.Configuration.GetValue<string>("Auth0:ClientSecret")); | ||||||
|  |         settings.OAuthUsePkce(); | ||||||
|  |     }    | ||||||
|  | }); | ||||||
|  | app.UseStaticFiles(); | ||||||
|  | app.UseHttpsRedirection(); | ||||||
|  | app.UseAuthentication(); | ||||||
|  | app.UseMiddleware<UserMiddleware>(); | ||||||
|  | app.UseAuthorization(); | ||||||
|  | app.MapControllers(); | ||||||
|  | app.Run(); | ||||||
| @ -1,20 +1,30 @@ | |||||||
| { | { | ||||||
|   "$schema": "https://json.schemastore.org/launchsettings.json", |   "$schema": "http://json.schemastore.org/launchsettings.json", | ||||||
|   "iisSettings": { |   "iisSettings": { | ||||||
|     "windowsAuthentication": false, |     "windowsAuthentication": false, | ||||||
|     "anonymousAuthentication": true, |     "anonymousAuthentication": true, | ||||||
|     "iisExpress": { |     "iisExpress": { | ||||||
|       "applicationUrl": "http://localhost:59643", |       "applicationUrl": "http://localhost:35549", | ||||||
|       "sslPort": 44359 |       "sslPort": 44383 | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   "profiles": { |   "profiles": { | ||||||
|     "ArtPlatform.Api": { |     "http": { | ||||||
|       "commandName": "Project", |       "commandName": "Project", | ||||||
|       "dotnetRunMessages": true, |       "dotnetRunMessages": true, | ||||||
|       "launchBrowser": true, |       "launchBrowser": true, | ||||||
|       "launchUrl": "swagger", |       "launchUrl": "swagger", | ||||||
|       "applicationUrl": "https://localhost:7159;http://localhost:5201", |       "applicationUrl": "http://localhost:5290", | ||||||
|  |       "environmentVariables": { | ||||||
|  |         "ASPNETCORE_ENVIRONMENT": "Development" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     "https": { | ||||||
|  |       "commandName": "Project", | ||||||
|  |       "dotnetRunMessages": true, | ||||||
|  |       "launchBrowser": true, | ||||||
|  |       "launchUrl": "swagger", | ||||||
|  |       "applicationUrl": "https://localhost:7148;http://localhost:5290", | ||||||
|       "environmentVariables": { |       "environmentVariables": { | ||||||
|         "ASPNETCORE_ENVIRONMENT": "Development" |         "ASPNETCORE_ENVIRONMENT": "Development" | ||||||
|       } |       } | ||||||
							
								
								
									
										7
									
								
								src/ArtPlatform.API/Services/Storage/IStorage.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/ArtPlatform.API/Services/Storage/IStorage.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,7 @@ | |||||||
|  | namespace ArtPlatform.API.Services.Storage; | ||||||
|  | 
 | ||||||
|  | public interface IStorage | ||||||
|  | { | ||||||
|  |     public Task<string> UploadImageAsync(IFormFile file, string fileName); | ||||||
|  |     public Task<Stream> DownloadImageAsync(string fileRefrence); | ||||||
|  | } | ||||||
							
								
								
									
										53
									
								
								src/ArtPlatform.API/Services/Storage/ImgCdnProvider.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								src/ArtPlatform.API/Services/Storage/ImgCdnProvider.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,53 @@ | |||||||
|  | using System.Net.Http; | ||||||
|  | using System.Text.Json; | ||||||
|  | using System.Threading.Tasks; | ||||||
|  | using Microsoft.AspNetCore.Http; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.API.Services.Storage | ||||||
|  | { | ||||||
|  |     public class ImgCdnProvider : IStorage | ||||||
|  |     { | ||||||
|  |         private readonly HttpClient _client; | ||||||
|  |         private const string ApiKey = "5386e05a3562c7a8f984e73401540836"; | ||||||
|  | 
 | ||||||
|  |         public ImgCdnProvider() | ||||||
|  |         { | ||||||
|  |             _client = new HttpClient { BaseAddress = new Uri("https://imgcdn.dev/") }; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public async Task<string> UploadImageAsync(IFormFile file, string fileName) | ||||||
|  |         { | ||||||
|  |             using var content = new MultipartFormDataContent(); | ||||||
|  |             content.Add(new StringContent(ApiKey), "key"); | ||||||
|  | 
 | ||||||
|  |             using var fileStream = file.OpenReadStream(); | ||||||
|  |             content.Add(new StreamContent(fileStream), "source", fileName); | ||||||
|  | 
 | ||||||
|  |             var response = await _client.PostAsync("api/1/upload", content); | ||||||
|  | 
 | ||||||
|  |             if (!response.IsSuccessStatusCode) | ||||||
|  |             { | ||||||
|  |                 throw new Exception("Failed to upload image."); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             var responseContent = await response.Content.ReadAsStringAsync(); | ||||||
|  |             var jsonResponse = JsonDocument.Parse(responseContent); | ||||||
|  |             var imageUrl = jsonResponse.RootElement.GetProperty("image").GetProperty("url").GetString(); | ||||||
|  | 
 | ||||||
|  |             return imageUrl; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         public async Task<Stream> DownloadImageAsync(string fileReference) | ||||||
|  |         { | ||||||
|  |             var response = await _client.GetAsync(fileReference); | ||||||
|  | 
 | ||||||
|  |             if (!response.IsSuccessStatusCode) | ||||||
|  |             { | ||||||
|  |                 throw new Exception("Failed to download image."); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             var stream = await response.Content.ReadAsStreamAsync(); | ||||||
|  |             return stream; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										15
									
								
								src/ArtPlatform.API/appsettings.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/ArtPlatform.API/appsettings.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | |||||||
|  | { | ||||||
|  |   "Auth0": { | ||||||
|  |     "Domain": "https://dev-12mb5yq82dow1twh.us.auth0.com/", | ||||||
|  |     "Audience": "https://api.artplatform.com", | ||||||
|  |     "ClientId": "19GWUL7fWFQWEpdFFtlgv2x3kqfSa0ES", | ||||||
|  |     "ClientSecret": "VX5LKeGHeaqKsgNz8Kn1gQ7MSHmwrXJdC2DMjVY82_YHjiRqdPrVNpFFkXBZy8yh" | ||||||
|  |   }, | ||||||
|  |   "Logging": { | ||||||
|  |     "LogLevel": { | ||||||
|  |       "Default": "Information", | ||||||
|  |       "Microsoft.AspNetCore": "Warning" | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   "AllowedHosts": "*" | ||||||
|  | } | ||||||
| @ -0,0 +1,14 @@ | |||||||
|  | <Project Sdk="Microsoft.NET.Sdk"> | ||||||
|  | 
 | ||||||
|  |     <PropertyGroup> | ||||||
|  |         <OutputType>Exe</OutputType> | ||||||
|  |         <TargetFramework>net8.0</TargetFramework> | ||||||
|  |         <ImplicitUsings>enable</ImplicitUsings> | ||||||
|  |         <Nullable>enable</Nullable> | ||||||
|  |     </PropertyGroup> | ||||||
|  | 
 | ||||||
|  |     <ItemGroup> | ||||||
|  |       <ProjectReference Include="..\ArtPlatform.Database\ArtPlatform.Database.csproj" /> | ||||||
|  |     </ItemGroup> | ||||||
|  | 
 | ||||||
|  | </Project> | ||||||
							
								
								
									
										3
									
								
								src/ArtPlatform.Database.Migrator/Program.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/ArtPlatform.Database.Migrator/Program.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | // See https://aka.ms/new-console-template for more information | ||||||
|  | 
 | ||||||
|  | Console.WriteLine("Hello, World!"); | ||||||
| @ -0,0 +1,20 @@ | |||||||
|  | 
 | ||||||
|  | using Microsoft.Extensions.Configuration; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database; | ||||||
|  | 
 | ||||||
|  | public class ApplicationDatabaseConfigurationModel | ||||||
|  | { | ||||||
|  |     private readonly IConfiguration _configuration; | ||||||
|  |      | ||||||
|  |     public ApplicationDatabaseConfigurationModel(IConfiguration configuration) | ||||||
|  |     { | ||||||
|  |         _configuration = configuration; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     public string Host => _configuration?.GetValue<string>("Database:Host") ?? "localhost"; | ||||||
|  |     public int Port => _configuration?.GetValue<int>("Database:Port") ?? 5432; | ||||||
|  |     public string Database => _configuration?.GetValue<string>("Database:Database") ?? "artplatform"; | ||||||
|  |     public string Username => _configuration?.GetValue<string>("Database:username") ?? "sa"; | ||||||
|  |     public string Password => _configuration?.GetValue<string>("Database:password") ?? "P@ssw0rd"; | ||||||
|  | } | ||||||
							
								
								
									
										43
									
								
								src/ArtPlatform.Database/ApplicationDbContext.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								src/ArtPlatform.Database/ApplicationDbContext.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,43 @@ | |||||||
|  | using ArtPlatform.Database.Entities; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | using Npgsql; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database; | ||||||
|  | 
 | ||||||
|  | public class ApplicationDbContext:DbContext | ||||||
|  | { | ||||||
|  |     private readonly ApplicationDatabaseConfigurationModel _configuration; | ||||||
|  |      | ||||||
|  |     // public ApplicationDbContext(ApplicationDatabaseConfigurationModel configuration, DbContextOptions<ApplicationDbContext> options):base(options) | ||||||
|  |     // { | ||||||
|  |     //     _configuration = configuration; | ||||||
|  |     // } | ||||||
|  |      | ||||||
|  |      | ||||||
|  |     protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) | ||||||
|  |     { | ||||||
|  |         var connectionStringBuilder = new NpgsqlConnectionStringBuilder() | ||||||
|  |         { | ||||||
|  |             Host = _configuration?.Host ?? "localhost", | ||||||
|  |             Port = _configuration?.Port ?? 5432, | ||||||
|  |             Database = _configuration?.Database ?? "artplatform", | ||||||
|  |             Username = _configuration?.Username ?? "sa", | ||||||
|  |             Password = _configuration?.Password ?? "P@ssw0rd" | ||||||
|  |         }; | ||||||
|  |         optionsBuilder.UseNpgsql(connectionStringBuilder.ConnectionString); | ||||||
|  |         base.OnConfiguring(optionsBuilder); | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     #region DB Sets | ||||||
|  | 
 | ||||||
|  |     public DbSet<User> Users { get; set; } = null!; | ||||||
|  |     public DbSet<UserSellerProfile> UserSellerProfiles { get; set; }= null!; | ||||||
|  |     public DbSet<SellerProfileRequest> SellerProfileRequests { get; set; }= null!; | ||||||
|  |     public DbSet<SellerProfilePortfolioPiece> SellerProfilePortfolioPieces { get; set; }= null!; | ||||||
|  |     public DbSet<SellerService> SellerServices { get; set; }= null!; | ||||||
|  |     public DbSet<SellerServiceOrder> SellerServiceOrders { get; set; }= null!; | ||||||
|  |     public DbSet<SellerServiceOrderMessage> SellerServiceOrderMessages { get; set; }= null!; | ||||||
|  |     public DbSet<SellerServiceOrderMessageAttachment> SellerServiceOrderMessageAttachments { get; set; }= null!; | ||||||
|  |     public DbSet<SellerServiceOrderReview> SellerServiceOrderReviews { get; set; }= null!; | ||||||
|  |     #endregion | ||||||
|  | } | ||||||
							
								
								
									
										21
									
								
								src/ArtPlatform.Database/ArtPlatform.Database.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/ArtPlatform.Database/ArtPlatform.Database.csproj
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | |||||||
|  | <Project Sdk="Microsoft.NET.Sdk"> | ||||||
|  | 
 | ||||||
|  |     <PropertyGroup> | ||||||
|  |         <TargetFramework>net8.0</TargetFramework> | ||||||
|  |         <ImplicitUsings>enable</ImplicitUsings> | ||||||
|  |         <Nullable>enable</Nullable> | ||||||
|  |     </PropertyGroup> | ||||||
|  | 
 | ||||||
|  |     <ItemGroup> | ||||||
|  |       <PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.1" /> | ||||||
|  |       <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.1"> | ||||||
|  |         <PrivateAssets>all</PrivateAssets> | ||||||
|  |         <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> | ||||||
|  |       </PackageReference> | ||||||
|  |       <PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" /> | ||||||
|  |       <PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.1" /> | ||||||
|  |       <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="8.0.0" /> | ||||||
|  |       <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL.Design" Version="1.1.0" /> | ||||||
|  |     </ItemGroup> | ||||||
|  | 
 | ||||||
|  | </Project> | ||||||
| @ -0,0 +1,11 @@ | |||||||
|  | namespace ArtPlatform.Database.Entities; | ||||||
|  | 
 | ||||||
|  | public class SellerProfilePortfolioPiece | ||||||
|  | { | ||||||
|  |     public int Id { get; set; } | ||||||
|  |     public int SellerProfileId { get; set; } | ||||||
|  |     public string? FileReference { get; set; } | ||||||
|  |     public int? SellerServiceId { get; set; } | ||||||
|  |     public virtual SellerService SellerService { get; set; } = null!; | ||||||
|  |     public virtual UserSellerProfile SellerProfile { get; set; } = null!; | ||||||
|  | } | ||||||
							
								
								
									
										12
									
								
								src/ArtPlatform.Database/Entities/SellerProfileRequest.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/ArtPlatform.Database/Entities/SellerProfileRequest.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | |||||||
|  | namespace ArtPlatform.Database.Entities; | ||||||
|  | 
 | ||||||
|  | public class SellerProfileRequest | ||||||
|  | { | ||||||
|  |     public int Id { get; set; } | ||||||
|  |     public string UserId { get; set; } = null!; | ||||||
|  |     public DateTime RequestDate { get; set; } | ||||||
|  |     public DateTime? AcceptedDate { get; set; } | ||||||
|  |     public bool Accepted { get; set; } | ||||||
|  |      | ||||||
|  |     public virtual User User { get; set; } = null!; | ||||||
|  | } | ||||||
							
								
								
									
										14
									
								
								src/ArtPlatform.Database/Entities/SellerService.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/ArtPlatform.Database/Entities/SellerService.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,14 @@ | |||||||
|  | namespace ArtPlatform.Database.Entities; | ||||||
|  | 
 | ||||||
|  | public class SellerService | ||||||
|  | { | ||||||
|  |     public int Id { get; set; } | ||||||
|  |     public int SellerProfileId { get; set; } | ||||||
|  |     public string Name { get; set; } = null!; | ||||||
|  |     public string Description { get; set; } = null!; | ||||||
|  |     public double Price { get; set; } | ||||||
|  | 
 | ||||||
|  |     public virtual ICollection<SellerProfilePortfolioPiece> PortfolioPieces { get; set; } = new List<SellerProfilePortfolioPiece>(); | ||||||
|  |     public virtual ICollection<SellerServiceOrderReview> Reviews { get; set; } = new List<SellerServiceOrderReview>(); | ||||||
|  |     public virtual UserSellerProfile SellerProfile { get; set; } = null!; | ||||||
|  | } | ||||||
							
								
								
									
										23
									
								
								src/ArtPlatform.Database/Entities/SellerServiceOrder.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								src/ArtPlatform.Database/Entities/SellerServiceOrder.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,23 @@ | |||||||
|  | using ArtPlatform.Database.Enums; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database.Entities; | ||||||
|  | 
 | ||||||
|  | public class SellerServiceOrder | ||||||
|  | { | ||||||
|  |     public int Id { get; set; } | ||||||
|  |     public string BuyerId { get; set; } | ||||||
|  |     public int SellerServiceId { get; set; } | ||||||
|  |     public int SellerId { get; set; } | ||||||
|  |     public EnumOrderStatus Status { get; set; } | ||||||
|  |     public double Price { get; set; } | ||||||
|  |     public DateTime CreatedDate { get; set; } | ||||||
|  |     public DateTime? TermsAcceptedDate { get; set; } | ||||||
|  |     public DateTime? EndDate { get; set; } | ||||||
|  |      | ||||||
|  |     public virtual User Buyer { get; set; } = null!; | ||||||
|  |     public virtual SellerService SellerService { get; set; } = null!; | ||||||
|  |     public virtual UserSellerProfile Seller { get; set; } = null!; | ||||||
|  | 
 | ||||||
|  |     public virtual ICollection<SellerServiceOrderReview> Reviews { get; set; } = new List<SellerServiceOrderReview>(); | ||||||
|  |     public virtual ICollection<SellerServiceOrderMessage> Messages { get; set; } = new List<SellerServiceOrderMessage>(); | ||||||
|  | } | ||||||
| @ -0,0 +1,14 @@ | |||||||
|  | namespace ArtPlatform.Database.Entities; | ||||||
|  | 
 | ||||||
|  | public class SellerServiceOrderMessage | ||||||
|  | { | ||||||
|  |     public int Id { get; set; } | ||||||
|  |     public int SellerServiceOrderId { get; set; } | ||||||
|  |     public string SenderId { get; set; } | ||||||
|  |     public string Message { get; set; } = null!; | ||||||
|  |     public DateTime SentAt { get; set; } | ||||||
|  |      | ||||||
|  |     public virtual SellerServiceOrder SellerServiceOrder { get; set; } = null!; | ||||||
|  |     public virtual User Sender { get; set; } = null!; | ||||||
|  |     public virtual ICollection<SellerServiceOrderMessageAttachment> Attachments { get; set; } = null!; | ||||||
|  | } | ||||||
| @ -0,0 +1,10 @@ | |||||||
|  | namespace ArtPlatform.Database.Entities; | ||||||
|  | 
 | ||||||
|  | public class SellerServiceOrderMessageAttachment | ||||||
|  | { | ||||||
|  |     public int Id { get; set; } | ||||||
|  |     public int SellerServiceOrderMessageId { get; set; } | ||||||
|  |     public string FileReference { get; set; } = null!; | ||||||
|  |      | ||||||
|  |     public virtual SellerServiceOrderMessage SellerServiceOrderMessage { get; set; } = null!; | ||||||
|  | } | ||||||
| @ -0,0 +1,6 @@ | |||||||
|  | namespace ArtPlatform.Database.Entities; | ||||||
|  | 
 | ||||||
|  | public class SellerServiceOrderMessageModel | ||||||
|  | { | ||||||
|  |     public string Message { get; set; } | ||||||
|  | } | ||||||
| @ -0,0 +1,16 @@ | |||||||
|  | namespace ArtPlatform.Database.Entities; | ||||||
|  | 
 | ||||||
|  | public class SellerServiceOrderReview | ||||||
|  | { | ||||||
|  |     public int Id { get; set; } | ||||||
|  |     public string ReviewerId { get; set; } | ||||||
|  |     public int SellerServiceOrderId { get; set; } | ||||||
|  |     public int SellerServiceId { get; set; } | ||||||
|  |     public DateTime ReviewDate { get; set; } | ||||||
|  |     public string? Review { get; set; } | ||||||
|  |     public int Rating { get; set; } | ||||||
|  |      | ||||||
|  |     public virtual User Reviewer { get; set; } = null!; | ||||||
|  |     public virtual SellerServiceOrder SellerServiceOrder { get; set; } = null!; | ||||||
|  |     public virtual SellerService SellerService { get; set; } = null!; | ||||||
|  | } | ||||||
							
								
								
									
										28
									
								
								src/ArtPlatform.Database/Entities/User.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/ArtPlatform.Database/Entities/User.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,28 @@ | |||||||
|  | using System.Text.Json.Serialization; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database.Entities; | ||||||
|  | 
 | ||||||
|  | [PrimaryKey(nameof(Id))] | ||||||
|  | public record User | ||||||
|  | { | ||||||
|  |     public string Id { get; set; } | ||||||
|  |     public string DisplayName { get; set; } = null!; | ||||||
|  |     public string Biography { get; set; } = null!; | ||||||
|  |     public string Email { get; set; } = null!; | ||||||
|  |     public int? UserSellerProfileId { get; set; } | ||||||
|  |      | ||||||
|  |     #region Billing Information | ||||||
|  |     public string FirstName { get; set; } = null!; | ||||||
|  |     public string LastName { get; set; } = null!; | ||||||
|  |     public string AddressCountry { get; set; } = null!; | ||||||
|  |     public string AddressCity { get; set; } = null!; | ||||||
|  |     public string AddressStreet { get; set; } = null!; | ||||||
|  |     public string AddressHouseNumber { get; set; } = null!; | ||||||
|  |     public string AddressPostalCode { get; set; } = null!; | ||||||
|  |     public string AddressRegion { get; set; } = null!; | ||||||
|  |     #endregion | ||||||
|  |      | ||||||
|  |     [JsonIgnore] public virtual UserSellerProfile? UserSellerProfile { get; set; } | ||||||
|  |     [JsonIgnore] public virtual ICollection<SellerServiceOrder> Orders { get; set; } | ||||||
|  | } | ||||||
							
								
								
									
										18
									
								
								src/ArtPlatform.Database/Entities/UserSellerProfile.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/ArtPlatform.Database/Entities/UserSellerProfile.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,18 @@ | |||||||
|  | using System.ComponentModel.DataAnnotations.Schema; | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database.Entities; | ||||||
|  | 
 | ||||||
|  | public record UserSellerProfile | ||||||
|  | { | ||||||
|  |     public int Id { get; set; } | ||||||
|  |     [ForeignKey(nameof(User))] | ||||||
|  |     public string UserId { get; set; } | ||||||
|  |     public string Biography { get; set; } | ||||||
|  |     public List<string> SocialMediaLinks { get; set; } = new(); | ||||||
|  |     public bool AgeRestricted { get; set; } | ||||||
|  |      | ||||||
|  |     public virtual User User { get; set; } = null!; | ||||||
|  | 
 | ||||||
|  |     public virtual ICollection<SellerService> SellerServices { get; set; } = new List<SellerService>(); | ||||||
|  |     public virtual ICollection<SellerProfilePortfolioPiece> PortfolioPieces { get; set; } = new List<SellerProfilePortfolioPiece>(); | ||||||
|  | } | ||||||
							
								
								
									
										12
									
								
								src/ArtPlatform.Database/Enums/EnumOrderStatus.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/ArtPlatform.Database/Enums/EnumOrderStatus.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | |||||||
|  | namespace ArtPlatform.Database.Enums; | ||||||
|  | 
 | ||||||
|  | public enum EnumOrderStatus | ||||||
|  | { | ||||||
|  |     PendingAcceptance, | ||||||
|  |     Waitlist, | ||||||
|  |     DiscussingRequirements, | ||||||
|  |     InProgress, | ||||||
|  |     PendingReview, | ||||||
|  |     Completed, | ||||||
|  |     Cancelled | ||||||
|  | } | ||||||
							
								
								
									
										477
									
								
								src/ArtPlatform.Database/Migrations/20240127055416_Initial.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										477
									
								
								src/ArtPlatform.Database/Migrations/20240127055416_Initial.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @ -0,0 +1,477 @@ | |||||||
|  | // <auto-generated /> | ||||||
|  | using System; | ||||||
|  | using ArtPlatform.Database; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | using Microsoft.EntityFrameworkCore.Infrastructure; | ||||||
|  | using Microsoft.EntityFrameworkCore.Migrations; | ||||||
|  | using Microsoft.EntityFrameworkCore.Storage.ValueConversion; | ||||||
|  | using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; | ||||||
|  | 
 | ||||||
|  | #nullable disable | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database.Migrations | ||||||
|  | { | ||||||
|  |     [DbContext(typeof(ApplicationDbContext))] | ||||||
|  |     [Migration("20240127055416_Initial")] | ||||||
|  |     partial class Initial | ||||||
|  |     { | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void BuildTargetModel(ModelBuilder modelBuilder) | ||||||
|  |         { | ||||||
|  | #pragma warning disable 612, 618 | ||||||
|  |             modelBuilder | ||||||
|  |                 .HasAnnotation("ProductVersion", "8.0.1") | ||||||
|  |                 .HasAnnotation("Relational:MaxIdentifierLength", 63); | ||||||
|  | 
 | ||||||
|  |             NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerConfiguredSetting", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerSettingId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("UserSellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("UserSellerSettingId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerSettingId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("UserSellerProfileId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerConfiguredSettings"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfilePortfolioPiece", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Description") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FileReference") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Name") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerProfileId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerProfilePortfolioPieces"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<decimal?>("DepositAmount") | ||||||
|  |                         .HasColumnType("numeric"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("DepositRequired") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Description") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Name") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<decimal>("Price") | ||||||
|  |                         .HasColumnType("numeric"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerProfileId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServices"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("BuyerId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("Status") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("BuyerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrders"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessage", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Message") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("SenderId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime>("SentAt") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SenderId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderMessages"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessageAttachment", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FileReference") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderMessageId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderMessageId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderMessageAttachments"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderReview", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("Rating") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Review") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("ReviewerId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("ReviewerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderReviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerSetting", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("DefaultValue") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Description") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Name") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerSettings"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.User", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<string>("Id") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressCity") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressCountry") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressHouseNumber") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressPostalCode") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressRegion") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressStreet") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Biography") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("DisplayName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Email") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FirstName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("LastName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int?>("UserSellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("Users"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("AgeRestricted") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("UserId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("UserId") | ||||||
|  |                         .IsUnique(); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("UserSellerProfiles"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerConfiguredSetting", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerSetting", "SellerSetting") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerSettingId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "UserSellerProfile") | ||||||
|  |                         .WithMany("ConfiguredSettings") | ||||||
|  |                         .HasForeignKey("UserSellerProfileId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerSetting"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("UserSellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfilePortfolioPiece", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "SellerProfile") | ||||||
|  |                         .WithMany("PortfolioPieces") | ||||||
|  |                         .HasForeignKey("SellerProfileId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "SellerProfile") | ||||||
|  |                         .WithMany("SellerServices") | ||||||
|  |                         .HasForeignKey("SellerProfileId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Buyer") | ||||||
|  |                         .WithMany("Orders") | ||||||
|  |                         .HasForeignKey("BuyerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerService", "SellerService") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerServiceId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Buyer"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerService"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessage", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrder", "SellerServiceOrder") | ||||||
|  |                         .WithMany("Messages") | ||||||
|  |                         .HasForeignKey("SellerServiceOrderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Sender") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SenderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrder"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Sender"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessageAttachment", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrderMessage", "SellerServiceOrderMessage") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerServiceOrderMessageId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrderMessage"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderReview", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Reviewer") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("ReviewerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrder", "SellerServiceOrder") | ||||||
|  |                         .WithMany("Reviews") | ||||||
|  |                         .HasForeignKey("SellerServiceOrderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Reviewer"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrder"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "User") | ||||||
|  |                         .WithOne("UserSellerProfile") | ||||||
|  |                         .HasForeignKey("ArtPlatform.Database.Entities.UserSellerProfile", "UserId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("User"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Messages"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Reviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.User", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Orders"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("UserSellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("ConfiguredSettings"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("PortfolioPieces"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServices"); | ||||||
|  |                 }); | ||||||
|  | #pragma warning restore 612, 618 | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										345
									
								
								src/ArtPlatform.Database/Migrations/20240127055416_Initial.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										345
									
								
								src/ArtPlatform.Database/Migrations/20240127055416_Initial.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,345 @@ | |||||||
|  | using System; | ||||||
|  | using Microsoft.EntityFrameworkCore.Migrations; | ||||||
|  | using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; | ||||||
|  | 
 | ||||||
|  | #nullable disable | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database.Migrations | ||||||
|  | { | ||||||
|  |     /// <inheritdoc /> | ||||||
|  |     public partial class Initial : Migration | ||||||
|  |     { | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void Up(MigrationBuilder migrationBuilder) | ||||||
|  |         { | ||||||
|  |             migrationBuilder.CreateTable( | ||||||
|  |                 name: "SellerSettings", | ||||||
|  |                 columns: table => new | ||||||
|  |                 { | ||||||
|  |                     Id = table.Column<int>(type: "integer", nullable: false) | ||||||
|  |                         .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), | ||||||
|  |                     Name = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     Description = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     DefaultValue = table.Column<string>(type: "text", nullable: true) | ||||||
|  |                 }, | ||||||
|  |                 constraints: table => | ||||||
|  |                 { | ||||||
|  |                     table.PrimaryKey("PK_SellerSettings", x => x.Id); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateTable( | ||||||
|  |                 name: "Users", | ||||||
|  |                 columns: table => new | ||||||
|  |                 { | ||||||
|  |                     Id = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     DisplayName = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     Biography = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     Email = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     UserSellerProfileId = table.Column<int>(type: "integer", nullable: true), | ||||||
|  |                     FirstName = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     LastName = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     AddressCountry = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     AddressCity = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     AddressStreet = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     AddressHouseNumber = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     AddressPostalCode = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     AddressRegion = table.Column<string>(type: "text", nullable: false) | ||||||
|  |                 }, | ||||||
|  |                 constraints: table => | ||||||
|  |                 { | ||||||
|  |                     table.PrimaryKey("PK_Users", x => x.Id); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateTable( | ||||||
|  |                 name: "UserSellerProfiles", | ||||||
|  |                 columns: table => new | ||||||
|  |                 { | ||||||
|  |                     Id = table.Column<int>(type: "integer", nullable: false) | ||||||
|  |                         .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), | ||||||
|  |                     UserId = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     AgeRestricted = table.Column<bool>(type: "boolean", nullable: false) | ||||||
|  |                 }, | ||||||
|  |                 constraints: table => | ||||||
|  |                 { | ||||||
|  |                     table.PrimaryKey("PK_UserSellerProfiles", x => x.Id); | ||||||
|  |                     table.ForeignKey( | ||||||
|  |                         name: "FK_UserSellerProfiles_Users_UserId", | ||||||
|  |                         column: x => x.UserId, | ||||||
|  |                         principalTable: "Users", | ||||||
|  |                         principalColumn: "Id", | ||||||
|  |                         onDelete: ReferentialAction.Cascade); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateTable( | ||||||
|  |                 name: "SellerConfiguredSettings", | ||||||
|  |                 columns: table => new | ||||||
|  |                 { | ||||||
|  |                     Id = table.Column<int>(type: "integer", nullable: false) | ||||||
|  |                         .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), | ||||||
|  |                     UserSellerProfileId = table.Column<int>(type: "integer", nullable: false), | ||||||
|  |                     UserSellerSettingId = table.Column<int>(type: "integer", nullable: false), | ||||||
|  |                     SellerSettingId = table.Column<int>(type: "integer", nullable: false) | ||||||
|  |                 }, | ||||||
|  |                 constraints: table => | ||||||
|  |                 { | ||||||
|  |                     table.PrimaryKey("PK_SellerConfiguredSettings", x => x.Id); | ||||||
|  |                     table.ForeignKey( | ||||||
|  |                         name: "FK_SellerConfiguredSettings_SellerSettings_SellerSettingId", | ||||||
|  |                         column: x => x.SellerSettingId, | ||||||
|  |                         principalTable: "SellerSettings", | ||||||
|  |                         principalColumn: "Id", | ||||||
|  |                         onDelete: ReferentialAction.Cascade); | ||||||
|  |                     table.ForeignKey( | ||||||
|  |                         name: "FK_SellerConfiguredSettings_UserSellerProfiles_UserSellerProfi~", | ||||||
|  |                         column: x => x.UserSellerProfileId, | ||||||
|  |                         principalTable: "UserSellerProfiles", | ||||||
|  |                         principalColumn: "Id", | ||||||
|  |                         onDelete: ReferentialAction.Cascade); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateTable( | ||||||
|  |                 name: "SellerProfilePortfolioPieces", | ||||||
|  |                 columns: table => new | ||||||
|  |                 { | ||||||
|  |                     Id = table.Column<int>(type: "integer", nullable: false) | ||||||
|  |                         .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), | ||||||
|  |                     SellerProfileId = table.Column<int>(type: "integer", nullable: false), | ||||||
|  |                     Name = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     Description = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     FileReference = table.Column<string>(type: "text", nullable: true) | ||||||
|  |                 }, | ||||||
|  |                 constraints: table => | ||||||
|  |                 { | ||||||
|  |                     table.PrimaryKey("PK_SellerProfilePortfolioPieces", x => x.Id); | ||||||
|  |                     table.ForeignKey( | ||||||
|  |                         name: "FK_SellerProfilePortfolioPieces_UserSellerProfiles_SellerProfi~", | ||||||
|  |                         column: x => x.SellerProfileId, | ||||||
|  |                         principalTable: "UserSellerProfiles", | ||||||
|  |                         principalColumn: "Id", | ||||||
|  |                         onDelete: ReferentialAction.Cascade); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateTable( | ||||||
|  |                 name: "SellerServices", | ||||||
|  |                 columns: table => new | ||||||
|  |                 { | ||||||
|  |                     Id = table.Column<int>(type: "integer", nullable: false) | ||||||
|  |                         .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), | ||||||
|  |                     SellerProfileId = table.Column<int>(type: "integer", nullable: false), | ||||||
|  |                     Name = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     Description = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     Price = table.Column<decimal>(type: "numeric", nullable: false), | ||||||
|  |                     DepositRequired = table.Column<bool>(type: "boolean", nullable: false), | ||||||
|  |                     DepositAmount = table.Column<decimal>(type: "numeric", nullable: true) | ||||||
|  |                 }, | ||||||
|  |                 constraints: table => | ||||||
|  |                 { | ||||||
|  |                     table.PrimaryKey("PK_SellerServices", x => x.Id); | ||||||
|  |                     table.ForeignKey( | ||||||
|  |                         name: "FK_SellerServices_UserSellerProfiles_SellerProfileId", | ||||||
|  |                         column: x => x.SellerProfileId, | ||||||
|  |                         principalTable: "UserSellerProfiles", | ||||||
|  |                         principalColumn: "Id", | ||||||
|  |                         onDelete: ReferentialAction.Cascade); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateTable( | ||||||
|  |                 name: "SellerServiceOrders", | ||||||
|  |                 columns: table => new | ||||||
|  |                 { | ||||||
|  |                     Id = table.Column<int>(type: "integer", nullable: false) | ||||||
|  |                         .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), | ||||||
|  |                     BuyerId = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     SellerServiceId = table.Column<int>(type: "integer", nullable: false), | ||||||
|  |                     Status = table.Column<int>(type: "integer", nullable: false) | ||||||
|  |                 }, | ||||||
|  |                 constraints: table => | ||||||
|  |                 { | ||||||
|  |                     table.PrimaryKey("PK_SellerServiceOrders", x => x.Id); | ||||||
|  |                     table.ForeignKey( | ||||||
|  |                         name: "FK_SellerServiceOrders_SellerServices_SellerServiceId", | ||||||
|  |                         column: x => x.SellerServiceId, | ||||||
|  |                         principalTable: "SellerServices", | ||||||
|  |                         principalColumn: "Id", | ||||||
|  |                         onDelete: ReferentialAction.Cascade); | ||||||
|  |                     table.ForeignKey( | ||||||
|  |                         name: "FK_SellerServiceOrders_Users_BuyerId", | ||||||
|  |                         column: x => x.BuyerId, | ||||||
|  |                         principalTable: "Users", | ||||||
|  |                         principalColumn: "Id", | ||||||
|  |                         onDelete: ReferentialAction.Cascade); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateTable( | ||||||
|  |                 name: "SellerServiceOrderMessages", | ||||||
|  |                 columns: table => new | ||||||
|  |                 { | ||||||
|  |                     Id = table.Column<int>(type: "integer", nullable: false) | ||||||
|  |                         .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), | ||||||
|  |                     SellerServiceOrderId = table.Column<int>(type: "integer", nullable: false), | ||||||
|  |                     SenderId = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     Message = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     SentAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false) | ||||||
|  |                 }, | ||||||
|  |                 constraints: table => | ||||||
|  |                 { | ||||||
|  |                     table.PrimaryKey("PK_SellerServiceOrderMessages", x => x.Id); | ||||||
|  |                     table.ForeignKey( | ||||||
|  |                         name: "FK_SellerServiceOrderMessages_SellerServiceOrders_SellerServic~", | ||||||
|  |                         column: x => x.SellerServiceOrderId, | ||||||
|  |                         principalTable: "SellerServiceOrders", | ||||||
|  |                         principalColumn: "Id", | ||||||
|  |                         onDelete: ReferentialAction.Cascade); | ||||||
|  |                     table.ForeignKey( | ||||||
|  |                         name: "FK_SellerServiceOrderMessages_Users_SenderId", | ||||||
|  |                         column: x => x.SenderId, | ||||||
|  |                         principalTable: "Users", | ||||||
|  |                         principalColumn: "Id", | ||||||
|  |                         onDelete: ReferentialAction.Cascade); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateTable( | ||||||
|  |                 name: "SellerServiceOrderReviews", | ||||||
|  |                 columns: table => new | ||||||
|  |                 { | ||||||
|  |                     Id = table.Column<int>(type: "integer", nullable: false) | ||||||
|  |                         .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), | ||||||
|  |                     ReviewerId = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     SellerServiceOrderId = table.Column<int>(type: "integer", nullable: false), | ||||||
|  |                     Review = table.Column<string>(type: "text", nullable: true), | ||||||
|  |                     Rating = table.Column<int>(type: "integer", nullable: false) | ||||||
|  |                 }, | ||||||
|  |                 constraints: table => | ||||||
|  |                 { | ||||||
|  |                     table.PrimaryKey("PK_SellerServiceOrderReviews", x => x.Id); | ||||||
|  |                     table.ForeignKey( | ||||||
|  |                         name: "FK_SellerServiceOrderReviews_SellerServiceOrders_SellerService~", | ||||||
|  |                         column: x => x.SellerServiceOrderId, | ||||||
|  |                         principalTable: "SellerServiceOrders", | ||||||
|  |                         principalColumn: "Id", | ||||||
|  |                         onDelete: ReferentialAction.Cascade); | ||||||
|  |                     table.ForeignKey( | ||||||
|  |                         name: "FK_SellerServiceOrderReviews_Users_ReviewerId", | ||||||
|  |                         column: x => x.ReviewerId, | ||||||
|  |                         principalTable: "Users", | ||||||
|  |                         principalColumn: "Id", | ||||||
|  |                         onDelete: ReferentialAction.Cascade); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateTable( | ||||||
|  |                 name: "SellerServiceOrderMessageAttachments", | ||||||
|  |                 columns: table => new | ||||||
|  |                 { | ||||||
|  |                     Id = table.Column<int>(type: "integer", nullable: false) | ||||||
|  |                         .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), | ||||||
|  |                     SellerServiceOrderMessageId = table.Column<int>(type: "integer", nullable: false), | ||||||
|  |                     FileReference = table.Column<string>(type: "text", nullable: false) | ||||||
|  |                 }, | ||||||
|  |                 constraints: table => | ||||||
|  |                 { | ||||||
|  |                     table.PrimaryKey("PK_SellerServiceOrderMessageAttachments", x => x.Id); | ||||||
|  |                     table.ForeignKey( | ||||||
|  |                         name: "FK_SellerServiceOrderMessageAttachments_SellerServiceOrderMess~", | ||||||
|  |                         column: x => x.SellerServiceOrderMessageId, | ||||||
|  |                         principalTable: "SellerServiceOrderMessages", | ||||||
|  |                         principalColumn: "Id", | ||||||
|  |                         onDelete: ReferentialAction.Cascade); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateIndex( | ||||||
|  |                 name: "IX_SellerConfiguredSettings_SellerSettingId", | ||||||
|  |                 table: "SellerConfiguredSettings", | ||||||
|  |                 column: "SellerSettingId"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateIndex( | ||||||
|  |                 name: "IX_SellerConfiguredSettings_UserSellerProfileId", | ||||||
|  |                 table: "SellerConfiguredSettings", | ||||||
|  |                 column: "UserSellerProfileId"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateIndex( | ||||||
|  |                 name: "IX_SellerProfilePortfolioPieces_SellerProfileId", | ||||||
|  |                 table: "SellerProfilePortfolioPieces", | ||||||
|  |                 column: "SellerProfileId"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateIndex( | ||||||
|  |                 name: "IX_SellerServiceOrderMessageAttachments_SellerServiceOrderMess~", | ||||||
|  |                 table: "SellerServiceOrderMessageAttachments", | ||||||
|  |                 column: "SellerServiceOrderMessageId"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateIndex( | ||||||
|  |                 name: "IX_SellerServiceOrderMessages_SellerServiceOrderId", | ||||||
|  |                 table: "SellerServiceOrderMessages", | ||||||
|  |                 column: "SellerServiceOrderId"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateIndex( | ||||||
|  |                 name: "IX_SellerServiceOrderMessages_SenderId", | ||||||
|  |                 table: "SellerServiceOrderMessages", | ||||||
|  |                 column: "SenderId"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateIndex( | ||||||
|  |                 name: "IX_SellerServiceOrderReviews_ReviewerId", | ||||||
|  |                 table: "SellerServiceOrderReviews", | ||||||
|  |                 column: "ReviewerId"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateIndex( | ||||||
|  |                 name: "IX_SellerServiceOrderReviews_SellerServiceOrderId", | ||||||
|  |                 table: "SellerServiceOrderReviews", | ||||||
|  |                 column: "SellerServiceOrderId"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateIndex( | ||||||
|  |                 name: "IX_SellerServiceOrders_BuyerId", | ||||||
|  |                 table: "SellerServiceOrders", | ||||||
|  |                 column: "BuyerId"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateIndex( | ||||||
|  |                 name: "IX_SellerServiceOrders_SellerServiceId", | ||||||
|  |                 table: "SellerServiceOrders", | ||||||
|  |                 column: "SellerServiceId"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateIndex( | ||||||
|  |                 name: "IX_SellerServices_SellerProfileId", | ||||||
|  |                 table: "SellerServices", | ||||||
|  |                 column: "SellerProfileId"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateIndex( | ||||||
|  |                 name: "IX_UserSellerProfiles_UserId", | ||||||
|  |                 table: "UserSellerProfiles", | ||||||
|  |                 column: "UserId", | ||||||
|  |                 unique: true); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void Down(MigrationBuilder migrationBuilder) | ||||||
|  |         { | ||||||
|  |             migrationBuilder.DropTable( | ||||||
|  |                 name: "SellerConfiguredSettings"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.DropTable( | ||||||
|  |                 name: "SellerProfilePortfolioPieces"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.DropTable( | ||||||
|  |                 name: "SellerServiceOrderMessageAttachments"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.DropTable( | ||||||
|  |                 name: "SellerServiceOrderReviews"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.DropTable( | ||||||
|  |                 name: "SellerSettings"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.DropTable( | ||||||
|  |                 name: "SellerServiceOrderMessages"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.DropTable( | ||||||
|  |                 name: "SellerServiceOrders"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.DropTable( | ||||||
|  |                 name: "SellerServices"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.DropTable( | ||||||
|  |                 name: "UserSellerProfiles"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.DropTable( | ||||||
|  |                 name: "Users"); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										415
									
								
								src/ArtPlatform.Database/Migrations/20240127065133_anotherupdate.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										415
									
								
								src/ArtPlatform.Database/Migrations/20240127065133_anotherupdate.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @ -0,0 +1,415 @@ | |||||||
|  | // <auto-generated /> | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using ArtPlatform.Database; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | using Microsoft.EntityFrameworkCore.Infrastructure; | ||||||
|  | using Microsoft.EntityFrameworkCore.Migrations; | ||||||
|  | using Microsoft.EntityFrameworkCore.Storage.ValueConversion; | ||||||
|  | using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; | ||||||
|  | 
 | ||||||
|  | #nullable disable | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database.Migrations | ||||||
|  | { | ||||||
|  |     [DbContext(typeof(ApplicationDbContext))] | ||||||
|  |     [Migration("20240127065133_anotherupdate")] | ||||||
|  |     partial class anotherupdate | ||||||
|  |     { | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void BuildTargetModel(ModelBuilder modelBuilder) | ||||||
|  |         { | ||||||
|  | #pragma warning disable 612, 618 | ||||||
|  |             modelBuilder | ||||||
|  |                 .HasAnnotation("ProductVersion", "8.0.1") | ||||||
|  |                 .HasAnnotation("Relational:MaxIdentifierLength", 63); | ||||||
|  | 
 | ||||||
|  |             NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfilePortfolioPiece", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Description") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FileReference") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Name") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerProfileId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerProfilePortfolioPieces"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<decimal?>("DepositAmount") | ||||||
|  |                         .HasColumnType("numeric"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("DepositRequired") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Description") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Name") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<decimal>("Price") | ||||||
|  |                         .HasColumnType("numeric"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerProfileId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServices"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("BuyerId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("Status") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("BuyerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrders"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessage", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Message") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("SenderId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime>("SentAt") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SenderId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderMessages"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessageAttachment", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FileReference") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderMessageId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderMessageId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderMessageAttachments"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderReview", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("Rating") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Review") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("ReviewerId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("ReviewerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderReviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.User", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<string>("Id") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressCity") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressCountry") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressHouseNumber") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressPostalCode") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressRegion") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressStreet") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Biography") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("DisplayName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Email") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FirstName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("LastName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int?>("UserSellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("Users"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("AgeRestricted") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Biography") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<List<string>>("SocialMediaLinks") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text[]"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("UserId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("UserId") | ||||||
|  |                         .IsUnique(); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("UserSellerProfiles"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfilePortfolioPiece", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "SellerProfile") | ||||||
|  |                         .WithMany("PortfolioPieces") | ||||||
|  |                         .HasForeignKey("SellerProfileId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "SellerProfile") | ||||||
|  |                         .WithMany("SellerServices") | ||||||
|  |                         .HasForeignKey("SellerProfileId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Buyer") | ||||||
|  |                         .WithMany("Orders") | ||||||
|  |                         .HasForeignKey("BuyerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerService", "SellerService") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerServiceId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Buyer"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerService"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessage", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrder", "SellerServiceOrder") | ||||||
|  |                         .WithMany("Messages") | ||||||
|  |                         .HasForeignKey("SellerServiceOrderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Sender") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SenderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrder"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Sender"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessageAttachment", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrderMessage", "SellerServiceOrderMessage") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerServiceOrderMessageId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrderMessage"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderReview", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Reviewer") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("ReviewerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrder", "SellerServiceOrder") | ||||||
|  |                         .WithMany("Reviews") | ||||||
|  |                         .HasForeignKey("SellerServiceOrderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Reviewer"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrder"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "User") | ||||||
|  |                         .WithOne("UserSellerProfile") | ||||||
|  |                         .HasForeignKey("ArtPlatform.Database.Entities.UserSellerProfile", "UserId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("User"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Messages"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Reviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.User", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Orders"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("UserSellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("PortfolioPieces"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServices"); | ||||||
|  |                 }); | ||||||
|  | #pragma warning restore 612, 618 | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,99 @@ | |||||||
|  | using System.Collections.Generic; | ||||||
|  | using Microsoft.EntityFrameworkCore.Migrations; | ||||||
|  | using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; | ||||||
|  | 
 | ||||||
|  | #nullable disable | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database.Migrations | ||||||
|  | { | ||||||
|  |     /// <inheritdoc /> | ||||||
|  |     public partial class anotherupdate : Migration | ||||||
|  |     { | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void Up(MigrationBuilder migrationBuilder) | ||||||
|  |         { | ||||||
|  |             migrationBuilder.DropTable( | ||||||
|  |                 name: "SellerConfiguredSettings"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.DropTable( | ||||||
|  |                 name: "SellerSettings"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.AddColumn<string>( | ||||||
|  |                 name: "Biography", | ||||||
|  |                 table: "UserSellerProfiles", | ||||||
|  |                 type: "text", | ||||||
|  |                 nullable: false, | ||||||
|  |                 defaultValue: ""); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.AddColumn<List<string>>( | ||||||
|  |                 name: "SocialMediaLinks", | ||||||
|  |                 table: "UserSellerProfiles", | ||||||
|  |                 type: "text[]", | ||||||
|  |                 nullable: false); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void Down(MigrationBuilder migrationBuilder) | ||||||
|  |         { | ||||||
|  |             migrationBuilder.DropColumn( | ||||||
|  |                 name: "Biography", | ||||||
|  |                 table: "UserSellerProfiles"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.DropColumn( | ||||||
|  |                 name: "SocialMediaLinks", | ||||||
|  |                 table: "UserSellerProfiles"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateTable( | ||||||
|  |                 name: "SellerSettings", | ||||||
|  |                 columns: table => new | ||||||
|  |                 { | ||||||
|  |                     Id = table.Column<int>(type: "integer", nullable: false) | ||||||
|  |                         .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), | ||||||
|  |                     DefaultValue = table.Column<string>(type: "text", nullable: true), | ||||||
|  |                     Description = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     Name = table.Column<string>(type: "text", nullable: false) | ||||||
|  |                 }, | ||||||
|  |                 constraints: table => | ||||||
|  |                 { | ||||||
|  |                     table.PrimaryKey("PK_SellerSettings", x => x.Id); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateTable( | ||||||
|  |                 name: "SellerConfiguredSettings", | ||||||
|  |                 columns: table => new | ||||||
|  |                 { | ||||||
|  |                     Id = table.Column<int>(type: "integer", nullable: false) | ||||||
|  |                         .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), | ||||||
|  |                     SellerSettingId = table.Column<int>(type: "integer", nullable: false), | ||||||
|  |                     UserSellerProfileId = table.Column<int>(type: "integer", nullable: false), | ||||||
|  |                     UserSellerSettingId = table.Column<int>(type: "integer", nullable: false) | ||||||
|  |                 }, | ||||||
|  |                 constraints: table => | ||||||
|  |                 { | ||||||
|  |                     table.PrimaryKey("PK_SellerConfiguredSettings", x => x.Id); | ||||||
|  |                     table.ForeignKey( | ||||||
|  |                         name: "FK_SellerConfiguredSettings_SellerSettings_SellerSettingId", | ||||||
|  |                         column: x => x.SellerSettingId, | ||||||
|  |                         principalTable: "SellerSettings", | ||||||
|  |                         principalColumn: "Id", | ||||||
|  |                         onDelete: ReferentialAction.Cascade); | ||||||
|  |                     table.ForeignKey( | ||||||
|  |                         name: "FK_SellerConfiguredSettings_UserSellerProfiles_UserSellerProfi~", | ||||||
|  |                         column: x => x.UserSellerProfileId, | ||||||
|  |                         principalTable: "UserSellerProfiles", | ||||||
|  |                         principalColumn: "Id", | ||||||
|  |                         onDelete: ReferentialAction.Cascade); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateIndex( | ||||||
|  |                 name: "IX_SellerConfiguredSettings_SellerSettingId", | ||||||
|  |                 table: "SellerConfiguredSettings", | ||||||
|  |                 column: "SellerSettingId"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateIndex( | ||||||
|  |                 name: "IX_SellerConfiguredSettings_UserSellerProfileId", | ||||||
|  |                 table: "SellerConfiguredSettings", | ||||||
|  |                 column: "UserSellerProfileId"); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										451
									
								
								src/ArtPlatform.Database/Migrations/20240127071156_updateagainn.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										451
									
								
								src/ArtPlatform.Database/Migrations/20240127071156_updateagainn.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @ -0,0 +1,451 @@ | |||||||
|  | // <auto-generated /> | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using ArtPlatform.Database; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | using Microsoft.EntityFrameworkCore.Infrastructure; | ||||||
|  | using Microsoft.EntityFrameworkCore.Migrations; | ||||||
|  | using Microsoft.EntityFrameworkCore.Storage.ValueConversion; | ||||||
|  | using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; | ||||||
|  | 
 | ||||||
|  | #nullable disable | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database.Migrations | ||||||
|  | { | ||||||
|  |     [DbContext(typeof(ApplicationDbContext))] | ||||||
|  |     [Migration("20240127071156_updateagainn")] | ||||||
|  |     partial class updateagainn | ||||||
|  |     { | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void BuildTargetModel(ModelBuilder modelBuilder) | ||||||
|  |         { | ||||||
|  | #pragma warning disable 612, 618 | ||||||
|  |             modelBuilder | ||||||
|  |                 .HasAnnotation("ProductVersion", "8.0.1") | ||||||
|  |                 .HasAnnotation("Relational:MaxIdentifierLength", 63); | ||||||
|  | 
 | ||||||
|  |             NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfilePortfolioPiece", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Description") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FileReference") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Name") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerProfileId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerProfilePortfolioPieces"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfileRequest", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("Accepted") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime>("RequestDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("UserId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("UserId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerProfileRequests"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<decimal?>("DepositAmount") | ||||||
|  |                         .HasColumnType("numeric"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("DepositRequired") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Description") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Name") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<decimal>("Price") | ||||||
|  |                         .HasColumnType("numeric"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerProfileId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServices"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("BuyerId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("Status") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("BuyerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrders"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessage", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Message") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("SenderId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime>("SentAt") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SenderId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderMessages"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessageAttachment", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FileReference") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderMessageId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderMessageId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderMessageAttachments"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderReview", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("Rating") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Review") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("ReviewerId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("ReviewerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderReviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.User", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<string>("Id") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressCity") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressCountry") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressHouseNumber") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressPostalCode") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressRegion") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressStreet") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Biography") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("DisplayName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Email") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FirstName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("LastName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int?>("UserSellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("Users"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("AgeRestricted") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Biography") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<List<string>>("SocialMediaLinks") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text[]"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("UserId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("UserId") | ||||||
|  |                         .IsUnique(); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("UserSellerProfiles"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfilePortfolioPiece", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "SellerProfile") | ||||||
|  |                         .WithMany("PortfolioPieces") | ||||||
|  |                         .HasForeignKey("SellerProfileId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfileRequest", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "User") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("UserId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("User"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "SellerProfile") | ||||||
|  |                         .WithMany("SellerServices") | ||||||
|  |                         .HasForeignKey("SellerProfileId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Buyer") | ||||||
|  |                         .WithMany("Orders") | ||||||
|  |                         .HasForeignKey("BuyerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerService", "SellerService") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerServiceId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Buyer"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerService"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessage", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrder", "SellerServiceOrder") | ||||||
|  |                         .WithMany("Messages") | ||||||
|  |                         .HasForeignKey("SellerServiceOrderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Sender") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SenderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrder"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Sender"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessageAttachment", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrderMessage", "SellerServiceOrderMessage") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerServiceOrderMessageId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrderMessage"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderReview", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Reviewer") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("ReviewerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrder", "SellerServiceOrder") | ||||||
|  |                         .WithMany("Reviews") | ||||||
|  |                         .HasForeignKey("SellerServiceOrderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Reviewer"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrder"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "User") | ||||||
|  |                         .WithOne("UserSellerProfile") | ||||||
|  |                         .HasForeignKey("ArtPlatform.Database.Entities.UserSellerProfile", "UserId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("User"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Messages"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Reviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.User", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Orders"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("UserSellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("PortfolioPieces"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServices"); | ||||||
|  |                 }); | ||||||
|  | #pragma warning restore 612, 618 | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,49 @@ | |||||||
|  | using System; | ||||||
|  | using Microsoft.EntityFrameworkCore.Migrations; | ||||||
|  | using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; | ||||||
|  | 
 | ||||||
|  | #nullable disable | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database.Migrations | ||||||
|  | { | ||||||
|  |     /// <inheritdoc /> | ||||||
|  |     public partial class updateagainn : Migration | ||||||
|  |     { | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void Up(MigrationBuilder migrationBuilder) | ||||||
|  |         { | ||||||
|  |             migrationBuilder.CreateTable( | ||||||
|  |                 name: "SellerProfileRequests", | ||||||
|  |                 columns: table => new | ||||||
|  |                 { | ||||||
|  |                     Id = table.Column<int>(type: "integer", nullable: false) | ||||||
|  |                         .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), | ||||||
|  |                     UserId = table.Column<string>(type: "text", nullable: false), | ||||||
|  |                     RequestDate = table.Column<DateTime>(type: "timestamp with time zone", nullable: false), | ||||||
|  |                     Accepted = table.Column<bool>(type: "boolean", nullable: false) | ||||||
|  |                 }, | ||||||
|  |                 constraints: table => | ||||||
|  |                 { | ||||||
|  |                     table.PrimaryKey("PK_SellerProfileRequests", x => x.Id); | ||||||
|  |                     table.ForeignKey( | ||||||
|  |                         name: "FK_SellerProfileRequests_Users_UserId", | ||||||
|  |                         column: x => x.UserId, | ||||||
|  |                         principalTable: "Users", | ||||||
|  |                         principalColumn: "Id", | ||||||
|  |                         onDelete: ReferentialAction.Cascade); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateIndex( | ||||||
|  |                 name: "IX_SellerProfileRequests_UserId", | ||||||
|  |                 table: "SellerProfileRequests", | ||||||
|  |                 column: "UserId"); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void Down(MigrationBuilder migrationBuilder) | ||||||
|  |         { | ||||||
|  |             migrationBuilder.DropTable( | ||||||
|  |                 name: "SellerProfileRequests"); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										454
									
								
								src/ArtPlatform.Database/Migrations/20240127072659_updatesss.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										454
									
								
								src/ArtPlatform.Database/Migrations/20240127072659_updatesss.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @ -0,0 +1,454 @@ | |||||||
|  | // <auto-generated /> | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using ArtPlatform.Database; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | using Microsoft.EntityFrameworkCore.Infrastructure; | ||||||
|  | using Microsoft.EntityFrameworkCore.Migrations; | ||||||
|  | using Microsoft.EntityFrameworkCore.Storage.ValueConversion; | ||||||
|  | using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; | ||||||
|  | 
 | ||||||
|  | #nullable disable | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database.Migrations | ||||||
|  | { | ||||||
|  |     [DbContext(typeof(ApplicationDbContext))] | ||||||
|  |     [Migration("20240127072659_updatesss")] | ||||||
|  |     partial class updatesss | ||||||
|  |     { | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void BuildTargetModel(ModelBuilder modelBuilder) | ||||||
|  |         { | ||||||
|  | #pragma warning disable 612, 618 | ||||||
|  |             modelBuilder | ||||||
|  |                 .HasAnnotation("ProductVersion", "8.0.1") | ||||||
|  |                 .HasAnnotation("Relational:MaxIdentifierLength", 63); | ||||||
|  | 
 | ||||||
|  |             NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfilePortfolioPiece", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Description") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FileReference") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Name") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerProfileId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerProfilePortfolioPieces"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfileRequest", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("Accepted") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime?>("AcceptedDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime>("RequestDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("UserId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("UserId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerProfileRequests"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<decimal?>("DepositAmount") | ||||||
|  |                         .HasColumnType("numeric"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("DepositRequired") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Description") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Name") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<decimal>("Price") | ||||||
|  |                         .HasColumnType("numeric"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerProfileId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServices"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("BuyerId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("Status") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("BuyerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrders"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessage", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Message") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("SenderId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime>("SentAt") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SenderId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderMessages"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessageAttachment", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FileReference") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderMessageId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderMessageId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderMessageAttachments"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderReview", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("Rating") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Review") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("ReviewerId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("ReviewerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderReviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.User", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<string>("Id") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressCity") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressCountry") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressHouseNumber") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressPostalCode") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressRegion") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressStreet") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Biography") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("DisplayName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Email") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FirstName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("LastName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int?>("UserSellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("Users"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("AgeRestricted") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Biography") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<List<string>>("SocialMediaLinks") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text[]"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("UserId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("UserId") | ||||||
|  |                         .IsUnique(); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("UserSellerProfiles"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfilePortfolioPiece", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "SellerProfile") | ||||||
|  |                         .WithMany("PortfolioPieces") | ||||||
|  |                         .HasForeignKey("SellerProfileId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfileRequest", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "User") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("UserId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("User"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "SellerProfile") | ||||||
|  |                         .WithMany("SellerServices") | ||||||
|  |                         .HasForeignKey("SellerProfileId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Buyer") | ||||||
|  |                         .WithMany("Orders") | ||||||
|  |                         .HasForeignKey("BuyerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerService", "SellerService") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerServiceId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Buyer"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerService"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessage", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrder", "SellerServiceOrder") | ||||||
|  |                         .WithMany("Messages") | ||||||
|  |                         .HasForeignKey("SellerServiceOrderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Sender") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SenderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrder"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Sender"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessageAttachment", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrderMessage", "SellerServiceOrderMessage") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerServiceOrderMessageId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrderMessage"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderReview", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Reviewer") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("ReviewerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrder", "SellerServiceOrder") | ||||||
|  |                         .WithMany("Reviews") | ||||||
|  |                         .HasForeignKey("SellerServiceOrderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Reviewer"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrder"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "User") | ||||||
|  |                         .WithOne("UserSellerProfile") | ||||||
|  |                         .HasForeignKey("ArtPlatform.Database.Entities.UserSellerProfile", "UserId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("User"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Messages"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Reviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.User", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Orders"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("UserSellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("PortfolioPieces"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServices"); | ||||||
|  |                 }); | ||||||
|  | #pragma warning restore 612, 618 | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,29 @@ | |||||||
|  | using System; | ||||||
|  | using Microsoft.EntityFrameworkCore.Migrations; | ||||||
|  | 
 | ||||||
|  | #nullable disable | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database.Migrations | ||||||
|  | { | ||||||
|  |     /// <inheritdoc /> | ||||||
|  |     public partial class updatesss : Migration | ||||||
|  |     { | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void Up(MigrationBuilder migrationBuilder) | ||||||
|  |         { | ||||||
|  |             migrationBuilder.AddColumn<DateTime>( | ||||||
|  |                 name: "AcceptedDate", | ||||||
|  |                 table: "SellerProfileRequests", | ||||||
|  |                 type: "timestamp with time zone", | ||||||
|  |                 nullable: true); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void Down(MigrationBuilder migrationBuilder) | ||||||
|  |         { | ||||||
|  |             migrationBuilder.DropColumn( | ||||||
|  |                 name: "AcceptedDate", | ||||||
|  |                 table: "SellerProfileRequests"); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										467
									
								
								src/ArtPlatform.Database/Migrations/20240127075103_updatess.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										467
									
								
								src/ArtPlatform.Database/Migrations/20240127075103_updatess.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @ -0,0 +1,467 @@ | |||||||
|  | // <auto-generated /> | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using ArtPlatform.Database; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | using Microsoft.EntityFrameworkCore.Infrastructure; | ||||||
|  | using Microsoft.EntityFrameworkCore.Migrations; | ||||||
|  | using Microsoft.EntityFrameworkCore.Storage.ValueConversion; | ||||||
|  | using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; | ||||||
|  | 
 | ||||||
|  | #nullable disable | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database.Migrations | ||||||
|  | { | ||||||
|  |     [DbContext(typeof(ApplicationDbContext))] | ||||||
|  |     [Migration("20240127075103_updatess")] | ||||||
|  |     partial class updatess | ||||||
|  |     { | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void BuildTargetModel(ModelBuilder modelBuilder) | ||||||
|  |         { | ||||||
|  | #pragma warning disable 612, 618 | ||||||
|  |             modelBuilder | ||||||
|  |                 .HasAnnotation("ProductVersion", "8.0.1") | ||||||
|  |                 .HasAnnotation("Relational:MaxIdentifierLength", 63); | ||||||
|  | 
 | ||||||
|  |             NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfilePortfolioPiece", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Description") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FileReference") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Name") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerProfileId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerProfilePortfolioPieces"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfileRequest", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("Accepted") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime?>("AcceptedDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime>("RequestDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("UserId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("UserId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerProfileRequests"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<decimal?>("DepositAmount") | ||||||
|  |                         .HasColumnType("numeric"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("DepositRequired") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Description") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Name") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<decimal>("Price") | ||||||
|  |                         .HasColumnType("numeric"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerProfileId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServices"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("BuyerId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("Status") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("BuyerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrders"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessage", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Message") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("SenderId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime>("SentAt") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SenderId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderMessages"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessageAttachment", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FileReference") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderMessageId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderMessageId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderMessageAttachments"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderReview", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("Rating") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Review") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("ReviewerId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("ReviewerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderReviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.User", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<string>("Id") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressCity") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressCountry") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressHouseNumber") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressPostalCode") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressRegion") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressStreet") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Biography") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("DisplayName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Email") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FirstName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("LastName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int?>("UserSellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("Users"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("AgeRestricted") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Biography") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<List<string>>("SocialMediaLinks") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text[]"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("UserId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("UserId") | ||||||
|  |                         .IsUnique(); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("UserSellerProfiles"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfilePortfolioPiece", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "SellerProfile") | ||||||
|  |                         .WithMany("PortfolioPieces") | ||||||
|  |                         .HasForeignKey("SellerProfileId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfileRequest", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "User") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("UserId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("User"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "SellerProfile") | ||||||
|  |                         .WithMany("SellerServices") | ||||||
|  |                         .HasForeignKey("SellerProfileId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Buyer") | ||||||
|  |                         .WithMany("Orders") | ||||||
|  |                         .HasForeignKey("BuyerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerService", "SellerService") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerServiceId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Buyer"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerService"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessage", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrder", "SellerServiceOrder") | ||||||
|  |                         .WithMany("Messages") | ||||||
|  |                         .HasForeignKey("SellerServiceOrderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Sender") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SenderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrder"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Sender"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessageAttachment", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrderMessage", "SellerServiceOrderMessage") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerServiceOrderMessageId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrderMessage"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderReview", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Reviewer") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("ReviewerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerService", "SellerService") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerServiceId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrder", "SellerServiceOrder") | ||||||
|  |                         .WithMany("Reviews") | ||||||
|  |                         .HasForeignKey("SellerServiceOrderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Reviewer"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerService"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrder"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "User") | ||||||
|  |                         .WithOne("UserSellerProfile") | ||||||
|  |                         .HasForeignKey("ArtPlatform.Database.Entities.UserSellerProfile", "UserId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("User"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Messages"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Reviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.User", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Orders"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("UserSellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("PortfolioPieces"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServices"); | ||||||
|  |                 }); | ||||||
|  | #pragma warning restore 612, 618 | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,50 @@ | |||||||
|  | using Microsoft.EntityFrameworkCore.Migrations; | ||||||
|  | 
 | ||||||
|  | #nullable disable | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database.Migrations | ||||||
|  | { | ||||||
|  |     /// <inheritdoc /> | ||||||
|  |     public partial class updatess : Migration | ||||||
|  |     { | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void Up(MigrationBuilder migrationBuilder) | ||||||
|  |         { | ||||||
|  |             migrationBuilder.AddColumn<int>( | ||||||
|  |                 name: "SellerServiceId", | ||||||
|  |                 table: "SellerServiceOrderReviews", | ||||||
|  |                 type: "integer", | ||||||
|  |                 nullable: false, | ||||||
|  |                 defaultValue: 0); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateIndex( | ||||||
|  |                 name: "IX_SellerServiceOrderReviews_SellerServiceId", | ||||||
|  |                 table: "SellerServiceOrderReviews", | ||||||
|  |                 column: "SellerServiceId"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.AddForeignKey( | ||||||
|  |                 name: "FK_SellerServiceOrderReviews_SellerServices_SellerServiceId", | ||||||
|  |                 table: "SellerServiceOrderReviews", | ||||||
|  |                 column: "SellerServiceId", | ||||||
|  |                 principalTable: "SellerServices", | ||||||
|  |                 principalColumn: "Id", | ||||||
|  |                 onDelete: ReferentialAction.Cascade); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void Down(MigrationBuilder migrationBuilder) | ||||||
|  |         { | ||||||
|  |             migrationBuilder.DropForeignKey( | ||||||
|  |                 name: "FK_SellerServiceOrderReviews_SellerServices_SellerServiceId", | ||||||
|  |                 table: "SellerServiceOrderReviews"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.DropIndex( | ||||||
|  |                 name: "IX_SellerServiceOrderReviews_SellerServiceId", | ||||||
|  |                 table: "SellerServiceOrderReviews"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.DropColumn( | ||||||
|  |                 name: "SellerServiceId", | ||||||
|  |                 table: "SellerServiceOrderReviews"); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										466
									
								
								src/ArtPlatform.Database/Migrations/20240127080610_lmaomore.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										466
									
								
								src/ArtPlatform.Database/Migrations/20240127080610_lmaomore.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @ -0,0 +1,466 @@ | |||||||
|  | // <auto-generated /> | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using ArtPlatform.Database; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | using Microsoft.EntityFrameworkCore.Infrastructure; | ||||||
|  | using Microsoft.EntityFrameworkCore.Migrations; | ||||||
|  | using Microsoft.EntityFrameworkCore.Storage.ValueConversion; | ||||||
|  | using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; | ||||||
|  | 
 | ||||||
|  | #nullable disable | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database.Migrations | ||||||
|  | { | ||||||
|  |     [DbContext(typeof(ApplicationDbContext))] | ||||||
|  |     [Migration("20240127080610_lmaomore")] | ||||||
|  |     partial class lmaomore | ||||||
|  |     { | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void BuildTargetModel(ModelBuilder modelBuilder) | ||||||
|  |         { | ||||||
|  | #pragma warning disable 612, 618 | ||||||
|  |             modelBuilder | ||||||
|  |                 .HasAnnotation("ProductVersion", "8.0.1") | ||||||
|  |                 .HasAnnotation("Relational:MaxIdentifierLength", 63); | ||||||
|  | 
 | ||||||
|  |             NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfilePortfolioPiece", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Description") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FileReference") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Name") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerProfileId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerProfilePortfolioPieces"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfileRequest", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("Accepted") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime?>("AcceptedDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime>("RequestDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("UserId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("UserId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerProfileRequests"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Description") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Name") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<decimal>("Price") | ||||||
|  |                         .HasColumnType("numeric"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerProfileId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServices"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("BuyerId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("Status") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("BuyerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrders"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessage", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Message") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("SenderId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime>("SentAt") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SenderId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderMessages"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessageAttachment", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FileReference") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderMessageId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderMessageId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderMessageAttachments"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderReview", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("Rating") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Review") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("ReviewerId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("ReviewerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderReviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.User", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<string>("Id") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressCity") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressCountry") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressHouseNumber") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressPostalCode") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressRegion") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressStreet") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Biography") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("DisplayName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Email") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FirstName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("LastName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int?>("UserSellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("Users"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("AgeRestricted") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Biography") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<List<string>>("SocialMediaLinks") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text[]"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("UserId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("UserId") | ||||||
|  |                         .IsUnique(); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("UserSellerProfiles"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfilePortfolioPiece", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "SellerProfile") | ||||||
|  |                         .WithMany("PortfolioPieces") | ||||||
|  |                         .HasForeignKey("SellerProfileId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfileRequest", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "User") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("UserId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("User"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "SellerProfile") | ||||||
|  |                         .WithMany("SellerServices") | ||||||
|  |                         .HasForeignKey("SellerProfileId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Buyer") | ||||||
|  |                         .WithMany("Orders") | ||||||
|  |                         .HasForeignKey("BuyerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerService", "SellerService") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerServiceId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Buyer"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerService"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessage", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrder", "SellerServiceOrder") | ||||||
|  |                         .WithMany("Messages") | ||||||
|  |                         .HasForeignKey("SellerServiceOrderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Sender") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SenderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrder"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Sender"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessageAttachment", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrderMessage", "SellerServiceOrderMessage") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerServiceOrderMessageId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrderMessage"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderReview", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Reviewer") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("ReviewerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerService", "SellerService") | ||||||
|  |                         .WithMany("Reviews") | ||||||
|  |                         .HasForeignKey("SellerServiceId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrder", "SellerServiceOrder") | ||||||
|  |                         .WithMany("Reviews") | ||||||
|  |                         .HasForeignKey("SellerServiceOrderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Reviewer"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerService"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrder"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "User") | ||||||
|  |                         .WithOne("UserSellerProfile") | ||||||
|  |                         .HasForeignKey("ArtPlatform.Database.Entities.UserSellerProfile", "UserId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("User"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Reviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Messages"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Reviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.User", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Orders"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("UserSellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("PortfolioPieces"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServices"); | ||||||
|  |                 }); | ||||||
|  | #pragma warning restore 612, 618 | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,39 @@ | |||||||
|  | using Microsoft.EntityFrameworkCore.Migrations; | ||||||
|  | 
 | ||||||
|  | #nullable disable | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database.Migrations | ||||||
|  | { | ||||||
|  |     /// <inheritdoc /> | ||||||
|  |     public partial class lmaomore : Migration | ||||||
|  |     { | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void Up(MigrationBuilder migrationBuilder) | ||||||
|  |         { | ||||||
|  |             migrationBuilder.DropColumn( | ||||||
|  |                 name: "DepositAmount", | ||||||
|  |                 table: "SellerServices"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.DropColumn( | ||||||
|  |                 name: "DepositRequired", | ||||||
|  |                 table: "SellerServices"); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void Down(MigrationBuilder migrationBuilder) | ||||||
|  |         { | ||||||
|  |             migrationBuilder.AddColumn<decimal>( | ||||||
|  |                 name: "DepositAmount", | ||||||
|  |                 table: "SellerServices", | ||||||
|  |                 type: "numeric", | ||||||
|  |                 nullable: true); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.AddColumn<bool>( | ||||||
|  |                 name: "DepositRequired", | ||||||
|  |                 table: "SellerServices", | ||||||
|  |                 type: "boolean", | ||||||
|  |                 nullable: false, | ||||||
|  |                 defaultValue: false); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										488
									
								
								src/ArtPlatform.Database/Migrations/20240127091953_enddate.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										488
									
								
								src/ArtPlatform.Database/Migrations/20240127091953_enddate.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @ -0,0 +1,488 @@ | |||||||
|  | // <auto-generated /> | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using ArtPlatform.Database; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | using Microsoft.EntityFrameworkCore.Infrastructure; | ||||||
|  | using Microsoft.EntityFrameworkCore.Migrations; | ||||||
|  | using Microsoft.EntityFrameworkCore.Storage.ValueConversion; | ||||||
|  | using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; | ||||||
|  | 
 | ||||||
|  | #nullable disable | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database.Migrations | ||||||
|  | { | ||||||
|  |     [DbContext(typeof(ApplicationDbContext))] | ||||||
|  |     [Migration("20240127091953_enddate")] | ||||||
|  |     partial class enddate | ||||||
|  |     { | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void BuildTargetModel(ModelBuilder modelBuilder) | ||||||
|  |         { | ||||||
|  | #pragma warning disable 612, 618 | ||||||
|  |             modelBuilder | ||||||
|  |                 .HasAnnotation("ProductVersion", "8.0.1") | ||||||
|  |                 .HasAnnotation("Relational:MaxIdentifierLength", 63); | ||||||
|  | 
 | ||||||
|  |             NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfilePortfolioPiece", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Description") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FileReference") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Name") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerProfileId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerProfilePortfolioPieces"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfileRequest", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("Accepted") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime?>("AcceptedDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime>("RequestDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("UserId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("UserId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerProfileRequests"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Description") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Name") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<double>("Price") | ||||||
|  |                         .HasColumnType("double precision"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerProfileId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServices"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("BuyerId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime>("CreatedDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime?>("EndDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<double>("Price") | ||||||
|  |                         .HasColumnType("double precision"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("Status") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("BuyerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrders"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessage", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Message") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("SenderId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime>("SentAt") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SenderId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderMessages"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessageAttachment", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FileReference") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderMessageId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderMessageId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderMessageAttachments"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderReview", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("Rating") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Review") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("ReviewerId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("ReviewerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderReviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.User", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<string>("Id") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressCity") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressCountry") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressHouseNumber") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressPostalCode") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressRegion") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressStreet") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Biography") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("DisplayName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Email") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FirstName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("LastName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int?>("UserSellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("Users"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("AgeRestricted") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Biography") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<List<string>>("SocialMediaLinks") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text[]"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("UserId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("UserId") | ||||||
|  |                         .IsUnique(); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("UserSellerProfiles"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfilePortfolioPiece", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "SellerProfile") | ||||||
|  |                         .WithMany("PortfolioPieces") | ||||||
|  |                         .HasForeignKey("SellerProfileId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfileRequest", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "User") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("UserId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("User"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "SellerProfile") | ||||||
|  |                         .WithMany("SellerServices") | ||||||
|  |                         .HasForeignKey("SellerProfileId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Buyer") | ||||||
|  |                         .WithMany("Orders") | ||||||
|  |                         .HasForeignKey("BuyerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "Seller") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerService", "SellerService") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerServiceId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Buyer"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Seller"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerService"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessage", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrder", "SellerServiceOrder") | ||||||
|  |                         .WithMany("Messages") | ||||||
|  |                         .HasForeignKey("SellerServiceOrderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Sender") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SenderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrder"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Sender"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessageAttachment", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrderMessage", "SellerServiceOrderMessage") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerServiceOrderMessageId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrderMessage"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderReview", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Reviewer") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("ReviewerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerService", "SellerService") | ||||||
|  |                         .WithMany("Reviews") | ||||||
|  |                         .HasForeignKey("SellerServiceId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrder", "SellerServiceOrder") | ||||||
|  |                         .WithMany("Reviews") | ||||||
|  |                         .HasForeignKey("SellerServiceOrderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Reviewer"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerService"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrder"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "User") | ||||||
|  |                         .WithOne("UserSellerProfile") | ||||||
|  |                         .HasForeignKey("ArtPlatform.Database.Entities.UserSellerProfile", "UserId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("User"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Reviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Messages"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Reviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.User", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Orders"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("UserSellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("PortfolioPieces"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServices"); | ||||||
|  |                 }); | ||||||
|  | #pragma warning restore 612, 618 | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,99 @@ | |||||||
|  | using System; | ||||||
|  | using Microsoft.EntityFrameworkCore.Migrations; | ||||||
|  | 
 | ||||||
|  | #nullable disable | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database.Migrations | ||||||
|  | { | ||||||
|  |     /// <inheritdoc /> | ||||||
|  |     public partial class enddate : Migration | ||||||
|  |     { | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void Up(MigrationBuilder migrationBuilder) | ||||||
|  |         { | ||||||
|  |             migrationBuilder.AlterColumn<double>( | ||||||
|  |                 name: "Price", | ||||||
|  |                 table: "SellerServices", | ||||||
|  |                 type: "double precision", | ||||||
|  |                 nullable: false, | ||||||
|  |                 oldClrType: typeof(decimal), | ||||||
|  |                 oldType: "numeric"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.AddColumn<DateTime>( | ||||||
|  |                 name: "CreatedDate", | ||||||
|  |                 table: "SellerServiceOrders", | ||||||
|  |                 type: "timestamp with time zone", | ||||||
|  |                 nullable: false, | ||||||
|  |                 defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.AddColumn<DateTime>( | ||||||
|  |                 name: "EndDate", | ||||||
|  |                 table: "SellerServiceOrders", | ||||||
|  |                 type: "timestamp with time zone", | ||||||
|  |                 nullable: true); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.AddColumn<double>( | ||||||
|  |                 name: "Price", | ||||||
|  |                 table: "SellerServiceOrders", | ||||||
|  |                 type: "double precision", | ||||||
|  |                 nullable: false, | ||||||
|  |                 defaultValue: 0.0); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.AddColumn<int>( | ||||||
|  |                 name: "SellerId", | ||||||
|  |                 table: "SellerServiceOrders", | ||||||
|  |                 type: "integer", | ||||||
|  |                 nullable: false, | ||||||
|  |                 defaultValue: 0); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.CreateIndex( | ||||||
|  |                 name: "IX_SellerServiceOrders_SellerId", | ||||||
|  |                 table: "SellerServiceOrders", | ||||||
|  |                 column: "SellerId"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.AddForeignKey( | ||||||
|  |                 name: "FK_SellerServiceOrders_UserSellerProfiles_SellerId", | ||||||
|  |                 table: "SellerServiceOrders", | ||||||
|  |                 column: "SellerId", | ||||||
|  |                 principalTable: "UserSellerProfiles", | ||||||
|  |                 principalColumn: "Id", | ||||||
|  |                 onDelete: ReferentialAction.Cascade); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void Down(MigrationBuilder migrationBuilder) | ||||||
|  |         { | ||||||
|  |             migrationBuilder.DropForeignKey( | ||||||
|  |                 name: "FK_SellerServiceOrders_UserSellerProfiles_SellerId", | ||||||
|  |                 table: "SellerServiceOrders"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.DropIndex( | ||||||
|  |                 name: "IX_SellerServiceOrders_SellerId", | ||||||
|  |                 table: "SellerServiceOrders"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.DropColumn( | ||||||
|  |                 name: "CreatedDate", | ||||||
|  |                 table: "SellerServiceOrders"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.DropColumn( | ||||||
|  |                 name: "EndDate", | ||||||
|  |                 table: "SellerServiceOrders"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.DropColumn( | ||||||
|  |                 name: "Price", | ||||||
|  |                 table: "SellerServiceOrders"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.DropColumn( | ||||||
|  |                 name: "SellerId", | ||||||
|  |                 table: "SellerServiceOrders"); | ||||||
|  | 
 | ||||||
|  |             migrationBuilder.AlterColumn<decimal>( | ||||||
|  |                 name: "Price", | ||||||
|  |                 table: "SellerServices", | ||||||
|  |                 type: "numeric", | ||||||
|  |                 nullable: false, | ||||||
|  |                 oldClrType: typeof(double), | ||||||
|  |                 oldType: "double precision"); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										491
									
								
								src/ArtPlatform.Database/Migrations/20240127092417_terms.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										491
									
								
								src/ArtPlatform.Database/Migrations/20240127092417_terms.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @ -0,0 +1,491 @@ | |||||||
|  | // <auto-generated /> | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using ArtPlatform.Database; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | using Microsoft.EntityFrameworkCore.Infrastructure; | ||||||
|  | using Microsoft.EntityFrameworkCore.Migrations; | ||||||
|  | using Microsoft.EntityFrameworkCore.Storage.ValueConversion; | ||||||
|  | using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; | ||||||
|  | 
 | ||||||
|  | #nullable disable | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database.Migrations | ||||||
|  | { | ||||||
|  |     [DbContext(typeof(ApplicationDbContext))] | ||||||
|  |     [Migration("20240127092417_terms")] | ||||||
|  |     partial class terms | ||||||
|  |     { | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void BuildTargetModel(ModelBuilder modelBuilder) | ||||||
|  |         { | ||||||
|  | #pragma warning disable 612, 618 | ||||||
|  |             modelBuilder | ||||||
|  |                 .HasAnnotation("ProductVersion", "8.0.1") | ||||||
|  |                 .HasAnnotation("Relational:MaxIdentifierLength", 63); | ||||||
|  | 
 | ||||||
|  |             NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfilePortfolioPiece", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Description") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FileReference") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Name") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerProfileId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerProfilePortfolioPieces"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfileRequest", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("Accepted") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime?>("AcceptedDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime>("RequestDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("UserId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("UserId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerProfileRequests"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Description") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Name") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<double>("Price") | ||||||
|  |                         .HasColumnType("double precision"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerProfileId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServices"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("BuyerId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime>("CreatedDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime?>("EndDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<double>("Price") | ||||||
|  |                         .HasColumnType("double precision"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("Status") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime?>("TermsAcceptedDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("BuyerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrders"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessage", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Message") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("SenderId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime>("SentAt") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SenderId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderMessages"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessageAttachment", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FileReference") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderMessageId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderMessageId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderMessageAttachments"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderReview", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("Rating") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Review") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("ReviewerId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("ReviewerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderReviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.User", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<string>("Id") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressCity") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressCountry") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressHouseNumber") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressPostalCode") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressRegion") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressStreet") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Biography") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("DisplayName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Email") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FirstName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("LastName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int?>("UserSellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("Users"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("AgeRestricted") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Biography") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<List<string>>("SocialMediaLinks") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text[]"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("UserId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("UserId") | ||||||
|  |                         .IsUnique(); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("UserSellerProfiles"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfilePortfolioPiece", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "SellerProfile") | ||||||
|  |                         .WithMany("PortfolioPieces") | ||||||
|  |                         .HasForeignKey("SellerProfileId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfileRequest", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "User") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("UserId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("User"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "SellerProfile") | ||||||
|  |                         .WithMany("SellerServices") | ||||||
|  |                         .HasForeignKey("SellerProfileId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Buyer") | ||||||
|  |                         .WithMany("Orders") | ||||||
|  |                         .HasForeignKey("BuyerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "Seller") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerService", "SellerService") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerServiceId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Buyer"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Seller"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerService"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessage", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrder", "SellerServiceOrder") | ||||||
|  |                         .WithMany("Messages") | ||||||
|  |                         .HasForeignKey("SellerServiceOrderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Sender") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SenderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrder"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Sender"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessageAttachment", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrderMessage", "SellerServiceOrderMessage") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerServiceOrderMessageId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrderMessage"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderReview", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Reviewer") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("ReviewerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerService", "SellerService") | ||||||
|  |                         .WithMany("Reviews") | ||||||
|  |                         .HasForeignKey("SellerServiceId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrder", "SellerServiceOrder") | ||||||
|  |                         .WithMany("Reviews") | ||||||
|  |                         .HasForeignKey("SellerServiceOrderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Reviewer"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerService"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrder"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "User") | ||||||
|  |                         .WithOne("UserSellerProfile") | ||||||
|  |                         .HasForeignKey("ArtPlatform.Database.Entities.UserSellerProfile", "UserId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("User"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Reviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Messages"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Reviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.User", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Orders"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("UserSellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("PortfolioPieces"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServices"); | ||||||
|  |                 }); | ||||||
|  | #pragma warning restore 612, 618 | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										29
									
								
								src/ArtPlatform.Database/Migrations/20240127092417_terms.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								src/ArtPlatform.Database/Migrations/20240127092417_terms.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,29 @@ | |||||||
|  | using System; | ||||||
|  | using Microsoft.EntityFrameworkCore.Migrations; | ||||||
|  | 
 | ||||||
|  | #nullable disable | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database.Migrations | ||||||
|  | { | ||||||
|  |     /// <inheritdoc /> | ||||||
|  |     public partial class terms : Migration | ||||||
|  |     { | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void Up(MigrationBuilder migrationBuilder) | ||||||
|  |         { | ||||||
|  |             migrationBuilder.AddColumn<DateTime>( | ||||||
|  |                 name: "TermsAcceptedDate", | ||||||
|  |                 table: "SellerServiceOrders", | ||||||
|  |                 type: "timestamp with time zone", | ||||||
|  |                 nullable: true); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void Down(MigrationBuilder migrationBuilder) | ||||||
|  |         { | ||||||
|  |             migrationBuilder.DropColumn( | ||||||
|  |                 name: "TermsAcceptedDate", | ||||||
|  |                 table: "SellerServiceOrders"); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										491
									
								
								src/ArtPlatform.Database/Migrations/20240127093942_makesure.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										491
									
								
								src/ArtPlatform.Database/Migrations/20240127093942_makesure.Designer.cs
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @ -0,0 +1,491 @@ | |||||||
|  | // <auto-generated /> | ||||||
|  | using System; | ||||||
|  | using System.Collections.Generic; | ||||||
|  | using ArtPlatform.Database; | ||||||
|  | using Microsoft.EntityFrameworkCore; | ||||||
|  | using Microsoft.EntityFrameworkCore.Infrastructure; | ||||||
|  | using Microsoft.EntityFrameworkCore.Migrations; | ||||||
|  | using Microsoft.EntityFrameworkCore.Storage.ValueConversion; | ||||||
|  | using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; | ||||||
|  | 
 | ||||||
|  | #nullable disable | ||||||
|  | 
 | ||||||
|  | namespace ArtPlatform.Database.Migrations | ||||||
|  | { | ||||||
|  |     [DbContext(typeof(ApplicationDbContext))] | ||||||
|  |     [Migration("20240127093942_makesure")] | ||||||
|  |     partial class makesure | ||||||
|  |     { | ||||||
|  |         /// <inheritdoc /> | ||||||
|  |         protected override void BuildTargetModel(ModelBuilder modelBuilder) | ||||||
|  |         { | ||||||
|  | #pragma warning disable 612, 618 | ||||||
|  |             modelBuilder | ||||||
|  |                 .HasAnnotation("ProductVersion", "8.0.1") | ||||||
|  |                 .HasAnnotation("Relational:MaxIdentifierLength", 63); | ||||||
|  | 
 | ||||||
|  |             NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfilePortfolioPiece", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Description") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FileReference") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Name") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerProfileId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerProfilePortfolioPieces"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfileRequest", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("Accepted") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime?>("AcceptedDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime>("RequestDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("UserId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("UserId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerProfileRequests"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Description") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Name") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<double>("Price") | ||||||
|  |                         .HasColumnType("double precision"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerProfileId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServices"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("BuyerId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime>("CreatedDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime?>("EndDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<double>("Price") | ||||||
|  |                         .HasColumnType("double precision"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("Status") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime?>("TermsAcceptedDate") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("BuyerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrders"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessage", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Message") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("SenderId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<DateTime>("SentAt") | ||||||
|  |                         .HasColumnType("timestamp with time zone"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SenderId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderMessages"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessageAttachment", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FileReference") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderMessageId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderMessageId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderMessageAttachments"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderReview", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("Rating") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Review") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("ReviewerId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int>("SellerServiceOrderId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("ReviewerId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceId"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("SellerServiceOrderId"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("SellerServiceOrderReviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.User", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<string>("Id") | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressCity") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressCountry") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressHouseNumber") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressPostalCode") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressRegion") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("AddressStreet") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Biography") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("DisplayName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Email") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("FirstName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("LastName") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<int?>("UserSellerProfileId") | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("Users"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.Property<int>("Id") | ||||||
|  |                         .ValueGeneratedOnAdd() | ||||||
|  |                         .HasColumnType("integer"); | ||||||
|  | 
 | ||||||
|  |                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id")); | ||||||
|  | 
 | ||||||
|  |                     b.Property<bool>("AgeRestricted") | ||||||
|  |                         .HasColumnType("boolean"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("Biography") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<List<string>>("SocialMediaLinks") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text[]"); | ||||||
|  | 
 | ||||||
|  |                     b.Property<string>("UserId") | ||||||
|  |                         .IsRequired() | ||||||
|  |                         .HasColumnType("text"); | ||||||
|  | 
 | ||||||
|  |                     b.HasKey("Id"); | ||||||
|  | 
 | ||||||
|  |                     b.HasIndex("UserId") | ||||||
|  |                         .IsUnique(); | ||||||
|  | 
 | ||||||
|  |                     b.ToTable("UserSellerProfiles"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfilePortfolioPiece", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "SellerProfile") | ||||||
|  |                         .WithMany("PortfolioPieces") | ||||||
|  |                         .HasForeignKey("SellerProfileId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerProfileRequest", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "User") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("UserId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("User"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "SellerProfile") | ||||||
|  |                         .WithMany("SellerServices") | ||||||
|  |                         .HasForeignKey("SellerProfileId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Buyer") | ||||||
|  |                         .WithMany("Orders") | ||||||
|  |                         .HasForeignKey("BuyerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.UserSellerProfile", "Seller") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerService", "SellerService") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerServiceId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Buyer"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Seller"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerService"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessage", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrder", "SellerServiceOrder") | ||||||
|  |                         .WithMany("Messages") | ||||||
|  |                         .HasForeignKey("SellerServiceOrderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Sender") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SenderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrder"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Sender"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderMessageAttachment", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrderMessage", "SellerServiceOrderMessage") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("SellerServiceOrderMessageId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrderMessage"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrderReview", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "Reviewer") | ||||||
|  |                         .WithMany() | ||||||
|  |                         .HasForeignKey("ReviewerId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerService", "SellerService") | ||||||
|  |                         .WithMany("Reviews") | ||||||
|  |                         .HasForeignKey("SellerServiceId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.SellerServiceOrder", "SellerServiceOrder") | ||||||
|  |                         .WithMany("Reviews") | ||||||
|  |                         .HasForeignKey("SellerServiceOrderId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Reviewer"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerService"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServiceOrder"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.HasOne("ArtPlatform.Database.Entities.User", "User") | ||||||
|  |                         .WithOne("UserSellerProfile") | ||||||
|  |                         .HasForeignKey("ArtPlatform.Database.Entities.UserSellerProfile", "UserId") | ||||||
|  |                         .OnDelete(DeleteBehavior.Cascade) | ||||||
|  |                         .IsRequired(); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("User"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerService", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Reviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.SellerServiceOrder", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Messages"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("Reviews"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.User", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("Orders"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("UserSellerProfile"); | ||||||
|  |                 }); | ||||||
|  | 
 | ||||||
|  |             modelBuilder.Entity("ArtPlatform.Database.Entities.UserSellerProfile", b => | ||||||
|  |                 { | ||||||
|  |                     b.Navigation("PortfolioPieces"); | ||||||
|  | 
 | ||||||
|  |                     b.Navigation("SellerServices"); | ||||||
|  |                 }); | ||||||
|  | #pragma warning restore 612, 618 | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Damien Ostler
						Damien Ostler