예제 #1
0
        private async void CleanDbButton_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Do you want clean DataBase?", "Comfirm", MessageBoxButtons.YesNo) !=
                DialogResult.Yes)
            {
                return;
            }
            using (QrCodesDbContext p = new QrCodesDbContext())
            {
                int count = p.QrCodes.Count();
                if (count == 0)
                {
                    return;
                }

                progressBar1.Maximum = (count - 1) / 1000 + 2;
                progressBar1.Value   = 0;
                progressBar1.Visible = true;
                panel1.Enabled       = false;
                menuStrip1.Enabled   = false;
                do
                {
                    progressBar1.Value++;
                    p.QrCodes.RemoveRange(p.QrCodes.Take(1000));
                } while (await p.SaveChangesAsync() > 0);
                progressBar1.Visible = false;
                panel1.Enabled       = true;
                menuStrip1.Enabled   = true;
            }
        }
예제 #2
0
        private void SaveAllButton_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();

            saveFileDialog.Filter = "Item|*.csv";
            saveFileDialog.Title  = "Save a Data File";

            if (saveFileDialog.ShowDialog() != DialogResult.OK)
            {
                return;
            }


            progressBar1.Value   = 0;
            progressBar1.Visible = true;
            panel1.Enabled       = false;
            menuStrip1.Enabled   = false;

            using (QrCodesDbContext p = new QrCodesDbContext())
            {
                progressBar1.Maximum = p.QrCodes.Count();
                using (StreamWriter writer = new StreamWriter(saveFileDialog.OpenFile()))
                {
                    writer.WriteLine($"Code,Date");
                    foreach (var item in p.QrCodes.OrderBy(t => t.CreatedAt))
                    {
                        writer.WriteLine($"{item.Code.ToQrCode()},{item.CreatedAt:G}");
                        progressBar1.Value++;
                    }
                }
            }
            progressBar1.Visible = false;
            panel1.Enabled       = true;
            menuStrip1.Enabled   = true;
        }
예제 #3
0
        private void GenerateNewButton_Click(object sender, EventArgs e)
        {
            int count = (int)QrCountNumber.Value;

            progressBar1.Maximum = count;
            progressBar1.Value   = 0;
            progressBar1.Visible = true;
            panel1.Enabled       = false;
            menuStrip1.Enabled   = false;
            using (QrCodesDbContext p = new QrCodesDbContext())
            {
                while (newData.Count < count)
                {
                    var temp = GenerateNewElements(Math.Min(count - newData.Count, 1000), random, newData);
                    temp.ExceptWith(p.QrCodes.Select(t => t.Code).Where(t => temp.Contains(t)));
                    newData.UnionWith(temp);
                    progressBar1.Value = newData.Count;
                }
            }
            NewQrCodesList.Items.Clear();
            foreach (var item in newData)
            {
                NewQrCodesList.Items.Add(item.ToQrCode());
            }
            panel1.Enabled                 = true;
            menuStrip1.Enabled             = true;
            progressBar1.Visible           = false;
            GenerateNewButton.Enabled      = false;
            saveToolStripMenuItem.Enabled  = true;
            SaveButton.Enabled             = true;
            cleanToolStripMenuItem.Enabled = true;
            CleanButton.Enabled            = true;
            CopyButton.Enabled             = true;
        }
예제 #4
0
 private void StatisticButton_Click(object sender, EventArgs e)
 {
     using (QrCodesDbContext p = new QrCodesDbContext())
     {
         DateTime today          = DateTime.Today;
         long     totalCount     = p.QrCodes.Count();
         long     thisMonthCount = p.QrCodes.Count(qr => qr.CreatedAt.Month == today.Month);
         long     todayCount     = p.QrCodes.Count(qr => qr.CreatedAt >= today);
         MessageBox.Show($"Total:{totalCount}\r\nThis Month:{thisMonthCount}\r\nToday:{todayCount}", "Statistic", MessageBoxButtons.OK);
     }
 }
예제 #5
0
 public async Task AddOrSkipItem(ICollection <long> batchCodes)
 {
     using (QrCodesDbContext p = new QrCodesDbContext())
     {
         var existing     = p.QrCodes.Select(qr => qr.Code).Where(t => batchCodes.Contains(t));
         var insertedData = batchCodes
                            .Except(existing)
                            .Select(t => new QrCode()
         {
             Code      = t,
             CreatedAt = DateTime.Now
         });
         p.QrCodes.AddRange(insertedData);
         await p.SaveChangesAsync();
     }
 }
예제 #6
0
        private async void SaveNewButton_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();

            saveFileDialog.Filter = "Item|*.csv";
            saveFileDialog.Title  = "Save a Data File";

            if (saveFileDialog.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            progressBar1.Maximum = newData.Count;
            progressBar1.Value   = 0;
            progressBar1.Visible = true;
            panel1.Enabled       = false;
            menuStrip1.Enabled   = false;

            using (StreamWriter writer = new StreamWriter(saveFileDialog.OpenFile()))
            {
                using (QrCodesDbContext p = new QrCodesDbContext())
                {
                    foreach (var item in newData)
                    {
                        await writer.WriteLineAsync($"{item.ToQrCode()}");

                        if (!p.QrCodes.Select(t => t.Code).Contains(item))
                        {
                            p.QrCodes.Add(
                                new QrCode()
                            {
                                Code      = item,
                                CreatedAt = DateTime.Now
                            });
                        }
                        progressBar1.Value++;
                    }
                    await p.SaveChangesAsync();
                }
            }

            progressBar1.Visible = false;
            panel1.Enabled       = true;
            menuStrip1.Enabled   = true;
        }
예제 #7
0
        private async void CopyButton_Click(object sender, EventArgs e)
        {
            string s1 = "";

            using (QrCodesDbContext p = new QrCodesDbContext())
            {
                foreach (long item in newData)
                {
                    s1 += item.ToQrCode() + "\r\n";
                    if (!p.QrCodes.Select(t => t.Code).Contains(item))
                    {
                        p.QrCodes.Add(
                            new QrCode()
                        {
                            Code      = item,
                            CreatedAt = DateTime.Now
                        });
                    }
                }
                await p.SaveChangesAsync();
            }

            Clipboard.SetText(s1);
        }