<Project Sdk="Microsoft.NET.Sdk.Web">

	<PropertyGroup>
		<TargetFramework>net6.0</TargetFramework>
		<Nullable>enable</Nullable>
		<ImplicitUsings>enable</ImplicitUsings>
		<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
		<SpaRoot>spa\</SpaRoot>
		<DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**</DefaultItemExcludes>
		<DocumentationFile>$(AssemblyName).xml</DocumentationFile>
		<Version>5.0.0</Version>
		<NoWarn>CS1591</NoWarn>
	</PropertyGroup>

	<ItemGroup>
		<PackageReference Include="AWSSDK.S3" Version="3.7.103.41" />
		<PackageReference Include="BencodeNET" Version="5.0.0" />
		<PackageReference Include="BTCPayServer.Lightning.Common" Version="1.3.21" />
		<PackageReference Include="FFMpegCore" Version="5.1.0" />
		<PackageReference Include="Google.Protobuf" Version="3.22.3" />
		<PackageReference Include="Grpc.Net.Client" Version="2.52.0" />
		<PackageReference Include="Grpc.Tools" Version="2.54.0">
		  <PrivateAssets>all</PrivateAssets>
		  <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
		</PackageReference>
		<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.7" />
		<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.7" />
		<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" />
		<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.5">
		  <PrivateAssets>all</PrivateAssets>
		  <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
		</PackageReference>
		<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="7.0.5" />
		<PackageReference Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="6.0.7" />
		<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.16.1" />
		<PackageReference Include="MSBuildGitHash" Version="2.0.2">
		  <PrivateAssets>all</PrivateAssets>
		  <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
		</PackageReference>
		<PackageReference Include="NBitcoin" Version="7.0.25" />
		<PackageReference Include="nClam" Version="7.0.0" />
		<PackageReference Include="Npgsql" Version="7.0.2" />
		<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.1" />
		<PackageReference Include="prometheus-net.AspNetCore" Version="8.0.0" />
		<PackageReference Include="Seq.Extensions.Logging" Version="6.1.0" />
		<PackageReference Include="StackExchange.Redis" Version="2.6.104" />
		<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
		<PackageReference Include="System.Linq.Async" Version="6.0.1" />
	</ItemGroup>
	<ItemGroup>
		<!--<Protobuf Include="Services/Lightning/proto/*.proto" GrpcServices="Client" ProtoRoot="Services/Lightning/proto" />-->
	</ItemGroup>
	<ItemGroup>
		<!-- Don't publish the SPA source files, but do show them in the project files list -->
		<Content Remove="$(SpaRoot)**" />
		<Content Include="$(SolutionDir).github\workflows\build.yml" />
		<Content Include="..\docker-compose.yml">
		  <Link>docker-compose.yml</Link>
		</Content>
		<Content Include="..\Dockerfile">
		  <Link>Dockerfile</Link>
		</Content>
		<Content Include="..\README.md">
		  <Link>README.md</Link>
		</Content>
		<None Remove="$(SpaRoot)**" />
		<None Include="$(SpaRoot)**" Exclude="$(SpaRoot)node_modules\**" />
	</ItemGroup>
	<ItemGroup>
	  <Compile Remove="Pages\EmailCode.cshtml.cs" />
	</ItemGroup>

	<Target Name="IncludeBuildFiles" AfterTargets="ComputeFilesToPublish">
		<ItemGroup>
			<_CopyItems Include="$(SpaRoot)src\app\build\**\*.*" />
		</ItemGroup>
		<Copy SourceFiles="@(_CopyItems)" DestinationFolder="$(PublishDir)wwwroot\%(RecursiveDir)" />
	</Target>
	
	<ItemGroup>
		<AssemblyMetadata Include="%(AssemblyMetadataCommand.Identity)">
			<Value>$(Value)</Value>
		</AssemblyMetadata>
		<AssemblyAttributes Include="AssemblyMetadata">
			<_Parameter1>BuildTime</_Parameter1>
			<_Parameter2>$([System.DateTime]::UtcNow.ToBinary())</_Parameter2>
		</AssemblyAttributes>
		<Compile Include="$(IntermediateOutputPath)\build_date.cs" />
	</ItemGroup>
	<ItemGroup>
	  <Folder Include="Migrations\" />
	</ItemGroup>
	<Target Name="GetBuildDate" BeforeTargets="CoreCompile">
		<WriteCodeFragment Language="C#" OutputFile="$(IntermediateOutputPath)\build_date.cs" AssemblyAttributes="@(AssemblyAttributes)" />
	</Target>
</Project>
