/// <summary> /// När en rad markeras så hämtar den aktuella värden från raden. Värdena används sedan till att registrera en deltagare som närvarande /// eller inte i metoden andraNarvaro. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void dgvRegistreraNarvaro_CellClick(object sender, DataGridViewCellEventArgs e) { if (dgvRegistreraNarvaro.SelectedCells.Count > 0) { narvarolista currentObject = (narvarolista)dgvRegistreraNarvaro.CurrentRow.DataBoundItem; narvaro = currentObject.narvaro; personnummer = currentObject.Personnummer; grupp = currentObject.gruppnamn; deltagit = currentObject.deltagit.ToString(); } if (deltagit == "False") { deltagit = "1"; } else { deltagit = "0"; } }
/// <summary> /// Metod som kallar på sökmetoden från postgres-klassen. Söker efter närvarande och lägger till checkboxar i nya kolumner. /// </summary> private void sokNarvaro() { List <string> gruppLista = new List <string>(); foreach (traningsgrupp selectedItem in lbxGrupper.SelectedItems) { gruppLista.Add(selectedItem.namn); } DataTable svarNarvaro; vilkaParam(); postgres sokning = new postgres(); sokning.grupp = gruppLista; sokning.startDatum = dtpFran.Value; sokning.slutDatum = dtpSlutDatum.Value; svarNarvaro = sokning.sqlFråga(sokning.vilkenSokning(sokDatInterv, sokGrupp, false), "narvaro"); // hämtar sökning efter närvaro. if (svarNarvaro.Columns[0].ColumnName.Equals("error")) { tbSvar.Text = svarNarvaro.Rows[0][1].ToString(); } else { List <narvarolista> nyNarvarolista = new List <narvarolista>(); for (int i = 0; i < svarNarvaro.Rows.Count; i++) { narvarolistaRatt = new narvarolista() { Förnamn = svarNarvaro.Rows[i]["fnamn"].ToString(), Efternamn = svarNarvaro.Rows[i]["enamn"].ToString(), Personnummer = svarNarvaro.Rows[i]["pnr"].ToString(), narvaro = svarNarvaro.Rows[i]["narvarolista_id"].ToString(), gruppnamn = svarNarvaro.Rows[i]["namn"].ToString(), medlemId = svarNarvaro.Rows[i]["medlem_id"].ToString(), deltagit = (bool)svarNarvaro.Rows[i]["deltagit"] }; nyNarvarolista.Add(narvarolistaRatt); tbSvar.Text = sokOk; } dgvRegistreraNarvaro.DataSource = nyNarvarolista; for (int i = 3; i < 10; i++) { dgvRegistreraNarvaro.Columns[i].Visible = false; } svarNarvaro = sokning.sqlFråga(sokning.vilkenSokning(sokDatInterv, sokGrupp, false), "jamfor"); //Sökning som hämtar en lista att jämföra med. if (svarNarvaro.Columns[0].ColumnName.Equals("error")) { tbSvar.Text = svarNarvaro.Rows[0][1].ToString(); } else { jamforLista = new List <narvarolista>(); for (int i = 0; i < svarNarvaro.Rows.Count; i++) { narvarolista jamforning = new narvarolista() { Förnamn = svarNarvaro.Rows[i]["fnamn"].ToString(), Efternamn = svarNarvaro.Rows[i]["enamn"].ToString(), Personnummer = svarNarvaro.Rows[i]["pnr"].ToString(), narvaro = svarNarvaro.Rows[i]["narvarolista_id"].ToString(), gruppnamn = svarNarvaro.Rows[i]["namn"].ToString(), deltagit = (bool)svarNarvaro.Rows[i]["deltagit"], datum = svarNarvaro.Rows[i]["datum"].ToString(), medlemId = svarNarvaro.Rows[i]["medlem_id"].ToString(), start = svarNarvaro.Rows[i]["starttid"].ToString(), s**t = svarNarvaro.Rows[i]["sluttid"].ToString() }; jamforLista.Add(jamforning); } } svarNarvaro = sokning.sqlFråga(sokning.vilkenSokning(sokDatInterv, sokGrupp, false), "unikagrupper"); //Sökning som hämtar unika grupper. if (svarNarvaro.Columns[0].ColumnName.Equals("error")) { tbSvar.Text = svarNarvaro.Rows[0][1].ToString(); } else { List <narvarolista> unikaGrupperLista = new List <narvarolista>(); for (int i = 0; i < svarNarvaro.Rows.Count; i++) { narvarolista unikaGrupper = new narvarolista() { narvaro = svarNarvaro.Rows[i]["narvarolista_id"].ToString(), gruppnamn = svarNarvaro.Rows[i]["namn"].ToString(), datum = svarNarvaro.Rows[i]["datum"].ToString(), start = svarNarvaro.Rows[i]["starttid"].ToString(), s**t = svarNarvaro.Rows[i]["sluttid"].ToString(), }; unikaGrupperLista.Add(unikaGrupper); } int kolumn = 10; List <narvarolista> _narvarolistan; //Här under läggs nya rutor till för varje tillfälle. foreach (narvarolista item in unikaGrupperLista) { kolNamn = item.gruppnamn + "\n" + "Datum: " + Convert.ToDateTime(item.datum).ToShortDateString() + "\nTid: " + Convert.ToDateTime(item.start).ToShortTimeString() + "-" + Convert.ToDateTime(item.s**t).ToShortTimeString(); DataGridViewCheckBoxColumn checkboxColumn = new DataGridViewCheckBoxColumn(); checkboxColumn.Name = kolNamn; checkboxColumn.DataPropertyName = "nyaKol"; dgvRegistreraNarvaro.Columns.Add(checkboxColumn); //lägger till checkboxar i de nya kolumnerna. _narvarolistan = new List <narvarolista>(); int index = 0; _narvarolistan.Clear(); //Här börjar jämförelsen mellan de olika listorna. foreach (narvarolista narvarande in nyNarvarolista) { foreach (narvarolista jamfor in jamforLista) { if (narvarande.gruppnamn == item.gruppnamn && narvarande.narvaro == item.narvaro) { if (narvarande.medlemId == jamfor.medlemId && item.narvaro == jamfor.narvaro && jamfor.deltagit == true && item.gruppnamn == jamfor.gruppnamn) { bool test2 = _narvarolistan.Contains(narvarande); if (!test2) //Om testet går igenom får aktuell kolumn en checkbox som är true. { dgvRegistreraNarvaro.Rows[index].Cells[kolumn].Value = true; _narvarolistan.Add(narvarande); break; } } //om inte får den ett värde som är false. else if (narvarande.medlemId == jamfor.medlemId && item.narvaro == jamfor.narvaro && jamfor.deltagit == false && item.gruppnamn == jamfor.gruppnamn) { dgvRegistreraNarvaro.Rows[index].Cells[kolumn].Value = false; } } else // om testet inte gick igenom får cellen även en ny sorts checkbox. { // checkboxarna simuleras som disablade för att illustrera att medlemmar ej tillhör en viss grupp. DataGridViewCell cell = dgvRegistreraNarvaro.Rows[index].Cells[kolumn]; DataGridViewCheckBoxCell chkCell = cell as DataGridViewCheckBoxCell; chkCell.Value = false; chkCell.FlatStyle = FlatStyle.Flat; chkCell.Style.ForeColor = Color.White; cell.ReadOnly = true; } } index++; } kolumn++; } } } }
/// <summary> /// Sökning görs efter de individer som tillhör /// en viss grupp. (Stöd för Multiselect) /// </summary> private void sokNarvaro() { DataTable sokningResultat; vilkaParam(); // sökparameterkontroll string soktyp = "narvaro"; List <string> gruppLista = new List <string>(); foreach (traningsgrupp selectedItem in lbxGrupper.SelectedItems) { gruppLista.Add(selectedItem.namn.ToString()); } postgres s = startaPostgres(); s.grupp = gruppLista; sokningResultat = s.sqlFråga(s.vilkenSokning(sokDatInterv, sokGrupp, sokLedare), soktyp); if (sokningResultat.Columns[0].ColumnName.Equals("error")) { _tbFeedback.Text = sokningResultat.Rows[0][1].ToString(); } else { List <narvarolista> narvarolistan = new List <narvarolista>(); for (int y = 0; y < sokningResultat.Rows.Count; y++) { narvarolista narvaro = new narvarolista(); narvaro.Förnamn = sokningResultat.Rows[y]["fnamn"].ToString(); narvaro.Efternamn = sokningResultat.Rows[y]["enamn"].ToString(); narvaro.Personnummer = sokningResultat.Rows[y]["pnr"].ToString(); narvaro.medlemId = sokningResultat.Rows[y]["medlem_id"].ToString(); narvarolistan.Add(narvaro); } _dgvRapport.DataSource = narvarolistan; _dgvRapport.ReadOnly = true; int hej = _dgvRapport.Columns.Count - 1; //for (int i = 2; i < 10; i++) //{ // dgvRapport.Columns[i].Visible = false; //} for (int i = hej; i > 2; i--) { _dgvRapport.Columns.RemoveAt(i); } //ny sökning för att ta fram en jämförelselista mot narvarolista soktyp = "jamfor"; sokningResultat = s.sqlFråga(s.vilkenSokning(sokDatInterv, sokGrupp, sokLedare), soktyp); if (sokningResultat.Columns[0].ColumnName.Equals("error")) { _tbFeedback.Text = sokningResultat.Rows[0][1].ToString(); } else { jamforLista = new List <narvarolista>(); for (int y = 0; y < sokningResultat.Rows.Count; y++) { narvarolista jamforning = new narvarolista(); jamforning.Förnamn = sokningResultat.Rows[y]["fnamn"].ToString(); jamforning.Efternamn = sokningResultat.Rows[y]["enamn"].ToString(); jamforning.Personnummer = sokningResultat.Rows[y]["pnr"].ToString(); jamforning.medlemId = sokningResultat.Rows[y]["medlem_id"].ToString(); jamforning.narvaro = sokningResultat.Rows[y]["narvarolista_id"].ToString(); jamforning.gruppnamn = sokningResultat.Rows[y]["namn"].ToString(); jamforning.datum = sokningResultat.Rows[y]["datum"].ToString(); jamforning.start = sokningResultat.Rows[y]["starttid"].ToString(); jamforning.s**t = sokningResultat.Rows[y]["sluttid"].ToString(); jamforning.deltagit = (bool)sokningResultat.Rows[y]["deltagit"]; jamforLista.Add(jamforning); } } //ny sökning för att ta fram unika grupper soktyp = "unikagrupper"; sokningResultat = s.sqlFråga(s.vilkenSokning(sokDatInterv, sokGrupp, sokLedare), soktyp); if (sokningResultat.Columns[0].ColumnName.Equals("error")) { _tbFeedback.Text = sokningResultat.Rows[0][1].ToString(); } else { List <narvarolista> unikaGrupperLista = new List <narvarolista>(); for (int y = 0; y < sokningResultat.Rows.Count; y++) { narvarolista unikaGrupper = new narvarolista(); unikaGrupper.narvaro = sokningResultat.Rows[y]["narvarolista_id"].ToString(); unikaGrupper.gruppnamn = sokningResultat.Rows[y]["namn"].ToString(); unikaGrupper.datum = sokningResultat.Rows[y]["datum"].ToString(); unikaGrupper.start = sokningResultat.Rows[y]["starttid"].ToString(); unikaGrupper.s**t = sokningResultat.Rows[y]["sluttid"].ToString(); unikaGrupperLista.Add(unikaGrupper); } string kolNamn = ""; kolumn = 3; summa = 0; summering.Clear(); int antalDeltagare = 0; // lägger till kolumner för träningstillfälle List <narvarolista> _narvarolistan; foreach (narvarolista item in unikaGrupperLista) { kolNamn = " " + item.gruppnamn + "\n" + " Datum: " + Convert.ToDateTime(item.datum).ToShortDateString() + "\n Tid: " + Convert.ToDateTime(item.start).ToShortTimeString() + "-" + Convert.ToDateTime(item.s**t).ToShortTimeString(); _dgvRapport.Columns.Add(kolNamn, kolNamn); _narvarolistan = new List <narvarolista>(); int index = 0; antalDeltagare = 0; _narvarolistan.Clear(); foreach (narvarolista narvarande in narvarolistan) { foreach (narvarolista jamfor in jamforLista) { if (narvarande.medlemId == jamfor.medlemId && item.narvaro == jamfor.narvaro && jamfor.deltagit == true && item.gruppnamn == jamfor.gruppnamn) { bool test2 = _narvarolistan.Contains(narvarande); if (!test2) { _dgvRapport.Rows[index].Cells[kolumn].Value = "x"; _narvarolistan.Add(narvarande); antalDeltagare++; break; } } } index++; } kolumn++; skickaTillSummering(kolNamn, antalDeltagare, false); } skickaTillSummering(kolNamn, antalDeltagare, true); } _tbFeedback.Text = sokOk; } }