Html Generator (Added CefSharp / Chrome)

Updated Result API with Tournament Urls
Updated Setup
This commit is contained in:
2019-06-02 17:19:28 +02:00
parent 9d3a14d1c2
commit 6f682df13a
24 changed files with 2764 additions and 182 deletions

View File

@@ -2,6 +2,7 @@
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<Platforms>AnyCPU;x64</Platforms>
</PropertyGroup>
<ItemGroup>

View File

@@ -4,6 +4,7 @@
{
public int Id { get; set; }
public string Name { get; set; }
public string LongName { get; set; }
public int Order { get; set; }
public string ImgUrl { get; set; }
public string WordPressTag { get; set; }

View File

@@ -2,6 +2,7 @@
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Platforms>AnyCPU;x64</Platforms>
</PropertyGroup>
</Project>

View File

@@ -32,5 +32,6 @@ namespace LaDOSE.DTO
public string Player { get; set; }
public int Point { get; set; }
public int TournamendId { get; set; }
public string TournamentUrl { get; set; }
}
}

View File

@@ -5,6 +5,8 @@ using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using CefSharp;
using CefSharp.Wpf;
namespace LaDOSE.DesktopApp
{
@@ -13,5 +15,20 @@ namespace LaDOSE.DesktopApp
/// </summary>
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
#if DEBUG
MessageBox.Show("WAITING IN DEBUG MODE");
#endif
base.OnStartup(e);
var settings = new CefSettings();
settings.SetOffScreenRenderingBestPerformanceArgs();
Cef.Initialize(settings);
}
}
}

View File

@@ -0,0 +1,71 @@
using System;
using System.Windows;
using System.Windows.Interactivity;
using System.Windows.Threading;
using CefSharp;
using CefSharp.Wpf;
namespace LaDOSE.DesktopApp.Behaviors
{
public static class HtmlBehavior // : Behavior<ChromiumWebBrowser>
{
#region DependencyProperties
public static readonly DependencyProperty HtmlProperty =
DependencyProperty.RegisterAttached("Html", typeof(string), typeof(HtmlBehavior),
new PropertyMetadata("",OnHtmlChange));
private static void OnHtmlChange(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (d is ChromiumWebBrowser)
{
var cwb = ((ChromiumWebBrowser) d);
string html = e.NewValue as string;
if (!string.IsNullOrEmpty(html))
Application.Current.Dispatcher.Invoke(()=>
{
try
{
if (cwb.IsBrowserInitialized)
{
cwb.LoadHtml(html, false);
}
else
{
cwb.IsBrowserInitializedChanged += CwbOnIsBrowserInitializedChanged;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
});
}
}
private static void CwbOnIsBrowserInitializedChanged(object sender, DependencyPropertyChangedEventArgs e)
{
var cwb = ((ChromiumWebBrowser)sender);
var html = GetHtml(cwb);
cwb.LoadHtml(html, false);
cwb.IsBrowserInitializedChanged -= CwbOnIsBrowserInitializedChanged;
}
public static string GetHtml(DependencyObject obj)
{
return (string)obj.GetValue(HtmlProperty);
}
public static void SetHtml(DependencyObject obj, string value)
{
obj.SetValue(HtmlProperty, value);
}
#endregion
}
}

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Configuration;
using System.Windows;
using System.Windows.Threading;
using Caliburn.Micro;
using LaDOSE.DesktopApp.ViewModels;
@@ -53,5 +54,11 @@ namespace LaDOSE.DesktopApp
container.BuildUp(instance);
}
protected override void OnUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
{
MessageBox.Show(e.Exception.Message, sender.ToString());
base.OnUnhandledException(sender, e);
}
}
}

View File

