//Изменить тип доп. выплат
        public bool ModifyTypeAddPayment(RefTypeAddPayment typeAddPayment, out string error)
        {
            error = string.Empty;
            if (conn == null)
            {
                error = "conn == null";
                return(false);
            }
            if (typeAddPayment == null)
            {
                error = "typeAddPayment == null";
                return(false);
            }
            SqlCommand command = new SqlCommand(spRefTypeAddPaymentUpdate, conn);

            command.CommandType = System.Data.CommandType.StoredProcedure;
            command.Connection  = conn;
            command.Parameters.AddWithValue("@inRefTypeAddPayment_Id", typeAddPayment.RefTypeAddPayment_Id);
            command.Parameters.AddWithValue("@inRefTypeAddPayment_Cd", typeAddPayment.RefTypeAddPayment_Cd);
            command.Parameters.AddWithValue("@inRefTypeAddPayment_Nm", typeAddPayment.RefTypeAddPayment_Nm);
            try
            {
                command.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                error = ex.Message;
                return(false);
            }
            return(true);
        }
        //Физическое удаление строки
        private void DeleteRecord()
        {
            if (dgvRefTypeAddPayment.CurrentRow == null)
            {
                return;
            }
            if (MessageBox.Show("Ви впевнені, що бажаєте видалити рядок?", "Видалення", MessageBoxButtons.YesNo) == DialogResult.No)
            {
                return;
            }
            RefTypeAddPayment typeAddPayment = dgvRefTypeAddPayment.CurrentRow.DataBoundItem as RefTypeAddPayment;

            if (typeAddPayment == null)
            {
                MessageBox.Show("Не знайдений рядок для видалення", "Помилка");
                return;
            }
            string error;

            if (!_repository.DeleteTypeAddPayment(typeAddPayment.RefTypeAddPayment_Id, out error))
            {
                MessageBox.Show("Помилка видалення рядка.\nТехнічна інформація: " + error, "Помилка");
                return;
            }
            RefreshTable();
        }
        //Обновление строки
        private void UpdateRecord()
        {
            if (dgvRefTypeAddPayment.CurrentRow == null)
            {
                return;
            }
            string            error;
            RefTypeAddPayment typeAddPayment = dgvRefTypeAddPayment.CurrentRow.DataBoundItem as RefTypeAddPayment;

            if (typeAddPayment == null)
            {
                MessageBox.Show("Не знайдений рядок для оновлення", "Помилка");
                return;
            }
            fmRefTypeAddPaymentEdit fmEdit = new fmRefTypeAddPaymentEdit("Зміна типу додаткових виплат");

            fmEdit.SetData(typeAddPayment);
            if (fmEdit.ShowDialog() == DialogResult.OK)
            {
                typeAddPayment = fmEdit.GetData();
                if (!_repository.ModifyTypeAddPayment(typeAddPayment, out error))
                {
                    MessageBox.Show("Помилка оновлення рядка.\nТехнічна інформація: " + error, "Помилка");
                    return;
                }
                RefreshTable();
            }
        }
 public void SetData(RefTypeAddPayment typeAddPayment)
 {
     if (typeAddPayment == null)
     {
         return;
     }
     id          = typeAddPayment.RefTypeAddPayment_Id;
     tbCode.Text = typeAddPayment.RefTypeAddPayment_Cd;
     tbName.Text = typeAddPayment.RefTypeAddPayment_Nm;
 }
        private void FillDataRec(SqlDataReader reader, RefTypeAddPayment typeAddPayment)
        {
            int resInt = 0;

            if (int.TryParse(reader["RefTypeAddPayment_Id"].ToString(), out resInt))
            {
                typeAddPayment.RefTypeAddPayment_Id = resInt;
            }
            typeAddPayment.RefTypeAddPayment_Cd = reader["RefTypeAddPayment_Cd"].ToString();
            typeAddPayment.RefTypeAddPayment_Nm = reader["RefTypeAddPayment_Nm"].ToString();
        }
        private List <RefTypeAddPayment> typeAddPayments = null; //Кеширование
        //Вставка строки
        private void InsertRecord()
        {
            fmRefTypeAddPaymentEdit fmEdit = new fmRefTypeAddPaymentEdit("Створення типу додаткових виплат");

            if (fmEdit.ShowDialog() == DialogResult.OK)
            {
                string            error;
                RefTypeAddPayment typeAddPayment = fmEdit.GetData();
                int id = _repository.AddTypeAddPayment(typeAddPayment, out error);
                if (id == 0)
                {
                    MessageBox.Show("Помилка додавання рядка.\nТехнічна інформація: " + error, "Помилка");
                    return;
                }
                RefreshTable();
                dgvRefTypeAddPayment.SetPositionRow <RefTypeAddPayment>("RefTypeAddPayment_Id", id.ToString());
            }
        }
        //Добавить тип доп. выплат
        public int AddTypeAddPayment(RefTypeAddPayment typeAddPayment, out string error)
        {
            error = string.Empty;
            if (typeAddPayment == null)
            {
                error = "typeAddPayment == null";
                return(0);
            }
            if (conn == null)
            {
                error = "conn == null";
                return(0);
            }
            SqlCommand command = new SqlCommand(spRefTypeAddPaymentInsert, conn);

            command.CommandType = System.Data.CommandType.StoredProcedure;
            command.Connection  = conn;
            command.Parameters.AddWithValue("@inRefTypeAddPayment_Cd", typeAddPayment.RefTypeAddPayment_Cd);
            command.Parameters.AddWithValue("@inRefTypeAddPayment_Nm", typeAddPayment.RefTypeAddPayment_Nm);
            // определяем выходной параметр
            SqlParameter outId = new SqlParameter
            {
                ParameterName = "outId",
                Direction     = ParameterDirection.Output,
                SqlDbType     = SqlDbType.Int
            };

            command.Parameters.Add(outId);
            try
            {
                command.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                error = ex.Message;
                return(0);
            }
            int id = 0;

            int.TryParse(command.Parameters["outId"].Value.ToString(), out id);
            return(id);
        }
        //Получить все типы доп. выплат
        public List <RefTypeAddPayment> GetAllTypeAddPayments(out string error)
        {
            error = string.Empty;

            List <RefTypeAddPayment> typeAddPayments = new List <RefTypeAddPayment>();

            if (conn == null)
            {
                error = "conn == null";
                return(typeAddPayments);
            }

            SqlCommand command = new SqlCommand(spRefTypeAddPaymentSelect, conn);

            command.CommandType = System.Data.CommandType.StoredProcedure;
            SqlDataReader reader = null;

            try
            {
                reader = command.ExecuteReader();

                while (reader.Read())
                {
                    RefTypeAddPayment typeAddPayment = new RefTypeAddPayment();
                    FillDataRec(reader, typeAddPayment);
                    typeAddPayments.Add(typeAddPayment);
                }
            }
            catch (Exception exc)
            {
                error = exc.Message;
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                }
            }
            return(typeAddPayments);
        }
        //Получить тип доп. выплат id
        public RefTypeAddPayment GetTypeAddPaymentById(int id, out string error)
        {
            error = string.Empty;
            RefTypeAddPayment resTypeAddPayment = null;

            if (conn == null)
            {
                error = "conn == null";
                return(null);
            }
            SqlCommand command = new SqlCommand(spRefTypeAddPaymentSelect, conn);

            command.CommandType = System.Data.CommandType.StoredProcedure;
            command.Connection  = conn;
            command.Parameters.AddWithValue("@inRefTypeAddPayment_Id", id);
            SqlDataReader reader = null;

            try
            {
                reader = command.ExecuteReader();
                if (reader.HasRows)
                {
                    reader.Read();
                    resTypeAddPayment = new RefTypeAddPayment();
                    FillDataRec(reader, resTypeAddPayment);
                }
            }
            catch (Exception ex)
            {
                error = ex.Message;
            }
            finally
            {
                if (reader != null)
                {
                    reader.Close();
                }
            }
            return(resTypeAddPayment);
        }