@page "/Admin/Student/Student" @inject Blazored.SessionStorage.ISessionStorageService sessionStorage @inject IJSRuntime jsRuntime @inject NavigationManager NavManager @inherits Admin.ListBase; @using System.ComponentModel.DataAnnotations @using Syncfusion.Blazor.Grids; @using Syncfusion.Blazor.Buttons; @using Syncfusion.Blazor.Spinner; @using Syncfusion.Blazor.Navigations; @using Syncfusion.Blazor.Popups; @using Syncfusion.Blazor.DropDowns @using BlazorApp.Helper @using BWPMModels;
Schüler / Berufswunsch
Klasse/Lehrer
Klasse OnChange(args, "DropDown")) TextProperty="bezeichnung" ValueProperty="id" /> Lehrer OnChange(args, "DropDown")) TextProperty="bezeichnung" ValueProperty="id" />

Schüler
SchuelerChange(args, "schuelerlist")) />

Schüler-Daten

@*
Neuer Schüler 
*@
Name
Vorname
Bemerkung
Klasse
Typ

@*
Änderungen speichern  Schüler löschen
*@

Berufswünsche

@*

InsertBeruf()) Text="Beruf zuordnen" ButtonStyle="ButtonStyle.Secondary" />
*@

@((MarkupString)berufhinweis)

Zuteilung

Berufswunsch

Zuteilung

