Skip to content

Commit

Permalink
Single window; project structure
Browse files Browse the repository at this point in the history
  • Loading branch information
harald committed Oct 19, 2024
1 parent 87d751f commit abdc1d9
Show file tree
Hide file tree
Showing 20 changed files with 760 additions and 216 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>

<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="NUnit" Version="3.14.0" />
<PackageReference Include="NUnit.Analyzers" Version="3.9.0" />
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Pacioli.Config.Persistence\Pacioli.Config.Persistence.csproj" />
</ItemGroup>

<ItemGroup>
<Using Include="NUnit.Framework" />
</ItemGroup>

</Project>
23 changes: 23 additions & 0 deletions src/Pacioli.Config.Persistence.Test/UnitTest1.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
namespace Pacioli.Config.Persistence.Test
{
public class Tests
{
ConfigDb configDb;

[SetUp]
public void Setup()
{
configDb = new ConfigDb();
}

[Test]
public void Test1()
{
var pref = configDb.ReadPreferences();
pref.OpenAfterSave = false;
configDb.SavePreferences(pref);
pref = configDb.ReadPreferences();
Assert.IsFalse(pref.OpenAfterSave);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
using Microsoft.Data.Sqlite;
using Pacioli.Config.Persistence;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Pacioli.WindowsApp.NET8.Config
namespace Pacioli.Config.Persistence
{
internal class ConfigDb
public class ConfigDb
{
string connectionString = "Data Source=pacioli.db";

Expand All @@ -23,7 +24,7 @@ public ConfigDb()
}
}

internal UserPreferences ReadPreferences()
public UserPreferences ReadPreferences()
{
CreateTable();
using (var connection = new SqliteConnection(connectionString))
Expand All @@ -33,7 +34,7 @@ internal UserPreferences ReadPreferences()
var command = connection.CreateCommand();
command.CommandText =
@"
SELECT User, Folder, AttachmentFolder, Language
SELECT User, Folder, AttachmentFolder, Language, OpenAfterSave
FROM UserPreferences
WHERE User = $user
";
Expand All @@ -45,13 +46,16 @@ FROM UserPreferences
preferences.DefaultFolder = (string)reader["Folder"];
preferences.AttachmentOutputFolder = (string)reader["AttachmentFolder"];
preferences.LanguageCode = (string)reader["Language"];
preferences.OpenAfterSave = IntToBool((long)reader["OpenAfterSave"]);
var y = preferences.OpenAfterSave;
var x = reader["OpenAfterSave"];
}
}
return preferences;
}
}

internal void SavePreferences(UserPreferences pref)
public void SavePreferences(UserPreferences pref)
{
CreateTable();
using (var connection = new SqliteConnection(connectionString))
Expand All @@ -61,31 +65,39 @@ internal void SavePreferences(UserPreferences pref)
command.CommandText =
@"
UPDATE UserPreferences
SET Folder = $folder, AttachmentFolder = $attachFlr, Language = $lang
SET Folder = $folder, AttachmentFolder = $attachFlr, Language = $lang, OpenAfterSave = $openAfterSave
WHERE User = $user
";
command.Parameters.AddWithValue("$user", pref.UserName);
command.Parameters.AddWithValue("$folder", pref.DefaultFolder);
command.Parameters.AddWithValue("$attachFlr", pref.AttachmentOutputFolder);
command.Parameters.AddWithValue("$lang", pref.LanguageCode);
AddParameters(command, pref);
var r = command.ExecuteNonQuery();
if (r == 0)
{
var command2 = connection.CreateCommand();
command2.CommandText =
@"
INSERT INTO UserPreferences
VALUES ($user, $folder, $attachFlr, $lang)
VALUES ($user, $folder, $attachFlr, $lang, $openAfterSave)
";
command2.Parameters.AddWithValue("$user", pref.UserName);
command2.Parameters.AddWithValue("$folder", pref.DefaultFolder);
command2.Parameters.AddWithValue("$attachFlr", pref.AttachmentOutputFolder);
command2.Parameters.AddWithValue("$lang", pref.LanguageCode);
command2.ExecuteNonQuery();
AddParameters(command2, pref);
r = command2.ExecuteNonQuery();
}
}
}

void AddParameters(SqliteCommand command, UserPreferences pref)
{
command.Parameters.AddWithValue("$user", pref.UserName);
command.Parameters.AddWithValue("$folder", pref.DefaultFolder);
command.Parameters.AddWithValue("$attachFlr", pref.AttachmentOutputFolder);
command.Parameters.AddWithValue("$lang", pref.LanguageCode);
command.Parameters.AddWithValue("$openAfterSave", pref.OpenAfterSave);
}

bool IntToBool(long value)
{
return value != 0 ? true : false;
}

void CreateTable()
{
using (var connection = new SqliteConnection(connectionString))
Expand All @@ -94,7 +106,7 @@ void CreateTable()
var command = connection.CreateCommand();
command.CommandText =
@"
CREATE TABLE IF NOT EXISTS UserPreferences (User varchar(100), Folder varchar(500), AttachmentFolder varchar(500), Language varchar(16))
CREATE TABLE IF NOT EXISTS UserPreferences (User TEXT, Folder TEXT, AttachmentFolder TEXT, Language TEXT, OpenAfterSave BOOLEAN)
";
command.ExecuteNonQuery();
}
Expand Down
17 changes: 17 additions & 0 deletions src/Pacioli.Config.Persistence/Pacioli.Config.Persistence.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.Data.Sqlite" Version="8.0.10" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Pacioli.Language\Pacioli.Language.csproj" />
</ItemGroup>

