2024-05-29 00:58:18 +04:00
using Npgsql ;
2024-05-21 16:17:10 +04:00
using System.Data ;
namespace DeviceAdmin
{
public partial class FormDevices : Form
{
NpgsqlConnection connection = Program . connection ;
private DataTable dataTable ;
private DataTable dataTableKind = new ( ) ;
private NpgsqlDataAdapter adapter ;
private NpgsqlDataAdapter adapter2 ;
public FormDevices ( )
{
InitializeComponent ( ) ;
LoadGridView ( ) ;
adapter2 = new NpgsqlDataAdapter ( "SELECT * FROM kinds" , connection ) ;
adapter2 . Fill ( dataTableKind ) ;
comboBoxKind . DataSource = dataTableKind ;
}
private void LoadGridView ( )
{
adapter = new NpgsqlDataAdapter ( "SELECT devices.id, model, kinds.title, serial_number, production_date, warranty_period, condition, kit_id, kits.title FROM devices LEFT JOIN kinds ON devices.kind_id = kinds.id FULL OUTER JOIN kits ON devices.kit_id=kits.id;" , connection ) ;
dataTable = new DataTable ( ) ;
adapter . Fill ( dataTable ) ;
dataGridView . DataSource = dataTable ;
DataGridViewColumnCollection columns = dataGridView . Columns ;
columns [ 0 ] . HeaderText = "ID" ;
columns [ 1 ] . HeaderText = "Модель" ;
columns [ 2 ] . HeaderText = "Вид" ;
columns [ 3 ] . HeaderText = "С е р . номер" ;
columns [ 4 ] . HeaderText = "Дата изг." ;
columns [ 5 ] . HeaderText = "Гарантия" ;
columns [ 6 ] . HeaderText = "Работает?" ;
columns [ 7 ] . HeaderText = "ID компл." ;
columns [ 8 ] . HeaderText = "Комплект" ;
}
private void ButtonAdd_Click ( object sender , EventArgs e )
{
if ( checkBoxCondition . Checked = = true )
{
NpgsqlCommand command = new NpgsqlCommand ( "INSERT INTO devices VALUES (nextval('seq_devices'), @model, @serial_number, @production_date, @warranty_period, '1', @kind_id, @kit_id);" , connection ) ;
command . Parameters . AddWithValue ( "@model" , textBoxModel . Text ) ;
command . Parameters . AddWithValue ( "@kind_id" , ( int ) comboBoxKind . SelectedValue ) ;
command . Parameters . AddWithValue ( "@serial_number" , textBoxSerialNumber . Text ) ;
command . Parameters . AddWithValue ( "@production_date" , dateTimePickerProductionDate . Value . Date ) ;
command . Parameters . AddWithValue ( "@warranty_period" , int . Parse ( numericUpDownWarrantyPeriod . Value . ToString ( ) ) ) ;
command . Parameters . AddWithValue ( "@kit_id" , int . Parse ( numericUpDownKit . Value . ToString ( ) ) ) ;
command . ExecuteNonQuery ( ) ;
} else
{
NpgsqlCommand command = new NpgsqlCommand ( "INSERT INTO devices VALUES (nextval('seq_devices'), @model, @serial_number, @production_date, @warranty_period, '0', @kind_id, @kit_id);" , connection ) ;
command . Parameters . AddWithValue ( "@model" , textBoxModel . Text ) ;
command . Parameters . AddWithValue ( "@kind_id" , ( int ) comboBoxKind . SelectedValue ) ;
command . Parameters . AddWithValue ( "@serial_number" , textBoxSerialNumber . Text ) ;
command . Parameters . AddWithValue ( "@production_date" , dateTimePickerProductionDate . Value . Date ) ;
command . Parameters . AddWithValue ( "@warranty_period" , int . Parse ( numericUpDownWarrantyPeriod . Value . ToString ( ) ) ) ;
command . Parameters . AddWithValue ( "@kit_id" , int . Parse ( numericUpDownKit . Value . ToString ( ) ) ) ;
command . ExecuteNonQuery ( ) ;
}
LoadGridView ( ) ;
}
private void ButtonEdit_Click ( object sender , EventArgs e )
{
if ( dataGridView . SelectedRows . Count > 0 )
{
if ( checkBoxCondition . Checked = = true )
{
int id = ( int ) dataGridView . SelectedRows [ 0 ] . Cells [ 0 ] . Value ;
NpgsqlCommand command = new NpgsqlCommand ( "UPDATE devices SET model = @model, serial_number=@serial_number, production_date=@production_date, warranty_period=@warranty_period, condition='1', kind_id=@kind_id, kit_id=@kit_id WHERE Id = @Id" , connection ) ;
command . Parameters . AddWithValue ( "@Id" , id ) ;
command . Parameters . AddWithValue ( "@model" , textBoxModel . Text ) ;
command . Parameters . AddWithValue ( "@kind_id" , ( int ) comboBoxKind . SelectedValue ) ;
command . Parameters . AddWithValue ( "@serial_number" , textBoxSerialNumber . Text ) ;
command . Parameters . AddWithValue ( "@production_date" , dateTimePickerProductionDate . Value . Date ) ;
command . Parameters . AddWithValue ( "@warranty_period" , int . Parse ( numericUpDownWarrantyPeriod . Value . ToString ( ) ) ) ;
command . Parameters . AddWithValue ( "@kit_id" , int . Parse ( numericUpDownKit . Value . ToString ( ) ) ) ;
command . ExecuteNonQuery ( ) ;
} else
{
int id = ( int ) dataGridView . SelectedRows [ 0 ] . Cells [ 0 ] . Value ;
NpgsqlCommand command = new NpgsqlCommand ( "UPDATE devices SET model = @model, serial_number=@serial_number, production_date=@production_date, warranty_period=@warranty_period, condition='0', kind_id= @kind_id, kit_id=@kit_id WHERE Id = @Id" , connection ) ;
command . Parameters . AddWithValue ( "@Id" , id ) ;
command . Parameters . AddWithValue ( "@model" , textBoxModel . Text ) ;
command . Parameters . AddWithValue ( "@kind_id" , ( int ) comboBoxKind . SelectedValue ) ;
command . Parameters . AddWithValue ( "@serial_number" , textBoxSerialNumber . Text ) ;
command . Parameters . AddWithValue ( "@production_date" , dateTimePickerProductionDate . Value . Date ) ;
command . Parameters . AddWithValue ( "@warranty_period" , int . Parse ( numericUpDownWarrantyPeriod . Value . ToString ( ) ) ) ;
command . Parameters . AddWithValue ( "@kit_id" , int . Parse ( numericUpDownKit . Value . ToString ( ) ) ) ;
command . ExecuteNonQuery ( ) ;
}
LoadGridView ( ) ;
}
else
{
MessageBox . Show ( "Please select a row to edit." , "Error" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
}
}
private void ButtonDelete_Click ( object sender , EventArgs e )
{
if ( dataGridView . SelectedRows . Count > 0 )
{
int id = ( int ) dataGridView . SelectedRows [ 0 ] . Cells [ 0 ] . Value ;
NpgsqlCommand command = new NpgsqlCommand ( "DELETE FROM devices WHERE Id = @Id" , connection ) ;
command . Parameters . AddWithValue ( "@Id" , id ) ;
command . ExecuteNonQuery ( ) ;
LoadGridView ( ) ;
}
else
{
MessageBox . Show ( "Please select a row to delete." , "Error" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
}
}
private void ButtonRefresh_Click ( object sender , EventArgs e )
{
LoadGridView ( ) ;
}
}
}