From 4a8fec1d5f0d783cd68b238161129529e0817f2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tommy=20=C3=96man?= Date: Mon, 4 Sep 2023 12:29:03 +0200 Subject: [PATCH] Testing serilog --- Least_Sign_To_Most_Sign.jpg | Bin 0 -> 51111 bytes WinFormDi.BLR/AccountRecordRepository.cs | 4 +- WinFormDi.BLR/ReadingIn.cs | 2 +- WinFormDi/Local.db | Bin 24576 -> 28672 bytes WinFormDi/Local.db-shm | Bin 0 -> 32768 bytes WinFormDi/Local.db-wal | 0 WinFormDi/Program.cs | 28 +++++- WinFormDi/WinFormDi.csproj | 4 + WinFormDi/appsettings.json | 30 ++++-- WinFormDi/frmPayments.cs | 1 + WinFormDi/frmReadPayments.Designer.cs | 6 +- WinFormDi/frmReadPayments.cs | 6 +- WinFormDi/frmReadPayments.resx | 3 + WinFormDiApp.BL/Models/AccountRecord.cs | 1 + WinFormDiApp.DAL/ApplicationDbContext.cs | 15 +++ .../20230901070448_storingdate.Designer.cs | 88 +++++++++++++++++ .../Migrations/20230901070448_storingdate.cs | 30 ++++++ .../20230903161124_multikey.Designer.cs | 91 ++++++++++++++++++ .../Migrations/20230903161124_multikey.cs | 28 ++++++ .../ApplicationDbContextModelSnapshot.cs | 6 ++ 20 files changed, 324 insertions(+), 19 deletions(-) create mode 100644 Least_Sign_To_Most_Sign.jpg create mode 100644 WinFormDi/Local.db-shm create mode 100644 WinFormDi/Local.db-wal create mode 100644 WinFormDiApp.DAL/Migrations/20230901070448_storingdate.Designer.cs create mode 100644 WinFormDiApp.DAL/Migrations/20230901070448_storingdate.cs create mode 100644 WinFormDiApp.DAL/Migrations/20230903161124_multikey.Designer.cs create mode 100644 WinFormDiApp.DAL/Migrations/20230903161124_multikey.cs diff --git a/Least_Sign_To_Most_Sign.jpg b/Least_Sign_To_Most_Sign.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bc2176274fba68f2431705ce3e3682ecd42dff2e GIT binary patch literal 51111 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 s>XcHYg$Lu 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 MvH!0h?ElREHvkIg$p8QV literal 0 HcmV?d00001 diff --git a/WinFormDi.BLR/AccountRecordRepository.cs b/WinFormDi.BLR/AccountRecordRepository.cs index 9d784ba..4ad49cc 100644 --- a/WinFormDi.BLR/AccountRecordRepository.cs +++ b/WinFormDi.BLR/AccountRecordRepository.cs @@ -29,7 +29,7 @@ public class AccountRecordRepository : IAccountRecordRepository } catch (Exception e) { - _logger.LogError($"Error occured in AddAccountRecord :{e.Message}"); + _logger.LogError("Error occured in AddAccountRecord :-->{iMessage}", e.Message); } return false; @@ -45,7 +45,7 @@ public class AccountRecordRepository : IAccountRecordRepository } catch (Exception e) { - _logger.LogError($"Error occured in DeleteAccountRecord :{e.Message}"); + _logger.LogError("Error occured in DeleteAccountRecord :-->{iMessage}", e.Message); } return false; } diff --git a/WinFormDi.BLR/ReadingIn.cs b/WinFormDi.BLR/ReadingIn.cs index 0764f92..a1151d4 100644 --- a/WinFormDi.BLR/ReadingIn.cs +++ b/WinFormDi.BLR/ReadingIn.cs @@ -129,7 +129,7 @@ public class ReadingIn : IReadingIn } catch (Exception ex) { - _logger.LogError($"MassUppdatering misslyckat: {ex.Message}"); + _logger.LogError("MassUppdatering misslyckat: -->{iMessage}", ex.Message); result = false; } } diff --git a/WinFormDi/Local.db b/WinFormDi/Local.db index 9fa637c666fdbd43b64248e3e2afb1e560ea4314..56cdba06c90192c6b0959dcc9a0f0be361072c06 100644 GIT binary patch delta 509 zcmZoTz}WDBae_QAI|Bl+PSmj!=AFjC#=7#b$e;;pG~v}9u!kJn^uEYHkKNv-gVh<8j*&M(a?2}(`QFG?wn zcSs#(); @@ -34,13 +45,26 @@ namespace WinFormDiApp } catch (Exception ex) { - Console.WriteLine($"An error has occured: {ex.Message}"); + Log.Fatal(ex, "Exception in application"); + } + finally + { + Log.Information("Exiting service.."); + Log.CloseAndFlush(); } } public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args); + Host.CreateDefaultBuilder(args) + .UseSerilog() + .ConfigureLogging((context, logging) => + { + logging.ClearProviders(); + logging.AddConfiguration(context.Configuration.GetSection("Logging")); + logging.AddConsole(); + logging.AddDebug(); + }); diff --git a/WinFormDi/WinFormDi.csproj b/WinFormDi/WinFormDi.csproj index 9717390..a8e4289 100644 --- a/WinFormDi/WinFormDi.csproj +++ b/WinFormDi/WinFormDi.csproj @@ -17,6 +17,10 @@ + + + + diff --git a/WinFormDi/appsettings.json b/WinFormDi/appsettings.json index c51253c..fcd71cc 100644 --- a/WinFormDi/appsettings.json +++ b/WinFormDi/appsettings.json @@ -1,16 +1,26 @@ { - "EPPlus": { - "ExcelPackage": { - "LicenseContext": "Noncommercial" //The license context used - } - }, - "ConnectionStrings": { + "ConnectionStrings": { "DatabaseConnection": "Data Source=.\\Local.db" }, "Logging": { - "LogLevel": { - "Default": "Warning" - } - }, + "Console": { + "LogLevel": { + "Default": "Information", + "Microsoft*": "Warning" + } + }, + "Debug": { + "LogLevel": { + "Default": "Warning", + "Microsoft*": "Warning" + } + }, + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Warning", + "Microsoft*": "Warning" + } + }, "AllowedHosts": "*" } diff --git a/WinFormDi/frmPayments.cs b/WinFormDi/frmPayments.cs index f8be8cb..2bfdd27 100644 --- a/WinFormDi/frmPayments.cs +++ b/WinFormDi/frmPayments.cs @@ -24,6 +24,7 @@ namespace WinFormDiApp private void frmPayments_Load(object sender, EventArgs e) { + lvPayments.Items.Clear(); var payments = _accountRecordRepository.GetAllAccounts(); foreach (var account in payments) { diff --git a/WinFormDi/frmReadPayments.Designer.cs b/WinFormDi/frmReadPayments.Designer.cs index c9502c2..5913225 100644 --- a/WinFormDi/frmReadPayments.Designer.cs +++ b/WinFormDi/frmReadPayments.Designer.cs @@ -92,7 +92,7 @@ // // btnClose // - btnClose.Location = new Point(758, 418); + btnClose.Location = new Point(758, 506); btnClose.Name = "btnClose"; btnClose.Size = new Size(75, 23); btnClose.TabIndex = 1; @@ -107,7 +107,7 @@ lvPayouts.Columns.AddRange(new ColumnHeader[] { columnHeader1, columnHeader2, columnHeader3, columnHeader4, columnHeader5, columnHeader6 }); lvPayouts.Location = new Point(28, 107); lvPayouts.Name = "lvPayouts"; - lvPayouts.Size = new Size(805, 286); + lvPayouts.Size = new Size(805, 393); lvPayouts.TabIndex = 2; lvPayouts.UseCompatibleStateImageBehavior = false; lvPayouts.View = View.Details; @@ -183,7 +183,7 @@ // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(856, 453); + ClientSize = new Size(856, 541); Controls.Add(btnStartRead); Controls.Add(lblTransFileName); Controls.Add(btnChooseFile); diff --git a/WinFormDi/frmReadPayments.cs b/WinFormDi/frmReadPayments.cs index 4151151..db93a10 100644 --- a/WinFormDi/frmReadPayments.cs +++ b/WinFormDi/frmReadPayments.cs @@ -17,6 +17,7 @@ namespace WinFormDiApp _accountRecordRepository = accountRecordRepository; _readingIn = readingIn; _logger = logger; + } @@ -42,10 +43,11 @@ namespace WinFormDiApp if (!_readingIn.ReadAndSaveInvoices(lblTransFileName.Text)) { var resUlt = _readingIn.readXLS(lblTransFileName.Text); - resUlt.ToList().ForEach(rec => _logger.LogInformation($"Konto :{rec.Konto}, {rec.Belopp}")); + resUlt.ToList().ForEach(rec => _logger.LogInformation("Konto :{sKonto}, {dBelopp}", rec.Konto, rec.Belopp)); } else { + lvPayouts.Items.Clear(); var payments = _accountRecordRepository.GetAllAccounts(); foreach (var account in payments) { @@ -61,5 +63,7 @@ namespace WinFormDiApp btnStartRead.Enabled = false; btnStartRead.Visible = false; } + + } } diff --git a/WinFormDi/frmReadPayments.resx b/WinFormDi/frmReadPayments.resx index bb88643..b19cc54 100644 --- a/WinFormDi/frmReadPayments.resx +++ b/WinFormDi/frmReadPayments.resx @@ -120,4 +120,7 @@ 17, 17 + + 25 + \ No newline at end of file diff --git a/WinFormDiApp.BL/Models/AccountRecord.cs b/WinFormDiApp.BL/Models/AccountRecord.cs index f9045de..1db1133 100644 --- a/WinFormDiApp.BL/Models/AccountRecord.cs +++ b/WinFormDiApp.BL/Models/AccountRecord.cs @@ -14,6 +14,7 @@ namespace WinFormDiApp.BL.Models public string Konto { get; set; } = string.Empty; public double Belopp { get; set; } public string Avisering { get; set; } = string.Empty; + public DateTime Stored { get; set;} = DateTime.Now.ToLocalTime(); } } diff --git a/WinFormDiApp.DAL/ApplicationDbContext.cs b/WinFormDiApp.DAL/ApplicationDbContext.cs index 5bb5308..397a88c 100644 --- a/WinFormDiApp.DAL/ApplicationDbContext.cs +++ b/WinFormDiApp.DAL/ApplicationDbContext.cs @@ -11,8 +11,23 @@ namespace WinFormDiApp.DAL public virtual DbSet Members { get; set; } public virtual DbSet AccountRecords { get; set; } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity() + .HasIndex(e => new + { + e.BetalDatum, + e.Belopp, + e.Konto + }) + .IsUnique(); + } + + } + public class DesignTimeDbContextFactory : IDesignTimeDbContextFactory { public ApplicationDbContext CreateDbContext(string[] args) diff --git a/WinFormDiApp.DAL/Migrations/20230901070448_storingdate.Designer.cs b/WinFormDiApp.DAL/Migrations/20230901070448_storingdate.Designer.cs new file mode 100644 index 0000000..2892aec --- /dev/null +++ b/WinFormDiApp.DAL/Migrations/20230901070448_storingdate.Designer.cs @@ -0,0 +1,88 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using WinFormDiApp.DAL; + +#nullable disable + +namespace WinFormDiApp.DAL.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20230901070448_storingdate")] + partial class storingdate + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "7.0.10"); + + modelBuilder.Entity("WinFormDiApp.BL.Models.AccountRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Avisering") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Belopp") + .HasColumnType("REAL"); + + b.Property("BetalDatum") + .HasColumnType("TEXT"); + + b.Property("Konto") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Mottagare") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Stored") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("AccountRecords"); + }); + + modelBuilder.Entity("WinFormDiApp.BL.Models.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Email") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("FirstName") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("LastName") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("NickName") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("PersonType") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("Members"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/WinFormDiApp.DAL/Migrations/20230901070448_storingdate.cs b/WinFormDiApp.DAL/Migrations/20230901070448_storingdate.cs new file mode 100644 index 0000000..e186a4c --- /dev/null +++ b/WinFormDiApp.DAL/Migrations/20230901070448_storingdate.cs @@ -0,0 +1,30 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace WinFormDiApp.DAL.Migrations +{ + /// + public partial class storingdate : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Stored", + table: "AccountRecords", + type: "TEXT", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Stored", + table: "AccountRecords"); + } + } +} diff --git a/WinFormDiApp.DAL/Migrations/20230903161124_multikey.Designer.cs b/WinFormDiApp.DAL/Migrations/20230903161124_multikey.Designer.cs new file mode 100644 index 0000000..21fbfca --- /dev/null +++ b/WinFormDiApp.DAL/Migrations/20230903161124_multikey.Designer.cs @@ -0,0 +1,91 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using WinFormDiApp.DAL; + +#nullable disable + +namespace WinFormDiApp.DAL.Migrations +{ + [DbContext(typeof(ApplicationDbContext))] + [Migration("20230903161124_multikey")] + partial class multikey + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "7.0.10"); + + modelBuilder.Entity("WinFormDiApp.BL.Models.AccountRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Avisering") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Belopp") + .HasColumnType("REAL"); + + b.Property("BetalDatum") + .HasColumnType("TEXT"); + + b.Property("Konto") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Mottagare") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Stored") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("BetalDatum", "Belopp", "Konto") + .IsUnique(); + + b.ToTable("AccountRecords"); + }); + + modelBuilder.Entity("WinFormDiApp.BL.Models.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Email") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("FirstName") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("LastName") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("NickName") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("PersonType") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("Members"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/WinFormDiApp.DAL/Migrations/20230903161124_multikey.cs b/WinFormDiApp.DAL/Migrations/20230903161124_multikey.cs new file mode 100644 index 0000000..c01c6b7 --- /dev/null +++ b/WinFormDiApp.DAL/Migrations/20230903161124_multikey.cs @@ -0,0 +1,28 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace WinFormDiApp.DAL.Migrations +{ + /// + public partial class multikey : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateIndex( + name: "IX_AccountRecords_BetalDatum_Belopp_Konto", + table: "AccountRecords", + columns: new[] { "BetalDatum", "Belopp", "Konto" }, + unique: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropIndex( + name: "IX_AccountRecords_BetalDatum_Belopp_Konto", + table: "AccountRecords"); + } + } +} diff --git a/WinFormDiApp.DAL/Migrations/ApplicationDbContextModelSnapshot.cs b/WinFormDiApp.DAL/Migrations/ApplicationDbContextModelSnapshot.cs index 744a85a..a06f728 100644 --- a/WinFormDiApp.DAL/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/WinFormDiApp.DAL/Migrations/ApplicationDbContextModelSnapshot.cs @@ -41,8 +41,14 @@ namespace WinFormDiApp.DAL.Migrations .IsRequired() .HasColumnType("TEXT"); + b.Property("Stored") + .HasColumnType("TEXT"); + b.HasKey("Id"); + b.HasIndex("BetalDatum", "Belopp", "Konto") + .IsUnique(); + b.ToTable("AccountRecords"); });