-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSaleForm.cs
143 lines (141 loc) · 5.96 KB
/
SaleForm.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
using JewelryStore.Data;
using JewelryStore.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Entity;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace JewelryStore.Forms
{
/// <summary>
/// Форма продаж
/// </summary>
public partial class SaleForm : Form
{
Sale sale = new Sale();
EditMode EditMode;
List<Production> Productions = new List<Production>();
public SaleForm()
{
InitializeComponent();
EditMode = EditMode.Create;
mainBtn.Text = "Добавить";
var context = new ApplicationDbContext();
//TODO получение уникальных имен из таблицы продаж
var byers = context.Sales.Select(x => x.BuyerFullName).Distinct().ToArray();
BuyerFullName.AutoCompleteMode = AutoCompleteMode.Suggest;
BuyerFullName.AutoCompleteSource = AutoCompleteSource.CustomSource;
AutoCompleteStringCollection DataCollection = new AutoCompleteStringCollection();
DataCollection.AddRange(byers);
BuyerFullName.AutoCompleteCustomSource = DataCollection;
//TODO получение всех записей с включением материалов
Productions = context.Productions.Include(x=>x.MaterialCosts.Select(u=>u.Material)).ToList();
Production.Items.Clear();
Production.Items.AddRange(Productions.ToArray());
Production.DisplayMember = "Name";
Production.ValueMember = "Id";
Production.SelectedIndex = 0;
}
public SaleForm(int id,EditMode editMode)
{
InitializeComponent();
var context = new ApplicationDbContext();
//TODO ппоиск продажи по ключу с сключением материалов
sale = context.Sales.Include(x => x.Production.MaterialCosts.Select(u => u.Material)).SingleOrDefault(x => x.Id == id);
BuyerFullName.Text = sale.BuyerFullName;
SaleDate.Value = sale.SaleDate;
Discount.Value = sale.Discount;
EditMode = editMode;
if (editMode == EditMode.View)
{
mainBtn.Text = "Ок";
SaleDate.Enabled = Production.Enabled= false;
}
else
{
mainBtn.Text = "Сохранить";
}
BuyerFullName.Enabled = false;
//TODO получение всех записей с включением материалов
Productions = context.Productions.Include(x => x.MaterialCosts.Select(u => u.Material)).ToList();
Production.Items.Clear();
Production.Items.AddRange(Productions.ToArray());
Production.DisplayMember = "Name";
Production.ValueMember = "Id";
Production.SelectedItem = sale.Production;
}
/// <summary>
/// Функция для сохрания или обновления записи в базе данных
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void mainBtn_Click(object sender, EventArgs e)
{
var context = new ApplicationDbContext();
var item = (Production)Production.SelectedItem;
switch (EditMode)
{
case EditMode.Create:
sale.BuyerFullName = BuyerFullName.Text;
sale.SaleDate = SaleDate.Value;
sale.ProductionId = item.Id;
sale.Discount = Discount.Value;
//TODO добавление продажи
context.Sales.Add(sale);
break;
case EditMode.Edit:
//TODO получение продажи по ключу для обновления записи
sale = context.Sales.FirstOrDefault(x => x.Id == sale.Id);
sale.BuyerFullName = BuyerFullName.Text;
sale.SaleDate = SaleDate.Value;
sale.ProductionId = item.Id;
sale.Discount = Discount.Value;
break;
}
context.SaveChanges();
}
/// <summary>
/// Изменение имени в поле ввода
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void BuyerFullName_TextChanged(object sender, EventArgs e)
{
if (EditMode != EditMode.Create)
return;
try
{
var context = new ApplicationDbContext();
var Buyer = BuyerFullName.Text;
//TODO поиск продажи по имени покупателя
var count = context.Sales.Where(x => x.BuyerFullName == Buyer).Count();
if (count >= 3)
Discount.Value = 10;
else
Discount.Value = 0;
var item = (Production)Production.SelectedItem;
Cost.Value = item.Cost;
Total.Value = item.Cost - item.Cost * (Discount.Value/100);
}catch(Exception ex) { }
}
/// <summary>
/// Изменение продукции в выподающем меню
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Production_SelectedValueChanged(object sender, EventArgs e)
{
try
{
var item = (Production)Production.SelectedItem;
Cost.Value = item.Cost;
Total.Value = item.Cost - item.Cost * (Discount.Value/100);
}catch(Exception ex) { }
}
}
}