@@ -1,5 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.props" Condition="Exists('..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.props')" />
<Import Project="..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.props" Condition="Exists('..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.props')" />
<Import Project="..\packages\cef.redist.x86.73.1.13\build\cef.redist.x86.props" Condition="Exists('..\packages\cef.redist.x86.73.1.13\build\cef.redist.x86.props')" />
<Import Project="..\packages\cef.redist.x64.73.1.13\build\cef.redist.x64.props" Condition="Exists('..\packages\cef.redist.x64.73.1.13\build\cef.redist.x64.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -30,9 +34,11 @@
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<PlatformTarget>x64</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
@@ -42,7 +48,7 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<PlatformTarget>x64</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
@@ -56,6 +62,15 @@
<PropertyGroup>
<NoWin32Manifest>true</NoWin32Manifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<PlatformTarget>x64</PlatformTarget>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<PlatformTarget>x64</PlatformTarget>
<OutputPath>bin\x64\Release\</OutputPath>
</PropertyGroup>
<ItemGroup>
<Reference Include="Caliburn.Micro, Version=3.2.0.0, Culture=neutral, PublicKeyToken=8e5891231f2ed21f, processorArchitecture=MSIL">
<HintPath>..\packages\Caliburn.Micro.Core.3.2.0\lib\net45\Caliburn.Micro.dll</HintPath>
@@ -99,6 +114,7 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
<Compile Include="Behaviors\HtmlBehavior.cs" />
<Compile Include="Behaviors\TextBoxInputRegExBehaviour.cs" />
<Compile Include="Behaviors\MultiSelectorBehaviours.cs" />
<Compile Include="Bootstrapper.cs" />
@@ -224,4 +240,17 @@
<Folder Include="Services\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\cef.redist.x64.73.1.13\build\cef.redist.x64.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x64.73.1.13\build\cef.redist.x64.props'))" />
<Error Condition="!Exists('..\packages\cef.redist.x86.73.1.13\build\cef.redist.x86.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x86.73.1.13\build\cef.redist.x86.props'))" />
<Error Condition="!Exists('..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.props'))" />
<Error Condition="!Exists('..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.targets'))" />
<Error Condition="!Exists('..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.props'))" />
<Error Condition="!Exists('..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.targets'))" />
</Target>
<Import Project="..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.targets" Condition="Exists('..\packages\CefSharp.Common.73.1.130\build\CefSharp.Common.targets')" />
<Import Project="..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.targets" Condition="Exists('..\packages\CefSharp.Wpf.73.1.130\build\CefSharp.Wpf.targets')" />
</Project>

View File

