예제 #1
0
        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();
            }
        }
예제 #2
0
        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.");
            }
        }
예제 #3
0
        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.");
                    }
                }
            }
        }