602 lines
24 KiB
C#
602 lines
24 KiB
C#
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 MySql.Data.MySqlClient;
|
||
using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
|
||
|
||
namespace NeshinaPolina2111
|
||
{
|
||
public partial class MainForm : Form
|
||
{
|
||
public enum ViewMode
|
||
{
|
||
Production,
|
||
Materials
|
||
}
|
||
|
||
private ViewMode currentMode = ViewMode.Production;
|
||
private int userRoleId; // 1=Работник, 2=Менеджер, 3=Партнёр //ЭТО НОВОЕ
|
||
private Authorization authForm;
|
||
private int partnerId;
|
||
private DataTable originalProductionData; // для продукции поиск+
|
||
private DataTable originalMaterialsData; // для материалов поиск +
|
||
public MainForm(int roleId, int partnerId, Authorization authForm)
|
||
{
|
||
InitializeComponent();
|
||
this.userRoleId = roleId;
|
||
this.authForm = authForm;
|
||
this.partnerId = partnerId;
|
||
ApplyRolePermissions();
|
||
UpdateControlVisibility();
|
||
продукцияToolStripMenuItem_Click(null, EventArgs.Empty);
|
||
SetupProductionFiltersAndSorts(); //КОМБОБОКСЫ
|
||
|
||
}
|
||
|
||
private void MainForm_FormClosing(object sender, FormClosingEventArgs e) //ЭТО ЧТОБ ПРИ ЗАКРЫТИИ АВТОРИЗАЦИЯ ВОЗВРАЩАЛАСЬ
|
||
{
|
||
e.Cancel = true;
|
||
this.Hide();
|
||
authForm.Show();
|
||
}
|
||
|
||
private void ApplyRolePermissions() //ЭТО ОБРАБОТЧИК КНОПОК ПОКАЗА
|
||
{
|
||
|
||
btnAdd.Visible = true;
|
||
btnEdit.Visible = true;
|
||
btnDelete.Visible = true;
|
||
|
||
|
||
switch (userRoleId)
|
||
{
|
||
case 1: //РАБОТНИК НИЧЕ НЕ МОЖЕТ ДЕЛАТЬ
|
||
btnAdd.Visible = false;
|
||
btnEdit.Visible = false;
|
||
btnDelete.Visible = false;
|
||
btnMyDiscounts.Visible = false;
|
||
btnCalculator.Visible = false;
|
||
txtSearch.Visible = false;
|
||
label4.Visible = false;
|
||
//cmbFilter.Visible = false;
|
||
//cmbSort.Visible = false;
|
||
//label5.Visible = false;
|
||
//label6.Visible = false;
|
||
//txtSearch.Visible = false;
|
||
this.Text = "Главная форма — Работник";
|
||
break;
|
||
|
||
case 2: //МЕНЕДЖЕР МОЖЕТ ВСЁ ДЕЛАТЬ С ИНФОЙ, НО НЕ РАСЧЁТ СКИДОК
|
||
btnMyDiscounts.Visible = false;
|
||
this.Text = "Главная форма — Менеджер";
|
||
break;
|
||
|
||
case 3: //ПАРТНЁР МОЖЕТ ТОЛЬКО СКИДКУ ДЕЛАТЬ
|
||
btnAdd.Visible = false;
|
||
btnEdit.Visible = false;
|
||
btnDelete.Visible = false;
|
||
btnMyDiscounts.Visible = true;
|
||
btnCalculator.Visible = false;
|
||
txtSearch.Visible = false;
|
||
label4.Visible = false;
|
||
//cmbFilter.Visible = false;
|
||
//cmbSort.Visible = false;
|
||
//label5.Visible = false;
|
||
//label6.Visible = false;
|
||
//txtSearch.Visible = false;
|
||
this.Text = "Главная форма — Партнёр";
|
||
break;
|
||
|
||
case 4: //ВСЁ МОЖНО РАЗРАБУ
|
||
this.Text = "Главная форма — Разработчик";
|
||
break;
|
||
|
||
default:
|
||
MessageBox.Show("Неизвестная роль. Доступ ограничен.");
|
||
btnAdd.Visible = false;
|
||
btnEdit.Visible = false;
|
||
btnDelete.Visible = false;
|
||
break;
|
||
}
|
||
}
|
||
|
||
private void LoadProduction() //ЗАГРУЗКА ПРОДУКЦИИ + ПОИСК ЧАТЬ
|
||
{
|
||
string query = @"
|
||
SELECT
|
||
p.idProducts_import,
|
||
t.TypeProduction,
|
||
p.Name,
|
||
p.Article,
|
||
p.Width,
|
||
p.MinPrice,
|
||
COALESCE(
|
||
(SELECT SUM(m.PriceUnitMaterial * pc.Quantity)
|
||
FROM Product_composition pc
|
||
JOIN Materials_import m ON pc.idMaterials_import = m.idMaterials_import
|
||
WHERE pc.idProducts_import = p.idProducts_import),
|
||
0
|
||
) AS CalculatedCost
|
||
FROM Products_import p
|
||
LEFT JOIN Product_type_import t ON p.idProduct_type_import = t.idProduct_type_import";
|
||
|
||
var conn = DB.GetInstance().GetConnection();
|
||
if (conn.State == ConnectionState.Closed)
|
||
conn.Open();
|
||
|
||
using (var cmd = new MySqlCommand(query, conn))
|
||
{
|
||
var adapter = new MySqlDataAdapter(cmd);
|
||
originalProductionData = new DataTable();
|
||
adapter.Fill(originalProductionData);
|
||
}
|
||
|
||
dgvMain.DataSource = originalProductionData;
|
||
currentMode = ViewMode.Production;
|
||
UpdateControlVisibility(); // ← вызываем здесь
|
||
// показываем элементы для продукции
|
||
//txtSearch.Visible = true;
|
||
//cmbFilter.Visible = true;
|
||
//cmbSort.Visible = true;
|
||
originalProductionData.Columns.Add("SearchName", typeof(string), "CONVERT(Name, 'System.String')");
|
||
originalProductionData.Columns.Add("SearchArticle", typeof(string), "CONVERT(Article, 'System.String')");
|
||
originalProductionData.Columns.Add("SearchType", typeof(string), "CONVERT(TypeProduction, 'System.String')");
|
||
originalProductionData.Columns.Add("SearchWidth", typeof(string), "CONVERT(Width, 'System.String')");
|
||
originalProductionData.Columns.Add("SearchMinPrice", typeof(string), "CONVERT(MinPrice, 'System.String')");
|
||
originalProductionData.Columns.Add("SearchCalculatedCost", typeof(string), "CONVERT(CalculatedCost, 'System.String')");
|
||
|
||
dgvMain.DataSource = originalProductionData; //СКРОПЙ ВЕРХНИЕ ПОЛЧЯ
|
||
foreach (DataGridViewColumn col in dgvMain.Columns)
|
||
{
|
||
if (col.Name.StartsWith("Search"))
|
||
col.Visible = false;
|
||
}
|
||
ApplySearchFilter();
|
||
}
|
||
|
||
|
||
private void LoadMaterials() //ЗАГРУЗКА МАТЕРИАЛОВ + ПОИСК ЧАТЬ
|
||
{
|
||
string query = @"
|
||
SELECT
|
||
m.idMaterials_import AS Id,
|
||
m.Name,
|
||
t.Name AS TypeName,
|
||
m.PriceUnitMaterial,
|
||
m.Quantity,
|
||
m.MinQuantity,
|
||
m.QuantityPack,
|
||
u.Name AS UnitName
|
||
FROM Materials_import m
|
||
LEFT JOIN Material_type_import t ON m.idMaterial_type_import = t.idMaterial_type_import
|
||
LEFT JOIN Unit u ON m.idUnit = u.idUnit";
|
||
|
||
var conn = DB.GetInstance().GetConnection();
|
||
if (conn.State == ConnectionState.Closed)
|
||
conn.Open();
|
||
|
||
using (var cmd = new MySqlCommand(query, conn))
|
||
{
|
||
var adapter = new MySqlDataAdapter(cmd);
|
||
originalMaterialsData = new DataTable();
|
||
adapter.Fill(originalMaterialsData);
|
||
}
|
||
|
||
dgvMain.DataSource = originalMaterialsData;
|
||
currentMode = ViewMode.Materials;
|
||
UpdateControlVisibility(); // ← вызываем здесь
|
||
|
||
//txtSearch.Visible = true;
|
||
//cmbFilter.Visible = false;
|
||
//cmbSort.Visible = false;
|
||
//label5.Visible = false;
|
||
//label6.Visible = false;
|
||
//ПОЛЯ ДЛЯ ПОИСК КРЧ
|
||
originalMaterialsData.Columns.Add("SearchName", typeof(string), "CONVERT(Name, 'System.String')");
|
||
originalMaterialsData.Columns.Add("SearchTypeName", typeof(string), "CONVERT(TypeName, 'System.String')");
|
||
originalMaterialsData.Columns.Add("SearchPrice", typeof(string), "CONVERT(PriceUnitMaterial, 'System.String')");
|
||
originalMaterialsData.Columns.Add("SearchQuantity", typeof(string), "CONVERT(Quantity, 'System.String')");
|
||
originalMaterialsData.Columns.Add("SearchMinQuantity", typeof(string), "CONVERT(MinQuantity, 'System.String')");
|
||
originalMaterialsData.Columns.Add("SearchQuantityPack", typeof(string), "CONVERT(QuantityPack, 'System.String')");
|
||
originalMaterialsData.Columns.Add("SearchUnitName", typeof(string), "CONVERT(UnitName, 'System.String')");
|
||
|
||
dgvMain.DataSource = originalMaterialsData;
|
||
foreach (DataGridViewColumn col in dgvMain.Columns)
|
||
{
|
||
if (col.Name.StartsWith("Search"))
|
||
col.Visible = false;
|
||
}
|
||
|
||
ApplySearchFilter();
|
||
}
|
||
|
||
private void ApplySearchFilter() //ПОИСК ПО ВСМЕУ КРТ
|
||
{
|
||
string search = txtSearch.Text.Trim();
|
||
|
||
if (currentMode == ViewMode.Production)
|
||
{
|
||
string baseFilter = "";
|
||
switch (cmbFilter.SelectedIndex)
|
||
{
|
||
case 0: baseFilter = ""; break;
|
||
case 1: baseFilter = "CalculatedCost > 1000"; break;
|
||
case 2: baseFilter = "CalculatedCost < 500"; break;
|
||
case 3: baseFilter = "MinPrice < CalculatedCost"; break;
|
||
case 4: baseFilter = "Width > 10"; break;
|
||
}
|
||
if (!string.IsNullOrEmpty(search))
|
||
{
|
||
search = search.Replace("'", "''");
|
||
string searchFilter = $"SearchName LIKE '%{search}%' OR " +
|
||
$"SearchArticle LIKE '%{search}%' OR " +
|
||
$"SearchType LIKE '%{search}%' OR " +
|
||
$"SearchWidth LIKE '%{search}%' OR " +
|
||
$"SearchMinPrice LIKE '%{search}%' OR " +
|
||
$"SearchCalculatedCost LIKE '%{search}%'";
|
||
|
||
if (!string.IsNullOrEmpty(baseFilter))
|
||
baseFilter = $"({baseFilter}) AND ({searchFilter})";
|
||
else
|
||
baseFilter = searchFilter;
|
||
}
|
||
string sort = "";
|
||
switch (cmbSort.SelectedIndex)
|
||
{
|
||
case 0: sort = "Name ASC"; break;
|
||
case 1: sort = "Name DESC"; break;
|
||
case 2: sort = "CalculatedCost ASC"; break;
|
||
case 3: sort = "CalculatedCost DESC"; break;
|
||
case 4: sort = "Article ASC"; break;
|
||
}
|
||
try
|
||
{
|
||
DataView view = originalProductionData.DefaultView;
|
||
view.RowFilter = baseFilter;
|
||
view.Sort = sort;
|
||
dgvMain.DataSource = view;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageBox.Show($"Ошибка фильтрации продукции: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||
}
|
||
}
|
||
else if (currentMode == ViewMode.Materials)
|
||
{
|
||
string filter = "";
|
||
if (!string.IsNullOrEmpty(search))
|
||
{
|
||
search = search.Replace("'", "''");
|
||
filter = $"SearchName LIKE '%{search}%' OR " +
|
||
$"SearchTypeName LIKE '%{search}%' OR " +
|
||
$"SearchPrice LIKE '%{search}%' OR " +
|
||
$"SearchQuantity LIKE '%{search}%' OR " +
|
||
$"SearchMinQuantity LIKE '%{search}%' OR " +
|
||
$"SearchQuantityPack LIKE '%{search}%' OR " +
|
||
$"SearchUnitName LIKE '%{search}%'";
|
||
}
|
||
|
||
try
|
||
{
|
||
DataView view = originalMaterialsData.DefaultView;
|
||
view.RowFilter = filter;
|
||
dgvMain.DataSource = view;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageBox.Show($"Ошибка поиска материалов: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
private void btnAdd_Click(object sender, EventArgs e) //ДОБАВИИТЬ
|
||
{
|
||
switch (currentMode) //СМОТРЯ Чё ОТКРЫТО, ТО ОТКРЫВАТЕСЯЧ
|
||
{
|
||
case ViewMode.Production:
|
||
var addProd = new AddProduction();
|
||
if (addProd.ShowDialog() == DialogResult.OK)
|
||
{
|
||
LoadProduction();
|
||
}
|
||
break;
|
||
|
||
case ViewMode.Materials:
|
||
var addMat = new AddMaterials();
|
||
if (addMat.ShowDialog() == DialogResult.OK)
|
||
{
|
||
LoadMaterials();
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
private void btnEdit_Click(object sender, EventArgs e) //ИЗМЕНИТЬ
|
||
{
|
||
if (dgvMain.SelectedRows.Count == 0)
|
||
{
|
||
MessageBox.Show("Выберите строку для редактирования.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
|
||
var selectedRow = dgvMain.SelectedRows[0];
|
||
object idValue = null;
|
||
|
||
switch (currentMode)
|
||
{
|
||
case ViewMode.Production:
|
||
idValue = selectedRow.Cells["idProducts_import"]?.Value;
|
||
if (idValue == null)
|
||
{
|
||
MessageBox.Show("Не удалось получить ID продукта.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
return;
|
||
}
|
||
|
||
int prodId = Convert.ToInt32(idValue);
|
||
var editProd = new EditProduction { ProductId = prodId };
|
||
if (editProd.ShowDialog() == DialogResult.OK)
|
||
{
|
||
LoadProduction();
|
||
}
|
||
break;
|
||
|
||
case ViewMode.Materials:
|
||
idValue = selectedRow.Cells["Id"]?.Value;
|
||
if (idValue == null)
|
||
{
|
||
MessageBox.Show("Не удалось получить ID материала.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
return;
|
||
}
|
||
|
||
int matId = Convert.ToInt32(idValue);
|
||
var editMat = new EditMaterials { MaterialId = matId };
|
||
if (editMat.ShowDialog() == DialogResult.OK)
|
||
{
|
||
LoadMaterials();
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
private void btnDelete_Click(object sender, EventArgs e) //УДАИЛИТЬ
|
||
{
|
||
if (dgvMain.SelectedRows.Count == 0)
|
||
{
|
||
MessageBox.Show("Выберите строку для удаления.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||
return;
|
||
}
|
||
|
||
var selectedRow = dgvMain.SelectedRows[0];
|
||
object idValue = null;
|
||
string itemName = "неизвестный";
|
||
|
||
switch (currentMode)
|
||
{
|
||
case ViewMode.Production:
|
||
idValue = selectedRow.Cells["idProducts_import"]?.Value;
|
||
itemName = selectedRow.Cells["Name"]?.Value?.ToString() ?? "неизвестный";
|
||
if (idValue == null)
|
||
{
|
||
MessageBox.Show("Не удалось получить ID продукта.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
return;
|
||
}
|
||
|
||
ConfirmAndDelete("Products_import", "idProducts_import", Convert.ToInt32(idValue), itemName);
|
||
LoadProduction();
|
||
break;
|
||
|
||
case ViewMode.Materials:
|
||
idValue = selectedRow.Cells["Id"]?.Value; //УДАЛЕНИЕ ПО АЙДИШНИКУ
|
||
itemName = selectedRow.Cells["Name"]?.Value?.ToString() ?? "неизвестный";
|
||
if (idValue == null)
|
||
{
|
||
MessageBox.Show("Не удалось получить ID материала.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
return;
|
||
}
|
||
|
||
ConfirmAndDelete("Materials_import", "idMaterials_import", Convert.ToInt32(idValue), itemName);
|
||
LoadMaterials();
|
||
break;
|
||
}
|
||
}
|
||
|
||
private void ConfirmAndDelete(string tableName, string idColumnName, int id, string itemName) //УДАЛЕНИЕ НАДО
|
||
{
|
||
var result = MessageBox.Show(
|
||
$"Вы уверены, что хотите удалить:\n\n«{itemName}»?\n\nЭто действие нельзя отменить.",
|
||
"Подтверждение удаления",
|
||
MessageBoxButtons.YesNo,
|
||
MessageBoxIcon.Warning
|
||
);
|
||
|
||
if (result == DialogResult.No) return;
|
||
|
||
string query = $"DELETE FROM {tableName} WHERE {idColumnName} = @id";
|
||
var conn = DB.GetInstance().GetConnection();
|
||
if (conn.State == ConnectionState.Closed)
|
||
conn.Open();
|
||
|
||
using (var cmd = new MySqlCommand(query, conn))
|
||
{
|
||
cmd.Parameters.AddWithValue("@id", id);
|
||
try
|
||
{
|
||
int rowsAffected = cmd.ExecuteNonQuery();
|
||
if (rowsAffected > 0)
|
||
{
|
||
MessageBox.Show("Запись успешно удалена!", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||
}
|
||
else
|
||
{
|
||
MessageBox.Show("Не удалось удалить запись.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageBox.Show($"Ошибка при удалении: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||
}
|
||
}
|
||
}
|
||
private void продукцияToolStripMenuItem_Click(object sender, EventArgs e)
|
||
{
|
||
LoadProduction();
|
||
|
||
}
|
||
|
||
private void списокМатериаловToolStripMenuItem_Click(object sender, EventArgs e)
|
||
{
|
||
LoadMaterials();
|
||
|
||
}
|
||
|
||
private void button1_Click(object sender, EventArgs e) //КАЛЬКУЛЯТОР
|
||
{
|
||
var form = new MaterialPurchaseCalculatorForm();
|
||
form.ShowDialog();
|
||
}
|
||
|
||
private void btnMyDiscounts_Click(object sender, EventArgs e) //ЭТО НА ФОРМУ СО СКИДКАМИ
|
||
{
|
||
|
||
PartnerDiscountsForm partnerDiscountsForm = new PartnerDiscountsForm(partnerId);
|
||
partnerDiscountsForm.ShowDialog();
|
||
MessageBox.Show($"Текущий partnerId: {partnerId}");
|
||
|
||
}
|
||
|
||
private void txtSearch_TextChanged(object sender, EventArgs e)
|
||
{
|
||
ApplySearchFilter();
|
||
}
|
||
|
||
private void SetupProductionFiltersAndSorts() //СОРТ, ФИЛЬТР
|
||
{
|
||
// ФИЛЬТРАЦИЯ
|
||
cmbFilter.Items.Clear();
|
||
cmbFilter.Items.Add("Все");
|
||
cmbFilter.Items.Add("Себестоимость > 1000 ₽");
|
||
cmbFilter.Items.Add("Себестоимость < 500 ₽");
|
||
cmbFilter.Items.Add("С минимальной ценой < себестоимости");
|
||
cmbFilter.Items.Add("Ширина > 10");
|
||
//СОРТИРОЧКА
|
||
cmbSort.Items.Clear();
|
||
cmbSort.Items.Add("По названию (А→Я)");
|
||
cmbSort.Items.Add("По названию (Я→А)");
|
||
cmbSort.Items.Add("По себестоимости (возр.)");
|
||
cmbSort.Items.Add("По себестоимости (убыв.)");
|
||
cmbSort.Items.Add("По артикулу");
|
||
|
||
cmbFilter.SelectedIndex = 0;
|
||
cmbSort.SelectedIndex = 0;
|
||
}
|
||
|
||
private void ApplyProductionFilterAndSort() //СОРТИРОВКА, ФИЛТРАЦИЯ
|
||
{
|
||
if (currentMode != ViewMode.Production || originalProductionData == null)
|
||
return;
|
||
|
||
string filter = "";
|
||
string sort = "";
|
||
|
||
switch (cmbFilter.SelectedIndex)
|
||
{
|
||
case 0:
|
||
filter = "";
|
||
break;
|
||
case 1:
|
||
filter = "CalculatedCost > 1000";
|
||
break;
|
||
case 2:
|
||
filter = "CalculatedCost < 500";
|
||
break;
|
||
case 3:
|
||
filter = "MinPrice < CalculatedCost";
|
||
break;
|
||
case 4:
|
||
filter = "Width > 10";
|
||
break;
|
||
}
|
||
|
||
switch (cmbSort.SelectedIndex)
|
||
{
|
||
case 0: sort = "Name ASC"; break;
|
||
case 1: sort = "Name DESC"; break;
|
||
case 2: sort = "CalculatedCost ASC"; break;
|
||
case 3: sort = "CalculatedCost DESC"; break;
|
||
case 4: sort = "Article ASC"; break;
|
||
}
|
||
|
||
try
|
||
{
|
||
DataView view = originalProductionData.DefaultView;
|
||
view.RowFilter = filter;
|
||
view.Sort = sort;
|
||
dgvMain.DataSource = view;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageBox.Show($"Ошибка применения фильтра/сортировки: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||
}
|
||
}
|
||
|
||
private void cmbSort_SelectedIndexChanged(object sender, EventArgs e)
|
||
{
|
||
ApplyProductionFilterAndSort();
|
||
}
|
||
|
||
private void cmbFilter_SelectedIndexChanged(object sender, EventArgs e)
|
||
{
|
||
ApplyProductionFilterAndSort();
|
||
|
||
}
|
||
|
||
private void UpdateControlVisibility() //СКРЫТИЕ КНОПОК ПРЯМ МНОГО СКРЫВАТЬ
|
||
{
|
||
|
||
bool isDeveloper = (userRoleId == 4); // РАЗРАБ ВСЁ ВИДИТ
|
||
bool isManager = (userRoleId == 2); // МЕНЕДЖЕР +- ЧЁТ ВИДИТ
|
||
bool isWorkerOrPartner = (userRoleId == 1 || userRoleId == 3); // РАБОТЯГА И ПАРТНЁРЫ +- НИЧЕГО НЕ ВИДЯТ
|
||
|
||
bool isProduction = (currentMode == ViewMode.Production);
|
||
bool isMaterials = (currentMode == ViewMode.Materials);
|
||
|
||
if (isDeveloper)
|
||
{
|
||
txtSearch.Visible = true;
|
||
}
|
||
else if (isManager)
|
||
{
|
||
txtSearch.Visible = isProduction || isMaterials;
|
||
}
|
||
else
|
||
{
|
||
txtSearch.Visible = false;
|
||
}
|
||
if (isDeveloper)
|
||
{
|
||
cmbFilter.Visible = isProduction;
|
||
cmbSort.Visible = isProduction;
|
||
}
|
||
else if (isManager)
|
||
{
|
||
cmbFilter.Visible = isProduction;
|
||
cmbSort.Visible = isProduction;
|
||
}
|
||
else
|
||
{
|
||
cmbFilter.Visible = false;
|
||
cmbSort.Visible = false;
|
||
}
|
||
label5.Visible = isDeveloper;
|
||
label6.Visible = isDeveloper;
|
||
|
||
}
|
||
}
|
||
} |