private void reportItem_Click(object sender, EventArgs e) { if (saveFileDialog.ShowDialog() == DialogResult.OK) { DocX document = DocX.Create(saveFileDialog.FileName); Paragraph paragraph = document.InsertParagraph(); paragraph.FontSize(14); paragraph.Append(DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss")); paragraph.AppendLine("Отчет за месяц").Alignment = Alignment.center; Paragraph content = document.InsertParagraph(); using (MySqlApplicationContext db = new MySqlApplicationContext()) { content.Append("Количество выполненных проектов:"); foreach (ProjectType item in db.ProjectTypes.Include(item => item.Projects) .ThenInclude(item => item.ProjectStatus).ToList()) { content.AppendLine(item.Name + ": " + item.Projects.Count(project => project.ProjectStatus.Name == "Готово" && project.FinishDate.Month == DateTime.Now.Month)); } content.AppendLine("Заработано денег: " + db.Projects.Include(item => item.ProjectType) .Include(item => item.ProjectStatus) .Where(item => item.FinishDate.Month == DateTime.Now.Month && item.ProjectStatus.Name == "Готово") .Sum(item => item.ProjectType.Price)); } document.Save(); } }
private void dataGridView_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Delete) { using (MySqlApplicationContext db = new MySqlApplicationContext()) { foreach (DataGridViewRow item in dataGridView.SelectedRows) { switch (tabControl.SelectedIndex) { case 0: db.Projects.Remove(_projectList.Find(search => search.Id == int.Parse(item.Cells[0].Value.ToString()))); break; case 1: db.Employees.Remove(_employeeList.Find(search => search.Id == int.Parse(item.Cells[0].Value.ToString()))); break; case 2: db.Customers.Remove(_customerList.Find(search => search.Id == int.Parse(item.Cells[0].Value.ToString()))); break; } dataGridView.Rows.Remove(item); } db.SaveChanges(); UpdateData(); } } }
public void UpdateData() { using (MySqlApplicationContext db = new MySqlApplicationContext()) { projectType.Items.Clear(); employeePosition.Items.Clear(); employeeTeam.Items.Clear(); projectTeam.Items.Clear(); projectCustomer.Items.Clear(); projectStatus.Items.Clear(); projectType.Items.Add(""); employeePosition.Items.Add(""); employeeTeam.Items.Add(""); projectTeam.Items.Add(""); projectCustomer.Items.Add(""); projectStatus.Items.Add(""); foreach (ProjectType item in db.ProjectTypes) { projectType.Items.Add(item.Name); } foreach (Position item in db.Positions) { employeePosition.Items.Add(item.Name); } foreach (Team item in db.Teams) { employeeTeam.Items.Add(item.Name); projectTeam.Items.Add(item.Name); } foreach (Customer item in db.Customers) { projectCustomer.Items.Add(item.FirstName + " " + item.LastName); } foreach (ProjectStatus item in db.ProjectStatuses) { projectStatus.Items.Add(item.Name); } _projectList = db.Projects.ToList(); _employeeList = db.Employees.ToList(); _customerList = db.Customers.Include(item => item.Projects).ToList(); } }
private void PriceForm_Load(object sender, EventArgs e) { using (MySqlApplicationContext db = new MySqlApplicationContext()) { dataGridView.ColumnCount = 4; dataGridView.Columns[0].Name = "ID"; dataGridView.Columns[1].Name = "Название"; dataGridView.Columns[2].Name = "Цена"; dataGridView.Columns[3].Name = "Срок выполнения(в месяцах)"; foreach (ProjectType item in db.ProjectTypes) { dataGridView.Rows.Add( item.Id, item.Name, item.Price, item.Term ); } } }
private void EditButton(object sender, EventArgs e) { using (MySqlApplicationContext db = new MySqlApplicationContext()) { switch (createTypeComboBox.SelectedIndex) { case 0: if (!Validate(0)) { return; } Project project = db.Projects.First(item => item.Id == _id); project.Team = _teams[projectTeamComboBox.SelectedIndex]; project.ProjectStatus = _projectStatuses[projectStatusComboBox.SelectedIndex]; project.ProjectType = _projectTypes[projectTypeComboBox.SelectedIndex]; project.Customer = _customers[projectCustomerComboBox.SelectedIndex]; project.OrderDate = projectOrderDatePicker.Value; project.FinishDate = project.OrderDate.AddMonths(_projectTypes[projectTypeComboBox.SelectedIndex].Term); db.SaveChanges(); project = db.Projects .Include(item => item.Team) .ThenInclude(item => item.Employees) .Include(item => item.ProjectStatus) .Include(item => item.ProjectType) .Include(item => item.Customer) .ThenInclude(item => item.Projects) .First(item => item.Id == project.Id); ReturnValues = new object[] { project.Id, project.Team.Name, project.OrderDate.ToString("dd.MM.yyyy"), project.FinishDate.ToString("dd.MM.yyyy"), project.ProjectStatus.Name, project.ProjectType.Name, project.Customer.FirstName + " " + project.Customer.LastName, project.Team.Employees.Count + project.Customer.Projects.Count + project.ProjectType.Price }; break; case 1: if (!Validate(1)) { return; } Employee employee = db.Employees.First(item => item.Id == _id); employee.Team = _teams[employeeTeamComboBox.SelectedIndex]; employee.Position = _positions[employeePositionComboBox.SelectedIndex]; employee.FirstName = employeeFirstNameTextBox.Text; employee.LastName = employeeLastNameTextBox.Text; employee.BirthDate = employeeBirthDatePicker.Value; employee.HomeAddress = employeeHomeAddressTextBox.Text; employee.Phone = employeePhoneTextBox.Text; ReturnValues = new object[] { employee.Id, employee.Team.Name, employee.Position.Name, employee.FirstName + " " + employee.LastName, employee.BirthDate.ToString("dd.MM.yyyy"), employee.HomeAddress, employee.Phone, employee.ApplyDate.ToString("dd.MM.yyyy"), (DateTime.Today - employee.ApplyDate).Days }; break; case 2: if (!Validate(2)) { return; } Customer customer = db.Customers.First(item => item.Id == _id); customer.FirstName = customerFirstNameTextBox.Text; customer.LastName = customerLastNameTextBox.Text; customer.Email = customerEmailTextBox.Text; customer.Phone = customerPhoneTextBox.Text; db.SaveChanges(); customer = db.Customers .Include(item => item.Projects) .First(item => item.Id == customer.Id); ReturnValues = new object[] { customer.Id, customer.FirstName + " " + customer.LastName, customer.Email, customer.Phone, customer.Projects.Count }; break; } db.SaveChanges(); } Close(); }
public AddForm(Point position, bool edit = false, int editIndex = 0, object element = null) { InitializeComponent(); _formPosition = position; using (MySqlApplicationContext db = new MySqlApplicationContext()) { foreach (Team item in db.Teams) { projectTeamComboBox.Items.Add(item.Name); employeeTeamComboBox.Items.Add(item.Name); } foreach (ProjectStatus item in db.ProjectStatuses) { projectStatusComboBox.Items.Add(item.Name); } foreach (ProjectType item in db.ProjectTypes) { projectTypeComboBox.Items.Add(item.Name); } foreach (Customer item in db.Customers) { projectCustomerComboBox.Items.Add(item.FirstName + " " + item.LastName); } foreach (Position item in db.Positions) { employeePositionComboBox.Items.Add(item.Name); } _teams = db.Teams.ToList(); _customers = db.Customers.ToList(); _projectStatuses = db.ProjectStatuses.ToList(); _projectTypes = db.ProjectTypes.ToList(); _positions = db.Positions.ToList(); } if (edit) { createButton.Text = @"Изменить"; createButton.Click += EditButton; Text = @"Изменить"; createTypeComboBox.SelectedIndex = editIndex; createTypeComboBox.Enabled = false; switch (editIndex) { case 0: if (element is Project project) { _id = project.Id; projectTeamComboBox.SelectedItem = project.Team.Name; projectOrderDatePicker.Value = project.OrderDate; projectStatusComboBox.SelectedItem = project.ProjectStatus.Name; projectTypeComboBox.SelectedItem = project.ProjectType.Name; projectCustomerComboBox.SelectedItem = project.Customer.FirstName + " " + project.Customer.LastName; } break; case 1: if (element is Employee employee) { _id = employee.Id; employeeTeamComboBox.SelectedItem = employee.Team.Name; employeePositionComboBox.SelectedItem = employee.Position.Name; employeeFirstNameTextBox.Text = employee.FirstName; employeeLastNameTextBox.Text = employee.LastName; employeeBirthDatePicker.Value = employee.BirthDate; employeeHomeAddressTextBox.Text = employee.HomeAddress; employeePhoneTextBox.Text = employee.Phone; } break; case 2: if (element is Customer customer) { _id = customer.Id; customerFirstNameTextBox.Text = customer.FirstName; customerLastNameTextBox.Text = customer.LastName; customerEmailTextBox.Text = customer.Email; customerPhoneTextBox.Text = customer.Phone; } break; } } else { createButton.Text = @"Добавить"; createButton.Click += AddButton; Text = @"Добавить"; createTypeComboBox.SelectedIndex = 0; } }
static void Main() { Console.Write("Инициализация базы данных... "); using (MySqlApplicationContext db = new MySqlApplicationContext()) { Console.Write("OK\nУдаление старых данных... "); db.Projects.RemoveRange(db.Projects); db.SaveChanges(); db.Customers.RemoveRange(db.Customers); db.SaveChanges(); db.Employees.RemoveRange(db.Employees); db.SaveChanges(); db.Teams.RemoveRange(db.Teams); db.SaveChanges(); db.Positions.RemoveRange(db.Positions); db.SaveChanges(); db.ProjectTypes.RemoveRange(db.ProjectTypes); db.SaveChanges(); db.ProjectStatuses.RemoveRange(db.ProjectStatuses); db.SaveChanges(); db.Database.ExecuteSqlRaw( "ALTER TABLE customers AUTO_INCREMENT = 1;" + "ALTER TABLE employees AUTO_INCREMENT = 1;" + "ALTER TABLE teams AUTO_INCREMENT = 1;" + "ALTER TABLE positions AUTO_INCREMENT = 1;" + "ALTER TABLE projecttypes AUTO_INCREMENT = 1;" + "ALTER TABLE projects AUTO_INCREMENT = 1;" + "ALTER TABLE projectstatuses AUTO_INCREMENT = 1;"); db.SaveChanges(); Console.Write("OK\nДобавление типов проектов... "); db.ProjectTypes.AddRange( new ProjectType() { Name = "Архитектура", Price = 1000, Term = 24 }, new ProjectType() { Name = "Дизайн интерьеров", Price = 100, Term = 1 }, new ProjectType() { Name = "Разработка концепции", Price = 50, Term = 1 }, new ProjectType() { Name = "Проектирование", Price = 100, Term = 12 }, new ProjectType() { Name = "Авторский надзор", Price = 100, Term = 1 }, new ProjectType() { Name = "Согласование в службах", Price = 50, Term = 1 } ); db.SaveChanges(); Console.Write("OK\nДобавление статусов проектов... "); db.ProjectStatuses.AddRange( new ProjectStatus() { Name = "Готово" }, new ProjectStatus() { Name = "Отменено" }, new ProjectStatus() { Name = "В процессе" }, new ProjectStatus() { Name = "Не начато" } ); db.SaveChanges(); Console.Write("OK\nДобавление должностей... "); db.Positions.AddRange( new Position() { Name = "Архитектор" }, new Position() { Name = "Директор" }, new Position() { Name = "Строитель" }, new Position() { Name = "Бухгалтер" }, new Position() { Name = "Представитель банка" } ); db.SaveChanges(); Console.Write("OK\nГенерация команд... "); for (int i = 0; i < 5; i++) { Faker faker = new Faker("ru"); db.Teams.Add(new Team() { Name = faker.Address.City() }); } db.SaveChanges(); Console.Write("OK\nГенерация сотрудников... "); for (int i = 0; i < 50; i++) { Faker faker = new Faker("ru"); db.Employees.Add(new Employee() { FirstName = faker.Person.FirstName, LastName = faker.Person.LastName, ApplyDate = faker.Date.Past(), BirthDate = faker.Date.Past(30, new DateTime(DateTime.Now.Year - 18, 1, 1)), HomeAddress = faker.Address.FullAddress(), Phone = faker.Phone.PhoneNumber(), PositionId = faker.Random.Number(1, db.Positions.Count()), TeamId = faker.Random.Number(1, db.Teams.Count()) }); } db.SaveChanges(); Console.Write("OK\nГенерация клиентов... "); for (int i = 0; i < 20; i++) { Faker faker = new Faker("ru"); db.Customers.Add(new Customer() { FirstName = faker.Person.FirstName, LastName = faker.Person.LastName, Email = faker.Person.Email, Phone = faker.Phone.PhoneNumber() }); } db.SaveChanges(); Console.Write("OK\nГенерация проектов... "); for (int i = 0; i < 100; i++) { Faker faker = new Faker("ru"); int teamId = faker.Random.Number(1, db.Teams.Count()); int projectTypeId = faker.Random.Number(1, db.ProjectTypes.Count()); DateTime orderDate = faker.Date.Past(1, new DateTime(DateTime.Now.Year, 1, 1)); db.Projects.Add(new Project() { CustomerId = faker.Random.Number(1, db.Customers.Count()), TeamId = teamId, OrderDate = orderDate, FinishDate = faker.Date.Future(1, orderDate.AddMonths(db.ProjectTypes.ToList()[projectTypeId - 1].Term)), ProjectStatusId = faker.Random.Number(1, db.ProjectStatuses.Count()), ProjectTypeId = projectTypeId }); } db.SaveChanges(); Console.Write("OK\nГенерация прошла успешно!"); Thread.Sleep(3000); } }