@@ -22,8 +22,16 @@ namespace LaDOSE.DesktopApp.ViewModels
public override string DisplayName => "Tournament Result";
private RestService RestService { get; set; }
Dictionary<string, Dictionary<int, int>> _computedResult;
#region Properties
private string css = "strong { font-weight: 700;} " +
"a { color: #ff9024;}"+
"body { color: #efefef;background-color: #141415; }" +
""+
"a:hover, .entry-meta span a:hover, .comments-link a:hover, body.coldisplay2 #front-columns a:active {color: #cb5920;}"+
"tr td { border: 1px dashed #3D3D3D;} ";
private String _selectRegex;
public String SelectRegex
@@ -36,6 +44,29 @@ namespace LaDOSE.DesktopApp.ViewModels
}
}
private String _html;
public String Html
{
get { return $"<html><head><style>{this.css}</style></head><body>{HtmlContent}</body></html>"; }
set
{
_html = value;
}
}
private String _htmlContent;
public String HtmlContent
{
get { return _htmlContent; }
set
{
_htmlContent = value;
NotifyOfPropertyChange(() => HtmlContent);
NotifyOfPropertyChange(() => Html);
}
}
private DateTime _from;
@@ -51,6 +82,7 @@ namespace LaDOSE.DesktopApp.ViewModels
}
private DateTime _to;
public DateTime To
{
get { return _to; }
@@ -130,6 +162,7 @@ namespace LaDOSE.DesktopApp.ViewModels
}
#endregion
public TournamentResultViewModel(RestService restService)
{
this.RestService = restService;
@@ -138,7 +171,6 @@ namespace LaDOSE.DesktopApp.ViewModels
}
protected override void OnInitialize()
{
this.To = DateTime.Now;
@@ -158,7 +190,6 @@ namespace LaDOSE.DesktopApp.ViewModels
NotifyOfPropertyChange("Tournaments");
});
}
public DataTable GridDataTable
@@ -179,34 +210,36 @@ namespace LaDOSE.DesktopApp.ViewModels
var resultsDto = this.RestService.GetResults(tournamentsIds);
this.Results = resultsDto;
ComputeDataGrid();
ComputeHtml();
});
}
public void SelectYear()
{
this.To = DateTime.Now;
this.From = new DateTime(DateTime.Now.Year, 1, 1);
}
public void SelectMonth()
{
this.To = DateTime.Now;
this.From = DateTime.Now.AddMonths(-1);
}
public void SelectRegexp()
{
var selectedTournaments = this.Tournaments.Where(e => Regex.IsMatch(e.Name, this.SelectRegex)).ToList();
this.SelectedTournaments.Clear();
if (selectedTournaments.Count > 0)
selectedTournaments.ForEach(e => this.SelectedTournaments.AddUI(e));
}
private void ComputeDataGrid()
{
var resultsParticipents = this.Results.Participents.OrderBy(e => e.Name).ToList();
var computed = ResultsToDataDictionary(resultsParticipents);
_computedResult = ResultsToDataDictionary(resultsParticipents);
StringBuilder sb = new StringBuilder();
@@ -225,11 +258,10 @@ namespace LaDOSE.DesktopApp.ViewModels
dataRow["Players"] = resultsParticipent.Name;
for (int j = 0; j < games.Count; j++)
{
var resultsGame = Results.Games[j];
var dictionary = computed[resultsParticipent.Name];
var dictionary = _computedResult[resultsParticipent.Name];
if (dictionary.ContainsKey(resultsGame.Id))
{
int points = dictionary[resultsGame.Id];
@@ -259,8 +291,6 @@ namespace LaDOSE.DesktopApp.ViewModels
private void ExportToCSV()
{
if (this.GridDataTable != null)
{
var dataTable = this.GridDataTable.DefaultView.ToTable();
@@ -290,6 +320,48 @@ namespace LaDOSE.DesktopApp.ViewModels
}
}
private void ComputeHtml()
{
StringBuilder sb = new StringBuilder();
sb.Append("<table style=\"text-align: center; margin-top: 15px;\" align=\"center\"><tbody>");
int columns = 0;
foreach (var game in Results.Games)
{
if (columns % 2 == 0)
{
sb.Append("<tr>");
}
columns++;
sb.Append("<td colspan=\"1\" width=\"50 % \">" +
"<span style=\"color: #ff0000;\">" +
$"<strong>{game.LongName} ({Results.Results.Count(e => e.GameId == game.Id)} participants) :</strong>" +
"</span>");
List<ResultDTO> enumerable = Results.Results.Where(r => r.GameId == game.Id).ToList();
List<string> top3 = enumerable.OrderByDescending(e => e.Point).Take(3).Select(e => e.Player).ToList();
sb.AppendLine($"<br> 1/ {top3[0]}<br> 2/ {top3[1]}<br> 3/ {top3[2]}<p></p>");
sb.AppendLine($"<a href=\"https://challonge.com/fr/{enumerable.First().TournamentUrl}\" target=\"_blank\">https://challonge.com/fr/{enumerable.First().TournamentUrl}</a></p></td>");
if (columns % 2 == 0)
{
sb.Append("</tr>");
}
}
sb.Append("</table>");
this.HtmlContent = sb.ToString();
}
public void CopyHtml()
{
System.Windows.Clipboard.SetText(this.HtmlContent);
}
private Dictionary<string, Dictionary<int, int>> ResultsToDataDictionary(
List<ParticipentDTO> resultsParticipents)
{

View File

@@ -40,6 +40,8 @@
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
@@ -62,12 +64,14 @@
</behaviors:TextBoxInputRegExBehaviour>
</i:Interaction.Behaviors>
</TextBox>
<Label Grid.Row="4" Grid.Column="0">LongName</Label>
<TextBox Grid.Row="4" Grid.Column="1" Text="{Binding Path=CurrentGame.LongName,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ></TextBox>
<Label Grid.Row="4" Grid.Column="0">WpTag</Label>
<TextBox Grid.Row="5" Grid.ColumnSpan="2" Text="{Binding Path=CurrentGame.WordPressTag,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ></TextBox>
<Label Grid.Row="5" Grid.Column="0">WpTag</Label>
<TextBox Grid.Row="5" Grid.Column="1" Text="{Binding Path=CurrentGame.WordPressTag,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ></TextBox>
<Label Grid.Row="6" Grid.Column="0">WpTagOs</Label>
<TextBox Grid.Row="7" Grid.ColumnSpan="2" Text="{Binding Path=CurrentGame.WordPressTagOs,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ></TextBox>
<Button Grid.Row="8" Grid.ColumnSpan="2" x:Name="Update">Update</Button>
<TextBox Grid.Row="6" Grid.Column="1" Text="{Binding Path=CurrentGame.WordPressTagOs,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ></TextBox>
<Button Grid.Row="9" Grid.ColumnSpan="2" x:Name="Update">Update</Button>
</Grid>
</Grid>

View File

@@ -8,6 +8,7 @@
xmlns:cal="http://www.caliburnproject.org"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:behaviors="clr-namespace:LaDOSE.DesktopApp.Behaviors"
xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
@@ -161,6 +162,12 @@
</DockPanel>
</TabItem>
<TabItem Header="HTML">
<DockPanel>
<Button x:Name="CopyHtml" DockPanel.Dock="Top"> Copy HTML to clipboard </Button>
<cefSharp:ChromiumWebBrowser behaviors:HtmlBehavior.Html="{Binding Html}" />
</DockPanel>
</TabItem>
</TabControl>
<Button Grid.Row="4" Grid.ColumnSpan="3" x:Name="Export">Export</Button>

View File

@@ -2,6 +2,10 @@
<packages>
<package id="Caliburn.Micro" version="3.2.0" targetFramework="net461" />
<package id="Caliburn.Micro.Core" version="3.2.0" targetFramework="net461" />
<package id="cef.redist.x64" version="73.1.13" targetFramework="net461" />
<package id="cef.redist.x86" version="73.1.13" targetFramework="net461" />
<package id="CefSharp.Common" version="73.1.130" targetFramework="net461" />
<package id="CefSharp.Wpf" version="73.1.130" targetFramework="net461" />
<package id="RestSharp" version="106.6.9" targetFramework="net461" />
<package id="WPFThemes.DarkBlend" version="1.0.8" targetFramework="net461" />
</packages>

View File

@@ -3,6 +3,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
<Platforms>AnyCPU;x64</Platforms>
</PropertyGroup>
<ItemGroup>

View File

@@ -8,5 +8,6 @@ namespace LaDOSE.Entity.Challonge
public string Name { get; set; }
public Game Game { get; set; }
public List<Participent> Participents { get; set; }
public string Url { get; set; }
}
}

View File

@@ -13,17 +13,21 @@ namespace LaDOSE.Entity.Challonge
public class Result
{
public Result(string player, int gameId, int point) : this(player, gameId, 0, point)
public Result(string player, int gameId, int point) : this(player, gameId, 0,"", point)
{
}
public Result(string player, int gameId, int tournamentdId, int point)
public Result(string player, int gameId, int tournamentdId,string tournamentUrl, int point)
{
Player = player;
GameId = gameId;
Point = point;
TournamentUrl = tournamentUrl;
TournamentdId = tournamentdId;
}
@@ -33,6 +37,7 @@ namespace LaDOSE.Entity.Challonge
public int TournamentdId { get; set; }
public string TournamentUrl { get; set; }
public int GameId { get; set; }
public string Player { get; set; }
public int Point { get; set; }

View File

@@ -6,6 +6,7 @@ namespace LaDOSE.Entity
public class Game : Context.Entity
{
public string Name { get; set; }
public string LongName { get; set; }
public string ImgUrl { get; set; }
public int Order { get; set; }
public string WordPressTag { get; set; }

View File

@@ -2,6 +2,7 @@
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<Platforms>AnyCPU;x64</Platforms>
</PropertyGroup>
<ItemGroup>

View File

@@ -2,6 +2,7 @@
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<Platforms>AnyCPU;x64</Platforms>
</PropertyGroup>
<ItemGroup>

View File

@@ -50,6 +50,7 @@ namespace LaDOSE.REST
}
else
{
throw new Exception("unable to contact services");
}
}

View File

@@ -4,6 +4,7 @@
<TargetFramework>netcoreapp2.0</TargetFramework>
<AssemblyName>LaDOSE.Business</AssemblyName>
<RootNamespace>LaDOSE.Business</RootNamespace>
<Platforms>AnyCPU;x64</Platforms>
</PropertyGroup>
<ItemGroup>

View File

@@ -99,7 +99,9 @@ namespace LaDOSE.Business.Provider
{
Id = tournamentResult.id,
Name = tournamentResult.name,
Url = tournamentResult.url,
Participents = new List<Participent>()
};
}

View File

@@ -117,18 +117,18 @@ namespace LaDOSE.Business.Service
var Top8 = tournament.Participents.Where(p => p.Rank > 4 && p.Rank < 9).ToList();
var Top16 = tournament.Participents.Where(p => p.Rank > 8 && p.Rank <= 16).ToList();
result.Results.Add(new Result(first.Name, tournament.Game.Id, tournament.Id, currentRule.FirstPoint));
result.Results.Add(new Result(first.Name, tournament.Game.Id, tournament.Id, tournament.Url, currentRule.FirstPoint));
lesSacs.Remove(first);
result.Results.Add(new Result(second.Name, tournament.Game.Id, tournament.Id, currentRule.SecondPoint));
result.Results.Add(new Result(second.Name, tournament.Game.Id, tournament.Id, tournament.Url, currentRule.SecondPoint));
lesSacs.Remove(second);
thirdFourth.ForEach(r =>
result.Results.Add(new Result(r.Name, tournament.Game.Id, tournament.Id,
result.Results.Add(new Result(r.Name, tournament.Game.Id, tournament.Id, tournament.Url,
currentRule.ThirdFourthPoint)));
thirdFourth.ForEach(p => lesSacs.Remove(p));
if (currentRule.Top8Point != 0)
{
Top8.ForEach(r =>
result.Results.Add(new Result(r.Name, tournament.Game.Id, tournament.Id, currentRule.Top8Point)));
result.Results.Add(new Result(r.Name, tournament.Game.Id, tournament.Id, tournament.Url, currentRule.Top8Point)));
Top8.ForEach(p => lesSacs.Remove(p));
}
@@ -136,12 +136,12 @@ namespace LaDOSE.Business.Service
{
Top16.ForEach(r =>
result.Results.Add(
new Result(r.Name, tournament.Game.Id, tournament.Id, currentRule.Top16Point)));
new Result(r.Name, tournament.Game.Id, tournament.Id, tournament.Url, currentRule.Top16Point)));
Top16.ForEach(p => lesSacs.Remove(p));
}
lesSacs.ForEach(r =>
result.Results.Add(new Result(r.Name, tournament.Game.Id, tournament.Id,
result.Results.Add(new Result(r.Name, tournament.Game.Id, tournament.Id, tournament.Url,
currentRule.Participation)));
}

View File

@@ -25,44 +25,77 @@ Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Setup", "Setup\Setup.vdproj
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Utils", "Utils", "{2A0E1491-8E15-4062-ABE7-C04AE9655515}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LaDOSE.REST", "LaDOSE.REST\LaDOSE.REST.csproj", "{692C2A72-AB7E-4502-BED8-AA2AFA1761CB}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LaDOSE.REST", "LaDOSE.REST\LaDOSE.REST.csproj", "{692C2A72-AB7E-4502-BED8-AA2AFA1761CB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C1E8FAF6-3A75-44AC-938D-CA56A5322D1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C1E8FAF6-3A75-44AC-938D-CA56A5322D1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C1E8FAF6-3A75-44AC-938D-CA56A5322D1C}.Debug|x64.ActiveCfg = Debug|x64
{C1E8FAF6-3A75-44AC-938D-CA56A5322D1C}.Debug|x64.Build.0 = Debug|x64
{C1E8FAF6-3A75-44AC-938D-CA56A5322D1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C1E8FAF6-3A75-44AC-938D-CA56A5322D1C}.Release|Any CPU.Build.0 = Release|Any CPU
{C1E8FAF6-3A75-44AC-938D-CA56A5322D1C}.Release|x64.ActiveCfg = Release|x64
{C1E8FAF6-3A75-44AC-938D-CA56A5322D1C}.Release|x64.Build.0 = Release|x64
{4D7ED4CC-F78F-4860-B8CE-DA01DCACCBB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4D7ED4CC-F78F-4860-B8CE-DA01DCACCBB9}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4D7ED4CC-F78F-4860-B8CE-DA01DCACCBB9}.Debug|x64.ActiveCfg = Debug|x64
{4D7ED4CC-F78F-4860-B8CE-DA01DCACCBB9}.Debug|x64.Build.0 = Debug|x64
{4D7ED4CC-F78F-4860-B8CE-DA01DCACCBB9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4D7ED4CC-F78F-4860-B8CE-DA01DCACCBB9}.Release|Any CPU.Build.0 = Release|Any CPU
{4D7ED4CC-F78F-4860-B8CE-DA01DCACCBB9}.Release|x64.ActiveCfg = Release|x64
{4D7ED4CC-F78F-4860-B8CE-DA01DCACCBB9}.Release|x64.Build.0 = Release|x64
{B32A4AD5-9A4B-4D12-AAD5-55541F170E2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B32A4AD5-9A4B-4D12-AAD5-55541F170E2A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B32A4AD5-9A4B-4D12-AAD5-55541F170E2A}.Debug|x64.ActiveCfg = Debug|x64
{B32A4AD5-9A4B-4D12-AAD5-55541F170E2A}.Debug|x64.Build.0 = Debug|x64
{B32A4AD5-9A4B-4D12-AAD5-55541F170E2A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B32A4AD5-9A4B-4D12-AAD5-55541F170E2A}.Release|Any CPU.Build.0 = Release|Any CPU
{B32A4AD5-9A4B-4D12-AAD5-55541F170E2A}.Release|x64.ActiveCfg = Release|x64
{B32A4AD5-9A4B-4D12-AAD5-55541F170E2A}.Release|x64.Build.0 = Release|x64
{952DE665-70B5-492B-BE91-D0111E3BD907}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{952DE665-70B5-492B-BE91-D0111E3BD907}.Debug|Any CPU.Build.0 = Debug|Any CPU
{952DE665-70B5-492B-BE91-D0111E3BD907}.Debug|x64.ActiveCfg = Debug|x64
{952DE665-70B5-492B-BE91-D0111E3BD907}.Debug|x64.Build.0 = Debug|x64
{952DE665-70B5-492B-BE91-D0111E3BD907}.Release|Any CPU.ActiveCfg = Release|Any CPU
{952DE665-70B5-492B-BE91-D0111E3BD907}.Release|Any CPU.Build.0 = Release|Any CPU
{952DE665-70B5-492B-BE91-D0111E3BD907}.Release|x64.ActiveCfg = Release|x64
{952DE665-70B5-492B-BE91-D0111E3BD907}.Release|x64.Build.0 = Release|x64
{A76AC851-4D43-4BF9-9034-F496888ADAFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A76AC851-4D43-4BF9-9034-F496888ADAFD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A76AC851-4D43-4BF9-9034-F496888ADAFD}.Debug|x64.ActiveCfg = Debug|x64
{A76AC851-4D43-4BF9-9034-F496888ADAFD}.Debug|x64.Build.0 = Debug|x64
{A76AC851-4D43-4BF9-9034-F496888ADAFD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A76AC851-4D43-4BF9-9034-F496888ADAFD}.Release|Any CPU.Build.0 = Release|Any CPU
{A76AC851-4D43-4BF9-9034-F496888ADAFD}.Release|x64.ActiveCfg = Release|x64
{A76AC851-4D43-4BF9-9034-F496888ADAFD}.Release|x64.Build.0 = Release|x64
{61201DA6-1BC9-4BA1-AC45-70104D391ECD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{61201DA6-1BC9-4BA1-AC45-70104D391ECD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{61201DA6-1BC9-4BA1-AC45-70104D391ECD}.Debug|x64.ActiveCfg = Debug|x64
{61201DA6-1BC9-4BA1-AC45-70104D391ECD}.Debug|x64.Build.0 = Debug|x64
{61201DA6-1BC9-4BA1-AC45-70104D391ECD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{61201DA6-1BC9-4BA1-AC45-70104D391ECD}.Release|Any CPU.Build.0 = Release|Any CPU
{61201DA6-1BC9-4BA1-AC45-70104D391ECD}.Release|x64.ActiveCfg = Release|x64
{61201DA6-1BC9-4BA1-AC45-70104D391ECD}.Release|x64.Build.0 = Release|x64
{6825F5F4-EBB5-469F-B935-5B916EA37ACC}.Debug|Any CPU.ActiveCfg = Debug
{6825F5F4-EBB5-469F-B935-5B916EA37ACC}.Debug|x64.ActiveCfg = Debug
{6825F5F4-EBB5-469F-B935-5B916EA37ACC}.Release|Any CPU.ActiveCfg = Release
{6825F5F4-EBB5-469F-B935-5B916EA37ACC}.Release|x64.ActiveCfg = Release
{6825F5F4-EBB5-469F-B935-5B916EA37ACC}.Release|x64.Build.0 = Release
{692C2A72-AB7E-4502-BED8-AA2AFA1761CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{692C2A72-AB7E-4502-BED8-AA2AFA1761CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{692C2A72-AB7E-4502-BED8-AA2AFA1761CB}.Debug|x64.ActiveCfg = Debug|x64
{692C2A72-AB7E-4502-BED8-AA2AFA1761CB}.Debug|x64.Build.0 = Debug|x64
{692C2A72-AB7E-4502-BED8-AA2AFA1761CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{692C2A72-AB7E-4502-BED8-AA2AFA1761CB}.Release|Any CPU.Build.0 = Release|Any CPU
{692C2A72-AB7E-4502-BED8-AA2AFA1761CB}.Release|x64.ActiveCfg = Release|x64
{692C2A72-AB7E-4502-BED8-AA2AFA1761CB}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

File diff suppressed because it is too large Load Diff