From 80ace6f1100ba7c14d6980225193ae8effbfb2c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tommy=20=C3=96man?= Date: Tue, 19 May 2026 09:51:43 +0200 Subject: [PATCH] =?UTF-8?q?B=C3=B6rjan=20p=C3=A5=20analys=20av=20notorna?= =?UTF-8?q?=20inledd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- StockHistory/Data/AppDbContext.cs | 14 +- ...0517151320_NewTableStockEquity.Designer.cs | 100 +++++++++++++++ .../20260517151320_NewTableStockEquity.cs | 51 ++++++++ .../Migrations/AppDbContextModelSnapshot.cs | 37 ++++++ StockHistory/Models/StockEquity.cs | 13 ++ StockHistory/Program.cs | 31 ++--- StockHistory/StockHistory.csproj | 5 + StockHistory/Stockbrokerage.db | Bin 28672 -> 61440 bytes .../frmStockHistoryAnalyse1.Designer.cs | 61 +++++++++ StockHistory/frmStockHistoryAnalyse1.cs | 10 ++ StockHistory/frmStockHistoryAnalyse1.resx | 120 ++++++++++++++++++ StockHistory/frmStockHistoryInit.Designer.cs | 21 ++- StockHistory/frmStockHistoryInit.cs | 10 +- 13 files changed, 449 insertions(+), 24 deletions(-) create mode 100644 StockHistory/Migrations/20260517151320_NewTableStockEquity.Designer.cs create mode 100644 StockHistory/Migrations/20260517151320_NewTableStockEquity.cs create mode 100644 StockHistory/Models/StockEquity.cs create mode 100644 StockHistory/frmStockHistoryAnalyse1.Designer.cs create mode 100644 StockHistory/frmStockHistoryAnalyse1.cs create mode 100644 StockHistory/frmStockHistoryAnalyse1.resx diff --git a/StockHistory/Data/AppDbContext.cs b/StockHistory/Data/AppDbContext.cs index f6a60f4..7ef5a88 100644 --- a/StockHistory/Data/AppDbContext.cs +++ b/StockHistory/Data/AppDbContext.cs @@ -1,12 +1,9 @@ using Microsoft.EntityFrameworkCore; using StockHistory.Models; -using System; -using System.Collections.Generic; -using System.Text; namespace StockHistory.Data; -public class AppDbContext: DbContext +public class AppDbContext : DbContext { public AppDbContext(DbContextOptions options) : base(options) @@ -14,12 +11,19 @@ public class AppDbContext: DbContext } public DbSet TransactionNotes { get; set; } + public DbSet Stocks { get; set; } override protected void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity() .HasIndex(t => new { t.StockCode, t.TransactionDate }) - .IsUnique(); + .IsUnique(true); + modelBuilder.Entity() + .HasIndex(s => new { s.Bought }) + .IsUnique(false); + modelBuilder.Entity() + .HasIndex(s => new { s.Sold }) + .IsUnique(false); } } diff --git a/StockHistory/Migrations/20260517151320_NewTableStockEquity.Designer.cs b/StockHistory/Migrations/20260517151320_NewTableStockEquity.Designer.cs new file mode 100644 index 0000000..f7a9519 --- /dev/null +++ b/StockHistory/Migrations/20260517151320_NewTableStockEquity.Designer.cs @@ -0,0 +1,100 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using StockHistory.Data; + +#nullable disable + +namespace StockHistory.Migrations +{ + [DbContext(typeof(AppDbContext))] + [Migration("20260517151320_NewTableStockEquity")] + partial class NewTableStockEquity + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "9.0.6"); + + modelBuilder.Entity("StockHistory.Models.StockEquity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Bought") + .HasColumnType("TEXT"); + + b.Property("BoughtPrice") + .HasColumnType("TEXT"); + + b.Property("Quantity") + .HasColumnType("INTEGER"); + + b.Property("Sold") + .HasColumnType("TEXT"); + + b.Property("SoldPrice") + .HasColumnType("TEXT"); + + b.Property("SoldQuant") + .HasColumnType("INTEGER"); + + b.Property("StockCode") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("Bought"); + + b.HasIndex("Sold"); + + b.ToTable("Stocks"); + }); + + modelBuilder.Entity("StockHistory.Models.TransactionNote", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("AmountToPay") + .HasColumnType("TEXT"); + + b.Property("Commission") + .HasColumnType("TEXT"); + + b.Property("StockCode") + .HasColumnType("TEXT"); + + b.Property("StockPrice") + .HasColumnType("TEXT"); + + b.Property("StockQuantity") + .HasColumnType("INTEGER"); + + b.Property("TotalAmount") + .HasColumnType("TEXT"); + + b.Property("TransactionDate") + .HasColumnType("TEXT"); + + b.Property("TransactionType") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("StockCode", "TransactionDate") + .IsUnique(); + + b.ToTable("TransactionNotes"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/StockHistory/Migrations/20260517151320_NewTableStockEquity.cs b/StockHistory/Migrations/20260517151320_NewTableStockEquity.cs new file mode 100644 index 0000000..5ae9c4e --- /dev/null +++ b/StockHistory/Migrations/20260517151320_NewTableStockEquity.cs @@ -0,0 +1,51 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace StockHistory.Migrations +{ + /// + public partial class NewTableStockEquity : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Stocks", + columns: table => new + { + Id = table.Column(type: "INTEGER", nullable: false) + .Annotation("Sqlite:Autoincrement", true), + StockCode = table.Column(type: "TEXT", nullable: false), + Bought = table.Column(type: "TEXT", nullable: false), + BoughtPrice = table.Column(type: "TEXT", nullable: false), + Quantity = table.Column(type: "INTEGER", nullable: false), + Sold = table.Column(type: "TEXT", nullable: false), + SoldPrice = table.Column(type: "TEXT", nullable: false), + SoldQuant = table.Column(type: "INTEGER", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Stocks", x => x.Id); + }); + + migrationBuilder.CreateIndex( + name: "IX_Stocks_Bought", + table: "Stocks", + column: "Bought"); + + migrationBuilder.CreateIndex( + name: "IX_Stocks_Sold", + table: "Stocks", + column: "Sold"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Stocks"); + } + } +} diff --git a/StockHistory/Migrations/AppDbContextModelSnapshot.cs b/StockHistory/Migrations/AppDbContextModelSnapshot.cs index a6e662d..a0700b1 100644 --- a/StockHistory/Migrations/AppDbContextModelSnapshot.cs +++ b/StockHistory/Migrations/AppDbContextModelSnapshot.cs @@ -17,6 +17,43 @@ namespace StockHistory.Migrations #pragma warning disable 612, 618 modelBuilder.HasAnnotation("ProductVersion", "9.0.6"); + modelBuilder.Entity("StockHistory.Models.StockEquity", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("Bought") + .HasColumnType("TEXT"); + + b.Property("BoughtPrice") + .HasColumnType("TEXT"); + + b.Property("Quantity") + .HasColumnType("INTEGER"); + + b.Property("Sold") + .HasColumnType("TEXT"); + + b.Property("SoldPrice") + .HasColumnType("TEXT"); + + b.Property("SoldQuant") + .HasColumnType("INTEGER"); + + b.Property("StockCode") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("Bought"); + + b.HasIndex("Sold"); + + b.ToTable("Stocks"); + }); + modelBuilder.Entity("StockHistory.Models.TransactionNote", b => { b.Property("Id") diff --git a/StockHistory/Models/StockEquity.cs b/StockHistory/Models/StockEquity.cs new file mode 100644 index 0000000..47881dd --- /dev/null +++ b/StockHistory/Models/StockEquity.cs @@ -0,0 +1,13 @@ +namespace StockHistory.Models; + +public class StockEquity +{ + public int Id { get; set; } + public string StockCode { get; set; } = string.Empty; + public DateTime Bought { get; set; } + public decimal BoughtPrice { get; set; } + public int Quantity { get; set; } + public DateTime Sold { get; set; } + public decimal SoldPrice { get; set; } + public int SoldQuant { get; set; } +} diff --git a/StockHistory/Program.cs b/StockHistory/Program.cs index bac714d..14a5f36 100644 --- a/StockHistory/Program.cs +++ b/StockHistory/Program.cs @@ -1,6 +1,6 @@ -using Microsoft.Extensions.Hosting; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; using StockHistory.Data; using StockHistory.Services; @@ -26,23 +26,24 @@ namespace StockHistory // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); // Starta huvudformuläret via DI - var mainForm = host.Services.GetRequiredService (); + var mainForm = host.Services.GetRequiredService(); Application.Run(mainForm); } - static IHostBuilder CreateHostBuilder() => - Host.CreateDefaultBuilder() - .ConfigureServices((context, services) => - { - services.AddDbContext(options => - options.UseSqlite("Data Source=Stockbrokerage.db"), - ServiceLifetime.Transient); + static IHostBuilder CreateHostBuilder() => + Host.CreateDefaultBuilder() + .ConfigureServices((context, services) => + { + services.AddDbContext(options => + options.UseSqlite("Data Source=Stockbrokerage.db"), + ServiceLifetime.Transient); - services.AddSingleton(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - }); + services.AddSingleton(); + services.AddScoped(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + }); } } \ No newline at end of file diff --git a/StockHistory/StockHistory.csproj b/StockHistory/StockHistory.csproj index 7c37198..6328792 100644 --- a/StockHistory/StockHistory.csproj +++ b/StockHistory/StockHistory.csproj @@ -35,4 +35,9 @@ Resources.Designer.cs + + + PreserveNewest + + \ No newline at end of file diff --git a/StockHistory/Stockbrokerage.db b/StockHistory/Stockbrokerage.db index 08a70628ccca58b391973e69efc5bb7234cabb5e..1b4deb1c49aa356332bf38f15ea8d7f93d733d45 100644 GIT binary patch literal 61440 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 + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + label1 = new Label(); + SuspendLayout(); + // + // label1 + // + label1.AutoSize = true; + label1.Font = new Font("Segoe UI", 13F, FontStyle.Bold); + label1.Location = new Point(12, 9); + label1.Name = "label1"; + label1.Size = new Size(428, 25); + label1.TabIndex = 0; + label1.Text = "Analysera existerande Avräkningsnotor (Affärer)"; + // + // frmStockHistoryAnalyse1 + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + BackColor = Color.Gainsboro; + ClientSize = new Size(922, 481); + Controls.Add(label1); + Name = "frmStockHistoryAnalyse1"; + Text = "Form1frmStockHistoryAnalyse1"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label label1; + } +} \ No newline at end of file diff --git a/StockHistory/frmStockHistoryAnalyse1.cs b/StockHistory/frmStockHistoryAnalyse1.cs new file mode 100644 index 0000000..c1b4e8c --- /dev/null +++ b/StockHistory/frmStockHistoryAnalyse1.cs @@ -0,0 +1,10 @@ +namespace StockHistory +{ + public partial class frmStockHistoryAnalyse1 : Form + { + public frmStockHistoryAnalyse1() + { + InitializeComponent(); + } + } +} diff --git a/StockHistory/frmStockHistoryAnalyse1.resx b/StockHistory/frmStockHistoryAnalyse1.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/StockHistory/frmStockHistoryAnalyse1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/StockHistory/frmStockHistoryInit.Designer.cs b/StockHistory/frmStockHistoryInit.Designer.cs index 02e8526..a94debc 100644 --- a/StockHistory/frmStockHistoryInit.Designer.cs +++ b/StockHistory/frmStockHistoryInit.Designer.cs @@ -45,6 +45,7 @@ AmountToPayHeader = new ColumnHeader(); btnClose = new Button(); btnNext = new Button(); + btnDtaAnalyse1 = new Button(); SuspendLayout(); // // btnChooseFile @@ -166,7 +167,7 @@ btnClose.BackColor = Color.Chartreuse; btnClose.FlatStyle = FlatStyle.Popup; btnClose.Font = new Font("Segoe UI", 11F, FontStyle.Regular, GraphicsUnit.Point, 1, true); - btnClose.Location = new Point(1092, 377); + btnClose.Location = new Point(1093, 378); btnClose.Margin = new Padding(3, 2, 3, 2); btnClose.Name = "btnClose"; btnClose.Size = new Size(108, 28); @@ -192,12 +193,27 @@ btnNext.Visible = false; btnNext.Click += btnNext_Click; // + // btnDtaAnalyse1 + // + btnDtaAnalyse1.BackColor = Color.Chartreuse; + btnDtaAnalyse1.FlatStyle = FlatStyle.Popup; + btnDtaAnalyse1.Font = new Font("Segoe UI", 11F, FontStyle.Regular, GraphicsUnit.Point, 1, true); + btnDtaAnalyse1.Location = new Point(23, 384); + btnDtaAnalyse1.Margin = new Padding(3, 2, 3, 2); + btnDtaAnalyse1.Name = "btnDtaAnalyse1"; + btnDtaAnalyse1.Size = new Size(108, 28); + btnDtaAnalyse1.TabIndex = 9; + btnDtaAnalyse1.Text = "Data analys"; + btnDtaAnalyse1.UseVisualStyleBackColor = false; + btnDtaAnalyse1.Click += btnDtaAnalyse1_Click; + // // frmStockHistoryInit // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; BackColor = Color.LightGray; - ClientSize = new Size(1236, 415); + ClientSize = new Size(1236, 423); + Controls.Add(btnDtaAnalyse1); Controls.Add(btnNext); Controls.Add(btnClose); Controls.Add(lwTransactions); @@ -232,5 +248,6 @@ private ColumnHeader AmountToPayHeader; private Button btnClose; private Button btnNext; + private Button btnDtaAnalyse1; } } \ No newline at end of file diff --git a/StockHistory/frmStockHistoryInit.cs b/StockHistory/frmStockHistoryInit.cs index 6b77dff..8d58c3b 100644 --- a/StockHistory/frmStockHistoryInit.cs +++ b/StockHistory/frmStockHistoryInit.cs @@ -12,6 +12,7 @@ public partial class frmStockHistoryInit : Form private readonly IPdfFormatter _pdfFormatter; private readonly ITransactionNotesServices _transactionNotes; private readonly IHandleCsvNotes _handleCsvNotes; + private readonly frmStockHistoryAnalyse1 _analyseForm; private List _pdfSidor = new(); private List localPdfSida = new(); private bool lstWait = false; @@ -24,7 +25,8 @@ public partial class frmStockHistoryInit : Form IPdfOpener pdfOpener, IPdfFormatter pdfFormatter, ITransactionNotesServices transactionNotes, - IHandleCsvNotes handleCsvNotes + IHandleCsvNotes handleCsvNotes, + frmStockHistoryAnalyse1 analyseForm ) { InitializeComponent(); @@ -32,6 +34,7 @@ public partial class frmStockHistoryInit : Form _pdfFormatter = pdfFormatter; _transactionNotes = transactionNotes; _handleCsvNotes = handleCsvNotes; + _analyseForm = analyseForm; btnAnalysera.Enabled = false; Shown += async (s, e) => await LoadBusinessAsync(); @@ -292,6 +295,9 @@ public partial class frmStockHistoryInit : Form this.Close(); } - + private void btnDtaAnalyse1_Click(object sender, EventArgs e) + { + _analyseForm.Show(); + } }