Files
LottoProject/WindowsFormsCore/frmLottoView.cs

334 lines
9.4 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WindowsFormsCore.Domain;
using WindowsFormsCore.Operations;
namespace WindowsFormsCore
{
public enum LNum
{
x1 = 1,
x2 = 2,
x3 = 3,
x4 = 4,
x5 = 5,
x6 = 6,
x7 = 7,
x8 = 8,
x9 = 9,
x10 = 10,
x11 = 11,
x12 = 12,
x13 = 13,
x14 = 14,
x15 = 15,
x16 = 16,
x17 = 17,
x18 = 18,
x19 = 19,
x20 = 20,
x21 = 21,
x22 = 22,
x23 = 23,
x24 = 24,
x25 = 25,
x26 = 26,
x27 = 27,
x28 = 28,
x29 = 29,
x30 = 30,
x31 = 31,
x32 = 32,
x33 = 33,
x34 = 34,
x35 = 35
}
public partial class frmLottoView : Form
{
Random rnd = new CryptoRandom(DateTime.Now.DayOfYear);
private Lotto lotto;
private List<string> clicked;
private bool clearing;
private TextBox[] txtBGrp1 = new TextBox[7];
private TextBox[] txtBGrp2 = new TextBox[7];
public frmLottoView()
{
InitializeComponent();
lotto = new Lotto(rnd);
ClearChks();
for (int i = 0; i < txtBGrp1.Count(); i++)
{
txtBGrp1[i] = (TextBox)this.Controls["txtNr" + (i + 1).ToString()];
txtBGrp2[i] = (TextBox)this.Controls["txtNr2" + (i + 1).ToString()];
}
RefreshListView();
LoadListFromDB();
}
private void btnGenerate_Click(object sender, EventArgs e)
{
var ansver = lotto.RandomRad();
for (int i = 0; i < txtBGrp1.Count(); i++)
{
txtBGrp1[i].Text = ansver[i];
}
}
private void ClearInFields(TextBox[] zz)
{
foreach(var tx in zz)
{
tx.Text = "";
}
}
private string randomNum()
{
return Enum.GetName(typeof(LNum), rnd.Next((int)LNum.x1, (int)LNum.x35));
}
private void btnGenMotNr_Click(object sender, EventArgs e)
{
lblIndicator.BackColor = SystemColors.Control;
lblIndicator.Text = " ";
List<string> jmfList = new List<string>();
for (int i = 0; i < txtBGrp1.Count(); i++)
{
txtBGrp2[i].Text = string.IsNullOrEmpty(txtNr1.Text) ? "" : lotto.AntiCircularValue(int.Parse(txtBGrp1[i].Text)).ToString();
jmfList.Add(txtBGrp2[i].Text);
}
jmfList.Sort();
var prev = string.Empty;
foreach (var str in jmfList)
{
if (str == prev)
{
lblIndicator.BackColor = Color.Red;
lblIndicator.Text = str;
break;
}
prev = str;
}
}
private void btnTest_Click(object sender, EventArgs e)
{
LoadListFromDB();
//var tstIn = decimal.Parse(txtTestIn.Text);
//txtTestOut.Text = $"number for angle {tstIn} = {lotto.GetNumberByAngle(tstIn)}";
}
private void chk_CheckedChanged(object sender, EventArgs e)
{
if (!clearing)
{
var clickTxt = ((CheckBox)sender).Text;
if (clicked.Any(c => c == clickTxt))
{
clicked.Remove(clickTxt);
clicked.ToList().ForEach(x => Debug.Write($"{x},"));
Debug.WriteLine("");
}
else
{
clicked.Add(clickTxt);
}
if (clicked.Count() > 6)
{
for (int i = 0; i < 7; i++)
{
txtBGrp1[i].Text = clicked[i];
}
ClearChks();
}
}
}
private void ClearChks()
{
clearing = true;
foreach (var chk in gpbInmata.Controls)
{
if (chk.GetType() == typeof(CheckBox))
{
((CheckBox)chk).Checked = false;
}
}
clicked = new List<string>();
clearing = false;
}
private void btnClear_Click(object sender, EventArgs e)
{
ClearChks();
gpbInmata.Refresh();
}
private void Text_TextChanged(object sender, EventArgs e)
{
var n = 0;
var nochange = false;
if (!int.TryParse(((TextBox)sender).Text, out n))
{
if (nochange)
{
nochange = false;
return;
}
var lngd = ((TextBox)sender).Text.Length;
if (lngd > 1)
{
var repl = ((TextBox)sender).Text.Substring(0, lngd - 1);
((TextBox)sender).Text = repl;
((TextBox)sender).SelectionStart = lngd-1;
((TextBox)sender).SelectionLength = 0;
}
else ((TextBox)sender).Text = string.Empty;
nochange = true;
}
}
private void Text_TextChanged(object sender, KeyEventArgs e)
{
var n = 0;
if (!int.TryParse(((TextBox)sender).Text, out n))
{
var lngd = ((TextBox)sender).Text.Length;
((TextBox)sender).Text = ((TextBox)sender).Text.Substring(0, lngd - 1);
}
}
private void AddNumbersToList(TextBox[] txtBox)
{
RefreshListView();
if (txtBox.Any(tx => tx.Text.Length == 0))
{
return;
}
if (SaveGeneratedRow(txtBox))
{
AddOneRowToListView(txtBox);
}
else
{
MessageBox.Show("Rad existerar redan", "Saving Lottorow", MessageBoxButtons.OK);
}
}
private void LoadListFromDB()
{
var rows = DBRepo.ReadAllNumberRow();
if (rows.Any())
{
lvRows.Items.Clear();
}
foreach(var row in rows)
{
var txtBxArr = new [] {
row.Number0.ToString(), row.Number1.ToString(),
row.Number2.ToString(), row.Number3.ToString(),
row.Number4.ToString(), row.Number5.ToString(),
row.Number6.ToString()
};
AddOneRowToListView(txtBxArr);
}
}
private void AddOneRowToListView(string[] txtBoxArr)
{
ListViewItem lvRow = new ListViewItem(txtBoxArr[0]);
for (int i = 1; i < txtBoxArr.Length; i++)
{
lvRow.SubItems.Add(txtBoxArr[i]);
}
lvRows.Items.Add(lvRow);
}
private void AddOneRowToListView(TextBox[] txtBoxArr)
{
ListViewItem lvRow = new ListViewItem(txtBoxArr[0].Text);
for (int i = 1; i < txtBoxArr.Length; i++)
{
lvRow.SubItems.Add(txtBoxArr[i].Text);
}
lvRows.Items.Add(lvRow);
}
private void RefreshListView()
{
var colWidth = lvRows.Width / 7.5;
for (int i = 0; i < lvRows.Columns.Count; i++)
{
lvRows.Columns[i].Width = (int)Math.Round(colWidth);
}
lvRows.Refresh();
}
private bool SaveGeneratedRow(TextBox[] rowTab)
{
var row = new NumberRow();
row.Number0 = byte.Parse(rowTab[0].Text);
row.Number1 = byte.Parse(rowTab[1].Text);
row.Number2 = byte.Parse(rowTab[2].Text);
row.Number3 = byte.Parse(rowTab[3].Text);
row.Number4 = byte.Parse(rowTab[4].Text);
row.Number5 = byte.Parse(rowTab[5].Text);
row.Number6 = byte.Parse(rowTab[6].Text);
return DBRepo.SaveNumberRow(row);
}
private void btnDwn_Click(object sender, EventArgs e)
{
AddNumbersToList(txtBGrp1);
ClearInFields(txtBGrp1);
}
private void btnDown2_Click(object sender, EventArgs e)
{
AddNumbersToList(txtBGrp2);
ClearInFields(txtBGrp2);
}
private void btnlose_Click(object sender, EventArgs e)
{
this.Close();
}
private void lvRows_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
using (var sf = new StringFormat())
{
sf.Alignment = StringAlignment.Center;
using (var headerFont = new Font("Microsoft Sans Serif", 9, FontStyle.Bold))
{
e.Graphics.FillRectangle(Brushes.AliceBlue, e.Bounds);
e.Graphics.DrawString(e.Header.Text, headerFont,
Brushes.Black, e.Bounds, sf);
}
}
}
}
}