| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294 |
- using System;
- using System.Data;
- using System.Windows.Forms;
- using Npgsql;
- namespace PhotoStudioApp
- {
- public partial class MainForm : Form
- {
- private int _userId;
- private string _role;
- private string _login;
- private string _connectionString;
- public MainForm(int userId, string role, string login, string connectionString)
- {
- InitializeComponent();
- _userId = userId;
- _role = role;
- _login = login;
- _connectionString = connectionString;
- // Настройка доступных кнопок в зависимости от роли
- if (_role == "client")
- {
- btnAdd.Enabled = false;
- btnDelete.Enabled = false;
- btnEdit.Enabled = false;
- btnServices.Enabled = false;
- btnClients.Enabled = false;
- }
- LoadOrders();
- }
- private void LoadOrders()
- {
- using (NpgsqlConnection conn = new NpgsqlConnection(_connectionString))
- {
- conn.Open();
- string sql;
- if (_role == "admin")
- {
- sql = "select * from v_orders_with_total order by order_date desc";
- }
- else
- {
- sql = @"
- select
- o.order_id,
- s.service_name,
- o.order_date,
- s.price as total_amount
- from orders o
- join services s on o.service_id = s.service_id
- join clients c on o.client_id = c.client_id
- join users u on c.user_id = u.user_id
- where u.login = @login";
- }
- NpgsqlCommand cmd = new NpgsqlCommand(sql, conn);
- if (_role != "admin")
- {
- cmd.Parameters.AddWithValue("@login", _login);
- }
- NpgsqlDataAdapter adapter = new NpgsqlDataAdapter(cmd);
- DataTable dt = new DataTable();
- adapter.Fill(dt);
- // Скрываем столбцы с ID из отображения
- if (dt.Columns.Contains("client_id")) dt.Columns.Remove("client_id");
- if (dt.Columns.Contains("employee_id")) dt.Columns.Remove("employee_id");
- if (dt.Columns.Contains("service_id")) dt.Columns.Remove("service_id");
- dgvOrders.DataSource = dt;
- if (dgvOrders.Columns.Contains("order_id"))
- {
- dgvOrders.Columns["order_id"].Visible = false;
- }
- }
- }
- private void btnAdd_Click(object sender, EventArgs e)
- {
- if (_role == "client")
- {
- MessageBox.Show("Клиент не может добавлять заказы.");
- return;
- }
- OrderForm orderForm = new OrderForm(_connectionString);
- orderForm.ShowDialog();
- LoadOrders();
- }
- private void btnEdit_Click(object sender, EventArgs e)
- {
- if (_role == "client")
- {
- MessageBox.Show("Клиент не может редактировать заказы.");
- return;
- }
- if (dgvOrders.SelectedRows.Count > 0)
- {
- DataRowView rowView = dgvOrders.SelectedRows[0].DataBoundItem as DataRowView;
- if (rowView != null)
- {
- int orderId = (int)rowView["order_id"];
- OrderForm orderForm = new OrderForm(_connectionString, orderId);
- orderForm.ShowDialog();
- LoadOrders();
- }
- }
- else
- {
- MessageBox.Show("Выберите заказ для редактирования");
- }
- }
- private void btnDelete_Click(object sender, EventArgs e)
- {
- if (_role == "client")
- {
- MessageBox.Show("Клиент не может удалять заказы.");
- return;
- }
- if (dgvOrders.SelectedRows.Count > 0)
- {
- DataRowView rowView = dgvOrders.SelectedRows[0].DataBoundItem as DataRowView;
- if (rowView != null)
- {
- int orderId = (int)rowView["order_id"];
- if (MessageBox.Show("Удалить заказ?", "Подтверждение", MessageBoxButtons.YesNo) == DialogResult.Yes)
- {
- using (NpgsqlConnection conn = new NpgsqlConnection(_connectionString))
- {
- conn.Open();
- string sql = "delete from orders where order_id = @orderId";
- NpgsqlCommand cmd = new NpgsqlCommand(sql, conn);
- cmd.Parameters.AddWithValue("@orderId", orderId);
- cmd.ExecuteNonQuery();
- MessageBox.Show("Заказ удалён");
- LoadOrders();
- }
- }
- }
- }
- else
- {
- MessageBox.Show("Выберите заказ для удаления");
- }
- }
- private void btnSearch_Click(object sender, EventArgs e)
- {
- string serviceName = Microsoft.VisualBasic.Interaction.InputBox("Введите название услуги", "Поиск", "wedding");
- if (!string.IsNullOrEmpty(serviceName))
- {
- using (NpgsqlConnection conn = new NpgsqlConnection(_connectionString))
- {
- conn.Open();
- string sql;
- if (_role == "admin")
- {
- sql = "select * from get_orders_by_service_today(@serviceName)";
- }
- else
- {
- sql = @"
- select
- o.order_id,
- s.service_name,
- o.order_date,
- s.price as total_amount
- from orders o
- join services s on o.service_id = s.service_id
- join clients c on o.client_id = c.client_id
- join users u on c.user_id = u.user_id
- where s.service_name = @serviceName
- and u.login = @login";
- }
- NpgsqlCommand cmd = new NpgsqlCommand(sql, conn);
- cmd.Parameters.AddWithValue("@serviceName", serviceName);
- if (_role != "admin")
- {
- cmd.Parameters.AddWithValue("@login", _login);
- }
- NpgsqlDataAdapter adapter = new NpgsqlDataAdapter(cmd);
- DataTable dt = new DataTable();
- adapter.Fill(dt);
- // Скрываем столбцы с ID
- if (dt.Columns.Contains("client_id")) dt.Columns.Remove("client_id");
- if (dt.Columns.Contains("employee_id")) dt.Columns.Remove("employee_id");
- if (dt.Columns.Contains("service_id")) dt.Columns.Remove("service_id");
- dgvOrders.DataSource = dt;
- if (dgvOrders.Columns.Contains("order_id"))
- {
- dgvOrders.Columns["order_id"].Visible = false;
- }
- }
- }
- }
- private void btnReport_Click(object sender, EventArgs e)
- {
- DateTime start = DateTime.Now.AddDays(-30);
- DateTime end = DateTime.Now;
- using (NpgsqlConnection conn = new NpgsqlConnection(_connectionString))
- {
- conn.Open();
- string sql;
- if (_role == "admin")
- {
- sql = "select * from v_orders_with_total where order_date between @start and @end";
- }
- else
- {
- sql = @"
- select
- o.order_id,
- s.service_name,
- o.order_date,
- s.price as total_amount
- from orders o
- join services s on o.service_id = s.service_id
- join clients c on o.client_id = c.client_id
- join users u on c.user_id = u.user_id
- where o.order_date between @start and @end
- and u.login = @login";
- }
- NpgsqlCommand cmd = new NpgsqlCommand(sql, conn);
- cmd.Parameters.AddWithValue("@start", start);
- cmd.Parameters.AddWithValue("@end", end);
- if (_role != "admin")
- {
- cmd.Parameters.AddWithValue("@login", _login);
- }
- NpgsqlDataAdapter adapter = new NpgsqlDataAdapter(cmd);
- DataTable dt = new DataTable();
- adapter.Fill(dt);
- // Скрываем столбцы с ID
- if (dt.Columns.Contains("client_id")) dt.Columns.Remove("client_id");
- if (dt.Columns.Contains("employee_id")) dt.Columns.Remove("employee_id");
- if (dt.Columns.Contains("service_id")) dt.Columns.Remove("service_id");
- dgvOrders.DataSource = dt;
- if (dgvOrders.Columns.Contains("order_id"))
- {
- dgvOrders.Columns["order_id"].Visible = false;
- }
- }
- }
- private void btnServices_Click(object sender, EventArgs e)
- {
- if (_role == "client")
- {
- MessageBox.Show("Клиент не может управлять услугами.");
- return;
- }
- ServiceForm serviceForm = new ServiceForm(_connectionString);
- serviceForm.ShowDialog();
- }
- private void btnClients_Click(object sender, EventArgs e)
- {
- if (_role == "client")
- {
- MessageBox.Show("Клиент не может управлять клиентами.");
- return;
- }
- ClientForm clientForm = new ClientForm(_connectionString);
- clientForm.ShowDialog();
- }
- private void btnLogout_Click(object sender, EventArgs e)
- {
- this.Close();
- LoginForm loginForm = new LoginForm();
- loginForm.Show();
- }
- }
- }
|