diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Entities/Enums/FamilyMemberType.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Entities/Enums/FamilyMemberType.cs new file mode 100644 index 0000000..18e17e9 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Entities/Enums/FamilyMemberType.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectFamilyBudget.Entities.Enums; + +public enum FamilyMemberType +{ + None = 0, + Father = 1, + Mother = 2, + Son = 3, + Daugther = 4, + Grandpa = 5, + Grandma = 6, +} + diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Entities/Enums/IncomeExpenseType.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Entities/Enums/IncomeExpenseType.cs new file mode 100644 index 0000000..076cf70 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Entities/Enums/IncomeExpenseType.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectFamilyBudget.Entities.Enums; + +[Flags] +public enum IncomeExpenseType +{ + None = 0, + Constant = 1, + Variable = 2 +} + diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Entities/Expense.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Entities/Expense.cs new file mode 100644 index 0000000..bb2a5db --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Entities/Expense.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ProjectFamilyBudget.Entities.Enums; + +namespace ProjectFamilyBudget.Entities; + +public class Expense +{ + public int Id { get; private set; } + public IncomeExpenseType ExpenseType { get; private set; } + public string Name { get; private set; } = string.Empty; + public string ExpenseCategory { get; private set; } = string.Empty; + + public static Expense CreateEntity(int id, IncomeExpenseType expenseType, string name, string expenseCategory) + { + return new Expense + { + Id = id, + ExpenseType = expenseType, + Name = name, + ExpenseCategory = expenseCategory + }; + } +} diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Entities/ExpensePeopleExpense.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Entities/ExpensePeopleExpense.cs new file mode 100644 index 0000000..bf2126b --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Entities/ExpensePeopleExpense.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectFamilyBudget.Entities; + +public class ExpensePeopleExpense +{ + public int Id { get; private set; } + public int ExpenseId { get; private set; } + public int Sum { get; private set; } + public static ExpensePeopleExpense CreateElement(int id, int expenseId, int sum) + { + return new ExpensePeopleExpense + { + Id = id, + ExpenseId = expenseId, + Sum = sum + }; + } +} diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Entities/Income.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Entities/Income.cs new file mode 100644 index 0000000..08ed456 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Entities/Income.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ProjectFamilyBudget.Entities.Enums; + +namespace ProjectFamilyBudget.Entities; + +public class Income +{ + public int Id { get; private set; } + public IncomeExpenseType IncomeType { get; private set; } + public string Name { get; private set; } = string.Empty; + public string IncomeCategory { get; private set; } = string.Empty; + + public static Income CreateEntity(int id, IncomeExpenseType incomeType, string name, string incomeCategory) + { + return new Income + { + Id = id, + IncomeType = incomeType, + Name = name, + IncomeCategory = incomeCategory + }; + } +} + diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Entities/IncomePeopleIncome.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Entities/IncomePeopleIncome.cs new file mode 100644 index 0000000..df519df --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Entities/IncomePeopleIncome.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectFamilyBudget.Entities; + +public class IncomePeopleIncome +{ + public int Id { get; private set; } + public int IncomeId { get; private set; } + public int Sum { get; private set; } + public static IncomePeopleIncome CreateElement(int id, int incomeId, int sum) + { + return new IncomePeopleIncome + { + Id = id, + IncomeId = incomeId, + Sum = sum + }; + } +} diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Entities/People.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Entities/People.cs new file mode 100644 index 0000000..ea9dc97 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Entities/People.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ProjectFamilyBudget.Entities.Enums; + +namespace ProjectFamilyBudget.Entities; + +public class People +{ + public int Id { get; private set; } + public string Name { get; private set; } = string.Empty; + public string LastName { get; private set; } = string.Empty; + public int Age { get; private set; } + public FamilyMemberType MemberType { get; private set; } + public static People CreateEntity(int id, string name, string lastName, int age, FamilyMemberType memberType) + { + return new People + { + Id = id, + Name = name, + LastName = lastName, + Age = age, + MemberType = memberType + }; + } +} diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Entities/PeopleExpense.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Entities/PeopleExpense.cs new file mode 100644 index 0000000..2c33bee --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Entities/PeopleExpense.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectFamilyBudget.Entities; + +public class PeopleExpense +{ + public int Id { get; private set; } + public int PeopleId { get; private set; } + public DateTime DataReceipt { get; private set; } + public IEnumerable ExpensePeopleExpenses { get; private set; } = []; + public static PeopleExpense CreateOperation(int id, int peopleId, IEnumerable expensePeopleExpenses) + { + return new PeopleExpense + { + Id = id, + PeopleId = peopleId, + DataReceipt = DateTime.Now, + ExpensePeopleExpenses = expensePeopleExpenses + }; + } +} + diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Entities/PeopleIncome.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Entities/PeopleIncome.cs new file mode 100644 index 0000000..561ec46 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Entities/PeopleIncome.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectFamilyBudget.Entities; + +public class PeopleIncome +{ + public int Id { get; private set; } + public int PeopleId { get; private set; } + public DateTime DataReceipt { get; private set; } + public IEnumerable IncomePeopleIncomes { get; private set; } = []; + public static PeopleIncome CreateOperation(int id, int peopleId, IEnumerable incomePeopleIncomes) + { + return new PeopleIncome + { + Id = id, + PeopleId = peopleId, + DataReceipt = DateTime.Now, + IncomePeopleIncomes = incomePeopleIncomes + }; + } +} + diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Form1.Designer.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Form1.Designer.cs deleted file mode 100644 index 4c13765..0000000 --- a/ProjectFamilyBudget/ProjectFamilyBudget/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace ProjectFamilyBudget -{ - 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/ProjectFamilyBudget/ProjectFamilyBudget/Form1.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Form1.cs deleted file mode 100644 index 4367c68..0000000 --- a/ProjectFamilyBudget/ProjectFamilyBudget/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace ProjectFamilyBudget -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/FormFamilyBudget.Designer.cs b/ProjectFamilyBudget/ProjectFamilyBudget/FormFamilyBudget.Designer.cs new file mode 100644 index 0000000..aa8d530 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/FormFamilyBudget.Designer.cs @@ -0,0 +1,140 @@ +namespace ProjectFamilyBudget +{ + 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() + { + menuStrip = new MenuStrip(); + справочникиToolStripMenuItem = new ToolStripMenuItem(); + PeopleToolStripMenuItem = new ToolStripMenuItem(); + IncomeToolStripMenuItem = new ToolStripMenuItem(); + ExpenseToolStripMenuItem = new ToolStripMenuItem(); + операцииToolStripMenuItem = new ToolStripMenuItem(); + PeopleIncomeToolStripMenuItem = new ToolStripMenuItem(); + PeopleExpenseToolStripMenuItem = new ToolStripMenuItem(); + отчетыToolStripMenuItem = new ToolStripMenuItem(); + menuStrip.SuspendLayout(); + SuspendLayout(); + // + // menuStrip + // + menuStrip.ImageScalingSize = new Size(20, 20); + menuStrip.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, операцииToolStripMenuItem, отчетыToolStripMenuItem }); + menuStrip.Location = new Point(0, 0); + menuStrip.Name = "menuStrip"; + menuStrip.Padding = new Padding(7, 3, 0, 3); + menuStrip.Size = new Size(881, 30); + menuStrip.TabIndex = 0; + menuStrip.Text = "menuStrip"; + // + // справочникиToolStripMenuItem + // + справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { PeopleToolStripMenuItem, IncomeToolStripMenuItem, ExpenseToolStripMenuItem }); + справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem"; + справочникиToolStripMenuItem.Size = new Size(117, 24); + справочникиToolStripMenuItem.Text = "Справочники"; + // + // PeopleToolStripMenuItem + // + PeopleToolStripMenuItem.Name = "PeopleToolStripMenuItem"; + PeopleToolStripMenuItem.Size = new Size(139, 26); + PeopleToolStripMenuItem.Text = "Люди"; + PeopleToolStripMenuItem.Click += PeopleToolStripMenuItem_Click; + // + // IncomeToolStripMenuItem + // + IncomeToolStripMenuItem.Name = "IncomeToolStripMenuItem"; + IncomeToolStripMenuItem.Size = new Size(139, 26); + IncomeToolStripMenuItem.Text = "Доход"; + IncomeToolStripMenuItem.Click += IncomeToolStripMenuItem_Click; + // + // ExpenseToolStripMenuItem + // + ExpenseToolStripMenuItem.Name = "ExpenseToolStripMenuItem"; + ExpenseToolStripMenuItem.Size = new Size(139, 26); + ExpenseToolStripMenuItem.Text = "Расход"; + ExpenseToolStripMenuItem.Click += ExpenseToolStripMenuItem_Click; + // + // операцииToolStripMenuItem + // + операцииToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { PeopleIncomeToolStripMenuItem, PeopleExpenseToolStripMenuItem }); + операцииToolStripMenuItem.Name = "операцииToolStripMenuItem"; + операцииToolStripMenuItem.Size = new Size(95, 24); + операцииToolStripMenuItem.Text = "Операции"; + // + // PeopleIncomeToolStripMenuItem + // + PeopleIncomeToolStripMenuItem.Name = "PeopleIncomeToolStripMenuItem"; + PeopleIncomeToolStripMenuItem.Size = new Size(238, 26); + PeopleIncomeToolStripMenuItem.Text = "Добавление дохода"; + PeopleIncomeToolStripMenuItem.Click += PeopleIncomeToolStripMenuItem_Click; + // + // PeopleExpenseToolStripMenuItem + // + PeopleExpenseToolStripMenuItem.Name = "PeopleExpenseToolStripMenuItem"; + PeopleExpenseToolStripMenuItem.Size = new Size(238, 26); + PeopleExpenseToolStripMenuItem.Text = "Добавление расхода"; + PeopleExpenseToolStripMenuItem.Click += PeopleExpenseToolStripMenuItem_Click; + // + // отчетыToolStripMenuItem + // + отчетыToolStripMenuItem.Name = "отчетыToolStripMenuItem"; + отчетыToolStripMenuItem.Size = new Size(73, 24); + отчетыToolStripMenuItem.Text = "Отчеты"; + // + // FormFamilyBudget + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + BackgroundImage = Properties.Resources._4671639; + BackgroundImageLayout = ImageLayout.Zoom; + ClientSize = new Size(881, 566); + Controls.Add(menuStrip); + MainMenuStrip = menuStrip; + Margin = new Padding(3, 4, 3, 4); + Name = "FormFamilyBudget"; + StartPosition = FormStartPosition.CenterScreen; + Text = "Семейный бюджет"; + menuStrip.ResumeLayout(false); + menuStrip.PerformLayout(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private MenuStrip menuStrip; + private ToolStripMenuItem справочникиToolStripMenuItem; + private ToolStripMenuItem PeopleToolStripMenuItem; + private ToolStripMenuItem IncomeToolStripMenuItem; + private ToolStripMenuItem ExpenseToolStripMenuItem; + private ToolStripMenuItem операцииToolStripMenuItem; + private ToolStripMenuItem отчетыToolStripMenuItem; + private ToolStripMenuItem PeopleIncomeToolStripMenuItem; + private ToolStripMenuItem PeopleExpenseToolStripMenuItem; +} +} diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/FormFamilyBudget.cs b/ProjectFamilyBudget/ProjectFamilyBudget/FormFamilyBudget.cs new file mode 100644 index 0000000..e695b34 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/FormFamilyBudget.cs @@ -0,0 +1,91 @@ +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 ProjectFamilyBudget.Forms; +using Unity; + +namespace ProjectFamilyBudget; + + + public partial class FormFamilyBudget : Form +{ + private readonly IUnityContainer _container; + public FormFamilyBudget(IUnityContainer container) + { + InitializeComponent(); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + } + + private void PeopleToolStripMenuItem_Click(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 PeopleIncomeToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void PeopleExpenseToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + _container.Resolve().ShowDialog(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при загрузке", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } +} + diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/FormFamilyBudget.resx b/ProjectFamilyBudget/ProjectFamilyBudget/FormFamilyBudget.resx new file mode 100644 index 0000000..6c82d08 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/FormFamilyBudget.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormExpense.Designer.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormExpense.Designer.cs new file mode 100644 index 0000000..656ab88 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormExpense.Designer.cs @@ -0,0 +1,141 @@ +namespace ProjectFamilyBudget.Forms +{ + partial class FormExpense + { + /// + /// 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() + { + label5 = new Label(); + textBoxName = new TextBox(); + label3 = new Label(); + buttonSave = new Button(); + buttonCansel = new Button(); + textBoxCategory = new TextBox(); + label1 = new Label(); + checkedListBoxType = new CheckedListBox(); + SuspendLayout(); + // + // label5 + // + label5.AutoSize = true; + label5.Location = new Point(23, 24); + label5.Name = "label5"; + label5.Size = new Size(59, 15); + label5.TabIndex = 10; + label5.Text = "Название"; + // + // textBoxName + // + textBoxName.Location = new Point(101, 21); + textBoxName.Name = "textBoxName"; + textBoxName.Size = new Size(188, 23); + textBoxName.TabIndex = 11; + // + // label3 + // + label3.AutoSize = true; + label3.Location = new Point(19, 196); + label3.Name = "label3"; + label3.Size = new Size(63, 15); + label3.TabIndex = 16; + label3.Text = "Категория"; + // + // buttonSave + // + buttonSave.Location = new Point(12, 254); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(102, 41); + buttonSave.TabIndex = 18; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += buttonSave_Click; + // + // buttonCansel + // + buttonCansel.Location = new Point(192, 254); + buttonCansel.Name = "buttonCansel"; + buttonCansel.Size = new Size(97, 41); + buttonCansel.TabIndex = 19; + buttonCansel.Text = "Отмена"; + buttonCansel.UseVisualStyleBackColor = true; + buttonCansel.Click += buttonCansel_Click; + // + // textBoxCategory + // + textBoxCategory.Location = new Point(101, 193); + textBoxCategory.Name = "textBoxCategory"; + textBoxCategory.Size = new Size(188, 23); + textBoxCategory.TabIndex = 20; + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(8, 88); + label1.Name = "label1"; + label1.Size = new Size(74, 15); + label1.TabIndex = 21; + label1.Text = "Тип расхода"; + // + // checkedListBoxType + // + checkedListBoxType.FormattingEnabled = true; + checkedListBoxType.Location = new Point(101, 88); + checkedListBoxType.Name = "checkedListBoxType"; + checkedListBoxType.Size = new Size(188, 58); + checkedListBoxType.TabIndex = 22; + // + // FormExpense + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(301, 307); + Controls.Add(checkedListBoxType); + Controls.Add(label1); + Controls.Add(textBoxCategory); + Controls.Add(buttonCansel); + Controls.Add(buttonSave); + Controls.Add(label3); + Controls.Add(textBoxName); + Controls.Add(label5); + Name = "FormExpense"; + StartPosition = FormStartPosition.CenterParent; + Text = "Расход"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label label5; + private TextBox textBoxName; + private Label label3; + private Button buttonSave; + private Button buttonCansel; + private TextBox textBoxCategory; + private Label label1; + private CheckedListBox checkedListBoxType; + } +} \ No newline at end of file diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormExpense.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormExpense.cs new file mode 100644 index 0000000..bc4cd3a --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormExpense.cs @@ -0,0 +1,101 @@ +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 ProjectFamilyBudget.Entities.Enums; +using ProjectFamilyBudget.Entities; +using ProjectFamilyBudget.Repositories; + +namespace ProjectFamilyBudget.Forms +{ + public partial class FormExpense : Form + { + private readonly IExpense _expense; + private int? _expenseId; + public int Id + { + set + { + try + { + var expense = _expense.ReadExpenseById(value); + if (expense == null) + { + throw new InvalidDataException(nameof(expense)); + } + foreach (IncomeExpenseType elem in Enum.GetValues(typeof(IncomeExpenseType))) + { + if ((elem & expense.ExpenseType) != 0) + { + checkedListBoxType.SetItemChecked(checkedListBoxType.Items.IndexOf( + elem), true); + } + } + textBoxName.Text = expense.Name; + textBoxCategory.Text = expense.ExpenseCategory; + _expenseId = value; + + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получени данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + public FormExpense(IExpense expense) + { + InitializeComponent(); + _expense = expense ?? + throw new ArgumentNullException(nameof(expense)); + foreach (var elem in Enum.GetValues(typeof(IncomeExpenseType))) + { + checkedListBoxType.Items.Add(elem); + } + } + + private void buttonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxName.Text) + || + string.IsNullOrWhiteSpace(textBoxCategory.Text) || checkedListBoxType.CheckedItems.Count == 0) + { + throw new Exception("Имеются незаполненные поля"); + } + if (_expenseId.HasValue) + { + _expense.UpdateExpense(CreateExpense(_expenseId.Value)); + } + else + { + _expense.CreateExpense(CreateExpense(0)); + } + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void buttonCansel_Click(object sender, EventArgs e) => Close(); + private Expense CreateExpense(int id) + { + IncomeExpenseType expenseType = IncomeExpenseType.None; + foreach (var elem in checkedListBoxType.CheckedItems) + { + expenseType |= (IncomeExpenseType)elem; + } + return Expense.CreateEntity(id, expenseType, textBoxName.Text, textBoxCategory.Text); + } + } +} + diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Form1.resx b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormExpense.resx similarity index 100% rename from ProjectFamilyBudget/ProjectFamilyBudget/Form1.resx rename to ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormExpense.resx diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormExpenses.Designer.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormExpenses.Designer.cs new file mode 100644 index 0000000..ca81b45 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormExpenses.Designer.cs @@ -0,0 +1,133 @@ +namespace ProjectFamilyBudget.Forms +{ + partial class FormExpenses + { + /// + /// 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() + { + panel = new Panel(); + buttonEdit = new Button(); + buttonCansel = new Button(); + buttonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel + // + panel.Controls.Add(buttonEdit); + panel.Controls.Add(buttonCansel); + panel.Controls.Add(buttonAdd); + panel.Dock = DockStyle.Right; + panel.Location = new Point(709, 0); + panel.Margin = new Padding(3, 4, 3, 4); + panel.Name = "panel"; + panel.Size = new Size(205, 600); + panel.TabIndex = 1; + // + // buttonEdit + // + buttonEdit.BackgroundImage = Properties.Resources.pen; + buttonEdit.BackgroundImageLayout = ImageLayout.Zoom; + buttonEdit.Location = new Point(41, 165); + buttonEdit.Margin = new Padding(3, 4, 3, 4); + buttonEdit.Name = "buttonEdit"; + buttonEdit.Size = new Size(118, 73); + buttonEdit.TabIndex = 5; + buttonEdit.UseVisualStyleBackColor = true; + buttonEdit.Click += buttonEdit_Click; + // + // buttonCansel + // + buttonCansel.BackgroundImage = Properties.Resources.minus; + buttonCansel.BackgroundImageLayout = ImageLayout.Zoom; + buttonCansel.Location = new Point(41, 279); + buttonCansel.Margin = new Padding(3, 4, 3, 4); + buttonCansel.Name = "buttonCansel"; + buttonCansel.Size = new Size(118, 75); + buttonCansel.TabIndex = 3; + buttonCansel.UseVisualStyleBackColor = true; + buttonCansel.Click += buttonCansel_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.plus; + buttonAdd.BackgroundImageLayout = ImageLayout.Zoom; + buttonAdd.Location = new Point(41, 43); + buttonAdd.Margin = new Padding(3, 4, 3, 4); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(118, 75); + buttonAdd.TabIndex = 1; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += buttonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.Margin = new Padding(3, 4, 3, 4); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 51; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(709, 600); + dataGridViewData.TabIndex = 3; + // + // FormExpenses + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(914, 600); + Controls.Add(dataGridViewData); + Controls.Add(panel); + Margin = new Padding(3, 4, 3, 4); + Name = "FormExpenses"; + StartPosition = FormStartPosition.CenterParent; + Text = "Расходы"; + Load += FormExpenses_Load; + panel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel; + private Button buttonCansel; + private Button buttonAdd; + private DataGridView dataGridViewData; + private Button buttonEdit; + } +} \ No newline at end of file diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormExpenses.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormExpenses.cs new file mode 100644 index 0000000..a178101 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormExpenses.cs @@ -0,0 +1,111 @@ +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 ProjectFamilyBudget.Repositories; +using Unity; + +namespace ProjectFamilyBudget.Forms +{ + public partial class FormExpenses : Form + { + private readonly IUnityContainer _container; + private readonly IExpense _expense; + public FormExpenses(IUnityContainer container, IExpense expense) + { + InitializeComponent(); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + _expense = expense ?? + throw new ArgumentNullException(nameof(expense)); + } + private void FormExpenses_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 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); + } + } + + private void buttonCansel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", + MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _expense.DeleteExpense(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() => dataGridViewData.DataSource = _expense.ReadExpense; + + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewData.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = + Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + return true; + } + } +} diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormExpenses.resx b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormExpenses.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormExpenses.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/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormIncome.Designer.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormIncome.Designer.cs new file mode 100644 index 0000000..c5de15d --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormIncome.Designer.cs @@ -0,0 +1,152 @@ +namespace ProjectFamilyBudget.Forms +{ + partial class FormIncome + { + /// + /// 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() + { + label3 = new Label(); + buttonSave = new Button(); + buttonCansel = new Button(); + label4 = new Label(); + label5 = new Label(); + textBoxName = new TextBox(); + textBoxCategory = new TextBox(); + label1 = new Label(); + checkedListBoxType = new CheckedListBox(); + SuspendLayout(); + // + // label3 + // + label3.AutoSize = true; + label3.Location = new Point(12, 189); + label3.Name = "label3"; + label3.Size = new Size(63, 15); + label3.TabIndex = 2; + label3.Text = "Категория"; + // + // buttonSave + // + buttonSave.Location = new Point(12, 251); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(102, 41); + buttonSave.TabIndex = 6; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += buttonSave_Click; + // + // buttonCansel + // + buttonCansel.Location = new Point(191, 251); + buttonCansel.Name = "buttonCansel"; + buttonCansel.Size = new Size(97, 41); + buttonCansel.TabIndex = 7; + buttonCansel.Text = "Отмена"; + buttonCansel.UseVisualStyleBackColor = true; + buttonCansel.Click += buttonCansel_Click; + // + // label4 + // + label4.AutoSize = true; + label4.Location = new Point(1368, 563); + label4.Name = "label4"; + label4.Size = new Size(38, 15); + label4.TabIndex = 8; + label4.Text = "label4"; + // + // label5 + // + label5.AutoSize = true; + label5.Location = new Point(7, 28); + label5.Name = "label5"; + label5.Size = new Size(59, 15); + label5.TabIndex = 9; + label5.Text = "Название"; + // + // textBoxName + // + textBoxName.Location = new Point(101, 25); + textBoxName.Name = "textBoxName"; + textBoxName.Size = new Size(187, 23); + textBoxName.TabIndex = 10; + // + // textBoxCategory + // + textBoxCategory.Location = new Point(101, 186); + textBoxCategory.Name = "textBoxCategory"; + textBoxCategory.Size = new Size(187, 23); + textBoxCategory.TabIndex = 11; + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(7, 85); + label1.Name = "label1"; + label1.Size = new Size(68, 15); + label1.TabIndex = 12; + label1.Text = "Тип дохода"; + // + // checkedListBoxType + // + checkedListBoxType.FormattingEnabled = true; + checkedListBoxType.Location = new Point(101, 85); + checkedListBoxType.Name = "checkedListBoxType"; + checkedListBoxType.Size = new Size(187, 58); + checkedListBoxType.TabIndex = 13; + // + // FormIncome + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(300, 308); + Controls.Add(checkedListBoxType); + Controls.Add(label1); + Controls.Add(textBoxCategory); + Controls.Add(textBoxName); + Controls.Add(label5); + Controls.Add(label4); + Controls.Add(buttonCansel); + Controls.Add(buttonSave); + Controls.Add(label3); + Name = "FormIncome"; + StartPosition = FormStartPosition.CenterParent; + Text = "Доход"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + private Label label3; + private Button buttonSave; + private Button buttonCansel; + private Label label4; + private Label label5; + private TextBox textBoxName; + private TextBox textBoxCategory; + private Label label1; + private CheckedListBox checkedListBoxType; + } +} \ No newline at end of file diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormIncome.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormIncome.cs new file mode 100644 index 0000000..1a6191a --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormIncome.cs @@ -0,0 +1,102 @@ +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 ProjectFamilyBudget.Entities.Enums; +using ProjectFamilyBudget.Entities; +using ProjectFamilyBudget.Repositories; + +namespace ProjectFamilyBudget.Forms +{ + public partial class FormIncome : Form + { + private readonly IIncome _income; + private int? _incomeId; + public int Id + { + set + { + try + { + var income = _income.ReadIncomeById(value); + if (income == null) + { + throw new InvalidDataException(nameof(income)); + } + foreach (IncomeExpenseType elem in Enum.GetValues(typeof(IncomeExpenseType))) + { + if ((elem & income.IncomeType) != 0) + { + checkedListBoxType.SetItemChecked(checkedListBoxType.Items.IndexOf( + elem), true); + } + } + textBoxName.Text = income.Name; + textBoxCategory.Text = income.IncomeCategory; + _incomeId = value; + + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получени данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + public FormIncome(IIncome income) + { + InitializeComponent(); + _income = income ?? + throw new ArgumentNullException(nameof(income)); + foreach (var elem in Enum.GetValues(typeof(IncomeExpenseType))) + { + checkedListBoxType.Items.Add(elem); + } + + } + + private void buttonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxName.Text) + || + string.IsNullOrWhiteSpace(textBoxCategory.Text) || checkedListBoxType.CheckedItems.Count == 0) + { + throw new Exception("Имеются незаполненные поля"); + } + if (_incomeId.HasValue) + { + _income.UpdateIncome(CreateIncome(_incomeId.Value)); + } + else + { + _income.CreateIncome(CreateIncome(0)); + } + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + } + + private void buttonCansel_Click(object sender, EventArgs e) => Close(); + private Income CreateIncome(int id) + { + IncomeExpenseType incomeType = IncomeExpenseType.None; + foreach (var elem in checkedListBoxType.CheckedItems) + { + incomeType |= (IncomeExpenseType)elem; + } + return Income.CreateEntity(id, incomeType, textBoxName.Text, textBoxCategory.Text); + } + } +} diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormIncome.resx b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormIncome.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormIncome.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/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormIncomes.Designer.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormIncomes.Designer.cs new file mode 100644 index 0000000..a5c391d --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormIncomes.Designer.cs @@ -0,0 +1,133 @@ +namespace ProjectFamilyBudget.Forms +{ + partial class FormIncomes + { + /// + /// 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() + { + panel = new Panel(); + buttonEdit = new Button(); + buttonCansel = new Button(); + buttonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel + // + panel.Controls.Add(buttonEdit); + panel.Controls.Add(buttonCansel); + panel.Controls.Add(buttonAdd); + panel.Dock = DockStyle.Right; + panel.Location = new Point(709, 0); + panel.Margin = new Padding(3, 4, 3, 4); + panel.Name = "panel"; + panel.Size = new Size(205, 600); + panel.TabIndex = 2; + // + // buttonEdit + // + buttonEdit.BackgroundImage = Properties.Resources.pen; + buttonEdit.BackgroundImageLayout = ImageLayout.Zoom; + buttonEdit.Location = new Point(41, 165); + buttonEdit.Margin = new Padding(3, 4, 3, 4); + buttonEdit.Name = "buttonEdit"; + buttonEdit.Size = new Size(118, 73); + buttonEdit.TabIndex = 5; + buttonEdit.UseVisualStyleBackColor = true; + buttonEdit.Click += buttonEdit_Click; + // + // buttonCansel + // + buttonCansel.BackgroundImage = Properties.Resources.minus; + buttonCansel.BackgroundImageLayout = ImageLayout.Zoom; + buttonCansel.Location = new Point(41, 279); + buttonCansel.Margin = new Padding(3, 4, 3, 4); + buttonCansel.Name = "buttonCansel"; + buttonCansel.Size = new Size(118, 75); + buttonCansel.TabIndex = 3; + buttonCansel.UseVisualStyleBackColor = true; + buttonCansel.Click += buttonCansel_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.plus; + buttonAdd.BackgroundImageLayout = ImageLayout.Zoom; + buttonAdd.Location = new Point(41, 43); + buttonAdd.Margin = new Padding(3, 4, 3, 4); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(118, 75); + buttonAdd.TabIndex = 1; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += buttonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.Margin = new Padding(3, 4, 3, 4); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 51; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(709, 600); + dataGridViewData.TabIndex = 4; + // + // FormIncomes + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(914, 600); + Controls.Add(dataGridViewData); + Controls.Add(panel); + Margin = new Padding(3, 4, 3, 4); + Name = "FormIncomes"; + StartPosition = FormStartPosition.CenterParent; + Text = "Доходы"; + Load += FormIncomes_Load; + panel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel; + private Button buttonEdit; + private Button buttonCansel; + private Button buttonAdd; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormIncomes.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormIncomes.cs new file mode 100644 index 0000000..4c31acb --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormIncomes.cs @@ -0,0 +1,111 @@ +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 ProjectFamilyBudget.Repositories; +using Unity; + +namespace ProjectFamilyBudget.Forms +{ + public partial class FormIncomes : Form + { + private readonly IUnityContainer _container; + private readonly IIncome _income; + public FormIncomes(IUnityContainer container, IIncome income) + { + InitializeComponent(); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + _income = income ?? + throw new ArgumentNullException(nameof(income)); + } + private void FormIncomes_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 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); + } + } + + private void buttonCansel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", + MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _income.DeleteIncome(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() => dataGridViewData.DataSource = _income.ReadIncome; + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewData.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = + Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + return true; + } + } +} diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormIncomes.resx b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormIncomes.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormIncomes.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/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeople.Designer.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeople.Designer.cs new file mode 100644 index 0000000..a4cede4 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeople.Designer.cs @@ -0,0 +1,168 @@ +namespace ProjectFamilyBudget.Forms +{ + partial class FormPeople + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + label1 = new Label(); + textBoxPeopleName = new TextBox(); + label3 = new Label(); + numericUpDownAge = new NumericUpDown(); + buttonSave = new Button(); + buttonCansel = new Button(); + label4 = new Label(); + comboBoxMember = new ComboBox(); + label5 = new Label(); + textBoxLastName = new TextBox(); + ((System.ComponentModel.ISupportInitialize)numericUpDownAge).BeginInit(); + SuspendLayout(); + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(29, 27); + label1.Name = "label1"; + label1.Size = new Size(31, 15); + label1.TabIndex = 0; + label1.Text = "Имя"; + // + // textBoxPeopleName + // + textBoxPeopleName.Location = new Point(86, 24); + textBoxPeopleName.Name = "textBoxPeopleName"; + textBoxPeopleName.Size = new Size(166, 23); + textBoxPeopleName.TabIndex = 1; + // + // label3 + // + label3.AutoSize = true; + label3.Location = new Point(10, 138); + label3.Name = "label3"; + label3.Size = new Size(50, 15); + label3.TabIndex = 4; + label3.Text = "Возраст"; + // + // numericUpDownAge + // + numericUpDownAge.Location = new Point(86, 136); + numericUpDownAge.Minimum = new decimal(new int[] { 1, 0, 0, 0 }); + numericUpDownAge.Name = "numericUpDownAge"; + numericUpDownAge.Size = new Size(166, 23); + numericUpDownAge.TabIndex = 5; + numericUpDownAge.Value = new decimal(new int[] { 1, 0, 0, 0 }); + // + // buttonSave + // + buttonSave.Location = new Point(12, 273); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(90, 45); + buttonSave.TabIndex = 6; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += buttonSave_Click; + // + // buttonCansel + // + buttonCansel.Location = new Point(162, 275); + buttonCansel.Name = "buttonCansel"; + buttonCansel.Size = new Size(90, 43); + buttonCansel.TabIndex = 7; + buttonCansel.Text = "Отмена"; + buttonCansel.UseVisualStyleBackColor = true; + buttonCansel.Click += buttonCansel_Click; + // + // label4 + // + label4.AutoSize = true; + label4.Location = new Point(2, 201); + label4.Name = "label4"; + label4.Size = new Size(72, 15); + label4.TabIndex = 8; + label4.Text = "Член семьи"; + // + // comboBoxMember + // + comboBoxMember.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxMember.FormattingEnabled = true; + comboBoxMember.Location = new Point(86, 198); + comboBoxMember.Name = "comboBoxMember"; + comboBoxMember.Size = new Size(166, 23); + comboBoxMember.TabIndex = 9; + // + // label5 + // + label5.AutoSize = true; + label5.Location = new Point(2, 81); + label5.Name = "label5"; + label5.Size = new Size(58, 15); + label5.TabIndex = 10; + label5.Text = "Фамилия"; + // + // textBoxLastName + // + textBoxLastName.Location = new Point(86, 81); + textBoxLastName.Name = "textBoxLastName"; + textBoxLastName.Size = new Size(166, 23); + textBoxLastName.TabIndex = 11; + // + // FormPeople + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(264, 341); + Controls.Add(textBoxLastName); + Controls.Add(label5); + Controls.Add(comboBoxMember); + Controls.Add(label4); + Controls.Add(buttonCansel); + Controls.Add(buttonSave); + Controls.Add(numericUpDownAge); + Controls.Add(label3); + Controls.Add(textBoxPeopleName); + Controls.Add(label1); + Name = "FormPeople"; + StartPosition = FormStartPosition.CenterParent; + Text = "Человек"; + ((System.ComponentModel.ISupportInitialize)numericUpDownAge).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label label1; + private TextBox textBoxPeopleName; + private Label label3; + private NumericUpDown numericUpDownAge; + private Button buttonSave; + private Button buttonCansel; + private Label label4; + private ComboBox comboBoxMember; + private Label label5; + private TextBox textBoxLastName; + } +} \ No newline at end of file diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeople.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeople.cs new file mode 100644 index 0000000..31febe9 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeople.cs @@ -0,0 +1,86 @@ +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 ProjectFamilyBudget.Entities.Enums; +using ProjectFamilyBudget.Entities; +using ProjectFamilyBudget.Repositories; + +namespace ProjectFamilyBudget.Forms +{ + public partial class FormPeople : Form + { + private readonly IPeople _people; + private int? _peopleId; + public int Id + { + set + { + try + { + var people = _people.ReadPeopleById(value); + if (people == null) + { + throw new InvalidDataException(nameof(people)); + } + textBoxPeopleName.Text = people.Name; + textBoxLastName.Text = people.LastName; + numericUpDownAge.Value = people.Age; + comboBoxMember.SelectedItem = people.MemberType; + _peopleId = value; + + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при получени данных", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + } + } + public FormPeople(IPeople people) + { + InitializeComponent(); + _people = people ?? + throw new ArgumentNullException(nameof(people)); + comboBoxMember.DataSource = Enum.GetValues(typeof(FamilyMemberType)); + } + + private void buttonSave_Click(object sender, EventArgs e) + { + try + { + if (string.IsNullOrWhiteSpace(textBoxPeopleName.Text) + || + string.IsNullOrWhiteSpace(textBoxLastName.Text) || (comboBoxMember.SelectedIndex < 0)) + { + throw new Exception("Имеются незаполненные поля"); + } + if (_peopleId.HasValue) + { + _people.UpdatePeople(CreatePeople(_peopleId.Value)); + } + else + { + _people.CreatePeople(CreatePeople(0)); + } + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + } + + private void buttonCansel_Click(object sender, EventArgs e) => Close(); + private People CreatePeople(int id) => People.CreateEntity(id, textBoxPeopleName.Text, textBoxLastName.Text, Convert.ToInt32(numericUpDownAge.Value) + , (FamilyMemberType)comboBoxMember.SelectedItem!); + } +} + diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeople.resx b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeople.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeople.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/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleExpense.Designer.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleExpense.Designer.cs new file mode 100644 index 0000000..3a5a77c --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleExpense.Designer.cs @@ -0,0 +1,172 @@ +namespace ProjectFamilyBudget.Forms +{ + partial class FormPeopleExpense + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + label1 = new Label(); + comboBoxPeople = new ComboBox(); + label3 = new Label(); + dateTimePicker = new DateTimePicker(); + groupBox = new GroupBox(); + dataGridView = new DataGridView(); + ColumnExpense = new DataGridViewComboBoxColumn(); + ColumnSum = new DataGridViewTextBoxColumn(); + buttonSave = new Button(); + buttonCansel = new Button(); + groupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(36, 21); + label1.Name = "label1"; + label1.Size = new Size(53, 15); + label1.TabIndex = 1; + label1.Text = "Человек"; + // + // comboBoxPeople + // + comboBoxPeople.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxPeople.FormattingEnabled = true; + comboBoxPeople.Location = new Point(140, 18); + comboBoxPeople.Name = "comboBoxPeople"; + comboBoxPeople.Size = new Size(212, 23); + comboBoxPeople.TabIndex = 3; + // + // label3 + // + label3.AutoSize = true; + label3.Location = new Point(57, 70); + label3.Name = "label3"; + label3.Size = new Size(32, 15); + label3.TabIndex = 8; + label3.Text = "Дата"; + // + // dateTimePicker + // + dateTimePicker.Enabled = false; + dateTimePicker.Location = new Point(140, 64); + dateTimePicker.Name = "dateTimePicker"; + dateTimePicker.Size = new Size(212, 23); + dateTimePicker.TabIndex = 9; + // + // groupBox + // + groupBox.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + groupBox.Controls.Add(dataGridView); + groupBox.Location = new Point(12, 105); + groupBox.Name = "groupBox"; + groupBox.Size = new Size(343, 328); + groupBox.TabIndex = 10; + groupBox.TabStop = false; + groupBox.Text = "Расходы"; + // + // dataGridView + // + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Columns.AddRange(new DataGridViewColumn[] { ColumnExpense, 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(337, 306); + dataGridView.TabIndex = 0; + // + // ColumnExpense + // + ColumnExpense.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + ColumnExpense.HeaderText = "Название"; + ColumnExpense.Name = "ColumnExpense"; + // + // ColumnSum + // + ColumnSum.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + ColumnSum.HeaderText = "Сумма"; + ColumnSum.Name = "ColumnSum"; + // + // buttonSave + // + buttonSave.Location = new Point(15, 455); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(101, 34); + buttonSave.TabIndex = 11; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += buttonSave_Click; + // + // buttonCansel + // + buttonCansel.Location = new Point(249, 455); + buttonCansel.Name = "buttonCansel"; + buttonCansel.Size = new Size(103, 34); + buttonCansel.TabIndex = 12; + buttonCansel.Text = "Отмена"; + buttonCansel.UseVisualStyleBackColor = true; + buttonCansel.Click += buttonCansel_Click; + // + // FormPeopleExpense + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(383, 515); + Controls.Add(buttonCansel); + Controls.Add(buttonSave); + Controls.Add(groupBox); + Controls.Add(dateTimePicker); + Controls.Add(label3); + Controls.Add(comboBoxPeople); + Controls.Add(label1); + Name = "FormPeopleExpense"; + StartPosition = FormStartPosition.CenterParent; + Text = "Добавление расхода"; + groupBox.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label label1; + private ComboBox comboBoxPeople; + private Label label3; + private DateTimePicker dateTimePicker; + private GroupBox groupBox; + private DataGridView dataGridView; + private DataGridViewComboBoxColumn ColumnExpense; + private DataGridViewTextBoxColumn ColumnSum; + private Button buttonSave; + private Button buttonCansel; + } +} \ No newline at end of file diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleExpense.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleExpense.cs new file mode 100644 index 0000000..3b01490 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleExpense.cs @@ -0,0 +1,69 @@ +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 ProjectFamilyBudget.Entities; +using ProjectFamilyBudget.Repositories; + +namespace ProjectFamilyBudget.Forms +{ + public partial class FormPeopleExpense : Form + { + private readonly IPeopleExpense _peopleEpxense; + public FormPeopleExpense(IPeopleExpense peopleEpxense, IPeople people, IExpense expense) + { + InitializeComponent(); + _peopleEpxense = peopleEpxense ?? + throw new ArgumentNullException(nameof(peopleEpxense)); + comboBoxPeople.DataSource = people.ReadPeople(); + comboBoxPeople.DisplayMember = "Name"; + comboBoxPeople.ValueMember = "Id"; + + ColumnExpense.DataSource = expense.ReadExpense(); + ColumnExpense.DisplayMember = "Name"; + ColumnExpense.ValueMember = "Id"; + } + + private void buttonSave_Click(object sender, EventArgs e) + { + try + { + if ((dataGridView.RowCount < 1) + || + (comboBoxPeople.SelectedIndex < 0)) + { + throw new Exception("Имеются незаполненные поля"); + } + _peopleEpxense.CreatePeopleExpense(PeopleExpense.CreateOperation(0, (int)comboBoxPeople.SelectedValue!, + CreateListPeopleExpenseFromDataGrid())); + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void buttonCansel_Click(object sender, EventArgs e) => Close(); + private List CreateListPeopleExpenseFromDataGrid() + { + var list = new List(); + foreach (DataGridViewRow row in dataGridView.Rows) + { + if (row.Cells["ColumnExpense"].Value == null || row.Cells["ColumnSum"].Value == null) + { + continue; + } + list.Add(ExpensePeopleExpense.CreateElement(0, Convert.ToInt32(row.Cells["ColumnExpense"].Value) + , Convert.ToInt32(row.Cells["ColumnSum"].Value))); + } + return list; + + } + } +} diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleExpense.resx b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleExpense.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleExpense.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/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleExpenses.Designer.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleExpenses.Designer.cs new file mode 100644 index 0000000..56d56ff --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleExpenses.Designer.cs @@ -0,0 +1,112 @@ +namespace ProjectFamilyBudget.Forms +{ + partial class FormPeopleExpenses + { + /// + /// 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() + { + panel = new Panel(); + buttonCansel = new Button(); + buttonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel + // + panel.Controls.Add(buttonCansel); + panel.Controls.Add(buttonAdd); + panel.Dock = DockStyle.Right; + panel.Location = new Point(621, 0); + panel.Name = "panel"; + panel.Size = new Size(179, 450); + panel.TabIndex = 4; + // + // buttonCansel + // + buttonCansel.BackgroundImage = Properties.Resources.minus; + buttonCansel.BackgroundImageLayout = ImageLayout.Zoom; + buttonCansel.Location = new Point(36, 143); + buttonCansel.Name = "buttonCansel"; + buttonCansel.Size = new Size(103, 56); + buttonCansel.TabIndex = 3; + buttonCansel.UseVisualStyleBackColor = true; + buttonCansel.Click += buttonCansel_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.plus; + buttonAdd.BackgroundImageLayout = ImageLayout.Zoom; + buttonAdd.Location = new Point(36, 32); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(103, 56); + buttonAdd.TabIndex = 1; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += buttonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(621, 450); + dataGridViewData.TabIndex = 6; + // + // FormPeopleExpenses + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridViewData); + Controls.Add(panel); + Name = "FormPeopleExpenses"; + StartPosition = FormStartPosition.CenterParent; + Text = "Список добвленных расходов"; + Load += FormPeopleExpenses_Load; + panel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel; + private Button buttonCansel; + private Button buttonAdd; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleExpenses.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleExpenses.cs new file mode 100644 index 0000000..1d16078 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleExpenses.cs @@ -0,0 +1,92 @@ +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 ProjectFamilyBudget.Repositories; +using Unity; + +namespace ProjectFamilyBudget.Forms +{ + public partial class FormPeopleExpenses : Form + { + private readonly IUnityContainer _container; + private readonly IPeopleExpense _peopleExpense; + public FormPeopleExpenses(IUnityContainer container, IPeopleExpense peopleExpense) + { + InitializeComponent(); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + _peopleExpense = peopleExpense ?? + throw new ArgumentNullException(nameof(peopleExpense)); + } + + private void FormPeopleExpenses_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 buttonCansel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", + MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _peopleExpense.DeletPeopleExpense(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() => dataGridViewData.DataSource = _peopleExpense.ReadPeopleExpense; + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewData.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = + Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + return true; + } + } +} diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleExpenses.resx b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleExpenses.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleExpenses.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/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleIncome.Designer.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleIncome.Designer.cs new file mode 100644 index 0000000..f383518 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleIncome.Designer.cs @@ -0,0 +1,185 @@ +namespace ProjectFamilyBudget.Forms +{ + partial class FormPeopleIncome + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + label1 = new Label(); + label2 = new Label(); + comboBoxPeople = new ComboBox(); + groupBox = new GroupBox(); + dataGridView = new DataGridView(); + ColumnIncome = new DataGridViewComboBoxColumn(); + ColumnSum = new DataGridViewTextBoxColumn(); + buttonSave = new Button(); + buttonCansel = new Button(); + dateTimePicker = new DateTimePicker(); + label3 = new Label(); + groupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(27, 22); + label1.Name = "label1"; + label1.Size = new Size(53, 15); + label1.TabIndex = 0; + label1.Text = "Человек"; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new Point(27, 50); + label2.Name = "label2"; + label2.Size = new Size(0, 15); + label2.TabIndex = 1; + // + // comboBoxPeople + // + comboBoxPeople.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxPeople.FormattingEnabled = true; + comboBoxPeople.Location = new Point(127, 19); + comboBoxPeople.Name = "comboBoxPeople"; + comboBoxPeople.Size = new Size(216, 23); + comboBoxPeople.TabIndex = 2; + // + // groupBox + // + groupBox.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + groupBox.Controls.Add(dataGridView); + groupBox.Location = new Point(15, 105); + groupBox.Name = "groupBox"; + groupBox.Size = new Size(334, 335); + groupBox.TabIndex = 3; + groupBox.TabStop = false; + groupBox.Text = "Доходы"; + // + // dataGridView + // + dataGridView.AllowUserToResizeColumns = false; + dataGridView.AllowUserToResizeRows = false; + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Columns.AddRange(new DataGridViewColumn[] { ColumnIncome, 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(328, 313); + dataGridView.TabIndex = 0; + // + // ColumnIncome + // + ColumnIncome.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + ColumnIncome.HeaderText = "Название"; + ColumnIncome.Name = "ColumnIncome"; + // + // ColumnSum + // + ColumnSum.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + ColumnSum.HeaderText = "Сумма"; + ColumnSum.Name = "ColumnSum"; + // + // buttonSave + // + buttonSave.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonSave.Location = new Point(18, 455); + buttonSave.Name = "buttonSave"; + buttonSave.Size = new Size(101, 34); + buttonSave.TabIndex = 4; + buttonSave.Text = "Сохранить"; + buttonSave.UseVisualStyleBackColor = true; + buttonSave.Click += buttonSave_Click; + // + // buttonCansel + // + buttonCansel.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonCansel.Location = new Point(243, 455); + buttonCansel.Name = "buttonCansel"; + buttonCansel.Size = new Size(103, 34); + buttonCansel.TabIndex = 5; + buttonCansel.Text = "Отмена"; + buttonCansel.UseVisualStyleBackColor = true; + buttonCansel.Click += buttonCansel_Click; + // + // dateTimePicker + // + dateTimePicker.Enabled = false; + dateTimePicker.Location = new Point(127, 62); + dateTimePicker.Name = "dateTimePicker"; + dateTimePicker.Size = new Size(216, 23); + dateTimePicker.TabIndex = 6; + // + // label3 + // + label3.AutoSize = true; + label3.Location = new Point(48, 68); + label3.Name = "label3"; + label3.Size = new Size(32, 15); + label3.TabIndex = 7; + label3.Text = "Дата"; + // + // FormPeopleIncome + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(368, 507); + Controls.Add(label3); + Controls.Add(dateTimePicker); + Controls.Add(buttonCansel); + Controls.Add(buttonSave); + Controls.Add(groupBox); + Controls.Add(comboBoxPeople); + Controls.Add(label2); + Controls.Add(label1); + Name = "FormPeopleIncome"; + StartPosition = FormStartPosition.CenterParent; + Text = "Добвление дохода"; + groupBox.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label label1; + private Label label2; + private ComboBox comboBoxPeople; + private GroupBox groupBox; + private DataGridView dataGridView; + private Button buttonSave; + private Button buttonCansel; + private DataGridViewComboBoxColumn ColumnIncome; + private DataGridViewTextBoxColumn ColumnSum; + private DateTimePicker dateTimePicker; + private Label label3; + } +} \ No newline at end of file diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleIncome.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleIncome.cs new file mode 100644 index 0000000..984c239 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleIncome.cs @@ -0,0 +1,70 @@ +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 ProjectFamilyBudget.Entities; +using ProjectFamilyBudget.Repositories; + +namespace ProjectFamilyBudget.Forms +{ + public partial class FormPeopleIncome : Form + { + private readonly IPeopleIncome _peopleIncome; + public FormPeopleIncome(IPeopleIncome peopleIncome, IPeople people, IIncome income) + { + InitializeComponent(); + _peopleIncome = peopleIncome ?? + throw new ArgumentNullException(nameof(peopleIncome)); + comboBoxPeople.DataSource = people.ReadPeople(); + comboBoxPeople.DisplayMember = "Name"; + comboBoxPeople.ValueMember = "Id"; + + ColumnIncome.DataSource = income.ReadIncome(); + ColumnIncome.DisplayMember = "Name"; + ColumnIncome.ValueMember = "Id"; + } + + private void buttonSave_Click(object sender, EventArgs e) + { + try + { + if ((dataGridView.RowCount < 1) + || + (comboBoxPeople.SelectedIndex < 0)) + { + throw new Exception("Имеются незаполненные поля"); + } + _peopleIncome.CreatePeopleIncome(PeopleIncome.CreateOperation(0, (int)comboBoxPeople.SelectedValue!, + CreateListPeopleIncomeFromDataGrid())); + Close(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при сохранении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void buttonCansel_Click(object sender, EventArgs e) => Close(); + private List CreateListPeopleIncomeFromDataGrid() + { + var list = new List(); + foreach (DataGridViewRow row in dataGridView.Rows) + { + if (row.Cells["ColumnIncome"].Value == null || row.Cells["ColumnSum"].Value == null) + { + continue; + } + list.Add(IncomePeopleIncome.CreateElement(0, Convert.ToInt32(row.Cells["ColumnIncome"].Value) + , Convert.ToInt32(row.Cells["ColumnSum"].Value))); + } + return list; + + } + } +} diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleIncome.resx b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleIncome.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleIncome.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/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleIncomes.Designer.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleIncomes.Designer.cs new file mode 100644 index 0000000..cfdbb9c --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleIncomes.Designer.cs @@ -0,0 +1,112 @@ +namespace ProjectFamilyBudget.Forms +{ + partial class FormPeopleIncomes + { + /// + /// 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() + { + panel = new Panel(); + buttonCansel = new Button(); + buttonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel + // + panel.Controls.Add(buttonCansel); + panel.Controls.Add(buttonAdd); + panel.Dock = DockStyle.Right; + panel.Location = new Point(621, 0); + panel.Name = "panel"; + panel.Size = new Size(179, 450); + panel.TabIndex = 3; + // + // buttonCansel + // + buttonCansel.BackgroundImage = Properties.Resources.minus; + buttonCansel.BackgroundImageLayout = ImageLayout.Zoom; + buttonCansel.Location = new Point(36, 143); + buttonCansel.Name = "buttonCansel"; + buttonCansel.Size = new Size(103, 56); + buttonCansel.TabIndex = 3; + buttonCansel.UseVisualStyleBackColor = true; + buttonCansel.Click += buttonCansel_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.plus; + buttonAdd.BackgroundImageLayout = ImageLayout.Zoom; + buttonAdd.Location = new Point(36, 32); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(103, 56); + buttonAdd.TabIndex = 1; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += buttonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.SelectionMode = DataGridViewSelectionMode.FullRowSelect; + dataGridViewData.Size = new Size(621, 450); + dataGridViewData.TabIndex = 5; + // + // FormPeopleIncomes + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(dataGridViewData); + Controls.Add(panel); + Name = "FormPeopleIncomes"; + StartPosition = FormStartPosition.CenterParent; + Text = "Список добавленных доходов"; + Load += FormPeopleIncomes_Load; + panel.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel; + private Button buttonCansel; + private Button buttonAdd; + private DataGridView dataGridViewData; + } +} \ No newline at end of file diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleIncomes.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleIncomes.cs new file mode 100644 index 0000000..7873d70 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleIncomes.cs @@ -0,0 +1,92 @@ +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 ProjectFamilyBudget.Repositories; +using Unity; + +namespace ProjectFamilyBudget.Forms +{ + public partial class FormPeopleIncomes : Form + { + private readonly IUnityContainer _container; + private readonly IPeopleIncome _peopleIncome; + public FormPeopleIncomes(IUnityContainer container, IPeopleIncome peopleIncome) + { + InitializeComponent(); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + _peopleIncome = peopleIncome ?? + throw new ArgumentNullException(nameof(peopleIncome)); + } + private void FormPeopleIncomes_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 buttonCansel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", + MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _peopleIncome.DeletPeopleIncome(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() => dataGridViewData.DataSource = _peopleIncome.ReadPeopleIncome; + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewData.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = + Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + return true; + } + + } +} diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleIncomes.resx b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleIncomes.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeopleIncomes.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/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeoples.Designer.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeoples.Designer.cs new file mode 100644 index 0000000..3276cac --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeoples.Designer.cs @@ -0,0 +1,132 @@ +namespace ProjectFamilyBudget.Forms +{ + partial class FormPeoples + { + /// + /// 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(); + buttonCansel = new Button(); + buttonEdit = new Button(); + buttonAdd = new Button(); + dataGridViewData = new DataGridView(); + panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).BeginInit(); + SuspendLayout(); + // + // panel1 + // + panel1.Controls.Add(buttonCansel); + panel1.Controls.Add(buttonEdit); + panel1.Controls.Add(buttonAdd); + panel1.Dock = DockStyle.Right; + panel1.Location = new Point(696, 0); + panel1.Margin = new Padding(3, 4, 3, 4); + panel1.Name = "panel1"; + panel1.Size = new Size(218, 600); + panel1.TabIndex = 0; + // + // buttonCansel + // + buttonCansel.BackgroundImage = Properties.Resources.minus; + buttonCansel.BackgroundImageLayout = ImageLayout.Zoom; + buttonCansel.Location = new Point(47, 333); + buttonCansel.Margin = new Padding(3, 4, 3, 4); + buttonCansel.Name = "buttonCansel"; + buttonCansel.Size = new Size(126, 85); + buttonCansel.TabIndex = 2; + buttonCansel.UseVisualStyleBackColor = true; + buttonCansel.Click += buttonCansel_Click; + // + // buttonEdit + // + buttonEdit.BackgroundImage = Properties.Resources.pen; + buttonEdit.BackgroundImageLayout = ImageLayout.Zoom; + buttonEdit.Location = new Point(47, 181); + buttonEdit.Margin = new Padding(3, 4, 3, 4); + buttonEdit.Name = "buttonEdit"; + buttonEdit.Size = new Size(126, 85); + buttonEdit.TabIndex = 1; + buttonEdit.UseVisualStyleBackColor = true; + buttonEdit.Click += buttonEdit_Click; + // + // buttonAdd + // + buttonAdd.BackgroundImage = Properties.Resources.plus; + buttonAdd.BackgroundImageLayout = ImageLayout.Zoom; + buttonAdd.Location = new Point(47, 40); + buttonAdd.Margin = new Padding(3, 4, 3, 4); + buttonAdd.Name = "buttonAdd"; + buttonAdd.Size = new Size(126, 85); + buttonAdd.TabIndex = 0; + buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += buttonAdd_Click; + // + // dataGridViewData + // + dataGridViewData.AllowUserToAddRows = false; + dataGridViewData.AllowUserToDeleteRows = false; + dataGridViewData.AllowUserToResizeColumns = false; + dataGridViewData.AllowUserToResizeRows = false; + dataGridViewData.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; + dataGridViewData.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridViewData.Dock = DockStyle.Fill; + dataGridViewData.Location = new Point(0, 0); + dataGridViewData.Margin = new Padding(3, 4, 3, 4); + dataGridViewData.MultiSelect = false; + dataGridViewData.Name = "dataGridViewData"; + dataGridViewData.ReadOnly = true; + dataGridViewData.RowHeadersVisible = false; + dataGridViewData.RowHeadersWidth = 51; + dataGridViewData.Size = new Size(696, 600); + dataGridViewData.TabIndex = 1; + // + // FormPeoples + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(914, 600); + Controls.Add(dataGridViewData); + Controls.Add(panel1); + Margin = new Padding(3, 4, 3, 4); + Name = "FormPeoples"; + StartPosition = FormStartPosition.CenterParent; + Text = "Люди"; + Load += FormPeoples_Load; + panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)dataGridViewData).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Panel panel1; + private DataGridView dataGridViewData; + private Button buttonCansel; + private Button buttonEdit; + private Button buttonAdd; + } +} \ No newline at end of file diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeoples.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeoples.cs new file mode 100644 index 0000000..cfd4a22 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeoples.cs @@ -0,0 +1,109 @@ +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 ProjectFamilyBudget.Repositories; +using Unity; + +namespace ProjectFamilyBudget.Forms +{ + public partial class FormPeoples : Form + { + private readonly IUnityContainer _container; + private readonly IPeople _people; + public FormPeoples(IUnityContainer container, IPeople people) + { + InitializeComponent(); + _container = container ?? + throw new ArgumentNullException(nameof(container)); + _people = people ?? + throw new ArgumentNullException(nameof(people)); + } + private void FormPeoples_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 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); + } + } + + private void buttonCansel_Click(object sender, EventArgs e) + { + if (!TryGetIdentifierFromSelectedRow(out var findId)) + { + return; + } + if (MessageBox.Show("Удалить запись?", "Удаление", + MessageBoxButtons.YesNo) != DialogResult.Yes) + { + return; + } + try + { + _people.DeletePeople(findId); + LoadList(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "Ошибка при удалении", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void LoadList() => dataGridViewData.DataSource = _people.ReadPeople; + private bool TryGetIdentifierFromSelectedRow(out int id) + { + id = 0; + if (dataGridViewData.SelectedRows.Count < 1) + { + MessageBox.Show("Нет выбранной записи", "Ошибка", + MessageBoxButtons.OK, MessageBoxIcon.Error); + return false; + } + id = + Convert.ToInt32(dataGridViewData.SelectedRows[0].Cells["Id"].Value); + return true; + } + } +} \ No newline at end of file diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeoples.resx b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeoples.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Forms/FormPeoples.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/ProjectFamilyBudget/ProjectFamilyBudget/Program.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Program.cs index ce6f805..37c17bb 100644 --- a/ProjectFamilyBudget/ProjectFamilyBudget/Program.cs +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Program.cs @@ -1,17 +1,34 @@ -namespace ProjectFamilyBudget +using Unity; +using Unity.Lifetime; // +using ProjectFamilyBudget.Repositories; // +using ProjectFamilyBudget.Repositories.Implementations; +using ProjectFamilyBudget; // + +internal static class Program { - internal static class Program + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() { - /// - /// The main entry point for the application. - /// - [STAThread] - static void Main() - { - // To customize application configuration such as set high DPI settings or default font, - // see https://aka.ms/applicationconfiguration. - ApplicationConfiguration.Initialize(); - Application.Run(new Form1()); - } + // To customize application configuration such as set high DPI settings or default font, + // see https://aka.ms/applicationconfiguration. + ApplicationConfiguration.Initialize(); + Application.Run(CreateContainer().Resolve()); + } -} \ No newline at end of file + + private static IUnityContainer CreateContainer() + { + var container = new UnityContainer(); + + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + container.RegisterType(new TransientLifetimeManager()); + + return container; + } +} diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/ProjectFamilyBudget.csproj b/ProjectFamilyBudget/ProjectFamilyBudget/ProjectFamilyBudget.csproj index 663fdb8..accbdf0 100644 --- a/ProjectFamilyBudget/ProjectFamilyBudget/ProjectFamilyBudget.csproj +++ b/ProjectFamilyBudget/ProjectFamilyBudget/ProjectFamilyBudget.csproj @@ -8,4 +8,23 @@ enable + + + + + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Properties/Resources.Designer.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Properties/Resources.Designer.cs new file mode 100644 index 0000000..253e082 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Properties/Resources.Designer.cs @@ -0,0 +1,143 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace ProjectFamilyBudget.Properties { + using System; + + + /// + /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д. + /// + // Этот класс создан автоматически классом StronglyTypedResourceBuilder + // с помощью такого средства, как ResGen или Visual Studio. + // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen + // с параметром /str или перестройте свой проект VS. + [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() { + } + + /// + /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом. + /// + [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("ProjectFamilyBudget.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Перезаписывает свойство CurrentUICulture текущего потока для всех + /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap _4671639 { + get { + object obj = ResourceManager.GetObject("4671639", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap minus { + get { + object obj = ResourceManager.GetObject("minus", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap minus1 { + get { + object obj = ResourceManager.GetObject("minus1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap pen { + get { + object obj = ResourceManager.GetObject("pen", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap pen1 { + get { + object obj = ResourceManager.GetObject("pen1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap plus { + get { + object obj = ResourceManager.GetObject("plus", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap plus1 { + get { + object obj = ResourceManager.GetObject("plus1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap plus2 { + get { + object obj = ResourceManager.GetObject("plus2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Properties/Resources.resx b/ProjectFamilyBudget/ProjectFamilyBudget/Properties/Resources.resx new file mode 100644 index 0000000..0b735ef --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Properties/Resources.resx @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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\minus.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\plus.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\minus.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\pen.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\pen.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\plus.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\plus.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\4671639.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\pen.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/IExpense.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/IExpense.cs new file mode 100644 index 0000000..382733a --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/IExpense.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ProjectFamilyBudget.Entities; + +namespace ProjectFamilyBudget.Repositories; + +public interface IExpense +{ + IEnumerable ReadExpense(); + Expense ReadExpenseById(int id); + void CreateExpense(Expense expense); + void UpdateExpense(Expense expense); + void DeleteExpense(int id); +} + diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/IIncome.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/IIncome.cs new file mode 100644 index 0000000..dd79ca7 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/IIncome.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ProjectFamilyBudget.Entities; + +namespace ProjectFamilyBudget.Repositories; + +public interface IIncome +{ + IEnumerable ReadIncome(); + Income ReadIncomeById(int id); + void CreateIncome(Income income); + void UpdateIncome(Income income); + void DeleteIncome(int id); +} + diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/IPeople.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/IPeople.cs new file mode 100644 index 0000000..7715bfa --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/IPeople.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ProjectFamilyBudget.Entities; + +namespace ProjectFamilyBudget.Repositories; + +public interface IPeople +{ + IEnumerable ReadPeople(); + People ReadPeopleById(int id); + void CreatePeople(People people); + void UpdatePeople(People people); + void DeletePeople(int id); +} + diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/IPeopleExpense.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/IPeopleExpense.cs new file mode 100644 index 0000000..1d9885e --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/IPeopleExpense.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ProjectFamilyBudget.Entities; + +namespace ProjectFamilyBudget.Repositories; + +public interface IPeopleExpense +{ + IEnumerable ReadPeopleExpense(DateTime? dateForm = null, DateTime? dateTo = null, int? peopleId = null, int? expenseId = null); + void CreatePeopleExpense(PeopleExpense peopleExpense); + void DeletPeopleExpense(int id); +} diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/IPeopleIncome.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/IPeopleIncome.cs new file mode 100644 index 0000000..f37d28f --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/IPeopleIncome.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ProjectFamilyBudget.Entities; + +namespace ProjectFamilyBudget.Repositories; + +public interface IPeopleIncome +{ + IEnumerable ReadPeopleIncome(DateTime? dateForm = null, DateTime? dateTo = null, int? peopleId = null, int? incomeId = null); + void CreatePeopleIncome(PeopleIncome peopleIncome); + void DeletPeopleIncome(int id); +} diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/Implementations/ExpenseRepository.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/Implementations/ExpenseRepository.cs new file mode 100644 index 0000000..4f7a7d4 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/Implementations/ExpenseRepository.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ProjectFamilyBudget.Entities.Enums; +using ProjectFamilyBudget.Entities; + +namespace ProjectFamilyBudget.Repositories.Implementations; + +public class ExpenseRepository : IExpense +{ + public void CreateExpense(Expense expense) + { + + } + + public void DeleteExpense(int id) + { + + } + + public IEnumerable ReadExpense() + { + return []; + } + + public Expense ReadExpenseById(int id) + { + return Expense.CreateEntity(0, IncomeExpenseType.None, string.Empty, string.Empty); + } + + public void UpdateExpense(Expense expense) + { + + } +} diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/Implementations/IncomeRepository.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/Implementations/IncomeRepository.cs new file mode 100644 index 0000000..72dd9e3 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/Implementations/IncomeRepository.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ProjectFamilyBudget.Entities.Enums; +using ProjectFamilyBudget.Entities; + +namespace ProjectFamilyBudget.Repositories.Implementations; + +public class IncomeRepository : IIncome +{ + public void CreateIncome(Income income) + { + + } + + public void DeleteIncome(int id) + { + + } + + public IEnumerable ReadIncome() + { + return []; + } + + public Income ReadIncomeById(int id) + { + return Income.CreateEntity(0, IncomeExpenseType.None, string.Empty, string.Empty); + } + + public void UpdateIncome(Income income) + { + throw new NotImplementedException(); + } +} \ No newline at end of file diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/Implementations/PeopleExpenseRepository.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/Implementations/PeopleExpenseRepository.cs new file mode 100644 index 0000000..f847402 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/Implementations/PeopleExpenseRepository.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ProjectFamilyBudget.Entities; + +namespace ProjectFamilyBudget.Repositories.Implementations; + +public class PeopleExpenseRepository : IPeopleExpense +{ + public IEnumerable ReadPeopleExpense(DateTime? dateForm = null, DateTime? dateTo = null, int? peopleId = null, int? expenseId = null) + { + return []; + } + + public void CreatePeopleExpense(PeopleExpense peopleExpense) + { + + } + + public void DeletPeopleExpense(int id) + { + + } +} diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/Implementations/PeopleIncomeRepository.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/Implementations/PeopleIncomeRepository.cs new file mode 100644 index 0000000..92c68e8 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/Implementations/PeopleIncomeRepository.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ProjectFamilyBudget.Entities; + +namespace ProjectFamilyBudget.Repositories.Implementations; + +public class PeopleIncomeRepository : IPeopleIncome +{ + public IEnumerable ReadPeopleIncome(DateTime? dateForm = null, DateTime? dateTo = null, int? peopleId = null, int? incomeId = null) + { + return []; + } + public void CreatePeopleIncome(PeopleIncome peopleIncome) + { + + } + + + public void DeletPeopleIncome(int id) + { + + } + + +} + diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/Implementations/PeopleRepository.cs b/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/Implementations/PeopleRepository.cs new file mode 100644 index 0000000..31105a6 --- /dev/null +++ b/ProjectFamilyBudget/ProjectFamilyBudget/Repositories/Implementations/PeopleRepository.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ProjectFamilyBudget.Entities.Enums; +using ProjectFamilyBudget.Entities; + +namespace ProjectFamilyBudget.Repositories.Implementations; + +public class PeopleRepository : IPeople +{ + public void CreatePeople(People people) + { + + } + + public void DeletePeople(int id) + { + + } + + public People ReadPeopleById(int id) + { + return People.CreateEntity(0, string.Empty, string.Empty, 0, FamilyMemberType.None); + } + + public IEnumerable ReadPeople() + { + return []; + } + + public void UpdatePeople(People people) + { + + } +} + diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Resources/4671639.jpg b/ProjectFamilyBudget/ProjectFamilyBudget/Resources/4671639.jpg new file mode 100644 index 0000000..2a82276 Binary files /dev/null and b/ProjectFamilyBudget/ProjectFamilyBudget/Resources/4671639.jpg differ diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Resources/minus.png b/ProjectFamilyBudget/ProjectFamilyBudget/Resources/minus.png new file mode 100644 index 0000000..4c82dcf Binary files /dev/null and b/ProjectFamilyBudget/ProjectFamilyBudget/Resources/minus.png differ diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Resources/pen.jpg b/ProjectFamilyBudget/ProjectFamilyBudget/Resources/pen.jpg new file mode 100644 index 0000000..6c61908 Binary files /dev/null and b/ProjectFamilyBudget/ProjectFamilyBudget/Resources/pen.jpg differ diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Resources/pen.png b/ProjectFamilyBudget/ProjectFamilyBudget/Resources/pen.png new file mode 100644 index 0000000..2beecff Binary files /dev/null and b/ProjectFamilyBudget/ProjectFamilyBudget/Resources/pen.png differ diff --git a/ProjectFamilyBudget/ProjectFamilyBudget/Resources/plus.png b/ProjectFamilyBudget/ProjectFamilyBudget/Resources/plus.png new file mode 100644 index 0000000..cafef78 Binary files /dev/null and b/ProjectFamilyBudget/ProjectFamilyBudget/Resources/plus.png differ