private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) { using (EngineDbContext db = new EngineDbContext()) { var engineList = ((DataParameter)e.Argument).EngineList; // Create worksheet and workbook in excel using outer assembly Microsoft.Interlop.Excel string fileName = ((DataParameter)e.Argument).FileName; var excel = new Microsoft.Office.Interop.Excel.Application(); var wb = excel.Workbooks.Add(XlSheetType.xlWorksheet); var ws = (Worksheet)excel.ActiveSheet; excel.Visible = false; int process = engineList.Count(); int index = 1; // Add columns ws.Cells[1, 1] = "EngineId"; ws.Cells[1, 2] = "PriceRedCard"; ws.Cells[1, 3] = "PriceGreenCard"; ws.Cells[1, 4] = "Capacity"; ws.Cells[1, 5] = "Rpm"; ws.Cells[1, 6] = "Amperage"; ws.Cells[1, 7] = "Voltage"; ws.Cells[1, 8] = "Frequency"; foreach (AcEngine engine in engineList) { if (!backgroundWorker.CancellationPending) { backgroundWorker.ReportProgress(index++ *100 / process); } ws.Cells[index, 1] = engine.Id; ws.Cells[index, 2] = engine.PriceRedCard; ws.Cells[index, 3] = engine.PriceGreenCard; ws.Cells[index, 4] = engine.Capacity; ws.Cells[index, 5] = engine.Rpm; ws.Cells[index, 6] = engine.Amperage; ws.Cells[index, 7] = engine.Voltage; ws.Cells[index, 8] = engine.Frequency; } // Save file into excel worksheet ws.SaveAs(fileName, XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing, true, false, XlSaveAsAccessMode.xlNoChange, XlSaveConflictResolution.xlLocalSessionChanges, Type.Missing, Type.Missing); excel.Quit(); db.SaveChanges(); } }
private void Add_Click(object sender, EventArgs e) { // Validation rules if (dataGridView.Rows.Count == 0) { MessageBox.Show("Моля заредете първо данните с бутона \"Прегледай\"."); Clear(); return; } if (chooseList.Text == string.Empty) { MessageBox.Show("Моля изберете първо тип двигател за добавяне."); return; } else if (string.IsNullOrEmpty(PriceRedTextbox.Text) || string.IsNullOrEmpty(PriceGreenTextbox.Text) || string.IsNullOrEmpty(CapacityTextbox.Text) || string.IsNullOrEmpty(VoltageTextbox.Text) || string.IsNullOrEmpty(RpmTextbox.Text) || string.IsNullOrEmpty(AmperageTextbox.Text)) { MessageBox.Show("Моля въведете всички полета."); Clear(); return; } string idAsString = dataGridView.CurrentRow.Cells["Id"].Value.ToString(); string priceRedCardAsString = PriceRedTextbox.Text.Trim(); string priceGreenCardAsString = PriceGreenTextbox.Text.Trim(); string capacityAsString = CapacityTextbox.Text.Trim(); string voltageAsString = VoltageTextbox.Text.Trim(); string rpmAsString = RpmTextbox.Text.Trim(); string amperageAsString = AmperageTextbox.Text.Trim(); string patternForValidation = @"^[0-9]*$"; if (!Regex.IsMatch(idAsString, patternForValidation) || !Regex.IsMatch(priceRedCardAsString, patternForValidation) || !Regex.IsMatch(priceGreenCardAsString, patternForValidation) || !Regex.IsMatch(capacityAsString, patternForValidation) || !Regex.IsMatch(voltageAsString, patternForValidation) || !Regex.IsMatch(rpmAsString, patternForValidation) || !Regex.IsMatch(amperageAsString, patternForValidation)) { MessageBox.Show("Невалидни данни за вход. Моля въведете само цифри."); Clear(); return; } // Parsing string to data variables int id = Convert.ToInt32(idAsString); decimal priceRedCard = decimal.Parse(priceRedCardAsString); decimal priceGreenCard = decimal.Parse(priceGreenCardAsString); double capacity = double.Parse(capacityAsString); int voltage = int.Parse(voltageAsString); int rpm = int.Parse(rpmAsString); int amperage = int.Parse(amperageAsString); // Main logic if (chooseList.Text == "Asynchrone") { AcEngine acEngine = new AcEngine(id, priceRedCard, priceGreenCard, capacity, voltage, rpm, amperage); using (EngineDbContext db = new EngineDbContext()) { // Update information if (AddBtn.Text == "Ъпдейт") { db.Entry(acEngine).State = EntityState.Modified; } else // Add information { db.AcEngines.Add(acEngine); Counter(true); } db.SaveChanges(); } Clear(); ShowDataGridView(); MessageBox.Show("Submitted successfully."); } else if (chooseList.Text == "Dc") { DcEngine dcEngine = new DcEngine(id, priceRedCard, priceGreenCard, capacity, voltage, rpm, amperage); using (EngineDbContext db = new EngineDbContext()) { // Update information if (AddBtn.Text == "Ъпдейт") { db.Entry(dcEngine).State = EntityState.Modified; } else // Add information { db.DcEngines.Add(dcEngine); Counter(true); } db.SaveChanges(); } Clear(); ShowDataGridView(); MessageBox.Show("Submitted successfully."); } else if (chooseList.Text == "Generator") { Generator generator = new Generator(id, priceRedCard, priceGreenCard, capacity, voltage, rpm, amperage); using (EngineDbContext db = new EngineDbContext()) { // Update information if (AddBtn.Text == "Ъпдейт") { db.Entry(generator).State = EntityState.Modified; } else // Add information { db.Generators.Add(generator); Counter(true); } db.SaveChanges(); } Clear(); ShowDataGridView(); MessageBox.Show("Submitted successfully."); } }
private void DeleteBtn_Click(object sender, EventArgs e) { // Validation message bool confirmation = MessageBox.Show("Сигурни ли сте, че искате да изтриете данните?", "Изтриване", MessageBoxButtons.YesNo) == DialogResult.Yes; // Main logic if (confirmation) { using (EngineDbContext db = new EngineDbContext()) { if (chooseList.Text == "Asynchrone") { AcEngine acEngineToDelete = new AcEngine { Id = Convert.ToInt32(dataGridView.CurrentRow.Cells["Id"].Value) }; var entry = db.Entry(acEngineToDelete); if (entry.State == EntityState.Detached) { db.AcEngines.Attach(acEngineToDelete); } db.AcEngines.Remove(acEngineToDelete); Counter(false); db.SaveChanges(); ShowDataGridView(); Clear(); MessageBox.Show("Deleted successfully."); } else if (chooseList.Text == "Dc") { DcEngine dcEngineToDelete = new DcEngine { Id = Convert.ToInt32(dataGridView.CurrentRow.Cells["Id"].Value) }; var entry = db.Entry(dcEngineToDelete); if (entry.State == EntityState.Detached) { db.DcEngines.Attach(dcEngineToDelete); } db.DcEngines.Remove(dcEngineToDelete); Counter(false); db.SaveChanges(); ShowDataGridView(); Clear(); MessageBox.Show("Deleted successfully."); } else if (chooseList.Text == "Generator") { Generator generatorToDelete = new Generator { Id = Convert.ToInt32(dataGridView.CurrentRow.Cells["Id"].Value) }; var entry = db.Entry(generatorToDelete); if (entry.State == EntityState.Detached) { db.Generators.Attach(generatorToDelete); } db.Generators.Remove(generatorToDelete); Counter(false); db.SaveChanges(); ShowDataGridView(); Clear(); MessageBox.Show("Deleted successfully."); } } } }