</Project>
47 changes: 47 additions & 0 deletions src/Pacioli.Config.Persistence/UserPreferences.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
using Pacioli.Language.Resources;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Pacioli.Config.Persistence
{
public class UserPreferences
{
public string UserName { get; set; }
public string DefaultFolder { get; set; }
public string LanguageCode { get; set; }
public string AttachmentOutputFolder { get; set; }
public bool OpenAfterSave { get; set; }

public UserPreferences()
{
UserName = Environment.UserName;
DefaultFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
AttachmentOutputFolder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
LanguageCode = CultureInfo.CurrentCulture.TwoLetterISOLanguageName;
OpenAfterSave = true;
}

public void SetCulture()
{
if (LanguageCode == "System")
{
CultureInfo.CurrentCulture = CultureInfo.InstalledUICulture;
CultureInfo.CurrentUICulture = CultureInfo.InstalledUICulture;
Thread.CurrentThread.CurrentCulture = CultureInfo.InstalledUICulture;
Thread.CurrentThread.CurrentUICulture = CultureInfo.InstalledUICulture;
Resources.Culture = CultureInfo.InstalledUICulture;
}
else
{
CultureInfo.CurrentCulture = new CultureInfo(LanguageCode);
Thread.CurrentThread.CurrentCulture = new CultureInfo(LanguageCode);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(LanguageCode);
Resources.Culture = new CultureInfo(LanguageCode);
}
}
}
}
21 changes: 19 additions & 2 deletions src/Pacioli.Language/Languages/LanguageDescriptor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,35 @@ public class LanguageDescriptor
public string Code { get; set; }
public string Name { get; set; }
public CultureInfo Info { get; set; }
public bool IsSystem { get; set; }

public LanguageDescriptor(string code, string name)
{

Code = code;
Code = code;
Name = name;
Info = new CultureInfo(code);
IsSystem = false;
}

public LanguageDescriptor()
{
Code = "System";
Name = "System Default";
Info = CultureInfo.InstalledUICulture;
IsSystem = true;
}

public override string ToString()
{
return $"{Info.Name} - {Info.NativeName}";
if (IsSystem)
{
return "System Default";
}
else
{
return $"{Info.Name} - {Info.NativeName}";
}
}
}
}
1 change: 1 addition & 0 deletions src/Pacioli.Language/SupportedLanguages.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ public class SupportedLanguages

public SupportedLanguages() {
Languages = new List<LanguageDescriptor>();
Languages.Add(new LanguageDescriptor()); // System Default
Languages.Add(new LanguageDescriptor("de", "Deutsch"));
Languages.Add(new LanguageDescriptor("en", "English"));
Languages.Add(new LanguageDescriptor("fr", "Francais")); // TBD
Expand Down
24 changes: 15 additions & 9 deletions src/Pacioli.Pdf/Invoice/PartyBox.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,53 +13,59 @@ public PartyBox(string title, string text)
var bold = PdfFontFactory.CreateFont(StandardFonts.HELVETICA_BOLD);
Text t1 = new Text($"{title}\n").SetFont(bold);
this.Add(t1)
.Add(new Text($"{text}"))
.SetPadding(5.0f)
.SetBorder(new SolidBorder(2.0f));
AddText(text);
}

public PartyBox(string title, Party party)
{
var bold = PdfFontFactory.CreateFont(StandardFonts.HELVETICA_BOLD);
Text t1 = new Text($"{title}\n").SetFont(bold);
Text t1 = new Text($"{title}\n").SetFont(bold).SetFontSize(12.0f);
this.Add(t1);

if (!string.IsNullOrWhiteSpace(party.Name))
{
this.Add($"{party.Name}\n");
AddText($"{party.Name}\n");
}

if (!string.IsNullOrWhiteSpace(party.ContactName))
{
this.Add($"{party.ContactName}\n");
AddText($"{party.ContactName}\n");
}

if (!string.IsNullOrWhiteSpace(party.AddressLine3))
{
this.Add($"{party.AddressLine3}");
AddText($"{party.AddressLine3}");
}

if (!string.IsNullOrWhiteSpace(party.Street))
{
this.Add($"{party.Street}\n");
AddText($"{party.Street}\n");
}

if (!string.IsNullOrWhiteSpace(party.City))
{
this.Add($"{party.Postcode} {party.City}\n");
AddText($"{party.Postcode} {party.City}\n");
}

if (!string.IsNullOrWhiteSpace(party.Country.ToString()))
{
this.Add($"{party.Country}\n");
AddText($"{party.Country}\n");
}

string t = party.ID.SchemeID != GlobalIDSchemeIdentifiers.Unknown ? party.ID.SchemeID.ToString() : string.Empty;
this.Add($"{t} {party.ID.ID}\n");
AddText($"{t} {party.ID.ID}\n");

this
.SetPadding(5.0f)
.SetBorder(new SolidBorder(2.0f));
}

void AddText(string text)
{
Text t = new Text(text).SetFontSize(10f);
this.Add(t);
}
}
}
Loading

0 comments on commit abdc1d9

Please sign in to comment.