private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { string shw = comboBox1.SelectedItem.ToString(); dataGridView1.DataSource = null; // Show DB tables using (BankProcessContext bankProcessDB = new BankProcessContext()) { switch (shw) { case "Процессы банка": dataGridView1.DataSource = filesLoaded[shw]; break; case "BankProcTypes": var bankProcTypes = bankProcessDB.BankProcTypes.ToList(); dataGridView1.DataSource = bankProcTypes; break; case "BankThemes": var bankThemes = bankProcessDB.BankThemes.Include(t => t.BankProcType).ToList(); dataGridView1.DataSource = bankThemes; break; case "BankActions": var bankActions = bankProcessDB.BankActions.Include(a => a.BankTheme).ToList(); dataGridView1.DataSource = bankActions; break; case "BankProcesses": var bankProcesses = bankProcessDB.BankProcesses.Include(p => p.BankAction).Include(p => p.BankDepartment).ToList(); dataGridView1.DataSource = bankProcesses; break; case "BankDepartments": var bankDepartments = bankProcessDB.BankDepartments.ToList(); dataGridView1.DataSource = bankDepartments; break; default: break; } } }
// The logic and models depends on the file template private async void saveToDBAsync() { string templ = comboBox2?.SelectedItem?.ToString(); switch (templ) { case "Процессы банка": await Task.Run(() => { List <string> bankDepartments = new List <string>(); // patterns for process code string patternTheme = @"^\w?[0-9]+$"; // 2 hierarchy level string patternAction = @"^\w?[0-9]+\.[0-9]+$"; // 3 hierarchy level string patternProcess = @"^\w?[0-9]+\.[0-9]+\.[0-9]+$"; // 4 hierarchy level using (BankProcessContext bankProcessDB = new BankProcessContext()) { // actual models object // 1 hierarchy level BankProcType bankProcType = null; // 2 hierarchy level BankTheme bankTheme = null; // 3 hierarchy level BankAction bankAction = null; // 4 hierarchy level BankProcess bankProcess = null; // catalog BankDepartment bankDepartment = null; // file processing foreach (BankProcCSV bankProc in filesLoaded[templ]) { if (bankProc.Department == "") { if (bankProc.Id == "" && bankProcessDB.BankProcTypes.FirstOrDefault(p => p.Name == bankProc.Name) == null) { // Row to BankProcTypes (1 lvl) bankProcType = new BankProcType { Name = bankProc.Name }; bankProcessDB.BankProcTypes.Add(bankProcType); } else { if (Regex.IsMatch(bankProc.Id, patternTheme) && bankProcessDB.BankThemes.FirstOrDefault(p => p.Code == bankProc.Id) == null) { // Row to BankThemes (2 lvl) bankTheme = new BankTheme { Name = bankProc.Name, Code = bankProc.Id, BankProcType = bankProcType }; bankProcessDB.BankThemes.Add(bankTheme); } if (Regex.IsMatch(bankProc.Id, patternAction) && bankProcessDB.BankActions.FirstOrDefault(p => p.Code == bankProc.Id) == null) { // Row to BankActions (3 lvl) bankAction = new BankAction { Name = bankProc.Name, Code = bankProc.Id, BankTheme = bankTheme }; bankProcessDB.BankActions.Add(bankAction); } } } else { if (bankProc.Id != "") { if (Regex.IsMatch(bankProc.Id, patternProcess) && bankProcessDB.BankProcesses.FirstOrDefault(p => p.Code == bankProc.Id) == null) { // Row to BankProcesses (4 lvl) if (!bankDepartments.Contains(bankProc.Department)) { // Row to BankDepartments (catalog) bankDepartments.Add(bankProc.Department); bankDepartment = new BankDepartment { Name = bankProc.Department }; bankProcessDB.BankDepartments.Add(bankDepartment); } else { bankDepartment = bankProcessDB.BankDepartments.FirstOrDefault(d => d.Name == bankProc.Department); } bankProcess = new BankProcess { Name = bankProc.Name, Code = bankProc.Id, BankAction = bankAction, BankDepartment = bankDepartment }; bankProcessDB.BankProcesses.Add(bankProcess); } } else { // Logic for empty Rows from file } } bankProcessDB.SaveChanges(); } } }); comboBox1.Items.AddRange(new string[] { "BankProcTypes", "BankThemes", "BankActions", "BankProcesses", "BankDepartments" }); comboBox1.SelectedItem = "BankProcesses"; label6.Text = "Файл сохранен в БД"; break; default: label6.Text = "Укажите шаблон"; break; } }