public void RemoveService(int id) { if (id == -1) // удаление строки, не занесённой в список услуг(во время редактирования) { return; } Service sv = AllServices[id]; if (sv != null) { CurrentContract.DelService(sv); // Если найдена, удаляем из списка услуг } }
// Проверяет, изменились ли данные в строке и добавляет новую услугу или меняет существующую. // Если в строке недостаточно данных для услуги(новая строка), ничего не делает, предотвращая создание новой услуги из пустой строки 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); // меняем значения } } }
// Загружаем информацию об услугах из файла договора .xls private void ButtonLoadContractFrom_xls_Click(object sender, EventArgs e) { string path = DefaultPathFile; path = GetPathFile(CurrentContract.FileName, path); if (path == null) { return; } ClearDataGridView(); CurrentContract.ClearServices(); CurrentContract.LoadServicesFrom_xls(path); labelInTotalValue.Text = $"{CurrentContract.Summ}"; }
void AddExecute(object param) { Contract contract; if (CurrentContract != null) { contract = CurrentContract.Clone(); contract.CONTRACT_ID = 0; } else { contract = new Contract(); } if (_view.IsInView) { contractListViewModel.EnablePicker = false; } CurrentContract = contract; CurrentContract.Modified = true; RaisePropertyChanged("IsNotAddingNew"); }