@DialogHeader
@DialogText
@if (DialogShowYesNO == true) { } else { }
@code { public int[] ExpandItems = new int[] { 2 }; public string[] sfSchuelerID { get; set; } public string DialogHeader { get; set; } = ""; public string DialogText { get; set; } = ""; public bool DialogShowYesNO { get; set; } = true; public string berufhinweis = ""; public string klassehinweis = ""; public string klassehinweiscolor = "red"; public bool ShowDeleteConfirmation { get; set; } = false; protected ElementReference ToFocus; public string lehrerID = ""; public int hiddenschuelerid = 0; public string KlasseID = "0"; public string LehrerID = "0"; public string SchuelerklasseID = "0"; public string KlasseTypID = "0"; public string userid; public bool FieldDisabled = true; public bool DropDownEnabled = false; public List Klasse { get; set; } public List Lehrer { get; set; } public List klassentyp { get; set; } = BlazorApp.Controller.KlassentypController.GetAllAktiveData(); public List Schueler { get; set; } private Schueler _schueler { get; set; } = new BWPMModels.Schueler(); public List berufe { get; set; } = BlazorApp.Controller.BerufController.GetBerufsangebot(); public List schuelerliste = new List(); public List Schuelerklasse = new List(); public int SchuelerID; public List intKlasse = new List(); public List intLehrer = new List(); public class iKlasse { public string id { get; set; } public string bezeichnung { get; set; } } public class iLehrer { public string id { get; set; } public string bezeichnung { get; set; } } public class Schuelerlist { public int id { get; set; } public string bezeichnung { get; set; } } //-------------------------------------- //Schülerberuf / beruf //-------------------------------------- SfGrid Grid { get; set; } public List GridData { get; set; } public bool ContinuePaging = true; public bool InitialRender { get; set; } public int Value = 0; // consider that value your querystring contains public int foundrow = 0; public bool Initial { get; set; } = true; public int BerufID; private Lehrer _lehrer { get; set; } = new BWPMModels.Lehrer(); public List Lehrerdaten { get; set; } protected override async Task OnInitializedAsync() { lehrerID = await sessionStorage.GetItemAsync("LehrerID"); userid = await sessionStorage.GetItemAsync("UserID"); Klasse = BlazorApp.Controller.KlasseController.GetAllActiveData(); intKlasse.Clear(); foreach (BWPMModels.Klasse item in Klasse) { iKlasse kl = new iKlasse(); kl.id = item.ID.ToString(); kl.bezeichnung = item.bezeichnung; intKlasse.Add(kl); Schuelerklasse.Add(kl); }; KlasseID = Klasse[0].ID.ToString(); SchuelerklasseID = Klasse[0].ID.ToString(); KlasseTypID = klassentyp[0].ID.ToString(); Lehrer = BlazorApp.Controller.LehrerController.GetAllActiveData(); intLehrer.Clear(); foreach (BWPMModels.Lehrer item in Lehrer) { iLehrer ll = new iLehrer(); ll.id = item.ID.ToString(); ll.bezeichnung = item.name.ToString() + " " + item.vorname.ToString(); intLehrer.Add(ll); } LehrerID = Lehrer[0].ID.ToString(); Update_Schueler_Klasse(); } void OnChange(object value, string name) { KlasseID = value.ToString(); Update_Schueler_Klasse(); } protected override async Task OnAfterRenderAsync(bool firstRender) { } //---------------------------------------------------------- //Klassenliste / Schuelerliste //---------------------------------------------------------- public void ChangeKlasse(Syncfusion.Blazor.DropDowns.ChangeEventArgs args) { Update_Schueler_Klasse(); } public void Update_Schueler_Klasse() { UpdateSchulerliste(); pruefung_klasse(); } public void UpdateSchulerliste() { Schueler = BlazorApp.Controller.SchuelerController.GetByKlasseID(Convert.ToInt32(KlasseID)); schuelerliste.Clear(); int newschuelerid = 0; bool found = false; foreach (BWPMModels.Schueler item in Schueler) { Schuelerlist sl = new Schuelerlist(); sl.id = item.ID; if (newschuelerid == 0) { newschuelerid = sl.id; }; if (SchuelerID == sl.id) { found = true; } sl.bezeichnung = item.name + " " + item.vorname; schuelerliste.Add(sl); }; if (found != true) { FieldDisabled = true; DropDownEnabled = false; SchuelerID = -1; SchuelerID = newschuelerid; if (schuelerliste.Count > 0) { SchuelerSelected(); } } pruefung_klasse(); } private void SchuelerChange(object value, string name) { var str = value is IEnumerable ? string.Join(", ", (IEnumerable)value) : value; SchuelerSelected(); } private void SchuelerSelected() { Schueler = BlazorApp.Controller.SchuelerController.GetByID(Convert.ToInt32(SchuelerID)); _schueler = Schueler.First(); SchuelerklasseID = _schueler.klasseID.ToString(); KlasseTypID = _schueler.klassemtypID.ToString(); FieldDisabled = false; DropDownEnabled = true; update_griddata(); pruefung(); } //---------------------------------------------------------- //Schüler-Formular //---------------------------------------------------------- public void Submit() { BlazorApp.Controller.SchuelerController.PUT(_schueler); } public void InvalidSubmit() { } private void SaveClick() { Schueler _tmpschueler = new BWPMModels.Schueler(); _tmpschueler = BlazorApp.Controller.SchuelerController.GetByID(_schueler.ID).First(); _tmpschueler.name = _schueler.name; _tmpschueler.vorname = _schueler.vorname; _tmpschueler.bemerkung = _schueler.bemerkung; _tmpschueler.klasseID = Convert.ToInt32(SchuelerklasseID); _tmpschueler.klassemtypID = Convert.ToInt32(KlasseTypID); BlazorApp.Controller.SchuelerController.PUT(_tmpschueler); UpdateSchulerliste(); } private void NewClick() { int schuelerid = 0; BWPMModels.Schueler schuelerdata = new Schueler(); schuelerdata.aktiv = true; schuelerdata.erstellt_am = DateTime.Now; schuelerdata.mutiert_am = DateTime.Now; schuelerdata.mutierer = userid; schuelerdata.name = "Neuer Schüler"; schuelerdata.vorname = ""; schuelerdata.bemerkung = ""; schuelerdata.klasseID = Convert.ToInt32(KlasseID); schuelerdata.klassemtypID = Convert.ToInt32(KlasseTypID); schuelerid = BlazorApp.Controller.SchuelerController.POST(schuelerdata); FieldDisabled = false; DropDownEnabled = true; UpdateSchulerliste(); SchuelerID = schuelerid; SchuelerSelected(); jsRuntime.InvokeVoidAsync("SetFocusToElement", ToFocus); } private void DeleteClick() { DialogHeader = "Löschbestätigung"; DialogText = "Schüler '" + _schueler.name + ' ' + _schueler.vorname + "' wirklich löschen?'"; DialogShowYesNO = true; ShowDeleteConfirmation = true; } private void DeleteConfirmed() { _schueler.aktiv = false; _schueler.mutierer = userid; _schueler.mutiert_am = DateTime.Now; BlazorApp.Controller.SchuelerController.PUT(_schueler); BlazorApp.Controller.SchuelerBerufController.DeleteBerufswunsch(_schueler.ID, userid); ShowDeleteConfirmation = false; UpdateSchulerliste(); } private void AbortDelete() { ShowDeleteConfirmation = false; } private void DialogConfirmed() { ShowDeleteConfirmation = false; } //-------------------------------------- //SchülerBeruf / Beruf //-------------------------------------- private void InsertBeruf() { if (SchuelerID == 0) { DialogHeader = "Daten unvollständig"; DialogText = "Bitte zuerst einen Schüler auswählen!"; DialogShowYesNO = false; ShowDeleteConfirmation = true; return; } if (BerufID == 0) { DialogHeader = "Daten unvollständig"; DialogText = "Bitte zuerst einen Beruf auswählen!"; DialogShowYesNO = false; ShowDeleteConfirmation = true; return; } ShowDeleteConfirmation = false; BWPMModels.SchuelerBeruf sberuf = new BWPMModels.SchuelerBeruf(); sberuf.aktiv = true; sberuf.bemerkung = ""; sberuf.berufID = BerufID; sberuf.erstellt_am = DateTime.Now; sberuf.mutiert_am = DateTime.Now; sberuf.mutierer = userid; sberuf.schuelerID = SchuelerID; int prio = BlazorApp.Controller.SchuelerBerufController.Get_Prio(SchuelerID); sberuf.prioritaet = prio + 1; BlazorApp.Controller.SchuelerBerufController.POST(sberuf); update_griddata(); pruefung(); } private void update_griddata() { GridData = BlazorApp.Controller.SchuelerBerufController.GetBySchuelerID(SchuelerID); } private async Task OnBeginHandler(ActionEventArgs Args) { if (Args.RequestType == Syncfusion.Blazor.Grids.Action.Save) { if (Args.Action == "Add") { Args.Data.erstellt_am = DateTime.Now; Args.Data.mutierer = userid; Args.Data.mutiert_am = DateTime.Now; Args.Data.aktiv = true; Args.Data.ID = BlazorApp.Controller.SchuelerBerufController.POST(Args.Data); Value = Args.Data.ID; pruefung(); } else { Args.Data.mutierer = userid.ToString(); Args.Data.mutiert_am = DateTime.Now; BlazorApp.Controller.SchuelerBerufController.PUT(Args.Data); pruefung(); } } if (Args.RequestType == Syncfusion.Blazor.Grids.Action.Delete) { Args.Data.mutierer = userid.ToString(); Args.Data.mutiert_am = DateTime.Now; Args.Data.aktiv = false; BlazorApp.Controller.SchuelerBerufController.PUT(Args.Data); pruefung(); } } public async Task OnCompletedHandler(ActionEventArgs Args) { if (Args.RequestType == Syncfusion.Blazor.Grids.Action.Save) { await Grid.SetRowData(Args.Data.ID, Args.Data); double xx = 0; Value = Args.Data.ID; xx = await DataHandler(); await Grid.SelectRow(xx); } } public async void RowDataBoundHandler(BeforeDataBoundArgs args) { if (!Initial) { } Initial = false; } public async Task DataHandler() { var PageCount = (GridData.Count / Grid.PageSettings.PageSize) + 1; ContinuePaging = true; var CurrentPage = 1; Grid.Refresh(); await Grid.GoToPage(1); for (int i = 1; i <= PageCount; i++) { List Rows = await Grid.GetCurrentViewRecords(); // returns the current view data for (int j = 0; j < Grid.PageSettings.PageSize; j++) { if (j < Rows.Count && Rows[j].ID == Value) { foundrow = j; ContinuePaging = false; break; } } if (ContinuePaging) { if (i >= PageCount) { i = 0; } await Grid.GoToPage(i + 1); } else { return foundrow; } } return foundrow; } public void pruefung() { berufhinweis = ""; int Anzahl_Berufe = 0; try { dbhelper dbh = new dbhelper(); if (BlazorApp.Controller.SchuelerBerufController.Get_Anzahl(SchuelerID) < Convert.ToInt32(dbh.Get_Option(4))) { berufhinweis += "\r\n- es sollten 3 Berufswünsche ausgewählt werden
"; } if (BlazorApp.Controller.SchuelerBerufController.Has_Prio1(SchuelerID) == false) { berufhinweis += "\r\n- Es fehlt ein Berufswunsch mit Priorität 1"; } } catch { }; } public void pruefung_klasse() { klassehinweis = ""; dbhelper dbh = new dbhelper(); dbh.add_sp_param("Param1", KlasseID.ToString()); dbh.Get_Tabledata("sp_chk_klasse", true, false); if (dbh.dsdaten.Tables[0].Rows[0][0].ToString() != dbh.dsdaten.Tables[0].Rows[0][1].ToString()) { klassehinweis += "\r\n- " + dbh.dsdaten.Tables[0].Rows[0][1].ToString() + " von " + dbh.dsdaten.Tables[0].Rows[0][0].ToString() + " Schüler erfasst"; klassehinweiscolor = "red"; } else { klassehinweis += "\r\n- " + dbh.dsdaten.Tables[0].Rows[0][1].ToString() + " von " + dbh.dsdaten.Tables[0].Rows[0][0].ToString() + " Schüler erfasst"; klassehinweiscolor = "green"; } } public async Task SchuelerClick(RecordClickEventArgs args) { SchuelerID = args.RowData.id; SchuelerSelected(); } }