# .NET Core SDK
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS aspnetcore-build

# Copy Projects
COPY LCU.API.Internal.Document/LCU.API.Internal.Document.csproj ./source/LCU.API.Internal.Document/
COPY LCU.API.Internal.DocumentLib/LCU.API.Internal.DocumentLib.csproj ./source/LCU.API.Internal.DocumentLib/
COPY LCU.Library.Internal.DocumentModels/LCU.Library.Internal.DocumentModels.csproj ./source/LCU.Library.Internal.DocumentModels/

# Install Credential Provider and set env variables to enable Nuget restore with auth
ARG PAT=bh2lq3jibktw67b2wdbqyfln7cd3je6lk52kijntpj43v6kimpgq
RUN curl -L https://raw.githubusercontent.com/Microsoft/artifacts-credprovider/master/helpers/installcredprovider.sh  | sh

ENV NUGET_CREDENTIALPROVIDER_SESSIONTOKENCACHE_ENABLED true
ENV VSS_NUGET_EXTERNAL_FEED_ENDPOINTS "{\"endpointCredentials\": [{\"endpoint\":\"https://landmarkcu.pkgs.visualstudio.com/_packaging/LCU-Internal/nuget/v3/index.json\", \"password\":\"${PAT}\"}]}"

RUN dotnet restore -s "https://landmarkcu.pkgs.visualstudio.com/_packaging/LCU-Internal/nuget/v3/index.json" -s "https://api.nuget.org/v3/index.json" ./source/LCU.API.Internal.Document/LCU.API.Internal.Document.csproj

# Copy All Files
COPY . ./source/

LABEL test=true
COPY LCU.API.Internal.DocumentTest/LCU.API.Internal.DocumentTest.csproj ./source/LCU.API.Internal.DocumentTest/
RUN dotnet restore ./source/LCU.API.Internal.DocumentTest/LCU.API.Internal.DocumentTest.csproj
RUN dotnet test -c Release --results-directory /testresults --logger "trx;LogFileName=test_results.trx"  ./source/LCU.API.Internal.DocumentTest/LCU.API.Internal.DocumentTest.csproj

# .NET Core Publish
RUN dotnet publish ./source/LCU.API.Internal.Document/LCU.API.Internal.Document.csproj -c Release -o /dist

# ASP.NET Core
FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine3.20
RUN apk add --no-cache icu-libs && apk add --no-cache tzdata;
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
ENV ASPNETCORE_ENVIRONMENT=Development

WORKDIR /app
COPY  --from=aspnetcore-build /dist .
ENTRYPOINT ["dotnet", "LCU.API.Internal.Document.dll"]
