From 0e193dfc49c403e30c6a13b30e578d95e24b5f5c Mon Sep 17 00:00:00 2001 From: I1nur Date: Mon, 23 Dec 2024 16:53:19 +0400 Subject: [PATCH] big commit --- .../Entities/Enums/ExpenseCategoryType.cs | 18 + .../Entities/Enums/FamilyMemberType.cs | 17 + .../Entities/Enums/IncomeCategoryType.cs | 17 + .../FamilyBudget/Entities/ExpenseBudget.cs | 28 + .../Entities/ExpenseBudgetCategory.cs | 25 + FamilyBudget/FamilyBudget/Entities/Family.cs | 22 + .../FamilyBudget/Entities/FamilyMember.cs | 28 + .../Entities/FamilyMember_ExpenseBudget.cs | 24 + .../Entities/FamilyMember_IncomeBudget.cs | 24 + .../FamilyBudget/Entities/IncomeBudget.cs | 28 + .../Entities/IncomeBudgetCategory.cs | 25 + FamilyBudget/FamilyBudget/FamilyBudget.csproj | 38 + FamilyBudget/FamilyBudget/Form1.Designer.cs | 39 - FamilyBudget/FamilyBudget/Form1.cs | 10 - .../FamilyBudget/FormFamilyBudget.Designer.cs | 148 ++ FamilyBudget/FamilyBudget/FormFamilyBudget.cs | 94 + .../FamilyBudget/FormFamilyBudget.resx | 2268 +++++++++++++++++ .../FormExpenseBudgetCategories.Designer.cs | 126 + .../Forms/FormExpenseBudgetCategories.cs | 129 + .../Forms/FormExpenseBudgetCategories.resx | 120 + .../FormExpenseBudgetCategory.Designer.cs | 124 + .../Forms/FormExpenseBudgetCategory.cs | 95 + .../Forms/FormExpenseBudgetCategory.resx | 120 + .../Forms/FormFamilies.Designer.cs | 126 + .../FamilyBudget/Forms/FormFamilies.cs | 109 + .../{Form1.resx => Forms/FormFamilies.resx} | 50 +- .../FamilyBudget/Forms/FormFamily.Designer.cs | 100 + FamilyBudget/FamilyBudget/Forms/FormFamily.cs | 73 + .../FamilyBudget/Forms/FormFamily.resx | 120 + .../Forms/FormFamilyMember.Designer.cs | 148 ++ .../FamilyBudget/Forms/FormFamilyMember.cs | 84 + .../FamilyBudget/Forms/FormFamilyMember.resx | 120 + ...FormFamilyMember_ExpenseBudget.Designer.cs | 176 ++ .../Forms/FormFamilyMember_ExpenseBudget.cs | 68 + .../Forms/FormFamilyMember_ExpenseBudget.resx | 126 + ...ormFamilyMember_ExpenseBudgets.Designer.cs | 112 + .../Forms/FormFamilyMember_ExpenseBudgets.cs | 105 + .../FormFamilyMember_ExpenseBudgets.resx | 120 + .../FormFamilyMember_IncomeBudget.Designer.cs | 174 ++ .../Forms/FormFamilyMember_IncomeBudget.cs | 68 + .../Forms/FormFamilyMember_IncomeBudget.resx | 126 + ...FormFamilyMember_IncomeBudgets.Designer.cs | 113 + .../Forms/FormFamilyMember_IncomeBudgets.cs | 91 + .../Forms/FormFamilyMember_IncomeBudgets.resx | 120 + .../Forms/FormFamilyMembers.Designer.cs | 126 + .../FamilyBudget/Forms/FormFamilyMembers.cs | 109 + .../FamilyBudget/Forms/FormFamilyMembers.resx | 120 + .../FormIncomeBudgetCategories.Designer.cs | 125 + .../Forms/FormIncomeBudgetCategories.cs | 129 + .../Forms/FormIncomeBudgetCategories.resx | 120 + .../FormIncomeBudgetCategory.Designer.cs | 124 + .../Forms/FormIncomeBudgetCategory.cs | 95 + .../Forms/FormIncomeBudgetCategory.resx | 120 + FamilyBudget/FamilyBudget/Program.cs | 42 +- .../Properties/Resources.Designer.cs | 113 + .../FamilyBudget/Properties/Resources.resx | 136 + .../Repositories/IConnectionString.cs | 13 + .../IExpenseBudgetCategoryRepository.cs | 18 + .../Repositories/IExpenseBudgetRepository.cs | 17 + .../Repositories/IFamilyMemberRepository.cs | 18 + .../Repositories/IFamilyRepository.cs | 18 + .../IIncomeBudgetCategoryRepository.cs | 18 + .../Repositories/IIncomeBudgetRepository.cs | 17 + .../Implementations/ConnectionString.cs | 13 + .../ExpenseBudgetCategoryRepository.cs | 129 + .../ExpenseBudgetRepository.cs | 111 + .../Implementations/FamilyMemberRepository.cs | 136 + .../Implementations/FamilyRepository.cs | 128 + .../IncomeBudgetCategoryRepository.cs | 130 + .../Implementations/IncomeBudgetRepository.cs | 109 + .../FamilyBudget/Resources/family.jpg | Bin 0 -> 128356 bytes .../Resources/free-icon-dustbin-7709786.png | Bin 0 -> 10621 bytes .../free-icon-edit-tools-8847052.png | Bin 0 -> 16352 bytes .../Resources/free-icon-plus-181672.png | Bin 0 -> 6746 bytes .../Resources/free-icon-plus-1816721.png | Bin 0 -> 6746 bytes FamilyBudget/FamilyBudget/appsettings.json | 15 + 76 files changed, 8070 insertions(+), 75 deletions(-) create mode 100644 FamilyBudget/FamilyBudget/Entities/Enums/ExpenseCategoryType.cs create mode 100644 FamilyBudget/FamilyBudget/Entities/Enums/FamilyMemberType.cs create mode 100644 FamilyBudget/FamilyBudget/Entities/Enums/IncomeCategoryType.cs create mode 100644 FamilyBudget/FamilyBudget/Entities/ExpenseBudget.cs create mode 100644 FamilyBudget/FamilyBudget/Entities/ExpenseBudgetCategory.cs create mode 100644 FamilyBudget/FamilyBudget/Entities/Family.cs create mode 100644 FamilyBudget/FamilyBudget/Entities/FamilyMember.cs create mode 100644 FamilyBudget/FamilyBudget/Entities/FamilyMember_ExpenseBudget.cs create mode 100644 FamilyBudget/FamilyBudget/Entities/FamilyMember_IncomeBudget.cs create mode 100644 FamilyBudget/FamilyBudget/Entities/IncomeBudget.cs create mode 100644 FamilyBudget/FamilyBudget/Entities/IncomeBudgetCategory.cs delete mode 100644 FamilyBudget/FamilyBudget/Form1.Designer.cs delete mode 100644 FamilyBudget/FamilyBudget/Form1.cs create mode 100644 FamilyBudget/FamilyBudget/FormFamilyBudget.Designer.cs create mode 100644 FamilyBudget/FamilyBudget/FormFamilyBudget.cs create mode 100644 FamilyBudget/FamilyBudget/FormFamilyBudget.resx create mode 100644 FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategories.Designer.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategories.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategories.resx create mode 100644 FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategory.Designer.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategory.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategory.resx create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamilies.Designer.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamilies.cs rename FamilyBudget/FamilyBudget/{Form1.resx => Forms/FormFamilies.resx} (93%) create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamily.Designer.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamily.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamily.resx create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamilyMember.Designer.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamilyMember.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamilyMember.resx create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudget.Designer.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudget.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudget.resx create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudgets.Designer.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudgets.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudgets.resx create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudget.Designer.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudget.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudget.resx create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudgets.Designer.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudgets.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudgets.resx create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamilyMembers.Designer.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamilyMembers.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormFamilyMembers.resx create mode 100644 FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategories.Designer.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategories.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategories.resx create mode 100644 FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategory.Designer.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategory.cs create mode 100644 FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategory.resx create mode 100644 FamilyBudget/FamilyBudget/Properties/Resources.Designer.cs create mode 100644 FamilyBudget/FamilyBudget/Properties/Resources.resx create mode 100644 FamilyBudget/FamilyBudget/Repositories/IConnectionString.cs create mode 100644 FamilyBudget/FamilyBudget/Repositories/IExpenseBudgetCategoryRepository.cs create mode 100644 FamilyBudget/FamilyBudget/Repositories/IExpenseBudgetRepository.cs create mode 100644 FamilyBudget/FamilyBudget/Repositories/IFamilyMemberRepository.cs create mode 100644 FamilyBudget/FamilyBudget/Repositories/IFamilyRepository.cs create mode 100644 FamilyBudget/FamilyBudget/Repositories/IIncomeBudgetCategoryRepository.cs create mode 100644 FamilyBudget/FamilyBudget/Repositories/IIncomeBudgetRepository.cs create mode 100644 FamilyBudget/FamilyBudget/Repositories/Implementations/ConnectionString.cs create mode 100644 FamilyBudget/FamilyBudget/Repositories/Implementations/ExpenseBudgetCategoryRepository.cs create mode 100644 FamilyBudget/FamilyBudget/Repositories/Implementations/ExpenseBudgetRepository.cs create mode 100644 FamilyBudget/FamilyBudget/Repositories/Implementations/FamilyMemberRepository.cs create mode 100644 FamilyBudget/FamilyBudget/Repositories/Implementations/FamilyRepository.cs create mode 100644 FamilyBudget/FamilyBudget/Repositories/Implementations/IncomeBudgetCategoryRepository.cs create mode 100644 FamilyBudget/FamilyBudget/Repositories/Implementations/IncomeBudgetRepository.cs create mode 100644 FamilyBudget/FamilyBudget/Resources/family.jpg create mode 100644 FamilyBudget/FamilyBudget/Resources/free-icon-dustbin-7709786.png create mode 100644 FamilyBudget/FamilyBudget/Resources/free-icon-edit-tools-8847052.png create mode 100644 FamilyBudget/FamilyBudget/Resources/free-icon-plus-181672.png create mode 100644 FamilyBudget/FamilyBudget/Resources/free-icon-plus-1816721.png create mode 100644 FamilyBudget/FamilyBudget/appsettings.json diff --git a/FamilyBudget/FamilyBudget/Entities/Enums/ExpenseCategoryType.cs b/FamilyBudget/FamilyBudget/Entities/Enums/ExpenseCategoryType.cs new file mode 100644 index 0000000..0f09360 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Entities/Enums/ExpenseCategoryType.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Entities.Enums +{ + [Flags] + public enum ExpenseCategoryType + { + None = 0, + Food = 1, + Utilities = 2, + Entertainment = 4, + Health = 8 + } +} diff --git a/FamilyBudget/FamilyBudget/Entities/Enums/FamilyMemberType.cs b/FamilyBudget/FamilyBudget/Entities/Enums/FamilyMemberType.cs new file mode 100644 index 0000000..2f8f71d --- /dev/null +++ b/FamilyBudget/FamilyBudget/Entities/Enums/FamilyMemberType.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Entities.Enums +{ + public enum FamilyMemberType + { + None = 0, + Father = 1, + Mother = 2, + Son = 3, + Daughter = 4 + } +} diff --git a/FamilyBudget/FamilyBudget/Entities/Enums/IncomeCategoryType.cs b/FamilyBudget/FamilyBudget/Entities/Enums/IncomeCategoryType.cs new file mode 100644 index 0000000..93d4557 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Entities/Enums/IncomeCategoryType.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Entities.Enums +{ + [Flags] + public enum IncomeCategoryType + { + None = 0, + Salary = 1, + Bonus = 2, + Investment = 4 + } +} diff --git a/FamilyBudget/FamilyBudget/Entities/ExpenseBudget.cs b/FamilyBudget/FamilyBudget/Entities/ExpenseBudget.cs new file mode 100644 index 0000000..ada6eee --- /dev/null +++ b/FamilyBudget/FamilyBudget/Entities/ExpenseBudget.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Entities +{ + public class ExpenseBudget + { + public int Id { get; private set; } + public int FamilyMemberId { get; private set; } + public DateTime Date { get; private set; } + public IEnumerable FamilyMember_Expenses { get; private set; } = []; + + public static ExpenseBudget СreateOperation(int id, int familyMemberId, IEnumerable familyMember_Expenses) + { + return new ExpenseBudget + { + Id = id, + FamilyMemberId = familyMemberId, + FamilyMember_Expenses = familyMember_Expenses, + Date = DateTime.Now + }; + } + + } +} diff --git a/FamilyBudget/FamilyBudget/Entities/ExpenseBudgetCategory.cs b/FamilyBudget/FamilyBudget/Entities/ExpenseBudgetCategory.cs new file mode 100644 index 0000000..d31bfac --- /dev/null +++ b/FamilyBudget/FamilyBudget/Entities/ExpenseBudgetCategory.cs @@ -0,0 +1,25 @@ +using FamilyBudget.Entities.Enums; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Entities +{ + public class ExpenseBudgetCategory + { + public int Id { get; private set; } + public string Name { get; private set; } = string.Empty; + public ExpenseCategoryType ExpenseCategoryType { get; private set; } + public static ExpenseBudgetCategory CreateEntity(int id, string name, ExpenseCategoryType expenseCategoryType) + { + return new ExpenseBudgetCategory + { + Id = id, + Name = name, + ExpenseCategoryType = expenseCategoryType + }; + } + } +} diff --git a/FamilyBudget/FamilyBudget/Entities/Family.cs b/FamilyBudget/FamilyBudget/Entities/Family.cs new file mode 100644 index 0000000..0a47778 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Entities/Family.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Entities +{ + public class Family + { + public int Id { get; private set; } + public string Name { get; private set; } = string.Empty; + public static Family CreateEntity(int id, string name) + { + return new Family + { + Id = id, + Name = name ?? string.Empty, + }; + } + } +} diff --git a/FamilyBudget/FamilyBudget/Entities/FamilyMember.cs b/FamilyBudget/FamilyBudget/Entities/FamilyMember.cs new file mode 100644 index 0000000..c50db86 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Entities/FamilyMember.cs @@ -0,0 +1,28 @@ +using FamilyBudget.Entities.Enums; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Entities +{ + public class FamilyMember + { + public int Id { get; set; } + public string Name { get; private set; } = string.Empty; + public int FamilyId { get; private set; } + public FamilyMemberType MemberType { get; private set; } + + public static FamilyMember CreateEntity(int id, string name, int familyId, FamilyMemberType memberType) + { + return new FamilyMember + { + Id = id, + Name = name ?? string.Empty, + FamilyId = familyId, + MemberType = memberType + }; + } + }; +} diff --git a/FamilyBudget/FamilyBudget/Entities/FamilyMember_ExpenseBudget.cs b/FamilyBudget/FamilyBudget/Entities/FamilyMember_ExpenseBudget.cs new file mode 100644 index 0000000..3c368f1 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Entities/FamilyMember_ExpenseBudget.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Entities +{ + public class FamilyMember_ExpenseBudget + { + public int Id { get; private set; } + public int ExpenseBudgetId { get; private set; } + public int Sum { get; private set; } + public static FamilyMember_ExpenseBudget CreateElement(int id, int expenseBudgetId, int sum) + { + return new FamilyMember_ExpenseBudget() + { + Id = id, + ExpenseBudgetId = expenseBudgetId, + Sum = sum + }; + } + } +} diff --git a/FamilyBudget/FamilyBudget/Entities/FamilyMember_IncomeBudget.cs b/FamilyBudget/FamilyBudget/Entities/FamilyMember_IncomeBudget.cs new file mode 100644 index 0000000..f7e7413 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Entities/FamilyMember_IncomeBudget.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Entities +{ + public class FamilyMember_IncomeBudget + { + public int Id { get; private set; } + public int IncomeBudgetId { get; private set;} + public int Sum { get; private set; } + public static FamilyMember_IncomeBudget CreateElement(int id, int incomeBudgetId, int sum) + { + return new FamilyMember_IncomeBudget() + { + Id = id, + IncomeBudgetId = incomeBudgetId, + Sum = sum + }; + } + } +} diff --git a/FamilyBudget/FamilyBudget/Entities/IncomeBudget.cs b/FamilyBudget/FamilyBudget/Entities/IncomeBudget.cs new file mode 100644 index 0000000..f2d4b82 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Entities/IncomeBudget.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Entities +{ + public class IncomeBudget + { + public int Id { get; private set; } + public int FamilyMemberId { get; private set; } + public int IncomeBudgetCategoryId { get; private set; } + public DateTime Date { get; private set; } + public IEnumerable FamilyMember_Incomes { get; private set; } = []; + + public static IncomeBudget CreateOperation(int id, int familyMemberId, IEnumerable FamilyMember_Incomes) + { + return new IncomeBudget + { + Id = id, + FamilyMemberId = familyMemberId, + FamilyMember_Incomes = FamilyMember_Incomes, + Date = DateTime.Now + }; + } + } +} diff --git a/FamilyBudget/FamilyBudget/Entities/IncomeBudgetCategory.cs b/FamilyBudget/FamilyBudget/Entities/IncomeBudgetCategory.cs new file mode 100644 index 0000000..0ab44a1 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Entities/IncomeBudgetCategory.cs @@ -0,0 +1,25 @@ +using FamilyBudget.Entities.Enums; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Entities +{ + public class IncomeBudgetCategory + { + public int Id { get; private set; } + public string Name { get; private set; } = string.Empty; + public IncomeCategoryType IncomeCategoryType { get; private set; } + public static IncomeBudgetCategory CreateEntity(int id, string name, IncomeCategoryType incomeCategoryType) + { + return new IncomeBudgetCategory + { + Id = id, + Name = name ?? string.Empty, + IncomeCategoryType = incomeCategoryType + }; + } + } +} diff --git a/FamilyBudget/FamilyBudget/FamilyBudget.csproj b/FamilyBudget/FamilyBudget/FamilyBudget.csproj index 663fdb8..f567c90 100644 --- a/FamilyBudget/FamilyBudget/FamilyBudget.csproj +++ b/FamilyBudget/FamilyBudget/FamilyBudget.csproj @@ -8,4 +8,42 @@ enable + + + + + + + + + + + + + + + + + + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + + + PreserveNewest + + + \ No newline at end of file diff --git a/FamilyBudget/FamilyBudget/Form1.Designer.cs b/FamilyBudget/FamilyBudget/Form1.Designer.cs deleted file mode 100644 index 1fe6bd4..0000000 --- a/FamilyBudget/FamilyBudget/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace FamilyBudget -{ - partial class Form1 - { - /// - /// 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() - { - this.components = new System.ComponentModel.Container(); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Text = "Form1"; - } - - #endregion - } -} diff --git a/FamilyBudget/FamilyBudget/Form1.cs b/FamilyBudget/FamilyBudget/Form1.cs deleted file mode 100644 index 44bbba5..0000000 --- a/FamilyBudget/FamilyBudget/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace FamilyBudget -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} diff --git a/FamilyBudget/FamilyBudget/FormFamilyBudget.Designer.cs b/FamilyBudget/FamilyBudget/FormFamilyBudget.Designer.cs new file mode 100644 index 0000000..0f40569 --- /dev/null +++ b/FamilyBudget/FamilyBudget/FormFamilyBudget.Designer.cs @@ -0,0 +1,148 @@ +namespace FamilyBudget +{ + partial class FormFamilyBudget + { + /// + /// 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() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormFamilyBudget)); + menuStrip1 = new MenuStrip(); + справочникиToolStripMenuItem = new ToolStripMenuItem(); + FamiliesToolStripMenuItem = new ToolStripMenuItem(); + участникиСемьиToolStripMenuItem = new ToolStripMenuItem(); + категорияДоходовToolStripMenuItem = new ToolStripMenuItem(); + категорияРасходовToolStripMenuItem = new ToolStripMenuItem(); + операцииToolStripMenuItem = new ToolStripMenuItem(); + расходToolStripMenuItem = new ToolStripMenuItem(); + IncomeToolStripMenuItem = new ToolStripMenuItem(); + отчетыToolStripMenuItem = new ToolStripMenuItem(); + menuStrip1.SuspendLayout(); + SuspendLayout(); + // + // menuStrip1 + // + menuStrip1.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, операцииToolStripMenuItem, отчетыToolStripMenuItem }); + menuStrip1.Location = new Point(0, 0); + menuStrip1.Name = "menuStrip1"; + menuStrip1.Size = new Size(799, 24); + menuStrip1.TabIndex = 0; + menuStrip1.Text = "menuStrip1"; + // + // справочникиToolStripMenuItem + // + справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { FamiliesToolStripMenuItem, участникиСемьиToolStripMenuItem, категорияДоходовToolStripMenuItem, категорияРасходовToolStripMenuItem }); + справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem"; + справочникиToolStripMenuItem.Size = new Size(94, 20); + справочникиToolStripMenuItem.Text = "Справочники"; + // + // FamiliesToolStripMenuItem + // + FamiliesToolStripMenuItem.Name = "FamiliesToolStripMenuItem"; + FamiliesToolStripMenuItem.Size = new Size(184, 22); + FamiliesToolStripMenuItem.Text = "Семьи"; + FamiliesToolStripMenuItem.Click += FamiliesToolStripMenuItem_Click; + // + // участникиСемьиToolStripMenuItem + // + участникиСемьиToolStripMenuItem.Name = "участникиСемьиToolStripMenuItem"; + участникиСемьиToolStripMenuItem.Size = new Size(184, 22); + участникиСемьиToolStripMenuItem.Text = "Участники семьи"; + участникиСемьиToolStripMenuItem.Click += FamilyMembers; + // + // категорияДоходовToolStripMenuItem + // + категорияДоходовToolStripMenuItem.Name = "категорияДоходовToolStripMenuItem"; + категорияДоходовToolStripMenuItem.Size = new Size(184, 22); + категорияДоходовToolStripMenuItem.Text = "Категория доходов"; + категорияДоходовToolStripMenuItem.Click += CategoryIncomesToolStripMenuItem_Click; + // + // категорияРасходовToolStripMenuItem + // + категорияРасходовToolStripMenuItem.Name = "категорияРасходовToolStripMenuItem"; + категорияРасходовToolStripMenuItem.Size = new Size(184, 22); + категорияРасходовToolStripMenuItem.Text = "Категория расходов"; + категорияРасходовToolStripMenuItem.Click += CategoryExpensesToolStripMenuItem_Click; + // + // операцииToolStripMenuItem + // + операцииToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { расходToolStripMenuItem, IncomeToolStripMenuItem }); + операцииToolStripMenuItem.Name = "операцииToolStripMenuItem"; + операцииToolStripMenuItem.Size = new Size(75, 20); + операцииToolStripMenuItem.Text = "Операции"; + // + // расходToolStripMenuItem + // + расходToolStripMenuItem.Name = "расходToolStripMenuItem"; + расходToolStripMenuItem.Size = new Size(180, 22); + расходToolStripMenuItem.Text = "Расход"; + расходToolStripMenuItem.Click += ExpenseToolStripMenuItem_Click; + // + // IncomeToolStripMenuItem + // + IncomeToolStripMenuItem.Name = "IncomeToolStripMenuItem"; + IncomeToolStripMenuItem.Size = new Size(180, 22); + IncomeToolStripMenuItem.Text = "Доход"; + IncomeToolStripMenuItem.Click += IncomeToolStripMenuItem_Click; + // + // отчетыToolStripMenuItem + // + отчетыToolStripMenuItem.Name = "отчетыToolStripMenuItem"; + отчетыToolStripMenuItem.Size = new Size(60, 20); + отчетыToolStripMenuItem.Text = "Отчеты"; + // + // FormFamilyBudget + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + BackgroundImage = (Image)resources.GetObject("$this.BackgroundImage"); + BackgroundImageLayout = ImageLayout.Stretch; + ClientSize = new Size(799, 512); + Controls.Add(menuStrip1); + MainMenuStrip = menuStrip1; + Name = "FormFamilyBudget"; + StartPosition = FormStartPosition.CenterScreen; + Text = "FormFamilyBudget"; + Load += FormFamilyBudget_Load; + menuStrip1.ResumeLayout(false); + menuStrip1.PerformLayout(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private MenuStrip menuStrip1; + private ToolStripMenuItem справочникиToolStripMenuItem; + private ToolStripMenuItem операцииToolStripMenuItem; + private ToolStripMenuItem отчетыToolStripMenuItem; + private ToolStripMenuItem FamiliesToolStripMenuItem; + private ToolStripMenuItem участникиСемьиToolStripMenuItem; + private ToolStripMenuItem расходToolStripMenuItem; + private ToolStripMenuItem IncomeToolStripMenuItem; + private ToolStripMenuItem категорияДоходовToolStripMenuItem; + private ToolStripMenuItem категорияРасходовToolStripMenuItem; + } +} diff --git a/FamilyBudget/FamilyBudget/FormFamilyBudget.cs b/FamilyBudget/FamilyBudget/FormFamilyBudget.cs new file mode 100644 index 0000000..155a5fa --- /dev/null +++ b/FamilyBudget/FamilyBudget/FormFamilyBudget.cs @@ -0,0 +1,94 @@ +using FamilyBudget.Forms; +using System.ComponentModel; +using Unity; + +namespace FamilyBudget +{ + public partial class FormFamilyBudget : Form + { + private readonly IUnityContainer _container; + public FormFamilyBudget(IUnityContainer container) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + } + + private void FormFamilyBudget_Load(object sender, EventArgs e) + { + + } + + private void FamiliesToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void FamilyMembers(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + } + + private void IncomeToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ExpenseToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void CategoryIncomesToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void CategoryExpensesToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, " ", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } +} diff --git a/FamilyBudget/FamilyBudget/FormFamilyBudget.resx b/FamilyBudget/FamilyBudget/FormFamilyBudget.resx new file mode 100644 index 0000000..e73a235 --- /dev/null +++ b/FamilyBudget/FamilyBudget/FormFamilyBudget.resx @@ -0,0 +1,2268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + + + + 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 + + + \ No newline at end of file diff --git a/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategories.Designer.cs b/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategories.Designer.cs new file mode 100644 index 0000000..14f2d10 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategories.Designer.cs @@ -0,0 +1,126 @@ +namespace FamilyBudget.Forms +{ + partial class FormExpenseBudgetCategories + { + /// + /// 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() + { + panelEditing = new Panel(); + buttonEdit = new Button(); + buttonDelete = new Button(); + buttonAdd = new Button(); + dataGridViewExpanses = new DataGridView(); + panelEditing.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewExpanses).BeginInit(); + SuspendLayout(); + // + // panelEditing + // + panelEditing.Controls.Add(buttonEdit); + panelEditing.Controls.Add(buttonDelete); + panelEditing.Controls.Add(buttonAdd); + panelEditing.Dock = DockStyle.Right; + panelEditing.Location = new Point(544, 0); + panelEditing.Name = "panelEditing"; + panelEditing.Size = new Size(126, 404); + panelEditing.TabIndex = 0; + // + // buttonEdit + // + buttonEdit.BackgroundImage = Properties.Resources.free_icon_edit_tools_8847052; + buttonEdit.BackgroundImageLayout = ImageLayout.Stretch; + buttonEdit.Location = new Point(27, 116); + buttonEdit.Name = "buttonEdit"; + buttonEdit.Size = new Size(75, 61); + buttonEdit.TabIndex = 9; + buttonEdit.UseVisualStyleBackColor = true; + buttonEdit.Click += buttonEdit_Click; + // + // buttonDelete + // + buttonDelete.BackgroundImage = Properties.Resources.free_icon_dustbin_7709786; + buttonDelete.BackgroundImageLayout = ImageLayout.Stretch; + buttonDelete.Location = new Point(27, 208); + buttonDelete.Name = "buttonDelete"; + buttonDelete.Size = new Size(75, 61); + buttonDelete.TabIndex = 7; + buttonDelete.UseVisualStyleBackColor = true; + buttonDelete.Click += ButtonDelete_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.free_icon_plus_181672; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(27, 36); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(75, 61); + buttonAdd.TabIndex = 6; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // dataGridViewExpanses + // + dataGridViewExpanses.AllowUserToAddRows = false; + dataGridViewExpanses.AllowUserToDeleteRows = false; + dataGridViewExpanses.AllowUserToResizeColumns = false; + dataGridViewExpanses.AllowUserToResizeRows = false; + dataGridViewExpanses.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewExpanses.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewExpanses.Dock = DockStyle.Fill; + dataGridViewExpanses.Location = new Point(0, 0); + dataGridViewExpanses.MultiSelect = false; + dataGridViewExpanses.Name = "dataGridViewExpanses"; + dataGridViewExpanses.ReadOnly = true; + dataGridViewExpanses.RowHeadersVisible = false; + dataGridViewExpanses.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewExpanses.Size = new Size(544, 404); + dataGridViewExpanses.TabIndex = 1; + // + // FormExpenseBudgetCategories + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(670, 404); + Controls.Add(dataGridViewExpanses); + Controls.Add(panelEditing); + Name = "FormExpenseBudgetCategories"; + StartPosition = FormStartPosition.CenterParent; + Text = "Список категории расходов"; + Load += FormFamilyMembers_Load; + panelEditing.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewExpanses).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panelEditing; + private DataGridView dataGridViewExpanses; + private Button buttonDelete; + private Button buttonAdd; + private Button buttonEdit; + } +} \ No newline at end of file diff --git a/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategories.cs b/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategories.cs new file mode 100644 index 0000000..1b3c37d --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategories.cs @@ -0,0 +1,129 @@ +using FamilyBudget.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Unity; + +namespace FamilyBudget.Forms +{ + public partial class FormExpenseBudgetCategories : Form + { + private readonly IUnityContainer _container; + private readonly IExpenseBudgetCategoryRepository _expenseBudgetCategoryRepository; + + public FormExpenseBudgetCategories(IUnityContainer container, IExpenseBudgetCategoryRepository expenseBudgetCategoryRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _expenseBudgetCategoryRepository = expenseBudgetCategoryRepository ?? throw new ArgumentNullException(); + } + + private void FormFamilyMembers_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + + } + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonUpdate_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + } + + private void ButtonDelete_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _expenseBudgetCategoryRepository.DeleteExpenseBudgetCategory(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridViewExpanses.DataSource = _expenseBudgetCategoryRepository.ReadExpenseBudgetCategories(); + + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewExpanses.Rows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + + id = Convert.ToInt32(dataGridViewExpanses.SelectedRows[0].Cells["Id"].Value); + return true; + + } + + private void buttonEdit_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } +} diff --git a/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategories.resx b/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategories.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategories.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/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategory.Designer.cs b/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategory.Designer.cs new file mode 100644 index 0000000..91c748a --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategory.Designer.cs @@ -0,0 +1,124 @@ +namespace FamilyBudget.Forms +{ + partial class FormExpenseBudgetCategory + { + /// + /// 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() + { + labelCategory = new Label(); + textBoxName = new TextBox(); + buttonCancel = new Button(); + buttonSave = new Button(); + checkedListBoxExpenses = new CheckedListBox(); + label2 = new Label(); + SuspendLayout(); + // + // labelCategory + // + labelCategory.Anchor = AnchorStyles.Top; + labelCategory.AutoSize = true; + labelCategory.Location = new Point(25, 30); + labelCategory.Name = "labelCategory"; + labelCategory.Size = new Size(60, 15); + labelCategory.TabIndex = 7; + labelCategory.Text = "название:"; + // + // textBoxName + // + textBoxName.Anchor = AnchorStyles.None; + textBoxName.Location = new Point(154, 27); + textBoxName.Name = "textBoxName"; + textBoxName.Size = new Size(224, 23); + textBoxName.TabIndex = 6; + // + // buttonCancel + // + buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonCancel.Location = new Point(303, 233); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(75, 23); + buttonCancel.TabIndex = 5; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // buttonSave + // + buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonSave.Location = new Point(25, 233); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(75, 23); + buttonSave.TabIndex = 4; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // checkedListBoxExpenses + // + checkedListBoxExpenses.FormattingEnabled = true; + checkedListBoxExpenses.Location = new Point(154, 73); + checkedListBoxExpenses.Name = "checkedListBoxExpenses"; + checkedListBoxExpenses.Size = new Size(224, 130); + checkedListBoxExpenses.TabIndex = 10; + // + // label2 + // + label2.Anchor = AnchorStyles.Top; + label2.AutoSize = true; + label2.Location = new Point(25, 73); + label2.Name = "label2"; + label2.Size = new Size(120, 15); + label2.TabIndex = 11; + label2.Text = "Категория расходов:"; + // + // FormExpenseBudgetCategory + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(404, 280); + Controls.Add(label2); + Controls.Add(checkedListBoxExpenses); + Controls.Add(labelCategory); + Controls.Add(textBoxName); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Name = "FormExpenseBudgetCategory"; + StartPosition = FormStartPosition.CenterParent; + Text = "Категория расходов"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label labelCategory; + private TextBox textBoxName; + private Button buttonCancel; + private Button buttonSave; + private CheckedListBox checkedListBoxExpenses; + private Label label2; + } +} \ No newline at end of file diff --git a/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategory.cs b/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategory.cs new file mode 100644 index 0000000..6c59c3a --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategory.cs @@ -0,0 +1,95 @@ +using FamilyBudget.Entities; +using FamilyBudget.Entities.Enums; +using FamilyBudget.Repositories; +using FamilyBudget.Repositories.Implementations; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Unity; + +namespace FamilyBudget.Forms +{ + public partial class FormExpenseBudgetCategory : Form + { + private readonly IExpenseBudgetCategoryRepository _expenseBudgetCategoryRepository; + private int? _expenseId; + public int Id + { + set + { + try + { + var expense = _expenseBudgetCategoryRepository.ReadExpenseBudgetCategoryById(value); + if (expense == null) + { + throw new InvalidDataException(nameof(expense)); + } + foreach (ExpenseCategoryType elem in Enum.GetValues(typeof(ExpenseCategoryType))) + { + if ((elem & expense.ExpenseCategoryType) != 0) + { + checkedListBoxExpenses.SetItemChecked(checkedListBoxExpenses.Items.IndexOf( + elem), true); + } + } + textBoxName.Text = expense.Name; + _expenseId = value; + + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получени данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + + public FormExpenseBudgetCategory(IExpenseBudgetCategoryRepository expenseBudgetCategoryRepository) + { + InitializeComponent(); + _expenseBudgetCategoryRepository = expenseBudgetCategoryRepository ?? throw new ArgumentNullException(nameof( + expenseBudgetCategoryRepository)); + foreach (ExpenseCategoryType elem in Enum.GetValues(typeof(ExpenseCategoryType))) + { + checkedListBoxExpenses.Items.Add(elem); + } + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxName.Text) || checkedListBoxExpenses.CheckedItems.Count == 0) + throw new Exception("Имеются незаполненные поля"); + if (_expenseId.HasValue) + _expenseBudgetCategoryRepository.UpdateExpenseBudgetCategoryById(CreateExpenseBudgetCategory(_expenseId.Value)); + else + _expenseBudgetCategoryRepository.CreateExpenseBudgetCategory(CreateExpenseBudgetCategory(0)); + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private ExpenseBudgetCategory CreateExpenseBudgetCategory(int id) + { + ExpenseCategoryType expenseType = ExpenseCategoryType.None; + foreach (ExpenseCategoryType elem in checkedListBoxExpenses.CheckedItems) + { + expenseType |= elem; + } + return ExpenseBudgetCategory.CreateEntity(id, textBoxName.Text, expenseType); + } + + } +} diff --git a/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategory.resx b/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategory.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormExpenseBudgetCategory.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/FamilyBudget/FamilyBudget/Forms/FormFamilies.Designer.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilies.Designer.cs new file mode 100644 index 0000000..1c6306f --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilies.Designer.cs @@ -0,0 +1,126 @@ +namespace FamilyBudget.Forms +{ + partial class FormFamilies + { + /// + /// 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() + { + dataGridViewFamilies = new DataGridView(); + buttonAdd = new Button(); + buttonEdit = new Button(); + buttonDelete = new Button(); + panel1 = new Panel(); + ((System.ComponentModel.ISupportInitialize)dataGridViewFamilies).BeginInit(); + panel1.SuspendLayout(); + SuspendLayout(); + // + // dataGridViewFamilies + // + dataGridViewFamilies.AllowUserToAddRows = false; + dataGridViewFamilies.AllowUserToDeleteRows = false; + dataGridViewFamilies.AllowUserToResizeColumns = false; + dataGridViewFamilies.AllowUserToResizeRows = false; + dataGridViewFamilies.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewFamilies.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewFamilies.Dock = DockStyle.Fill; + dataGridViewFamilies.Location = new Point(0, 0); + dataGridViewFamilies.MultiSelect = false; + dataGridViewFamilies.Name = "dataGridViewFamilies"; + dataGridViewFamilies.ReadOnly = true; + dataGridViewFamilies.RowHeadersVisible = false; + dataGridViewFamilies.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewFamilies.Size = new Size(765, 432); + dataGridViewFamilies.TabIndex = 0; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.free_icon_plus_181672; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(22, 24); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(75, 61); + buttonAdd.TabIndex = 1; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // buttonEdit + // + buttonEdit.BackgroundImage = Properties.Resources.free_icon_edit_tools_8847052; + buttonEdit.BackgroundImageLayout = ImageLayout.Stretch; + buttonEdit.Location = new Point(22, 150); + buttonEdit.Name = "buttonEdit"; + buttonEdit.Size = new Size(75, 61); + buttonEdit.TabIndex = 2; + buttonEdit.UseVisualStyleBackColor = true; + buttonEdit.Click += ButtonUpd_Click; + // + // buttonDelete + // + buttonDelete.BackgroundImage = Properties.Resources.free_icon_dustbin_7709786; + buttonDelete.BackgroundImageLayout = ImageLayout.Stretch; + buttonDelete.Location = new Point(22, 263); + buttonDelete.Name = "buttonDelete"; + buttonDelete.Size = new Size(75, 61); + buttonDelete.TabIndex = 3; + buttonDelete.UseVisualStyleBackColor = true; + buttonDelete.Click += ButtonDel_Click; + // + // panel1 + // + panel1.Controls.Add(buttonEdit); + panel1.Controls.Add(buttonDelete); + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(651, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(114, 432); + panel1.TabIndex = 4; + // + // FormFamilies + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(765, 432); + Controls.Add(panel1); + Controls.Add(dataGridViewFamilies); + Name = "FormFamilies"; + StartPosition = FormStartPosition.CenterParent; + Text = "Список семей"; + Load += FormFamiliesLoad; + ((System.ComponentModel.ISupportInitialize)dataGridViewFamilies).EndInit(); + panel1.ResumeLayout(false); + ResumeLayout(false); + } + + #endregion + + private DataGridView dataGridViewFamilies; + private Button buttonAdd; + private Button buttonEdit; + private Button buttonDelete; + private Panel panel1; + } +} \ No newline at end of file diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilies.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilies.cs new file mode 100644 index 0000000..e64bea4 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilies.cs @@ -0,0 +1,109 @@ +using FamilyBudget.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Linq.Expressions; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Unity; + +namespace FamilyBudget.Forms +{ + public partial class FormFamilies : Form + { + private readonly IUnityContainer _container; + private readonly IFamilyRepository _familyRepository; + public FormFamilies(IUnityContainer container, IFamilyRepository familyRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _familyRepository = familyRepository ?? throw new ArgumentNullException(nameof(familyRepository)); + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void FormFamiliesLoad(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonUpd_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonDel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + + try + { + _familyRepository.DeleteFamily(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridViewFamilies.DataSource = _familyRepository.ReadFamilies(); + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewFamilies.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + + } + + id = Convert.ToInt32(dataGridViewFamilies.SelectedRows[0].Cells["Id"].Value); + return true; + } + } +} diff --git a/FamilyBudget/FamilyBudget/Form1.resx b/FamilyBudget/FamilyBudget/Forms/FormFamilies.resx similarity index 93% rename from FamilyBudget/FamilyBudget/Form1.resx rename to FamilyBudget/FamilyBudget/Forms/FormFamilies.resx index 1af7de1..af32865 100644 --- a/FamilyBudget/FamilyBudget/Form1.resx +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilies.resx @@ -1,17 +1,17 @@  - diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamily.Designer.cs b/FamilyBudget/FamilyBudget/Forms/FormFamily.Designer.cs new file mode 100644 index 0000000..3ab3ac5 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamily.Designer.cs @@ -0,0 +1,100 @@ +namespace FamilyBudget.Forms +{ + partial class FormFamily + { + /// + /// 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() + { + textBoxFamily = new TextBox(); + buttonSave = new Button(); + buttonCancel = new Button(); + labelFamily = new Label(); + SuspendLayout(); + // + // textBoxFamily + // + textBoxFamily.Anchor = AnchorStyles.Top; + textBoxFamily.Location = new Point(131, 41); + textBoxFamily.Name = "textBoxFamily"; + textBoxFamily.Size = new Size(153, 23); + textBoxFamily.TabIndex = 0; + // + // buttonSave + // + buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonSave.Location = new Point(43, 112); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(75, 23); + buttonSave.TabIndex = 1; + buttonSave.Text = "сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // buttonCancel + // + buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonCancel.Location = new Point(220, 112); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(75, 23); + buttonCancel.TabIndex = 2; + buttonCancel.Text = "отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // labelFamily + // + labelFamily.Anchor = AnchorStyles.Top; + labelFamily.AutoSize = true; + labelFamily.Location = new Point(57, 44); + labelFamily.Name = "labelFamily"; + labelFamily.Size = new Size(61, 15); + labelFamily.TabIndex = 3; + labelFamily.Text = "Фамилия:"; + // + // FormFamily + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(343, 170); + Controls.Add(labelFamily); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(textBoxFamily); + Name = "FormFamily"; + StartPosition = FormStartPosition.CenterParent; + Text = "Семья"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private TextBox textBoxFamily; + private Button buttonSave; + private Button buttonCancel; + private Label labelFamily; + } +} \ No newline at end of file diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamily.cs b/FamilyBudget/FamilyBudget/Forms/FormFamily.cs new file mode 100644 index 0000000..f6b8b40 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamily.cs @@ -0,0 +1,73 @@ +using FamilyBudget.Entities; +using FamilyBudget.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Drawing.Text; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace FamilyBudget.Forms +{ + public partial class FormFamily : Form + { + private readonly IFamilyRepository _familyRepository; + private int? _familyId; + public int Id + { + set + { + try + { + var family = _familyRepository.ReadFamilyById(value); + if (family == null) + { + throw new InvalidDataException(nameof(family)); + } + textBoxFamily.Text = family.Name; + _familyId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon. + Error); + return; + } + } + } + public FormFamily(IFamilyRepository familyRepository) + { + InitializeComponent(); + _familyRepository = familyRepository ?? throw new ArgumentNullException(nameof(familyRepository)); + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxFamily.Text)) throw new Exception("Имеются незаполненные поля"); + if (_familyId.HasValue) + { + _familyRepository.UpdateFamily(CreateFamily(_familyId.Value)); + } + else + { + _familyRepository.CreateFamily(CreateFamily(0)); + } + Close(); } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private Family CreateFamily(int id) => Family.CreateEntity(id, textBoxFamily.Text); + } +} + diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamily.resx b/FamilyBudget/FamilyBudget/Forms/FormFamily.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamily.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/FamilyBudget/FamilyBudget/Forms/FormFamilyMember.Designer.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember.Designer.cs new file mode 100644 index 0000000..1d61ff9 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember.Designer.cs @@ -0,0 +1,148 @@ +namespace FamilyBudget.Forms +{ + partial class FormFamilyMember + { + /// + /// 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() + { + labelName = new Label(); + textBoxName = new TextBox(); + buttonSave = new Button(); + buttonCancel = new Button(); + comboBoxFamily = new ComboBox(); + labelFamily = new Label(); + comboBoxFamilyMember = new ComboBox(); + labelMember = new Label(); + SuspendLayout(); + // + // labelName + // + labelName.Anchor = AnchorStyles.Top; + labelName.AutoSize = true; + labelName.Location = new Point(77, 61); + labelName.Name = "labelName"; + labelName.Size = new Size(34, 15); + labelName.TabIndex = 0; + labelName.Text = "Имя:"; + // + // textBoxName + // + textBoxName.Anchor = AnchorStyles.Top; + textBoxName.Location = new Point(123, 53); + textBoxName.Name = "textBoxName"; + textBoxName.Size = new Size(215, 23); + textBoxName.TabIndex = 1; + // + // buttonSave + // + buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonSave.Location = new Point(59, 269); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(75, 23); + buttonSave.TabIndex = 2; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // buttonCancel + // + buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonCancel.Location = new Point(246, 269); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(75, 23); + buttonCancel.TabIndex = 3; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // comboBoxFamily + // + comboBoxFamily.FormattingEnabled = true; + comboBoxFamily.Location = new Point(123, 106); + comboBoxFamily.Name = "comboBoxFamily"; + comboBoxFamily.Size = new Size(215, 23); + comboBoxFamily.TabIndex = 4; + // + // labelFamily + // + labelFamily.Anchor = AnchorStyles.Top; + labelFamily.AutoSize = true; + labelFamily.Location = new Point(66, 109); + labelFamily.Name = "labelFamily"; + labelFamily.Size = new Size(45, 15); + labelFamily.TabIndex = 5; + labelFamily.Text = "Семья:"; + // + // comboBoxFamilyMember + // + comboBoxFamilyMember.FormattingEnabled = true; + comboBoxFamilyMember.Location = new Point(123, 160); + comboBoxFamilyMember.Name = "comboBoxFamilyMember"; + comboBoxFamilyMember.Size = new Size(215, 23); + comboBoxFamilyMember.TabIndex = 6; + // + // labelMember + // + labelMember.Anchor = AnchorStyles.Top; + labelMember.AutoSize = true; + labelMember.Location = new Point(17, 163); + labelMember.Name = "labelMember"; + labelMember.Size = new Size(98, 15); + labelMember.TabIndex = 7; + labelMember.Text = "Участник семьи:"; + // + // FormFamilyMember + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(387, 337); + Controls.Add(labelMember); + Controls.Add(comboBoxFamilyMember); + Controls.Add(labelFamily); + Controls.Add(comboBoxFamily); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(textBoxName); + Controls.Add(labelName); + Name = "FormFamilyMember"; + StartPosition = FormStartPosition.CenterParent; + Text = "Участник семьи"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label labelName; + private TextBox textBoxName; + private Button buttonSave; + private Button buttonCancel; + private ComboBox comboBoxFamily; + private Label labelFamily; + private ComboBox comboBoxFamilyMember; + private Label labelMember; + } +} \ No newline at end of file diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember.cs new file mode 100644 index 0000000..6f8a19a --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember.cs @@ -0,0 +1,84 @@ +using FamilyBudget.Entities; +using FamilyBudget.Entities.Enums; +using FamilyBudget.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace FamilyBudget.Forms +{ + public partial class FormFamilyMember : Form + { + private readonly IFamilyMemberRepository _familyMemberRepository; + private readonly IFamilyRepository _familyRepository; + private int? _familyMemberId; + + public int Id + { + set + { + try + { + var familyMember = _familyMemberRepository.ReadFamilyMemberById(value); + if (familyMember == null) + { + throw new InvalidDataException(nameof(familyMember)); + } + + comboBoxFamily.SelectedIndex = familyMember.FamilyId; + comboBoxFamilyMember.SelectedItem = familyMember.MemberType; + textBoxName.Text = familyMember.Name; + + _familyMemberId = value; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получении данных", MessageBoxButtons.OK, MessageBoxIcon. + Error); + return; + } + } + } + public FormFamilyMember(IFamilyMemberRepository familyMemberRepository, IFamilyRepository familyRepository) + { + InitializeComponent(); + _familyMemberRepository = familyMemberRepository ?? throw new ArgumentNullException(nameof( + familyMemberRepository)); + _familyRepository = familyRepository ?? throw new ArgumentNullException(nameof( + familyRepository)); + comboBoxFamilyMember.DataSource = Enum.GetValues(typeof(FamilyMemberType)); + comboBoxFamily.DataSource = _familyRepository.ReadFamilies(); + comboBoxFamily.DisplayMember = "Name"; + comboBoxFamily.ValueMember = "Id"; + + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxName.Text) || comboBoxFamily.SelectedIndex < 0 || comboBoxFamilyMember.SelectedIndex < 0) + throw new Exception("Имеются незаполненные поля"); + if (_familyMemberId.HasValue) + _familyMemberRepository.UpdateFamilyMember(CreateFamilyMember(_familyMemberId.Value)); + else + _familyMemberRepository.CreateFamilyMember(CreateFamilyMember(0)); + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private FamilyMember CreateFamilyMember(int id) => FamilyMember.CreateEntity(id, textBoxName.Text, (int)comboBoxFamily.SelectedValue!, (FamilyMemberType)comboBoxFamilyMember.SelectedItem!); + } +} diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember.resx b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember.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/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudget.Designer.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudget.Designer.cs new file mode 100644 index 0000000..af0f8aa --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudget.Designer.cs @@ -0,0 +1,176 @@ +namespace FamilyBudget.Forms +{ + partial class FormFamilyMember_ExpenseBudget + { + /// + /// 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() + { + comboBoxFamilyMember = new ComboBox(); + buttonCancel = new Button(); + buttonSave = new Button(); + labelDate = new Label(); + labelFamilyMember = new Label(); + dateTimePicker1 = new DateTimePicker(); + groupBox1 = new GroupBox(); + dataGridView = new DataGridView(); + ColumnExpanseName = new DataGridViewComboBoxColumn(); + ColumnSum = new DataGridViewTextBoxColumn(); + groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // comboBoxFamilyMember + // + comboBoxFamilyMember.Anchor = AnchorStyles.Top; + comboBoxFamilyMember.FormattingEnabled = true; + comboBoxFamilyMember.Location = new Point(175, 82); + comboBoxFamilyMember.Name = "comboBoxFamilyMember"; + comboBoxFamilyMember.Size = new Size(164, 23); + comboBoxFamilyMember.TabIndex = 21; + // + // buttonCancel + // + buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonCancel.Location = new Point(312, 450); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(75, 23); + buttonCancel.TabIndex = 20; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // buttonSave + // + buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonSave.Location = new Point(28, 450); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(75, 23); + buttonSave.TabIndex = 19; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // labelDate + // + labelDate.Anchor = AnchorStyles.Top; + labelDate.AutoSize = true; + labelDate.Location = new Point(71, 35); + labelDate.Name = "labelDate"; + labelDate.Size = new Size(41, 15); + labelDate.TabIndex = 18; + labelDate.Text = "Дата: "; + // + // labelFamilyMember + // + labelFamilyMember.Anchor = AnchorStyles.Top; + labelFamilyMember.AutoSize = true; + labelFamilyMember.Location = new Point(61, 82); + labelFamilyMember.Name = "labelFamilyMember"; + labelFamilyMember.Size = new Size(101, 15); + labelFamilyMember.TabIndex = 17; + labelFamilyMember.Text = "Участник семьи: "; + // + // dateTimePicker1 + // + dateTimePicker1.Anchor = AnchorStyles.Top; + dateTimePicker1.Enabled = false; + dateTimePicker1.Location = new Point(175, 35); + dateTimePicker1.Name = "dateTimePicker1"; + dateTimePicker1.Size = new Size(164, 23); + dateTimePicker1.TabIndex = 14; + // + // groupBox1 + // + groupBox1.Controls.Add(dataGridView); + groupBox1.Location = new Point(28, 123); + groupBox1.Name = "groupBox1"; + groupBox1.Size = new Size(359, 308); + groupBox1.TabIndex = 22; + groupBox1.TabStop = false; + groupBox1.Text = "Траты"; + // + // dataGridView + // + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Columns.AddRange(new DataGridViewColumn[] { ColumnExpanseName, ColumnSum }); + dataGridView.Dock = DockStyle.Fill; + dataGridView.Location = new Point(3, 19); + dataGridView.MultiSelect = false; + dataGridView.Name = "dataGridView"; + dataGridView.RowHeadersVisible = false; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(353, 286); + dataGridView.TabIndex = 0; + // + // ColumnExpanseName + // + ColumnExpanseName.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + ColumnExpanseName.HeaderText = "Название"; + ColumnExpanseName.Name = "ColumnExpanseName"; + // + // ColumnSum + // + ColumnSum.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + ColumnSum.HeaderText = "Сумма"; + ColumnSum.Name = "ColumnSum"; + // + // FormFamilyMember_ExpenseBudget + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(430, 500); + Controls.Add(groupBox1); + Controls.Add(comboBoxFamilyMember); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(labelDate); + Controls.Add(labelFamilyMember); + Controls.Add(dateTimePicker1); + Name = "FormFamilyMember_ExpenseBudget"; + StartPosition = FormStartPosition.CenterParent; + Text = "Добавление расхода"; + groupBox1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private ComboBox comboBoxFamilyMember; + private Button buttonCancel; + private Button buttonSave; + private Label labelDate; + private Label labelFamilyMember; + private DateTimePicker dateTimePicker1; + private GroupBox groupBox1; + private DataGridView dataGridView; + private DataGridViewComboBoxColumn ColumnExpanseName; + private DataGridViewTextBoxColumn ColumnSum; + } +} \ No newline at end of file diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudget.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudget.cs new file mode 100644 index 0000000..3fdb1c7 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudget.cs @@ -0,0 +1,68 @@ +using FamilyBudget.Entities; +using FamilyBudget.Repositories; +using FamilyBudget.Repositories.Implementations; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace FamilyBudget.Forms +{ + public partial class FormFamilyMember_ExpenseBudget : Form + { + private readonly IExpenseBudgetRepository _expenseBudgetRepository; + public FormFamilyMember_ExpenseBudget(IExpenseBudgetRepository + expenseBudgetRepository, IFamilyMemberRepository familyMemberRepository, IExpenseBudgetCategoryRepository expenses) + { + InitializeComponent(); + _expenseBudgetRepository = expenseBudgetRepository ?? throw new ArgumentNullException(nameof( +expenseBudgetRepository)); + comboBoxFamilyMember.DataSource = familyMemberRepository.ReadFamilyMembers(); + comboBoxFamilyMember.DisplayMember = "Name"; + comboBoxFamilyMember.ValueMember = "Id"; + + ColumnExpanseName.DataSource = expenses.ReadExpenseBudgetCategories(); + comboBoxFamilyMember.DisplayMember = "Name"; + comboBoxFamilyMember.ValueMember = "Id"; + } + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (dataGridView.RowCount < 1 || comboBoxFamilyMember.SelectedIndex < 0) + { + throw new Exception("Имеются незаполненные поля"); + } + + _expenseBudgetRepository.CreateExpenseBudget(ExpenseBudget.СreateOperation(0, (int)comboBoxFamilyMember.SelectedValue!, + CreateListExpenseBudgetFromGrid())); + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + private List CreateListExpenseBudgetFromGrid() + { + var list = new List(); + foreach (DataGridViewRow row in dataGridView.Rows) + { + if (row.Cells["ColumnExpanseName"].Value == null || row.Cells["ColumnSum"].Value == null) + { + continue; + } + list.Add(FamilyMember_ExpenseBudget.CreateElement(0, Convert.ToInt32(row.Cells["ColumnExpanseName"].Value) + , Convert.ToInt32(row.Cells["ColumnSum"].Value))); + } + return list; + + } + } +} diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudget.resx b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudget.resx new file mode 100644 index 0000000..12b888b --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudget.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + True + + + True + + \ No newline at end of file diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudgets.Designer.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudgets.Designer.cs new file mode 100644 index 0000000..25a9133 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudgets.Designer.cs @@ -0,0 +1,112 @@ +namespace FamilyBudget.Forms +{ + partial class FormFamilyMember_ExpenseBudgets + { + /// + /// 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() + { + panel1 = new Panel(); + buttonDelete = new Button(); + buttonAdd = new Button(); + dataGridViewExpenses = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewExpenses).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(buttonDelete); + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(693, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(107, 450); + panel1.TabIndex = 0; + // + // buttonDelete + // + buttonDelete.BackgroundImage = Properties.Resources.free_icon_dustbin_7709786; + buttonDelete.BackgroundImageLayout = ImageLayout.Stretch; + buttonDelete.Location = new Point(20, 234); + buttonDelete.Name = "buttonDelete"; + buttonDelete.Size = new Size(75, 61); + buttonDelete.TabIndex = 4; + buttonDelete.UseVisualStyleBackColor = true; + buttonDelete.Click += ButtonDelete_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.free_icon_plus_181672; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(20, 46); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(75, 61); + buttonAdd.TabIndex = 3; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // dataGridViewExpenses + // + dataGridViewExpenses.AllowUserToAddRows = false; + dataGridViewExpenses.AllowUserToDeleteRows = false; + dataGridViewExpenses.AllowUserToResizeColumns = false; + dataGridViewExpenses.AllowUserToResizeRows = false; + dataGridViewExpenses.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewExpenses.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewExpenses.Dock = DockStyle.Fill; + dataGridViewExpenses.Location = new Point(0, 0); + dataGridViewExpenses.MultiSelect = false; + dataGridViewExpenses.Name = "dataGridViewExpenses"; + dataGridViewExpenses.ReadOnly = true; + dataGridViewExpenses.RowHeadersVisible = false; + dataGridViewExpenses.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewExpenses.Size = new Size(693, 450); + dataGridViewExpenses.TabIndex = 1; + // + // FormFamilyMember_ExpenseBudgets + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridViewExpenses); + Controls.Add(panel1); + Name = "FormFamilyMember_ExpenseBudgets"; + StartPosition = FormStartPosition.CenterParent; + Text = "Список добавления расходов"; + Load += FormMemberExpenseBudgetLoad; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewExpenses).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private DataGridView dataGridViewExpenses; + private Button buttonDelete; + private Button buttonAdd; + } +} \ No newline at end of file diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudgets.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudgets.cs new file mode 100644 index 0000000..b6e3f2c --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudgets.cs @@ -0,0 +1,105 @@ +using FamilyBudget.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Unity; + +namespace FamilyBudget.Forms +{ + public partial class FormFamilyMember_ExpenseBudgets : Form + { + private readonly IUnityContainer _container; + private readonly IExpenseBudgetRepository _expenseBudgetRepository; + + public FormFamilyMember_ExpenseBudgets(IUnityContainer container, IExpenseBudgetRepository expenseBudgetRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _expenseBudgetRepository = expenseBudgetRepository ?? throw new ArgumentNullException(); + } + + private void FormFamilyMembers_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + + } + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + + private void ButtonDelete_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _expenseBudgetRepository.DeleteExpenseBudget(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridViewExpenses.DataSource = _expenseBudgetRepository.ReadExpenseBudgets(); + + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewExpenses.Rows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + + id = Convert.ToInt32(dataGridViewExpenses.SelectedRows[0].Cells["Id"].Value); + return true; + + } + + private void FormMemberExpenseBudgetLoad(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + + } + } + } + +} diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudgets.resx b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudgets.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_ExpenseBudgets.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/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudget.Designer.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudget.Designer.cs new file mode 100644 index 0000000..1e90d6e --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudget.Designer.cs @@ -0,0 +1,174 @@ +namespace FamilyBudget.Forms +{ + partial class FormFamilyMember_IncomeBudget + { + /// + /// 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() + { + dateTimePicker1 = new DateTimePicker(); + labelFamilyMember = new Label(); + labelDate = new Label(); + buttonSave = new Button(); + buttonCancel = new Button(); + comboBoxFamilyMember = new ComboBox(); + dataGridView = new DataGridView(); + ColumnIncomeName = new DataGridViewComboBoxColumn(); + ColumnSum = new DataGridViewTextBoxColumn(); + groupBox1 = new GroupBox(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + groupBox1.SuspendLayout(); + SuspendLayout(); + // + // dateTimePicker1 + // + dateTimePicker1.Anchor = AnchorStyles.Top; + dateTimePicker1.Enabled = false; + dateTimePicker1.Location = new Point(151, 35); + dateTimePicker1.Name = "dateTimePicker1"; + dateTimePicker1.Size = new Size(164, 23); + dateTimePicker1.TabIndex = 2; + // + // labelFamilyMember + // + labelFamilyMember.Anchor = AnchorStyles.Top; + labelFamilyMember.AutoSize = true; + labelFamilyMember.Location = new Point(20, 90); + labelFamilyMember.Name = "labelFamilyMember"; + labelFamilyMember.Size = new Size(101, 15); + labelFamilyMember.TabIndex = 6; + labelFamilyMember.Text = "Участник семьи: "; + // + // labelDate + // + labelDate.Anchor = AnchorStyles.Top; + labelDate.AutoSize = true; + labelDate.Location = new Point(30, 35); + labelDate.Name = "labelDate"; + labelDate.Size = new Size(41, 15); + labelDate.TabIndex = 8; + labelDate.Text = "Дата: "; + // + // buttonSave + // + buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonSave.Location = new Point(43, 491); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(75, 23); + buttonSave.TabIndex = 9; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // buttonCancel + // + buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonCancel.Location = new Point(276, 491); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(75, 23); + buttonCancel.TabIndex = 10; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // comboBoxFamilyMember + // + comboBoxFamilyMember.Anchor = AnchorStyles.Top; + comboBoxFamilyMember.FormattingEnabled = true; + comboBoxFamilyMember.Location = new Point(151, 82); + comboBoxFamilyMember.Name = "comboBoxFamilyMember"; + comboBoxFamilyMember.Size = new Size(164, 23); + comboBoxFamilyMember.TabIndex = 11; + // + // dataGridView + // + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Columns.AddRange(new DataGridViewColumn[] { ColumnIncomeName, ColumnSum }); + dataGridView.Location = new Point(6, 22); + dataGridView.MultiSelect = false; + dataGridView.Name = "dataGridView"; + dataGridView.RowHeadersVisible = false; + dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridView.Size = new Size(349, 311); + dataGridView.TabIndex = 12; + // + // ColumnIncomeName + // + ColumnIncomeName.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + ColumnIncomeName.HeaderText = "Название"; + ColumnIncomeName.Name = "ColumnIncomeName"; + ColumnIncomeName.Resizable = DataGridViewTriState.True; + ColumnIncomeName.SortMode = DataGridViewColumnSortMode.Automatic; + // + // ColumnSum + // + ColumnSum.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + ColumnSum.HeaderText = "Сумма"; + ColumnSum.Name = "ColumnSum"; + // + // groupBox1 + // + groupBox1.Controls.Add(dataGridView); + groupBox1.Location = new Point(30, 123); + groupBox1.Name = "groupBox1"; + groupBox1.Size = new Size(361, 339); + groupBox1.TabIndex = 13; + groupBox1.TabStop = false; + groupBox1.Text = "Доходы"; + // + // FormFamilyMember_IncomeBudget + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(403, 526); + Controls.Add(groupBox1); + Controls.Add(comboBoxFamilyMember); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Controls.Add(labelDate); + Controls.Add(labelFamilyMember); + Controls.Add(dateTimePicker1); + Name = "FormFamilyMember_IncomeBudget"; + StartPosition = FormStartPosition.CenterParent; + Text = "Доход"; + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + groupBox1.ResumeLayout(false); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + private DateTimePicker dateTimePicker1; + private Label labelFamilyMember; + private Label labelDate; + private Button buttonSave; + private Button buttonCancel; + private ComboBox comboBoxFamilyMember; + private DataGridView dataGridView; + private GroupBox groupBox1; + private DataGridViewComboBoxColumn ColumnIncomeName; + private DataGridViewTextBoxColumn ColumnSum; + } +} \ No newline at end of file diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudget.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudget.cs new file mode 100644 index 0000000..57b3157 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudget.cs @@ -0,0 +1,68 @@ +using FamilyBudget.Entities; +using FamilyBudget.Repositories; +using FamilyBudget.Repositories.Implementations; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace FamilyBudget.Forms +{ + public partial class FormFamilyMember_IncomeBudget : Form + { + private readonly IIncomeBudgetRepository _incomeBudgetRepository; + public FormFamilyMember_IncomeBudget(IIncomeBudgetRepository + incomeBudgetRepository, IFamilyMemberRepository familyMemberRepository, IIncomeBudgetCategoryRepository incomes) + { + InitializeComponent(); + _incomeBudgetRepository = incomeBudgetRepository ?? throw new ArgumentNullException(nameof( +incomeBudgetRepository)); + comboBoxFamilyMember.DataSource = familyMemberRepository.ReadFamilyMembers(); + comboBoxFamilyMember.DisplayMember = "Name"; + comboBoxFamilyMember.ValueMember = "Id"; + + ColumnIncomeName.DataSource = incomes.ReadIncomeBudgetCategories(); + comboBoxFamilyMember.DisplayMember = "Name"; + comboBoxFamilyMember.ValueMember = "Id"; + } + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (dataGridView.RowCount < 1 || comboBoxFamilyMember.SelectedIndex < 0) + { + throw new Exception("Имеются незаполненные поля"); + } + + _incomeBudgetRepository.CreateIncomeBudget(IncomeBudget.CreateOperation(0, (int)comboBoxFamilyMember.SelectedValue!, + CreateListIncomeBudgetFromGrid())); + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + private List CreateListIncomeBudgetFromGrid() + { + var list = new List(); + foreach (DataGridViewRow row in dataGridView.Rows) + { + if (row.Cells["ColumnIncomeName"].Value == null || row.Cells["ColumnSum"].Value == null) + { + continue; + } + list.Add(FamilyMember_IncomeBudget.CreateElement(0, Convert.ToInt32(row.Cells["ColumnIncomeName"].Value) + , Convert.ToInt32(row.Cells["ColumnSum"].Value))); + } + return list; + + } + } +} diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudget.resx b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudget.resx new file mode 100644 index 0000000..1d9ef2f --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudget.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + True + + + True + + \ No newline at end of file diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudgets.Designer.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudgets.Designer.cs new file mode 100644 index 0000000..44b8895 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudgets.Designer.cs @@ -0,0 +1,113 @@ +namespace FamilyBudget.Forms +{ + partial class FormFamilyMember_IncomeBudgets + { + /// + /// 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() + { + panel1 = new Panel(); + button2 = new Button(); + buttonAdd = new Button(); + dataGridViewIncomes = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewIncomes).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(button2); + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(679, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(121, 450); + panel1.TabIndex = 0; + // + // button2 + // + button2.BackgroundImage = Properties.Resources.free_icon_dustbin_7709786; + button2.BackgroundImageLayout = ImageLayout.Stretch; + button2.Location = new Point(30, 230); + button2.Name = "button2"; + button2.Size = new Size(75, 61); + button2.TabIndex = 2; + button2.UseVisualStyleBackColor = true; + button2.Click += ButtonDelete_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.free_icon_plus_181672; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(30, 29); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(75, 61); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // dataGridViewIncomes + // + dataGridViewIncomes.AllowUserToAddRows = false; + dataGridViewIncomes.AllowUserToDeleteRows = false; + dataGridViewIncomes.AllowUserToResizeColumns = false; + dataGridViewIncomes.AllowUserToResizeRows = false; + dataGridViewIncomes.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewIncomes.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewIncomes.Dock = DockStyle.Fill; + dataGridViewIncomes.Location = new Point(0, 0); + dataGridViewIncomes.MultiSelect = false; + dataGridViewIncomes.Name = "dataGridViewIncomes"; + dataGridViewIncomes.ReadOnly = true; + dataGridViewIncomes.RowHeadersVisible = false; + dataGridViewIncomes.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewIncomes.Size = new Size(679, 450); + dataGridViewIncomes.TabIndex = 1; + // + // FormFamilyMember_IncomeBudgets + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridViewIncomes); + Controls.Add(panel1); + Name = "FormFamilyMember_IncomeBudgets"; + StartPosition = FormStartPosition.CenterParent; + Text = "Список добавления доходов"; + Load += FormFamilyMembersIncome_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewIncomes).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private Button button2; + private Button button1; + private Button buttonAdd; + private DataGridView dataGridViewIncomes; + } +} \ No newline at end of file diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudgets.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudgets.cs new file mode 100644 index 0000000..05b51fb --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudgets.cs @@ -0,0 +1,91 @@ +using FamilyBudget.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Unity; + +namespace FamilyBudget.Forms +{ + public partial class FormFamilyMember_IncomeBudgets : Form + { + private readonly IUnityContainer _container; + private readonly IIncomeBudgetRepository _incomeBudgetRepository; + + public FormFamilyMember_IncomeBudgets(IUnityContainer container, IIncomeBudgetRepository incomeBudgetRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _incomeBudgetRepository = incomeBudgetRepository ?? throw new ArgumentNullException(); + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + + private void ButtonDelete_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _incomeBudgetRepository.DeleteIncomeBudget(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridViewIncomes.DataSource = _incomeBudgetRepository.ReadIncomeBudgets(); + + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewIncomes.Rows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + + id = Convert.ToInt32(dataGridViewIncomes.SelectedRows[0].Cells["Id"].Value); + return true; + + } + + private void FormFamilyMembersIncome_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + + } + } + } +} diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudgets.resx b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudgets.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMember_IncomeBudgets.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/FamilyBudget/FamilyBudget/Forms/FormFamilyMembers.Designer.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilyMembers.Designer.cs new file mode 100644 index 0000000..82e0698 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMembers.Designer.cs @@ -0,0 +1,126 @@ +namespace FamilyBudget.Forms +{ + partial class FormFamilyMembers + { + /// + /// 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() + { + dataGridViewFamilyMembers = new DataGridView(); + panel1 = new Panel(); + buttonDelete = new Button(); + buttonUpdate = new Button(); + buttonAdd = new Button(); + ((System.ComponentModel.ISupportInitialize)dataGridViewFamilyMembers).BeginInit(); + panel1.SuspendLayout(); + SuspendLayout(); + // + // dataGridViewFamilyMembers + // + dataGridViewFamilyMembers.AllowUserToAddRows = false; + dataGridViewFamilyMembers.AllowUserToDeleteRows = false; + dataGridViewFamilyMembers.AllowUserToResizeColumns = false; + dataGridViewFamilyMembers.AllowUserToResizeRows = false; + dataGridViewFamilyMembers.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewFamilyMembers.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewFamilyMembers.Dock = DockStyle.Fill; + dataGridViewFamilyMembers.Location = new Point(0, 0); + dataGridViewFamilyMembers.MultiSelect = false; + dataGridViewFamilyMembers.Name = "dataGridViewFamilyMembers"; + dataGridViewFamilyMembers.ReadOnly = true; + dataGridViewFamilyMembers.RowHeadersVisible = false; + dataGridViewFamilyMembers.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewFamilyMembers.Size = new Size(800, 450); + dataGridViewFamilyMembers.TabIndex = 0; + // + // panel1 + // + panel1.Controls.Add(buttonDelete); + panel1.Controls.Add(buttonUpdate); + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(704, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(96, 450); + panel1.TabIndex = 1; + // + // buttonDelete + // + buttonDelete.BackgroundImage = Properties.Resources.free_icon_dustbin_7709786; + buttonDelete.BackgroundImageLayout = ImageLayout.Stretch; + buttonDelete.Location = new Point(9, 259); + buttonDelete.Name = "buttonDelete"; + buttonDelete.Size = new Size(75, 61); + buttonDelete.TabIndex = 2; + buttonDelete.UseVisualStyleBackColor = true; + buttonDelete.Click += ButtonDelete_Click; + // + // buttonUpdate + // + buttonUpdate.BackgroundImage = Properties.Resources.free_icon_edit_tools_8847052; + buttonUpdate.BackgroundImageLayout = ImageLayout.Stretch; + buttonUpdate.Location = new Point(9, 143); + buttonUpdate.Name = "buttonUpdate"; + buttonUpdate.Size = new Size(75, 61); + buttonUpdate.TabIndex = 1; + buttonUpdate.UseVisualStyleBackColor = true; + buttonUpdate.Click += ButtonUpdate_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.free_icon_plus_181672; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(9, 35); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(75, 61); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // FormFamilyMembers + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(panel1); + Controls.Add(dataGridViewFamilyMembers); + Name = "FormFamilyMembers"; + StartPosition = FormStartPosition.CenterParent; + Text = "Список участников семьи"; + Load += FormFamilyMembers_Load; + ((System.ComponentModel.ISupportInitialize)dataGridViewFamilyMembers).EndInit(); + panel1.ResumeLayout(false); + ResumeLayout(false); + } + + #endregion + + private DataGridView dataGridViewFamilyMembers; + private Panel panel1; + private Button buttonAdd; + private Button buttonDelete; + private Button buttonUpdate; + } +} \ No newline at end of file diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMembers.cs b/FamilyBudget/FamilyBudget/Forms/FormFamilyMembers.cs new file mode 100644 index 0000000..959f15b --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMembers.cs @@ -0,0 +1,109 @@ +using FamilyBudget.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Unity; + +namespace FamilyBudget.Forms +{ + public partial class FormFamilyMembers : Form + { + private readonly IUnityContainer _container; + private readonly IFamilyMemberRepository _familyMemberRepository; + + public FormFamilyMembers(IUnityContainer container, IFamilyMemberRepository familyMemberRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _familyMemberRepository = familyMemberRepository ?? throw new ArgumentNullException(); + } + + private void FormFamilyMembers_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + + } + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonUpdate_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + } + + private void ButtonDelete_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _familyMemberRepository.DeleteFamilyMember(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridViewFamilyMembers.DataSource = _familyMemberRepository.ReadFamilyMembers(); + + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewFamilyMembers.Rows.Count < 1) { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + + id = Convert.ToInt32(dataGridViewFamilyMembers.SelectedRows[id].Cells["Id"].Value); + return true; + + } + } +} diff --git a/FamilyBudget/FamilyBudget/Forms/FormFamilyMembers.resx b/FamilyBudget/FamilyBudget/Forms/FormFamilyMembers.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormFamilyMembers.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/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategories.Designer.cs b/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategories.Designer.cs new file mode 100644 index 0000000..cbf0000 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategories.Designer.cs @@ -0,0 +1,125 @@ +namespace FamilyBudget.Forms +{ + partial class FormIncomeBudgetCategories + { + /// + /// 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() + { + panel1 = new Panel(); + buttonEdit = new Button(); + buttonDelete = new Button(); + buttonAdd = new Button(); + dataGridViewIncomes = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewIncomes).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(buttonEdit); + panel1.Controls.Add(buttonDelete); + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(664, 0); + panel1.Name = "panel1"; + panel1.Size = new Size(136, 450); + panel1.TabIndex = 0; + // + // buttonEdit + // + buttonEdit.BackgroundImage = Properties.Resources.free_icon_edit_tools_8847052; + buttonEdit.BackgroundImageLayout = ImageLayout.Stretch; + buttonEdit.Location = new Point(34, 106); + buttonEdit.Name = "buttonEdit"; + buttonEdit.Size = new Size(75, 61); + buttonEdit.TabIndex = 10; + buttonEdit.UseVisualStyleBackColor = true; + buttonEdit.Click += buttonEdit_Click; + // + // buttonDelete + // + buttonDelete.BackgroundImage = Properties.Resources.free_icon_dustbin_7709786; + buttonDelete.BackgroundImageLayout = ImageLayout.Stretch; + buttonDelete.Location = new Point(34, 190); + buttonDelete.Name = "buttonDelete"; + buttonDelete.Size = new Size(75, 61); + buttonDelete.TabIndex = 5; + buttonDelete.UseVisualStyleBackColor = true; + buttonDelete.Click += ButtonDelete_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.free_icon_plus_181672; + buttonAdd.BackgroundImageLayout = ImageLayout.Stretch; + buttonAdd.Location = new Point(34, 26); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(75, 61); + buttonAdd.TabIndex = 3; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += ButtonAdd_Click; + // + // dataGridViewIncomes + // + dataGridViewIncomes.AllowUserToAddRows = false; + dataGridViewIncomes.AllowUserToDeleteRows = false; + dataGridViewIncomes.AllowUserToResizeColumns = false; + dataGridViewIncomes.AllowUserToResizeRows = false; + dataGridViewIncomes.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewIncomes.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewIncomes.Dock = DockStyle.Fill; + dataGridViewIncomes.Location = new Point(0, 0); + dataGridViewIncomes.MultiSelect = false; + dataGridViewIncomes.Name = "dataGridViewIncomes"; + dataGridViewIncomes.ReadOnly = true; + dataGridViewIncomes.RowHeadersVisible = false; + dataGridViewIncomes.Size = new Size(664, 450); + dataGridViewIncomes.TabIndex = 1; + // + // FormIncomeBudgetCategories + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridViewIncomes); + Controls.Add(panel1); + Name = "FormIncomeBudgetCategories"; + StartPosition = FormStartPosition.CenterParent; + Text = "Список категорий доходов"; + Load += FormFamilyMembers_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewIncomes).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private DataGridView dataGridViewIncomes; + private Button buttonDelete; + private Button buttonAdd; + private Button buttonEdit; + } +} \ No newline at end of file diff --git a/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategories.cs b/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategories.cs new file mode 100644 index 0000000..00e1060 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategories.cs @@ -0,0 +1,129 @@ +using FamilyBudget.Repositories; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Unity; + +namespace FamilyBudget.Forms +{ + public partial class FormIncomeBudgetCategories : Form + { + private readonly IUnityContainer _container; + private readonly IIncomeBudgetCategoryRepository _incomeBudgetCategoryRepository; + + public FormIncomeBudgetCategories(IUnityContainer container, IIncomeBudgetCategoryRepository incomeBudgetCategoryRepository) + { + InitializeComponent(); + _container = container ?? throw new ArgumentNullException(nameof(container)); + _incomeBudgetCategoryRepository = incomeBudgetCategoryRepository ?? throw new ArgumentNullException(); + } + + private void FormFamilyMembers_Load(object sender, EventArgs e) + { + try + { + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", MessageBoxButtons.OK, MessageBoxIcon.Error); + + } + } + + private void ButtonAdd_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при добавлении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonUpdate_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + try + { + var form = _container.Resolve(); + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + } + + private void ButtonDelete_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _incomeBudgetCategoryRepository.DeleteIncomeBudgetCategory(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void LoadList() => dataGridViewIncomes.DataSource = _incomeBudgetCategoryRepository.ReadIncomeBudgetCategories(); + + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewIncomes.Rows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + + id = Convert.ToInt32(dataGridViewIncomes.SelectedRows[0].Cells["Id"].Value); + return true; + + } + + + private void buttonEdit_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + try + { + var form = _container.Resolve(); + form.Id = findId; + form.ShowDialog(); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при изменении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } +} diff --git a/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategories.resx b/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategories.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategories.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/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategory.Designer.cs b/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategory.Designer.cs new file mode 100644 index 0000000..9280df6 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategory.Designer.cs @@ -0,0 +1,124 @@ +namespace FamilyBudget.Forms +{ + partial class FormIncomeBudgetCategory + { + /// + /// 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() + { + buttonSave = new Button(); + buttonCancel = new Button(); + textBoxName = new TextBox(); + labelCategory = new Label(); + label1 = new Label(); + checkedListBoxIncomes = new CheckedListBox(); + SuspendLayout(); + // + // buttonSave + // + buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonSave.Location = new Point(36, 253); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(75, 23); + buttonSave.TabIndex = 0; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += ButtonSave_Click; + // + // buttonCancel + // + buttonCancel.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonCancel.Location = new Point(320, 253); + buttonCancel.Name = "buttonCancel"; + buttonCancel.Size = new Size(75, 23); + buttonCancel.TabIndex = 1; + buttonCancel.Text = "Отмена"; + buttonCancel.UseVisualStyleBackColor = true; + buttonCancel.Click += ButtonCancel_Click; + // + // textBoxName + // + textBoxName.Anchor = AnchorStyles.Top; + textBoxName.Location = new Point(171, 21); + textBoxName.Name = "textBoxName"; + textBoxName.Size = new Size(224, 23); + textBoxName.TabIndex = 2; + // + // labelCategory + // + labelCategory.Anchor = AnchorStyles.Top; + labelCategory.AutoSize = true; + labelCategory.Location = new Point(36, 24); + labelCategory.Name = "labelCategory"; + labelCategory.Size = new Size(60, 15); + labelCategory.TabIndex = 3; + labelCategory.Text = "название:"; + // + // label1 + // + label1.Anchor = AnchorStyles.Top; + label1.AutoSize = true; + label1.Location = new Point(36, 63); + label1.Name = "label1"; + label1.Size = new Size(115, 15); + label1.TabIndex = 4; + label1.Text = "Категории доходов:"; + // + // checkedListBoxIncomes + // + checkedListBoxIncomes.FormattingEnabled = true; + checkedListBoxIncomes.Location = new Point(171, 63); + checkedListBoxIncomes.Name = "checkedListBoxIncomes"; + checkedListBoxIncomes.Size = new Size(224, 148); + checkedListBoxIncomes.TabIndex = 5; + // + // FormIncomeBudgetCategory + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(429, 299); + Controls.Add(checkedListBoxIncomes); + Controls.Add(label1); + Controls.Add(labelCategory); + Controls.Add(textBoxName); + Controls.Add(buttonCancel); + Controls.Add(buttonSave); + Name = "FormIncomeBudgetCategory"; + StartPosition = FormStartPosition.CenterParent; + Text = "Категория дохода"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Button buttonSave; + private Button buttonCancel; + private TextBox textBoxName; + private Label labelCategory; + private Label label1; + private CheckedListBox checkedListBoxIncomes; + } +} \ No newline at end of file diff --git a/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategory.cs b/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategory.cs new file mode 100644 index 0000000..ef941e6 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategory.cs @@ -0,0 +1,95 @@ +using FamilyBudget.Entities; +using FamilyBudget.Entities.Enums; +using FamilyBudget.Repositories; +using FamilyBudget.Repositories.Implementations; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using Unity; + +namespace FamilyBudget.Forms +{ + public partial class FormIncomeBudgetCategory : Form + { + private readonly IIncomeBudgetCategoryRepository _incomeBudgetCategoryRepository; + private int? _incomeId; + public int Id + { + set + { + try + { + var income = _incomeBudgetCategoryRepository.ReadIncomeBudgetCategoryById(value); + if (income == null) + { + throw new InvalidDataException(nameof(income)); + } + foreach (IncomeCategoryType elem in Enum.GetValues(typeof(IncomeCategoryType))) + { + if ((elem & income.IncomeCategoryType) != 0) + { + checkedListBoxIncomes.SetItemChecked(checkedListBoxIncomes.Items.IndexOf( + elem), true); + } + } + textBoxName.Text = income.Name; + _incomeId = value; + + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получени данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + + public FormIncomeBudgetCategory(IIncomeBudgetCategoryRepository incomeBudgetCategoryRepository) + { + InitializeComponent(); + _incomeBudgetCategoryRepository = incomeBudgetCategoryRepository ?? throw new ArgumentNullException(nameof( + incomeBudgetCategoryRepository)); + foreach (IncomeCategoryType elem in Enum.GetValues(typeof(IncomeCategoryType))) + { + checkedListBoxIncomes.Items.Add(elem); + } + } + + private void ButtonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxName.Text) || checkedListBoxIncomes.CheckedItems.Count == 0) + throw new Exception("Имеются незаполненные поля"); + if (_incomeId.HasValue) + _incomeBudgetCategoryRepository.UpdateExpenseBudgetCategoryById(CreateIncomeBudgetCategory(_incomeId.Value)); + else + _incomeBudgetCategoryRepository.CreateIncomeBudgetCategory(CreateIncomeBudgetCategory(0)); + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonCancel_Click(object sender, EventArgs e) => Close(); + + private IncomeBudgetCategory CreateIncomeBudgetCategory(int id) + { + IncomeCategoryType incomeType = IncomeCategoryType.None; + foreach (IncomeCategoryType elem in checkedListBoxIncomes.CheckedItems) + { + incomeType |= elem; + } + return IncomeBudgetCategory.CreateEntity(id, textBoxName.Text, incomeType); + } + + } +} diff --git a/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategory.resx b/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategory.resx new file mode 100644 index 0000000..8b2ff64 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Forms/FormIncomeBudgetCategory.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/FamilyBudget/FamilyBudget/Program.cs b/FamilyBudget/FamilyBudget/Program.cs index ee196c9..3871907 100644 --- a/FamilyBudget/FamilyBudget/Program.cs +++ b/FamilyBudget/FamilyBudget/Program.cs @@ -1,3 +1,12 @@ +using FamilyBudget.Repositories; +using FamilyBudget.Repositories.Implementations; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Logging; +using Serilog; +using Unity; +using Unity.Lifetime; +using Unity.Microsoft.Logging; + namespace FamilyBudget { internal static class Program @@ -11,7 +20,38 @@ namespace FamilyBudget // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - Application.Run(new Form1()); + Application.Run(CreateContainer().Resolve()); + } + + private static IUnityContainer CreateContainer() + { + var container = new UnityContainer(); + + container.AddExtension(new LoggingExtension(CreateLoggerFactory())); + + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + + container.RegisterType(new SingletonLifetimeManager()); + + return container; + } + + private static LoggerFactory CreateLoggerFactory() + { + var loggerFactory = new LoggerFactory(); + loggerFactory.AddSerilog(new LoggerConfiguration() + .ReadFrom.Configuration(new ConfigurationBuilder() + .SetBasePath(AppDomain.CurrentDomain.BaseDirectory) + .AddJsonFile("appsettings.json") + .Build()) + .CreateLogger()); + return loggerFactory; + } } } \ No newline at end of file diff --git a/FamilyBudget/FamilyBudget/Properties/Resources.Designer.cs b/FamilyBudget/FamilyBudget/Properties/Resources.Designer.cs new file mode 100644 index 0000000..70c228b --- /dev/null +++ b/FamilyBudget/FamilyBudget/Properties/Resources.Designer.cs @@ -0,0 +1,113 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace FamilyBudget.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("FamilyBudget.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap family { + get { + object obj = ResourceManager.GetObject("family", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap free_icon_dustbin_7709786 { + get { + object obj = ResourceManager.GetObject("free-icon-dustbin-7709786", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap free_icon_edit_tools_8847052 { + get { + object obj = ResourceManager.GetObject("free-icon-edit-tools-8847052", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap free_icon_plus_181672 { + get { + object obj = ResourceManager.GetObject("free-icon-plus-181672", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap free_icon_plus_1816721 { + get { + object obj = ResourceManager.GetObject("free-icon-plus-1816721", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/FamilyBudget/FamilyBudget/Properties/Resources.resx b/FamilyBudget/FamilyBudget/Properties/Resources.resx new file mode 100644 index 0000000..a94bc6d --- /dev/null +++ b/FamilyBudget/FamilyBudget/Properties/Resources.resx @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + ..\Resources\free-icon-plus-181672.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\free-icon-edit-tools-8847052.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\family.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\free-icon-plus-1816721.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\free-icon-dustbin-7709786.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/FamilyBudget/FamilyBudget/Repositories/IConnectionString.cs b/FamilyBudget/FamilyBudget/Repositories/IConnectionString.cs new file mode 100644 index 0000000..95bcc3b --- /dev/null +++ b/FamilyBudget/FamilyBudget/Repositories/IConnectionString.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Repositories +{ + public interface IConnectionString + { + public string ConnectionString { get; } + } +} diff --git a/FamilyBudget/FamilyBudget/Repositories/IExpenseBudgetCategoryRepository.cs b/FamilyBudget/FamilyBudget/Repositories/IExpenseBudgetCategoryRepository.cs new file mode 100644 index 0000000..d552f4f --- /dev/null +++ b/FamilyBudget/FamilyBudget/Repositories/IExpenseBudgetCategoryRepository.cs @@ -0,0 +1,18 @@ +using FamilyBudget.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Repositories +{ + public interface IExpenseBudgetCategoryRepository + { + IEnumerable ReadExpenseBudgetCategories(); + ExpenseBudgetCategory ReadExpenseBudgetCategoryById(int id); + void UpdateExpenseBudgetCategoryById(ExpenseBudgetCategory expenseBudgetCategory); + void CreateExpenseBudgetCategory(ExpenseBudgetCategory expenseBudgetCategory); + void DeleteExpenseBudgetCategory(int id); + } +} diff --git a/FamilyBudget/FamilyBudget/Repositories/IExpenseBudgetRepository.cs b/FamilyBudget/FamilyBudget/Repositories/IExpenseBudgetRepository.cs new file mode 100644 index 0000000..3b369c3 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Repositories/IExpenseBudgetRepository.cs @@ -0,0 +1,17 @@ +using FamilyBudget.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Repositories +{ + public interface IExpenseBudgetRepository + { + IEnumerable ReadExpenseBudgets(DateTime? dateFrom = null, DateTime? dateTo = null, + int? familyMemberId = null, int? BudgetExpenseId = null); + void CreateExpenseBudget(ExpenseBudget expenseBudget); + void DeleteExpenseBudget(int id); + } +} diff --git a/FamilyBudget/FamilyBudget/Repositories/IFamilyMemberRepository.cs b/FamilyBudget/FamilyBudget/Repositories/IFamilyMemberRepository.cs new file mode 100644 index 0000000..19dcc06 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Repositories/IFamilyMemberRepository.cs @@ -0,0 +1,18 @@ +using FamilyBudget.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Repositories +{ + public interface IFamilyMemberRepository + { + IEnumerable ReadFamilyMembers(); + FamilyMember ReadFamilyMemberById(int id); + void CreateFamilyMember(FamilyMember familyMember); + void UpdateFamilyMember(FamilyMember familyMember); + void DeleteFamilyMember(int id); + } +} diff --git a/FamilyBudget/FamilyBudget/Repositories/IFamilyRepository.cs b/FamilyBudget/FamilyBudget/Repositories/IFamilyRepository.cs new file mode 100644 index 0000000..e9d295d --- /dev/null +++ b/FamilyBudget/FamilyBudget/Repositories/IFamilyRepository.cs @@ -0,0 +1,18 @@ +using FamilyBudget.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Repositories +{ + public interface IFamilyRepository + { + IEnumerable ReadFamilies(); + Family ReadFamilyById(int id); + void CreateFamily(Family family); + void UpdateFamily(Family family); + void DeleteFamily(int id); + } +} diff --git a/FamilyBudget/FamilyBudget/Repositories/IIncomeBudgetCategoryRepository.cs b/FamilyBudget/FamilyBudget/Repositories/IIncomeBudgetCategoryRepository.cs new file mode 100644 index 0000000..474e019 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Repositories/IIncomeBudgetCategoryRepository.cs @@ -0,0 +1,18 @@ +using FamilyBudget.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Repositories +{ + public interface IIncomeBudgetCategoryRepository + { + IEnumerable ReadIncomeBudgetCategories(); + IncomeBudgetCategory ReadIncomeBudgetCategoryById(int id); + void UpdateExpenseBudgetCategoryById(IncomeBudgetCategory income); + void CreateIncomeBudgetCategory(IncomeBudgetCategory income); + void DeleteIncomeBudgetCategory(int id); + } +} diff --git a/FamilyBudget/FamilyBudget/Repositories/IIncomeBudgetRepository.cs b/FamilyBudget/FamilyBudget/Repositories/IIncomeBudgetRepository.cs new file mode 100644 index 0000000..c35d200 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Repositories/IIncomeBudgetRepository.cs @@ -0,0 +1,17 @@ +using FamilyBudget.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Repositories +{ + public interface IIncomeBudgetRepository + { + IEnumerable ReadIncomeBudgets(DateTime? dateFrom = null, DateTime? dateTo = null, + int? familyMemberId = null, int? BudgetIncomeId = null); + void CreateIncomeBudget(IncomeBudget incomeBudget); + void DeleteIncomeBudget(int id); + } +} diff --git a/FamilyBudget/FamilyBudget/Repositories/Implementations/ConnectionString.cs b/FamilyBudget/FamilyBudget/Repositories/Implementations/ConnectionString.cs new file mode 100644 index 0000000..4c3f653 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Repositories/Implementations/ConnectionString.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Repositories.Implementations +{ + internal class ConnectionString : IConnectionString + { + string IConnectionString.ConnectionString => "Server=localhost;Database=familyBudget;User Id=postgres;Password=postgres;"; + } +} diff --git a/FamilyBudget/FamilyBudget/Repositories/Implementations/ExpenseBudgetCategoryRepository.cs b/FamilyBudget/FamilyBudget/Repositories/Implementations/ExpenseBudgetCategoryRepository.cs new file mode 100644 index 0000000..e08eaf5 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Repositories/Implementations/ExpenseBudgetCategoryRepository.cs @@ -0,0 +1,129 @@ +using Dapper; +using FamilyBudget.Entities; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Repositories.Implementations +{ + internal class ExpenseBudgetCategoryRepository : IExpenseBudgetCategoryRepository + { + private readonly IConnectionString _connectionString; + private readonly ILogger _logger; + public ExpenseBudgetCategoryRepository(IConnectionString connectionString, ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } + + public void CreateExpenseBudgetCategory(ExpenseBudgetCategory expenseBudgetCategory) + { + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(expenseBudgetCategory)); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryInsert = @" + INSERT INTO ExpenseBudgetCategory (ExpenseCategoryType, Name) + VALUES (@ExpenseCategoryType, @Name)"; + connection.Execute(queryInsert, expenseBudgetCategory); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } + } + + public void DeleteExpenseBudgetCategory(int id) + { + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {id}", id); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryDelete = @" + DELETE FROM ExpenseBudgetCategory + WHERE Id=@id"; + connection.Execute(queryDelete, new { id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } + } + + public IEnumerable ReadExpenseBudgetCategories() + { + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = "SELECT * FROM ExpenseBudgetCategory"; + var expenses = connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(expenses)); + return expenses; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } + } + + public ExpenseBudgetCategory ReadExpenseBudgetCategoryById(int id) + { + _logger.LogInformation("Получение объекта по идентификатору"); + _logger.LogDebug("Объект: {id}", id); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = @" + SELECT * FROM ExpenseBudgetCategory + WHERE Id=@id"; + var expense = connection.QueryFirst(querySelect, new { id }); + _logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(expense)); + return expense; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при поиске объекта"); + throw; + } + } + + public void UpdateExpenseBudgetCategoryById(ExpenseBudgetCategory expenseBudgetCategory) + { + _logger.LogInformation("Редактирование объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(expenseBudgetCategory)); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryUpdate = @"UPDATE ExpenseBudgetCategory + SET + Id=@Id, + Name=@Name, + ExpenseCategoryType=@ExpenseCategoryType + WHERE Id=@Id"; + connection.Execute(queryUpdate, new + { + expenseBudgetCategory.Id, + expenseBudgetCategory.Name, + expenseBudgetCategory.ExpenseCategoryType + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при редактировании объекта"); + throw; + } + } + } +} diff --git a/FamilyBudget/FamilyBudget/Repositories/Implementations/ExpenseBudgetRepository.cs b/FamilyBudget/FamilyBudget/Repositories/Implementations/ExpenseBudgetRepository.cs new file mode 100644 index 0000000..de73d6d --- /dev/null +++ b/FamilyBudget/FamilyBudget/Repositories/Implementations/ExpenseBudgetRepository.cs @@ -0,0 +1,111 @@ +using Dapper; +using FamilyBudget.Entities; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Repositories.Implementations +{ + internal class ExpenseBudgetRepository : IExpenseBudgetRepository + { + private readonly IConnectionString _connectionString; + private readonly ILogger _logger; + + public ExpenseBudgetRepository(IConnectionString connectionString, ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } + + public void CreateExpenseBudget(ExpenseBudget expenseBudget) + { + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(expenseBudget)); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + connection.Open(); + using var transaction = connection.BeginTransaction(); + + var queryInsert = @" + INSERT INTO ExpenseBudget (FamilyMemberId, Date) + VALUES (@FamilyMemberId, @Date); + SELECT MAX(Id) FROM ExpenseBudget"; + var expenseBudgetId = connection.QueryFirst(queryInsert, expenseBudget, transaction); + + var querySubInsert = @" + INSERT INTO FamilyMember_ExpenseBudget (ExpenseBudgetId, FamilyMemberId, Sum) + VALUES (@ExpenseBudgetId, @FamilyMemberId, @Sum)"; + foreach (var elem in expenseBudget.FamilyMember_Expenses) + { + connection.Execute(querySubInsert, new + { + ExpenseBudgetId = expenseBudgetId, + expenseBudget.FamilyMemberId, + elem.Sum + }, transaction); + } + + transaction.Commit(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } + } + + public void DeleteExpenseBudget(int id) + { + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {id}", id); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + connection.Open(); + using var transaction = connection.BeginTransaction(); + var queryDeleteSub = @" + DELETE FROM FamilyMember_ExpenseBudget + WHERE ExpenseBudgetID = @id"; + connection.Execute(queryDeleteSub, new { id }, transaction); + + var queryDelete = @" + DELETE FROM ExpenseBudget + WHERE Id = @id"; + connection.Execute(queryDelete, new { id }, transaction); + + transaction.Commit(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } + } + + public IEnumerable ReadExpenseBudgets(DateTime? dateFrom = null, DateTime? dateTo = null, + int? familyMemberId = null, int? BudgetExpenseId = null) + { + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = "SELECT * FROM ExpenseBudget"; + var expensesBudget = connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", + JsonConvert.SerializeObject(expensesBudget)); + return expensesBudget; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } + } + } +} diff --git a/FamilyBudget/FamilyBudget/Repositories/Implementations/FamilyMemberRepository.cs b/FamilyBudget/FamilyBudget/Repositories/Implementations/FamilyMemberRepository.cs new file mode 100644 index 0000000..7a12d22 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Repositories/Implementations/FamilyMemberRepository.cs @@ -0,0 +1,136 @@ +using Dapper; +using FamilyBudget.Entities; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Repositories.Implementations +{ + internal class FamilyMemberRepository : IFamilyMemberRepository + { + private readonly IConnectionString _connectionString; + private readonly ILogger _logger; + + public FamilyMemberRepository(IConnectionString connectionString, ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } + public void CreateFamilyMember(FamilyMember familyMember) + { + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(familyMember)); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryInsert = @" + INSERT INTO FamilyMember (FamilyId, Name, MemberType) + VALUES (@FamilyId, @Name, @MemberType)"; + connection.Execute(queryInsert, new + { + familyMember.FamilyId, + familyMember.Name, + familyMember.MemberType + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } + } + + public void DeleteFamilyMember(int id) + { + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {id}", id); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryDelete = @" + DELETE FROM FamilyMember + WHERE Id=@id"; + connection.Execute(queryDelete, new { id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } + } + + public FamilyMember ReadFamilyMemberById(int id) + { + _logger.LogInformation("Получение объекта по идентификатору"); + _logger.LogDebug("Объект: {id}", id); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = @" + SELECT * FROM FamilyMember + WHERE Id=@id"; + var familyMember = connection.QueryFirst(querySelect, new { id }); + _logger.LogDebug("Найденный объект: {json}", + JsonConvert.SerializeObject(familyMember)); + return familyMember; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при поиске объекта"); + throw; + } + } + + public IEnumerable ReadFamilyMembers() + { + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = "SELECT * FROM FamilyMember"; + var familyMembers = connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(familyMembers)); + return familyMembers; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } + } + + public void UpdateFamilyMember(FamilyMember familyMember) + { + _logger.LogInformation("Редактирование объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(familyMember)); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryUpdate = @"UPDATE FamilyMember + SET + familyId=@FamilyId, + Name=@Name, + MemberType=@MemberType + WHERE Id=@Id"; + connection.Execute(queryUpdate, new + { + familyMember.Id, + familyMember.FamilyId, + familyMember.Name, + familyMember.MemberType + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при редактировании объекта"); + throw; + } + } + } +} diff --git a/FamilyBudget/FamilyBudget/Repositories/Implementations/FamilyRepository.cs b/FamilyBudget/FamilyBudget/Repositories/Implementations/FamilyRepository.cs new file mode 100644 index 0000000..ad9aa6a --- /dev/null +++ b/FamilyBudget/FamilyBudget/Repositories/Implementations/FamilyRepository.cs @@ -0,0 +1,128 @@ +using Dapper; +using FamilyBudget.Entities; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using System; +using System.Collections.Generic; +using System.Data.SqlClient; +using System.Linq; +using System.Text; +using System.Text.Json.Nodes; +using System.Text.Json.Serialization; +using System.Threading.Tasks; + +namespace FamilyBudget.Repositories.Implementations +{ + internal class FamilyRepository : IFamilyRepository + { + private readonly IConnectionString _connectionString; + private readonly ILogger _logger; + + public FamilyRepository(ConnectionString connectionString, ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } + + public void CreateFamily(Family family) + { + _logger.LogInformation("Объект создан"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(family)); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryInsert = @" + INSERT INTO Family (Name) + Values (@Name)"; + connection.Execute(queryInsert, family); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошбика при добавлении объекта"); + throw; + } + } + + public void DeleteFamily(int id) + { + _logger.LogInformation($"Удаление объекта"); + _logger.LogDebug($"Объект: {id} удален"); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryDelete = @" + DELETE FROM family + WHERE Id=@id"; + connection.Execute(queryDelete, new { id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } + } + + public IEnumerable ReadFamilies() + { + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = "SELECT * FROM Family"; + var failmies = connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(failmies)); + return failmies; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } + } + + public Family ReadFamilyById(int id) + { + _logger.LogInformation("Получение объекта по идентификатору"); + _logger.LogDebug("Объект: {id}", id); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = @" + SELECT * FROM family + WHERE Id=@Id"; + var obj = connection.QueryFirst(querySelect, new { id }); + _logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(obj)); + return obj; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при поиске объекта"); + throw; + } + } + + public void UpdateFamily(Family family) + { + _logger.LogInformation("Редактирование объекта"); + _logger.LogDebug("Объект: {json}", + JsonConvert.SerializeObject(family)); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryUpdate = @" + UPDATE family + SET + Name=@Name + WHERE Id=@Id"; + connection.Execute(queryUpdate, family); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при редактировании объекта"); + throw; + } + } + } +} diff --git a/FamilyBudget/FamilyBudget/Repositories/Implementations/IncomeBudgetCategoryRepository.cs b/FamilyBudget/FamilyBudget/Repositories/Implementations/IncomeBudgetCategoryRepository.cs new file mode 100644 index 0000000..152f034 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Repositories/Implementations/IncomeBudgetCategoryRepository.cs @@ -0,0 +1,130 @@ +using Dapper; +using FamilyBudget.Entities; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Repositories.Implementations +{ + internal class IncomeBudgetCategoryRepository : IIncomeBudgetCategoryRepository + { + private readonly IConnectionString _connectionString; + private readonly ILogger _logger; + public IncomeBudgetCategoryRepository(IConnectionString connectionString, ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } + + public void CreateIncomeBudgetCategory(IncomeBudgetCategory incomeBudgetCategory) + { + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(incomeBudgetCategory)); + + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryInsert = @" + INSERT INTO IncomeBudgetCategory (IncomeCategoryType, Name) + VALUES (@IncomeCategoryType, @Name)"; + connection.Execute(queryInsert, incomeBudgetCategory); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } + } + + public void DeleteIncomeBudgetCategory(int id) + { + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {id}", id); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryDelete = @" + DELETE FROM IncomeBudgetCategory + WHERE Id=@id"; + connection.Execute(queryDelete, new { id }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } + } + + public IEnumerable ReadIncomeBudgetCategories() + { + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = "SELECT * FROM IncomeBudgetCategory"; + var incomes = connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(incomes)); + return incomes; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } + } + + public IncomeBudgetCategory ReadIncomeBudgetCategoryById(int id) + { + _logger.LogInformation("Получение объекта по идентификатору"); + _logger.LogDebug("Объект: {id}", id); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = @" + SELECT * FROM IncomeBudgetCategory + WHERE Id=@id"; + var income = connection.QueryFirst(querySelect, new { id }); + _logger.LogDebug("Найденный объект: {json}", JsonConvert.SerializeObject(income)); + return income; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при поиске объекта"); + throw; + } + } + + public void UpdateExpenseBudgetCategoryById(IncomeBudgetCategory income) + { + _logger.LogInformation("Редактирование объекта"); + _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(income)); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var queryUpdate = @"UPDATE IncomeBudgetCategory + SET + Id=@Id, + Name=@Name, + IncomeCategoryType=@IncomeCategoryType + WHERE Id=@Id"; + connection.Execute(queryUpdate, new + { + income.Id, + income.Name, + income.IncomeCategoryType + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при редактировании объекта"); + throw; + } + } + } + +} diff --git a/FamilyBudget/FamilyBudget/Repositories/Implementations/IncomeBudgetRepository.cs b/FamilyBudget/FamilyBudget/Repositories/Implementations/IncomeBudgetRepository.cs new file mode 100644 index 0000000..0b75675 --- /dev/null +++ b/FamilyBudget/FamilyBudget/Repositories/Implementations/IncomeBudgetRepository.cs @@ -0,0 +1,109 @@ +using Dapper; +using FamilyBudget.Entities; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Npgsql; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace FamilyBudget.Repositories.Implementations +{ + internal class IncomeBudgetRepository : IIncomeBudgetRepository + { + private readonly IConnectionString _connectionString; + private readonly ILogger _logger; + + public IncomeBudgetRepository(IConnectionString connectionString, ILogger logger) + { + _connectionString = connectionString; + _logger = logger; + } + public void CreateIncomeBudget(IncomeBudget incomeBudget) + { + _logger.LogInformation("Добавление объекта"); + _logger.LogDebug("Объект: {json}", + JsonConvert.SerializeObject(incomeBudget)); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + connection.Open(); + using var transaction = connection.BeginTransaction(); + var queryInsert = @" + INSERT INTO IncomeBudget (FamilyMemberId, Date) + VALUES (@FamilyMemberId, @Date); + SELECT MAX(Id) FROM IncomeBudget"; + var incomeBudgetId = + connection.QueryFirst(queryInsert, incomeBudget, transaction); + var querySubInsert = @" + INSERT INTO FamilyMember_IncomeBudget (IncomeBudgetId, FamilyMemberId, Sum) + VALUES (@IncomeBudgetId, @FamilyMemberId, @Sum)"; + foreach (var elem in incomeBudget.FamilyMember_Incomes) + { + connection.Execute(querySubInsert, new + { + IncomeBudgetId = incomeBudgetId, + incomeBudget.FamilyMemberId, + elem.Sum + }, transaction); + } + transaction.Commit(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при добавлении объекта"); + throw; + } + } + + public void DeleteIncomeBudget(int id) + { + _logger.LogInformation("Удаление объекта"); + _logger.LogDebug("Объект: {id}", id); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + connection.Open(); + using var transaction = connection.BeginTransaction(); + var queryDeleteSub = @" + DELETE FROM FamilyMember_IncomeBudget + WHERE IncomeBudgetId = @id"; + connection.Execute(queryDeleteSub, new { id }, transaction); + + var queryDelete = @" + DELETE FROM IncomeBudget + WHERE Id = @id"; + connection.Execute(queryDelete, new { id }, transaction); + + transaction.Commit(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при удалении объекта"); + throw; + } + } + + public IEnumerable ReadIncomeBudgets(DateTime? dateFrom = null, DateTime? dateTo = null, + int? familyMemberId = null, int? BudgetIncomeId = null) + { + _logger.LogInformation("Получение всех объектов"); + try + { + using var connection = new NpgsqlConnection(_connectionString.ConnectionString); + var querySelect = "SELECT * FROM IncomeBudget"; + var incomeBudgets = connection.Query(querySelect); + _logger.LogDebug("Полученные объекты: {json}", + JsonConvert.SerializeObject(incomeBudgets)); + return incomeBudgets; + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка при чтении объектов"); + throw; + } + } + } +} diff --git a/FamilyBudget/FamilyBudget/Resources/family.jpg b/FamilyBudget/FamilyBudget/Resources/family.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5034c97782f9244adfd58d761b0af691780e9a1d GIT binary patch literal 128356 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

X&`2&xPNLwg*Z(P5F=USIa{A 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

U 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 Jlm7@;{|~HcdfNa1 literal 0 HcmV?d00001 diff --git a/FamilyBudget/FamilyBudget/Resources/free-icon-plus-181672.png b/FamilyBudget/FamilyBudget/Resources/free-icon-plus-181672.png new file mode 100644 index 0000000000000000000000000000000000000000..e83f8fc1addeab8f19cfb85d7d48701b83d946f2 GIT binary patch literal 6746 zcmeI02Uk;3vxY+vkX}MZnt&k!(xtZ$dPzv=D57)}q)8D_dJzuz5D}FQQWO;- zf^-mRA|2_{1-U2j`|f|ZYu&7sl_zs%-kI5FpR#u%!c3ommWLJu0x=jG=vsh4_^|x0nAdr@JmvK7MYw8)`g&>Su%r8h&E|OHZe6bM<6XwXiF<=8(TYjhilgzZ#dn&?&0Zm z`;NEIU0*-{fWUh}!6Bjd!y+C$jEstjjf+o6OnQ|3I5jQ(DJC=PS$0ltUVcGgQE^Er z?s-``zVc<&tJiO;YijEoo0{LYw6?Xsd*AWlW9R3tZo-$I-miWA1A{}uqhsI3zfVj~ zP0#$8{W&+ku(-6mvifUnePeTLd*}D=-u}Vi(ea;?)4wg>->-o{91MoK+GsBB_4g^a zEcZgFw|u-i6ogoAy70Jh@ILeMh@8Cv=h6Dbf}^Hf_cV-PRIGbZ?9!~mO(tjG*-U$( zo&&E-VTFo;7E|aV?shyw2nwEO5kfQxi8LMj(XaF+IM?H<4Gzdaba;FVO@@Hyx4$oj@M0GvLxAD3cH?>lfI8r#CgZQmqmX8x(c@^Ok*2)4ZVm@<4;HxSN(7F$Su z6{@K%VA$fQpg|42NM&8AY$~AA`uwIeI_FyW*^8xR`=#rxXP)J?-R(Z>w#Sp>bq5PD zoc6T(l}}tWZ?ZPJqm3#OYL4Zoy4+sm)1dL-E9JL-3`;`dj3U>>>(=Q@_rHseBTiAx zhY*Uj<)0Si8obisuqd*uZ_?o)v?IN3zX1ymCw*jf;O`yRq=A;TD@C^_kNxtBKaNE( zKn=%-W{R}zpTn`CS!b;?$ntO|rkK@n?72(g-^zZ|Vw7h+S1o9ab}_pL z&qK>E!v!=5sfUL}kYSvk>zIr#V=p1HSy0wr6Xtr>Lo>WYxF-{H52GCjx%MH|4n=E; z80qNutbl4Yx@1$u*+qBjB&1Ay?Vr$Kbh5NC-J>26r72l!lEG^x_4ev5Cx6%8yQHco zNk?Rqj+naa)h0=k3$&zd;}F(5y3Nm+0J<6WgVQ^o8XJ* z=PM-druv(V=hWn-d84<9TOFAmNEP4Fy==*9SD2uM{h5L`{BA?<>zY?;^u3!q755_x zZ53e)(r&AbCkz%`(WXC;$J7l;IVYe+%Z~+-?2(|csSbAcgdGR`#>P<)0RJNzNI%@A|bheKG}=m3G6EU=*bD4Bxx=ntkNpB)`Sd-!_tk^k7|vdqcL zrkwfXN@w}KcJf@|pSOy5dCykPHbqr4jMX}ohT@dJ`cN(nIaO_p_IV1&qqj!HU@vw|nbms~ zU4>dbGe5L!$3a<5t_VZ$f64YEZPpa6(J#+e(D+vnbA_*kpFhF7XeUt;={zlmZri4p zt;!?l6VjYYaw@_~L%_1DITYwNzaKo#20L#%uxgC5;SK9_B?mxDhvpZVNo2DzzP@f(lHe#_opZ5ytrS?NZeA z7rd7Agj06*5l52+YNdU$&>8!<+NNA6XhSat9InF-Dg+Cuk6N7Tuq*u}kAL_qP99QO zMw@V~Q#xIPj@*{8sFKiT=Sq|Qv?(mL6u{Us zJOp)nX!XH^6Z@IQv%;*l#->;u%c2=0dr1HG()0P*s27{p!jo9*GK$+r5d~vks(qWt zg1m8BUj61SV7IXg%in8TGs@^sS;yf{tL;x?H|9^~$}(K7DNkjdcC`FiTJG+j%5W7s z7IM>c2@&E{e|vlt?D~N5*jo{9ctRJ-ZmZ+uTGCe>2wtEz=ro5IUjv8lNy9_<4ZE+K z+w$uPEb!w*Hs^(vWABR-1{`*KZ)ME8v!n<97EjvYIu>b9OAn*&&NW8z{2t&mw@A;o zHJG*pv-f48(y;>JuH@ZSa2X>=Kx5&Ygj87qO zSq>B*;JRR&EaEJHQvzHG{_?!7xjG?4Uw7J2Yhx0XbF@Oe%hZ75w8PhvrzNmj02&!HCjJzN(#db-nQAK3QGV?P89814 z`T|UdREJeuhhL>CEI|;93G|k3w$iR3D!d@SW)CBg7ejM~e~tw)YIKD!z(ws7QMYP) z*@*ogK?4@TlNR0;6gg~`(816D!$e_+iYPx~kj=R&v}qGjvy#U;ArI?79D#enQD0JU zH;73UIkH}qlE^CY%bgMu)iY#qgUd+BArNCcrQJ=8UuSgiWD)fTve&{JhxLpWft>EV zzKMBU|BN<_Qi^fK#GDgc4!0TMM9+HVMjM8I#N$vINjhpzAtjq!P4t_Tc0ibo6Sb@O zI4iNYiKR7=bA}m^Y#Xo>!`c**qk}zoDW&u-vEHk!OTGUgwk63TlC6Pqsa0n~_o>b`sJ>}1CG zxRV9cyPLQ_6Vbrsba$%qyZ>&ytKbujH~U{`o}^=Zk9GKyR_J_E;EiE>S9hatCYLgu z{N<17yOXjzZD3M*5OKgBgX}g7^%i#R_s^|@D=m!md&zAHw$_J&I-p+X)%OJ#hi>JT z(7dYT3H8#*9JG(Gf<0TlmAVlMW-D9cVML88}As@PPFymR~BS9topJ^%fetNi7{J>W= z+?C^@VMbppFu9*m-heFlI{{NVj+~3RELaM-S~vwBYATs*I}k4+X_XfEKavcvF(i?X zsER}>$+3a?0{tf-7@-l(==d-8ATXdY@n;k9iZoqjPDHA3?$dvI1mDu%v>@R`oS9}> z0FWiAfjpnTh(rhG%kq(f#F**efaXjRT^G^-?hwQhsu+oP4H9uIoj&Uz`c0vfe8ggj znVbLIoi?Cd>L@4*aO?~jP$Vn@c-O6F`;vf#B9J?F;xU~Sf<%AJiMKI82)v=;Ae~%I z6qt`$ui3#Wh)Tdi33yNu33yQPPU;j9JHfk1H*eF%`T?Ebt^4zRP!K>0 zcdXcq>Nm+I`r?~FQ}`kiVgZ)X8@*T(DNs!D2FD2#OC8FNTz>xu+zs@feO=f5xrGQI z;F6P6F#orJmFO_I=|527h!iFc%Q1WCJylU+veJoxno0_A7Z8@n=v>74TRatLjI~$a z$J@O`jhJot9!2P$7hw)KgIeu+n_?(_K;c|Y^0bRUkrLoQ@E74VEH5P?D$zOPqj(CS z@bjZ_YDQp2C!p&)Dx{41XEcHP`K^j41IGu4mjn%eLrB;It8Tj+SKSB{*^_-m&_fd^ zK}`G`CF0|rS4=b;he0HU5ny6R6_F`#z@GqF+s+PxtIg7n|t6&^twx@l{bN9Z$hUIPj?zoP|F+ zMF1HG-F4Ka5LJ@l>i+Yn23%AG62AfIXcr1;FQuodNUh6ftu@uH-YB7;s7Ym=gLHJa z>-znDo-LaUOG2Y!&MqW7pBy0xh!iyNG9NQWg$+8I5QkM#ipyomww$^xn|7Pg%5YXZ zZH<=Yx)<>Qi;T&djQK-<6s_-c>V50NVo0Cx9_=sS z_4RLqqr?8-B88i{X}Hkf4IWD^6PR5kjy9&w;7RcunrzFEWzd<{5;U1od&G^|l!P7A zPZ}@y-``2qE3vN#Tc0#29brSa?JEslu1+I-R&*BXO)|GQ8r|kiy(dRpL&*XwV2wJy zY{ct$LY77sOfPIj9>b)-0E=rp51lbI(d$GbkIY16FI5*1+(zN4+GG61I~a;F!4kbf z+)mmevP&AaaB-ol(S@|WyV4v>xKyt@8~KaL;;7^Oui3=^tO)tD`;8WwM$d1VC}Wlg zvqiCJetR18m&H57(BR9*Vwm{pizc^Pw-lw^KO2ZNNZN>^39&rbcuy zif)@Ro2Du-jF_94FsL)X*ys_;5hge}Xn>(gX%H0r@0wk2HWw|v?ajT=>g}bi4EWjJ@4KdTk_KB5Or3TkCJ0bU3MqD(Yu!MPyDZRk7`Z9kO zsgiq$)9%Men*9IWpW(uwQK#C0=Q}(n@5N2;`_jCT7AWRiH8``I3WaJOxKgf0<&6i@r@?Ccuu|;dhY;A$x%gs)H6gq*O{jmX z%Mx+z%Yz-tSXGT6LG%HYq>|x#jeKj+NX^OS>0_Ps`w%945NXFMw@eS49`NgnZxZV( zZaSB_#f4t*T#tFY&NxpsHcfcA?+-b!_w}qz=>5Y-uX1xJM%-|Zp2)s?jLy{BGvCkn zevisx;?*TL7*1lcuBSgGYOX>H|VTW@0F4Eqd zgMV*wB*Mdg@AOqciBDb2&N_LyJg>u>MfvdM-JGQN2<|kww$)S0aFOkZkwd<66DYo1 zL)%dac@0Uq5ZU#OaK|?k+V;}#HYGtddc&qxM$i1CqEz!O=8OZs&YlX78+r=EJ={+z z7A}4uSciS(mUh7hCZ=)xXua2@;@exz2hJUJ zh)9;Bo8uIi7tNnek&)`ZYF%bx1@CD a&d36(_t1Wmc2mS1eM7jJZk5iBsQ&@D)H@{r literal 0 HcmV?d00001 diff --git a/FamilyBudget/FamilyBudget/Resources/free-icon-plus-1816721.png b/FamilyBudget/FamilyBudget/Resources/free-icon-plus-1816721.png new file mode 100644 index 0000000000000000000000000000000000000000..e83f8fc1addeab8f19cfb85d7d48701b83d946f2 GIT binary patch literal 6746 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 a&d36(_t1Wmc2mS1eM7jJZk5iBsQ&@D)H@{r literal 0 HcmV?d00001 diff --git a/FamilyBudget/FamilyBudget/appsettings.json b/FamilyBudget/FamilyBudget/appsettings.json new file mode 100644 index 0000000..21d8003 --- /dev/null +++ b/FamilyBudget/FamilyBudget/appsettings.json @@ -0,0 +1,15 @@ +{ + "Serilog": { + "Using": [ "Serilog.Sinks.File" ], + "MinimumLevel": "Debug", + "WriteTo": [ + { + "Name": "File", + "Args": { + "path": "Logs/familyBudget_log.txt", + "rollingInterval": "Day" + } + } + ] + } +}