コード例 #1
0
        // Проверяет, изменились ли данные в строке и добавляет новую услугу или меняет существующую.
        // Если в строке недостаточно данных для услуги(новая строка), ничего не делает, предотвращая создание новой услуги из пустой строки
        private void ChangeServiceRow(DataGridViewRow row)
        {
            if (row.IsNewRow)
            {
                return;
            }

            var id = AllServices.IndexOfKey((int)row.Cells["ColumnIdService"].Value); // индекс в списке

            var summ = (decimal)row.Cells["ColumnServiceSumm"].Value;

            var nw = (string)row.Cells["ColumnNameWork"].Value ?? "";

            if (summ == 0 || nw?.Length == 0)
            {
                return; // если эти ячейки пусты, значит данных для добавления/изменения услуги недостаточно(false)
            }

            var nd   = (string)row.Cells["ColumnNameDevice"].Value ?? "";
            var sd   = CurrentClient.Subdivisions.IndexOfValue((string)row.Cells["ColumnSubdivision"].Value ?? "");
            var ai   = (string)row.Cells["ColumnAddInfo"].Value ?? "";
            var numb = (int)row.Cells["ColumnServiceNumb"].Value;

            Service sv;

            if (id == -1)
            {
                sv = new Service(nw, nd, sd, numb, summ, -1, ai); // добавляем новую услугу

                CurrentContract.AddService(sv);                   // добавляем в список услуг текущего договора
                row.Cells["ColumnIdService"].Value = sv.Id;
            }
            else
            {
                sv = AllServices.Values[id];    // извлекаем существующую

                // Проверяем, изменились ли данные
                if (summ != sv.Value ||
                    numb != sv.Number ||
                    nw != sv.Nw.Name ||
                    nd != sv.Nd.Name ||
                    sd != sv.Sd ||
                    ai != sv.Ai.Name)
                {
                    CurrentContract.SetService(nw, nd, sd, numb, summ, sv.Id, ai); // меняем значения
                }
            }
        }