Update vor Clone

master
Stefan Hutter 4 years ago
parent 70148e63ce
commit c05d1ac4e2

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.31515.178
# Visual Studio Version 17
VisualStudioVersion = 17.1.31911.260
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BWPMService", "CoreWebAPI1\BWPMService.csproj", "{8BE1B283-AF68-4A4B-806C-F4D69434143B}"
EndProject

@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net5.0</TargetFramework>
<UserSecretsId>b42c85b7-be12-4985-a19a-d4d5d80d37fb</UserSecretsId>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<AssemblyName>BlazorApp</AssemblyName>
@ -23,8 +23,8 @@
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.14" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.5" />
<PackageReference Include="Radzen.Blazor" Version="3.6.7" />
<PackageReference Include="Syncfusion.Blazor" Version="19.2.0.51" />
<PackageReference Include="Syncfusion.Blazor.Themes" Version="19.2.0.51" />
<PackageReference Include="Syncfusion.Blazor" Version="19.3.0.43" />
<PackageReference Include="Syncfusion.Blazor.Themes" Version="19.3.0.43" />
<PackageReference Include="System.Net.Http" Version="4.3.4" />
<PackageReference Include="System.Net.Http.Json" Version="5.0.0" />
</ItemGroup>

@ -15,4 +15,9 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DebuggerFlavor>ProjectDebugger</DebuggerFlavor>
</PropertyGroup>
<ItemGroup>
<EmbeddedResource Update="Resources\SfResources.de.resx">
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
</Project>

@ -26,6 +26,13 @@ namespace BlazorApp.Controller
dbh.Get_Tabledata("Select * from AspNetRoles where id=" + ID.ToString(), false, true);
return dbh.ConvertDataTable<AspNetRoles>(dbh.dsdaten.Tables[0]);
}
public static List<AspNetRoles> GetByName(string Name)
{
dbhelper dbh = new dbhelper();
dbh.Get_Tabledata("Select * from AspNetRoles where name='"+Name+"'", false, true);
return dbh.ConvertDataTable<AspNetRoles>(dbh.dsdaten.Tables[0]);
}
public static List<AspNetRoles> GetLast()
{

@ -50,7 +50,7 @@ namespace BlazorApp.Controller
public static void POST(AspNetUserRoles AspNetUserRolesdata)
{
dbhelper dbh = new dbhelper();
dbh.Get_Tabeldata_for_Update("Select top 1 * from [AspNetUserRoles] where id=-1", false, true);
dbh.Get_Tabeldata_for_Update("Select top 1 * from [AspNetUserRoles] where userid='-1'", false, true);
DataRow dr = dbh.dsdaten.Tables[0].NewRow();
AspNetUserRolesdata.GetType().GetProperties().ToList().ForEach(f =>
{

@ -27,6 +27,18 @@ namespace BlazorApp.Controller
return dbh.ConvertDataTable<AspNetUsers>(dbh.dsdaten.Tables[0]);
}
public static List<AspNetUsers> GetByUserName(string UserName)
{
dbhelper dbh = new dbhelper();
dbh.Get_Tabledata("Select * from AspNetUsers where UserName='" + UserName+"'", false, true);
return dbh.ConvertDataTable<AspNetUsers>(dbh.dsdaten.Tables[0]);
}
public static List<AspNetUsers> GetByEMail(string EMail)
{
dbhelper dbh = new dbhelper();
dbh.Get_Tabledata("Select * from AspNetUsers where EMail='" + EMail + "'", false, true);
return dbh.ConvertDataTable<AspNetUsers>(dbh.dsdaten.Tables[0]);
}
public static List<AspNetUsers> GetLast()
{
dbhelper dbh = new dbhelper();
@ -50,7 +62,7 @@ namespace BlazorApp.Controller
public static void POST(AspNetUsers AspNetUsersdata)
{
dbhelper dbh = new dbhelper();
dbh.Get_Tabeldata_for_Update("Select top 1 * from [AspNetUsers] where id=-1", false, true);
dbh.Get_Tabeldata_for_Update("Select top 1 * from [AspNetUsers] where id='-1'", false, true);
DataRow dr = dbh.dsdaten.Tables[0].NewRow();
AspNetUsersdata.GetType().GetProperties().ToList().ForEach(f =>
{
@ -59,7 +71,6 @@ namespace BlazorApp.Controller
if (f.PropertyType == typeof(DateTime))
{
dr[f.Name] = (DateTime)f.GetValue(AspNetUsersdata, null);
}
else
{
@ -68,6 +79,7 @@ namespace BlazorApp.Controller
}
catch (Exception ex) { string s = ex.Message; }
});
dbh.dsdaten.Tables[0].Rows.Add(dr);
dbh.Update_Tabeldata();

@ -30,7 +30,7 @@ namespace BlazorApp.Controller
public static List<SchuelerBeruf> GetBySchuelerID(int ID)
{
dbhelper dbh = new dbhelper();
dbh.Get_Tabledata("Select * from SchuelerBeruf where aktiv=1 and schuelerid=" + ID.ToString(), false, true);
dbh.Get_Tabledata("Select * from SchuelerBeruf where aktiv=1 and schuelerid=" + ID.ToString()+" order by prioritaet asc", false, true);
return dbh.ConvertDataTable<SchuelerBeruf>(dbh.dsdaten.Tables[0]);
}
public static List<SchuelerBeruf> GetLast()

@ -20,13 +20,25 @@ namespace BlazorApp.Controller
return dbh.ConvertDataTable<Lehrer>(dbh.dsdaten.Tables[0]);
}
public static List<Lehrer> GetAllActiveData()
{
dbhelper dbh = new dbhelper();
dbh.Get_Tabledata("Select * from Lehrer where aktiv=1", false, true);
return dbh.ConvertDataTable<Lehrer>(dbh.dsdaten.Tables[0]);
}
public static List<Lehrer> GetByID(int ID)
{
dbhelper dbh = new dbhelper();
dbh.Get_Tabledata("Select * from Lehrer where id=" + ID.ToString(), false, true);
return dbh.ConvertDataTable<Lehrer>(dbh.dsdaten.Tables[0]);
}
public static List<Lehrer> GetByEMail(string EMail)
{
dbhelper dbh = new dbhelper();
dbh.Get_Tabledata("Select * from Lehrer where aktiv=1 and EMail='" + EMail+"'", false, true);
return dbh.ConvertDataTable<Lehrer>(dbh.dsdaten.Tables[0]);
}
public static List<Lehrer> GetByUserID(string UserID)
{
dbhelper dbh = new dbhelper();

@ -19,6 +19,16 @@ namespace BlazorApp.Controller
}
public static List<User> GetByEmail()
{
Helper.HttpClientHelper httpcli = new Helper.HttpClientHelper();
httpcli.CallService("user", "", "GET", null);
return JsonConvert.DeserializeObject<List<User>>(httpcli.Results.daten);
}
public static void savedata( User userdata)
{
Helper.HttpClientHelper httpcli = new Helper.HttpClientHelper();
@ -26,7 +36,13 @@ namespace BlazorApp.Controller
}
public static void Insertdata(User userdata)
{
Helper.HttpClientHelper httpcli = new Helper.HttpClientHelper();
httpcli.CallService("user", userdata.ID.ToString(), "POST", userdata);
}
}
}

@ -63,6 +63,9 @@ namespace BlazorApp
{ Name = "Dashboard", Path = "/Admin/Dashboard", Icon = "dashboard" },
new MenuItem()
{ Name = "Firmen", Path = "/Admin/Company/Company", Icon = "account_balance" },
new MenuItem()
{ Name = "Lehrer", Path = "/Admin/Teacher/Teacher", Icon = "face" },
new MenuItem()
{ Name = "Schüler", Path = "/Admin/Student/Student", Icon = "accessibility" },
new MenuItem()
@ -83,7 +86,7 @@ namespace BlazorApp
new MenuItem() {Name="Berufe",Path = "Admin/Beruf/BerufList"},
new MenuItem() {Name="Zeiten",Path = "Admin/Zeiten/ZeitenList"},
new MenuItem() {Name="Schulhaus",Path = "Admin/Schulhaus/Schulhauslist"},
new MenuItem() {Name="Lehrer",Path = "Admin/Lehrer"},
new MenuItem() {Name="Lehrer",Path = "Admin/Teacher/Teacher"},
new MenuItem() {Name="Klassen",Path = "Admin/Klassen"},
new MenuItem() {Name="Klassentyp",Path = "Admin/Klassentyp/Klassentyplist"},
new MenuItem() {Name="Zugehörigkeit",Path = "Admin/Zugehörigkeit"},

@ -0,0 +1,54 @@
using System;
using System.Globalization;
using System.Text.RegularExpressions;
namespace BlazorApp.Helper
{
public class Utils
{
public bool IsValidEmail(string email)
{
//return false;
try
{
// Normalize the domain
email = Regex.Replace(email, @"(@)(.+)$", DomainMapper,
RegexOptions.None, TimeSpan.FromMilliseconds(200));
// Examines the domain part of the email and normalizes it.
string DomainMapper(Match match)
{
// Use IdnMapping class to convert Unicode domain names.
var idn = new IdnMapping();
// Pull out and process domain name (throws ArgumentException on invalid)
string domainName = idn.GetAscii(match.Groups[2].Value);
return match.Groups[1].Value + domainName;
}
}
catch (RegexMatchTimeoutException e)
{
return false;
}
catch (ArgumentException e)
{
return false;
}
try
{
return Regex.IsMatch(email,
@"^[^@\s]+@[^@\s]+\.[^@\s]+$",
RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(250));
}
catch (RegexMatchTimeoutException)
{
return false;
}
}
}
}

@ -15,12 +15,12 @@
@using BlazorApp.Controller;
<h1>AspNetUserRolle</h1>
<h1>BenutzerListe</h1>
<div class="col-lg-12 control-section">
<div class="content-wrapper">
<div class="row">
<SfGrid DataSource="@GridData" @ref="Grid" AllowPaging="true" AllowSelection="true" AllowSorting="true" Toolbar="@(new List<string>() { "Add", "Edit", "Update", "Cancel", "Passwort ändern" })">
<SfGrid DataSource="@GridData" @ref="Grid" AllowPaging="true" AllowSelection="true" AllowSorting="true" Toolbar="@(new List<string>() { "Edit", "Update", "Cancel", "Passwort ändern","Benutzer erstellen" })">
<GridPageSettings PageCount="5" PageSizes="true"></GridPageSettings>
<GridEditSettings AllowAdding="false" AllowDeleting="false" AllowEditing="true" Mode="EditMode.Normal"></GridEditSettings>
<GridEvents RowSelected="GetSelectedRecords" OnActionBegin="OnBeginHandler" OnActionComplete="OnCompletedHandler" TValue="BWPMModels.AspNetUserRolle" OnToolbarClick="ToolBarClickHandler" OnDataBound="RowDataBoundHandler"></GridEvents>
@ -86,14 +86,53 @@
<DialogButton Content="Abbruch" OnClick="@CloseDialog" />
</DialogButtons>
</SfDialog>
<SfDialog Width="400px" IsModal="true" @bind-Visible="@NewUserIsVisible">
<DialogEvents OnOverlayClick="@OnOverlayclick">
</DialogEvents>
<DialogTemplates>
<Header>Neuer Benutzer erstellen</Header>
<Content>
<label style="color:red">@ErrorMsg</label><br />
<SfRadioButton Label="Administrator" Name="options" Value="Administrators" @bind-Checked="stringChecked"></SfRadioButton>&nbsp;
<SfRadioButton Label="Firma" Name="options" Value="Firma" @bind-Checked="stringChecked"></SfRadioButton>&nbsp;
<SfRadioButton Label="Lehrer" Name="options" Value="Lehrer" @bind-Checked="stringChecked"></SfRadioButton><BR /><BR />
<label>
E-Mail (Benutzername):
<input type="email" @bind-value="newusername" id="username" name="Required" class="e-input">
Passwort
<input type="password" @bind-value="newpassword" id="password" name="Required" class="e-input">
Passwort-Bestätigung
<input type="password" @bind-value="newpassword1" id="password1" name="Required" class="e-input">
</label>
</Content>
</DialogTemplates>
<DialogButtons>
<DialogButton Content="OK" IsPrimary="true" OnClick="@SaveNewUser" />
<DialogButton Content="Abbruch" OnClick="@CloseDialog" />
</DialogButtons>
</SfDialog>
@code{
private bool IsVisible { get; set; } = false;
private bool NewUserIsVisible { get; set; } = false;
private string Gridid = "";
public List<BWPMModels.AspNetUserRolle> Temp { get; set; }
public List<BWPMModels.AspNetUsers> TempUser { get; set; }
public List<BWPMModels.AspNetRoles> TmpRolle { get; set; }
public List<BWPMModels.AspNetUserRoles> TmpUserRoles { get; set; }
private string newpassword { get; set; } = "";
private string newusername { get; set; } = "";
private string newpassword1 { get; set; } = "";
private string ErrorMsg { get; set; } = "";
private string Username { get; set; } = "";
private string stringChecked { get; set; } = "Administrators";
SfGrid<BWPMModels.AspNetUserRolle> Grid { get; set; }
@ -101,14 +140,28 @@
{
this.IsVisible = false;
}
private void ShowDialog()
private void ShowDialog(int dialognr)
{
this.ErrorMsg = "";
this.IsVisible = true; ;
switch (dialognr)
{
case 1:
this.IsVisible = true;
break;
case 2:
this.NewUserIsVisible = true;
break;
default:
break;
}
}
private void CloseDialog()
{
this.IsVisible = false; ;
this.IsVisible = false;
this.NewUserIsVisible = false;
}
private void SavePasswort()
{
@ -133,6 +186,73 @@
}
}
private void SaveNewUser()
{
ErrorMsg = "";
if (newusername.Trim()=="")
{
ErrorMsg = "Benutzername fehlt.";
return;
}
if ((newpassword.Trim()=="") && (newpassword1.Trim()=="" ))
{
ErrorMsg = "Passwort fehlt.";
return;
}
if(newpassword != newpassword1)
{
ErrorMsg = "Passworte stimmen nicht überein";
return;
}
BlazorApp.Helper.Utils utl = new BlazorApp.Helper.Utils();
if (utl.IsValidEmail(newusername) !=true){
ErrorMsg = "Benutzername ist ungültig (E-Mail Adresse)";
return;
}
TempUser= BlazorApp.Controller.AspNetUsersController.GetByEMail(newusername);
if (TempUser.Count !=0)
{
ErrorMsg = "Benutzer bereits vorhanden.";
return;
}
BWPMModels.AspNetUsers usr = new BWPMModels.AspNetUsers();
usr.UserName=newusername;
usr.NormalizedUserName=newusername.ToUpper();
usr.NormalizedEmail = newusername.ToUpper();
usr.Email=newusername;
usr.EmailConfirmed=true;
Guid g = Guid.NewGuid();
usr.Id = g.ToString();
IdentityUser objUser = new IdentityUser();
objUser.Id = g.ToString();
var password = _UserManager.PasswordHasher.HashPassword(objUser,newpassword);
usr.PasswordHash=password;
usr.SecurityStamp = Guid.NewGuid().ToString();
usr.ConcurrencyStamp = Guid.NewGuid().ToString();
usr.PhoneNumber="";
usr.PhoneNumberConfirmed=false;
usr.TwoFactorEnabled = false;
usr.LockoutEnabled=true;
usr.AccessFailedCount = 0;
BlazorApp.Controller.AspNetUsersController.POST(usr);
TmpRolle = BlazorApp.Controller.AspNetRolesController.GetByName(stringChecked);
var _tmprolle = new BWPMModels.AspNetRoles();
_tmprolle = TmpRolle.First<BWPMModels.AspNetRoles>();
var usrrole = new BWPMModels.AspNetUserRoles();
usrrole.UserId = g.ToString();
usrrole.RoleId = _tmprolle.Id;
BlazorApp.Controller.AspNetUserRolesController.POST(usrrole);
this.NewUserIsVisible=false;
Grid.Refresh();
}
public async Task ToolBarClickHandler(Syncfusion.Blazor.Navigations.ClickEventArgs args)
{
if (args.Item.Text == "Passwort ändern")
@ -143,9 +263,13 @@
{
Username = temp[0].UserName;
Gridid = temp[0].Id;
ShowDialog();
ShowDialog(1);
}
}
if (args.Item.Text == "Benutzer erstellen")
{
ShowDialog(2);
}
}
@ -155,8 +279,6 @@
}
public List<BWPMModels.AspNetUserRolle> GridData { get; set; }
public List<BWPMModels.AspNetUserRolle> AspNetUserRolles { get; set; }
public List<BWPMModels.AspNetRoles> AspNetRoles { get; set; }

@ -70,7 +70,6 @@
protected override async Task OnAfterRenderAsync(bool firstRender)
{
userid = await sessionStorage.GetItemAsync<string>("UserID");
if (userid == null)
@ -90,8 +89,8 @@
}
}
}
private async Task OnBeginHandler(ActionEventArgs<BWPMModels.Schulhaus> Args)
private async Task OnBeginHandler(ActionEventArgs<BWPMModels.Schulhaus> Args)
{
if (Args.RequestType == Syncfusion.Blazor.Grids.Action.Save)
{

File diff suppressed because it is too large Load Diff

@ -0,0 +1,293 @@
@page "/Admin/Teacher/Teacher"
@inject Blazored.SessionStorage.ISessionStorageService sessionStorage
@inherits ListBase
@using Syncfusion.Blazor.Grids;
@using Syncfusion.Blazor.Buttons;
@using Syncfusion.Blazor.Spinner;
@using Syncfusion.Blazor.Notifications;
@using BlazorApp.Helper
@using BWPMModels;
@using BlazorApp.Controller;
<h1>Lehrer</h1>
<div class="col-lg-12 control-section">
<div class="content-wrapper">
<div class="row">
<SfGrid ID="Grid" DataSource="@GridData" @ref="Grid" AllowPaging="true" AllowSorting="true" >
<GridPageSettings PageCount="5" PageSizes="true"></GridPageSettings>
<GridEditSettings AllowAdding="false" AllowDeleting="false" AllowEditing="false" Mode="EditMode.Dialog" Dialog="DialogParams"></GridEditSettings>
<GridEvents OnActionBegin="OnBeginHandler" OnActionComplete="OnCompletedHandler" TValue="Lehrer" OnDataBound="RowDataBoundHandler" CommandClicked="CommandClickHandler"></GridEvents>
<GridColumns>
<GridColumn Type="ColumnType.CheckBox" AllowFiltering="false" AllowSorting="false" Width="60"></GridColumn>
<GridColumn Field=@nameof(Lehrer.ID) HeaderText="Id" IsPrimaryKey="true" AllowAdding="false" Width="60"></GridColumn>
<GridColumn Field=@nameof(Lehrer.anredeID) HeaderText="Anredeid" Width="100" Visible="true"></GridColumn>
<GridColumn Field=@nameof(Lehrer.name) HeaderText="Name" Width="100" Visible="true"></GridColumn>
<GridColumn Field=@nameof(Lehrer.vorname) HeaderText="Vorname" Width="100" Visible="true"></GridColumn>
<GridColumn Field=@nameof(Lehrer.tel) HeaderText="Tel" Width="100" Visible="true"></GridColumn>
<GridColumn Field=@nameof(Lehrer.handy) HeaderText="Handy" Width="100" Visible="true"></GridColumn>
<GridColumn Field=@nameof(Lehrer.email) HeaderText="Email" Width="100" Visible="true"></GridColumn>
<GridColumn Field=@nameof(Lehrer.schulhausID) HeaderText="Schulhausid" Width="100" Visible="true"></GridColumn>
@*<GridColumn Field=@nameof(Lehrer.briefanrede) HeaderText="Briefanrede" Width="100" Visible="true"></GridColumn>
<GridColumn Field=@nameof(Lehrer.mandantnr) HeaderText="Mandantnr" Width="100" Visible="true"></GridColumn>
<GridColumn Field=@nameof(Lehrer.aktiv) HeaderText="Aktiv" Width="100" Visible="true" DisplayAsCheckBox="true"></GridColumn>
<GridColumn Field=@nameof(Lehrer.erstellt_am) HeaderText="Erstellt_am" Width="100" Visible="true" Format="d" Type="ColumnType.Date"></GridColumn>
<GridColumn Field=@nameof(Lehrer.mutiert_am) HeaderText="Mutiert_am" Width="100" Visible="true" Format="d" Type="ColumnType.Date"></GridColumn>
<GridColumn Field=@nameof(Lehrer.mutierer) HeaderText="Mutierer" Width="100" Visible="true"></GridColumn>*@
<GridColumn Field=@nameof(Lehrer.userid) HeaderText="Userid" Width="100" Visible="true"></GridColumn>
<GridColumn HeaderText="Funktionen" Width="150">
<GridCommandColumns>
<GridCommandColumn Title="Lehrer-Daten" Type="CommandButtonType.None" ButtonOption="@(new CommandButtonOptions() {IconCss="fas fa-pen", CssClass="e-flat" })"></GridCommandColumn>
<GridCommandColumn Title="Schüler-Daten" Type="CommandButtonType.None" ButtonOption="@(new CommandButtonOptions() {IconCss="fas fa-user", CssClass="e-flat" })"></GridCommandColumn>
<GridCommandColumn Title="Löschen" Type="CommandButtonType.None" ButtonOption="@(new CommandButtonOptions() {IconCss="e-icons e-delete", CssClass="e-flat" })"></GridCommandColumn>
<GridCommandColumn Title="EMail" Type="CommandButtonType.None" ButtonOption="@(new CommandButtonOptions() {IconCss="e-icons e-mail", CssClass="e-flat" })"></GridCommandColumn>
</GridCommandColumns>
</GridColumn>
</GridColumns>
</SfGrid>
</div>
</div>
</div>
<div class="col-lg-12 control-section toast-default-section">
<SfToast ID="toast_default" @ref="ToastObj" Content="@ToastContent" Timeout="5000" Icon="e-meeting">
<ToastPosition X="Right" Y="Bottom"></ToastPosition>
<ToastAnimationSettings>
<ToastShowAnimationSettings Effect="@ShowAnimation"></ToastShowAnimationSettings>
<ToastHideAnimationSettings Effect="@HideAnimation"></ToastHideAnimationSettings>
</ToastAnimationSettings>
</SfToast>
</div>
<style>
.bootstrap4 #toast_default .e-meeting::before {
content: "\e763";
font-size: 20px;
}
.e-toast-container .e-toast {
background-color: lightgreen;
}
</style>
<style>
div#Grid_dialogEdit_wrapper {
max-height: none !important;
}
</style>
@code {
SfToast ToastObj;
private string ToastPosition = "Right";
private string ToastContent = "Daten erfolgreich gespeichert";
private ToastEffect ShowAnimation = ToastEffect.FadeIn;
private ToastEffect HideAnimation = ToastEffect.FadeOut;
}
@code{
private DialogSettings DialogParams = new DialogSettings { Width = "450px", Height = "750px" };
SfGrid<Lehrer> Grid { get; set; }
public List<BWPMModels.Lehrer> GridData { get; set; }
public List<BWPMModels.Lehrer> Lehrers { get; set; }
public List<BWPMModels.Lehrer> TmpLehrer { get; set; }
public List<BWPMModels.AspNetUsers> Users { get; set; }
string userid = "";
public static int? pkey { get; set; }
public bool Initial { get; set; } = true;
public bool ContinuePaging = true;
public bool InitialRender { get; set; }
public int Value = 0; // consider that value your querystring contains
public int foundrow = 0;
protected override void OnInitialized()
{
/// GridData = OrdersDetails.GetAllRecords();
GridData = BlazorApp.Controller.LehrerController.GetAllData();
}
protected override async Task OnAfterRenderAsync(bool firstRender)
{
userid = await sessionStorage.GetItemAsync<string>("UserID");
if (userid == null)
{
var authState = await authenticationStateTask;
var userId = authState.User.Claims.FirstOrDefault().Value;
var user = authState.User;
if (user.Identity.IsAuthenticated)
{
await sessionStorage.SetItemAsync("UserID", userId);
}
else
{
await sessionStorage.SetItemAsync("UserID", userId);
}
}
}
private async Task OnBeginHandler(ActionEventArgs<BWPMModels.Lehrer> Args)
{
if (Args.RequestType == Syncfusion.Blazor.Grids.Action.Save)
{
if (Args.Action == "Add")
{
Users = BlazorApp.Controller.AspNetUsersController.GetByUserName(Args.Data.email);
if (Users.Count !=0)
{
Args.Cancel = true;
ToastObj.CssClass = "e-toast-danger";
ToastContent = "Ein Benutzer mit der gleichen E-Mailadresse ist bereits vorhanden.";
StateHasChanged();
ToastObj.ShowAsync();
// Grid.Refresh();
return;
}
else {
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.LehrerController.POST(Args.Data);
Value = Args.Data.ID;
}
}
else
{
TmpLehrer = BlazorApp.Controller.LehrerController.GetByEMail(Args.Data.email);
if (TmpLehrer.Count > 1)
{
Args.Cancel = true;
ToastObj.CssClass = "e-toast-danger";
ToastContent = "Die eingegebene Mail-Aadresse wird bereits verwendet.";
StateHasChanged();
ToastObj.ShowAsync();
// Grid.Refresh();
return;
}
Args.Data.mutierer = userid.ToString();
Args.Data.mutiert_am = DateTime.Now;
BlazorApp.Controller.LehrerController.PUT(Args.Data);
ToastObj.CssClass = "e-toast-success";
ToastContent = "Daten erfolgreich gespeichert";
StateHasChanged();
ToastObj.ShowAsync();
}
}
}
public async Task OnCompletedHandler(ActionEventArgs<BWPMModels.Lehrer> 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<BWPMModels.Lehrer> args)
{
if (!Initial)
{
//await Task.Delay(100);
//var Idx = await this.Grid.GetRowIndexByPrimaryKey(Convert.ToDouble(Value)); //get index value
//this.Grid.SelectRow(Convert.ToDouble(Idx));
}
Initial = false;
}
public async Task<double> 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<Lehrer> 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; // prevent the default navigation
break;
}
}
if (ContinuePaging)
{
if (i >= PageCount)
{
i = 0;
}
await Grid.GoToPage(i + 1);
}
else
{
return foundrow;
}
}
return foundrow;
}
public void CommandClickHandler(CommandClickEventArgs<Lehrer> args)
{
if (args.CommandColumn.Title == "Lehrer-Daten")
{
NavigationManager.NavigateTo("/Teacher/TeacherContact/" + args.RowData.ID.ToString());
}
if (args.CommandColumn.Title == "Schüler-Daten")
{
NavigationManager.NavigateTo("/Teacher/TeacherStudent/" + args.RowData.ID.ToString());
}
if (args.CommandColumn.Title=="Berufsangebot"){
NavigationManager.NavigateTo("/Company/Berufsangebot/" + args.RowData.ID.ToString());
}
if (args.CommandColumn.Title=="Ansprechperson"){
NavigationManager.NavigateTo("/Company/CompanyContact/" + args.RowData.ID.ToString());
}
//Perform your custom command button click operation here. And also with the value in “args” you can differentiate the buttons, if having multiple custom command buttons.
}
}

@ -38,7 +38,7 @@
<div id="container">
<SfGrid DataSource="@users" Toolbar="@(new List<string>() { "Add", "Edit", "Delete", "Update", "Cancel" })" Height="315" AllowSelection="true" AllowSorting="true" AllowFiltering="true" EnableVirtualization="true">
<SfGrid DataSource="@users" Toolbar="@(new List<string>() { "Add","Edit", "Delete", "Update", "Cancel" })" Height="315" AllowSelection="true" AllowSorting="true" AllowFiltering="true" EnableVirtualization="true">
<GridFilterSettings Type="Syncfusion.Blazor.Grids.FilterType.Menu"></GridFilterSettings>
<GridEditSettings AllowAdding="true" AllowDeleting="true" AllowEditing="true" Mode="EditMode.Dialog"></GridEditSettings>
<GridEvents OnActionBegin="OnBeginHandler" TValue="User"></GridEvents>

@ -1,4 +1,5 @@
@page "/Teacher/TeacherContact"
@page "/Teacher/TeacherContact/{paramtid:int}"
@inject Blazored.SessionStorage.ISessionStorageService sessionStorage
@inject NavigationManager NavManager
@inherits Admin.ListBase;
@ -192,6 +193,9 @@
@code {
[Parameter]
public int paramtid { get; set; }
SfTab Tab;
SfGrid<Klasse> Grid { get; set; }
public int Value = 0;
@ -275,7 +279,14 @@
}
if (firstRender)
{
Lehrerdaten = BlazorApp.Controller.LehrerController.GetByUserID(userid);
if (paramtid!=0)
{
Lehrerdaten = BlazorApp.Controller.LehrerController.GetByID(paramtid);
}
else
{
Lehrerdaten = BlazorApp.Controller.LehrerController.GetByUserID(userid);
}
_lehrer = Lehrerdaten.First<BWPMModels.Lehrer>();
GridData = BlazorApp.Controller.KlasseController.GetByLehrerID(_lehrer.ID);
await sessionStorage.SetItemAsync("LehrerID", _lehrer.ID.ToString());
@ -286,7 +297,6 @@
private async Task OnBeginHandler(ActionEventArgs<BWPMModels.Klasse> Args)
{
@* try
{
if (_lehrer.ID == 0)

@ -1,4 +1,5 @@
@page "/Teacher/TeacherStudent"
@page "/Teacher/TeacherStudent/{paramtid:int}"
@inject Blazored.SessionStorage.ISessionStorageService sessionStorage
@inject IJSRuntime jsRuntime
@inject NavigationManager NavManager
@ -107,7 +108,7 @@
</EditForm>
<div class="row">
<SfButton Disabled="@FieldDisabled" IsPrimary="true" OnClick="@(() => SaveClick())">Änderungen speichern</SfButton>&nbsp;
<SfButton Disabled="@FieldDisabled" IsPrimary="true" OnClick="@(() => SaveClick())">Änderungen speichern</SfButton>&nbsp;
<SfButton Disabled="@FieldDisabled" IsPrimary="true" OnClick="@(() => DeleteClick())">Schüler löschen</SfButton>
</div>
</div>
@ -119,16 +120,19 @@
</h6>
<div class="card-body">
<div class="row">
<div class="col-md-4">
<RadzenListBox @bind-Value=@BerufID Data=@berufe TextProperty="bezeichnung" ValueProperty="ID" Style="height:350px" />
<div class="col-md-4" @ondblclick="DoubleClick">
<RadzenListBox @bind-Value=@BerufID Data=@berufe TextProperty="bezeichnung" ValueProperty="ID" Style="height:350px" />
<br />
<RadzenButton style="margin: 0 1rem 1rem 0" Click=@(args => InsertBeruf()) Text="Beruf zuordnen" ButtonStyle="ButtonStyle.Secondary" />
</div>
<div class="col-md-8">
<SfGrid ID="Grid3" DataSource="@GridData" @ref="Grid" AllowPaging="false" AllowSorting="true" Toolbar="@(new List<string>() { "Edit", "Delete" })">
<SfGrid ID="Grid3" DataSource="@GridData" @ref="Grid" AllowRowDragAndDrop="true" AllowPaging="false" AllowSorting="true" Toolbar="@(new List<string>() { "Edit", "Delete" })"
ContextMenuItems="@ContextMenuItems">
@*ContextMenuItems="@(new List<ContextMenuItemModel>() { new ContextMenuItemModel { Text = "Bearbeiten", Target = ".e-content", Id = "Bearbeiten"},new ContextMenuItemModel { Text = "Löschen", Target = ".e-content", Id = "Loeschen"} })">*@
<GridPageSettings PageCount="5" PageSizes="true"></GridPageSettings>
<GridEditSettings AllowAdding="true" AllowDeleting="true" AllowEditing="true" Mode="EditMode.Dialog"></GridEditSettings>
<GridEvents OnActionBegin="OnBeginHandler" OnActionComplete="OnCompletedHandler" TValue="SchuelerBeruf" OnDataBound="RowDataBoundHandler"></GridEvents>
<GridEvents RowDropped="RowDropHandler" ContextMenuItemClicked="OnContextMenuClick" OnActionBegin="OnBeginHandler" OnActionComplete="OnCompletedHandler" TValue="SchuelerBeruf" OnDataBound="RowDataBoundHandler"></GridEvents>
<GridColumns>
<GridColumn Type="ColumnType.CheckBox" AllowFiltering="false" AllowSorting="false" Width="60"></GridColumn>
@ -197,6 +201,17 @@
@code {
[Parameter]
public int paramtid { get; set; }
private List<object> ContextMenuItems = new List<object>()
{"Edit", "Delete",
new ContextMenuItemModel
{Text = "Priorität -1", Id = "PrioUp" },new ContextMenuItemModel{Text = "Priorität +1", Id = "PrioDown" }
};
public string[] sfSchuelerID { get; set; }
public string DialogHeader { get; set; } = "";
public string DialogText { get; set; } = "";
@ -256,7 +271,16 @@
protected override async Task OnInitializedAsync()
{
lehrerID = await sessionStorage.GetItemAsync<string>("LehrerID");
if (paramtid!=0)
{
lehrerID = paramtid.ToString();
}
else
{
lehrerID = await sessionStorage.GetItemAsync<string>("LehrerID");
}
//lehrerID = await sessionStorage.GetItemAsync<string>("LehrerID");
userid = await sessionStorage.GetItemAsync<string>("UserID");
Klasse = BlazorApp.Controller.KlasseController.GetByLehrerID(Convert.ToInt32(lehrerID));
intKlasse.Clear();
@ -423,6 +447,10 @@
//--------------------------------------
//SchülerBeruf / Beruf
//--------------------------------------
private void DoubleClick()
{
InsertBeruf();
}
private void InsertBeruf()
{
if (SchuelerID == 0)
@ -455,11 +483,14 @@
BlazorApp.Controller.SchuelerBerufController.POST(sberuf);
update_griddata();
pruefung();
Grid.Refresh();
}
private void update_griddata()
{
//GridData.Clear();
GridData = BlazorApp.Controller.SchuelerBerufController.GetBySchuelerID(SchuelerID);
Grid.Refresh();
}
private async Task OnBeginHandler(ActionEventArgs<BWPMModels.SchuelerBeruf> Args)
@ -494,6 +525,95 @@
}
}
public void OnContextMenuClick(ContextMenuClickEventArgs<BWPMModels.SchuelerBeruf> args)
{
switch (args.Item.Id)
{
case "PrioUp":
args.RowInfo.RowData.prioritaet = args.RowInfo.RowData.prioritaet - 1;
args.RowInfo.RowData.mutierer = userid.ToString();
BlazorApp.Controller.SchuelerBerufController.PUT(args.RowInfo.RowData);
update_griddata();
pruefung();
break;
case "PrioDown":
args.RowInfo.RowData.prioritaet = args.RowInfo.RowData.prioritaet + 1;
args.RowInfo.RowData.mutierer = userid.ToString();
BlazorApp.Controller.SchuelerBerufController.PUT(args.RowInfo.RowData);
update_griddata();
pruefung();
break;
default:
break;
}
if (args.Item.Id =="Prio")
if (args.Item.Id == "Bearbeiten")
{
}
if (args.Item.Id == "Loeschen")
{
args.RowInfo.RowData.aktiv = false;
args.RowInfo.RowData.mutiert_am = DateTime.Now;
args.RowInfo.RowData.mutierer = userid.ToString();
BlazorApp.Controller.SchuelerBerufController.PUT(args.RowInfo.RowData);
update_griddata();
pruefung();
}
}
public void RowDropHandler(RowDragEventArgs<BWPMModels.SchuelerBeruf> args)
{
dbhelper dbh = new dbhelper();
dbh.add_sp_param("Param1", args.Data[0].ID.ToString());
dbh.add_sp_param("Param2", userid.ToString());
dbh.add_sp_param("Param3", args.DropIndex.ToString());
dbh.Get_Tabledata("sp_set_prio_schuelerberuf", true, false);
args.Data[0].prioritaet = Convert.ToInt32(args.DropIndex) + 1;
update_griddata();
pruefung();
return;
//double di = args.DropIndex;
//int key = args.Data[0].ID;
//int p = Convert.ToInt32(di) + 2;
//var RowsData = Grid.CurrentViewData;
//SchuelerBeruf _tmpschuelerberuf = new BWPMModels.SchuelerBeruf();
//foreach (BWPMModels.SchuelerBeruf row in RowsData)
//{
// if (row.ID == key)
// {
// row.prioritaet = Convert.ToInt32(args.DropIndex) + 1;
// row.mutiert_am = DateTime.Now;
// row.mutierer = userid.ToString();
// BlazorApp.Controller.SchuelerBerufController.PUT(row);
// }
// else
// {
// if (row.prioritaet >= Convert.ToInt32(args.DropIndex) + 1)
// {
// row.prioritaet = p;
// p = p + 1;
// row.mutiert_am = DateTime.Now;
// row.mutierer = userid.ToString();
// BlazorApp.Controller.SchuelerBerufController.PUT(row);
// }
// }
//}
//update_griddata();
// pruefung();
}
public async Task OnCompletedHandler(ActionEventArgs<BWPMModels.SchuelerBeruf> Args)
{
if (Args.RequestType == Syncfusion.Blazor.Grids.Action.Save)

@ -1177,10 +1177,10 @@
<value>Absteigend sortieren</value>
</data>
<data name="Grid_EditRecord" xml:space="preserve">
<value>Datensatz bearbeiten</value>
<value>Bearbeiten</value>
</data>
<data name="Grid_DeleteRecord" xml:space="preserve">
<value>Aufzeichnung löschen</value>
<value>Löschen</value>
</data>
<data name="Grid_FilterMenu" xml:space="preserve">
<value>Filter</value>

@ -105,7 +105,7 @@ namespace BlazorApp
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("NDg1ODk2QDMxMzkyZTMyMmUzME01Q1dNV3crSHpVeUNaejAraUc4Z3kxUC9JbElPRlFGSXIyZWRCZXJzZFE9");
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("@31392e332e30fiDefXUOcJO49JmXhgG2Hsyqek3O7OMX/3FKEUOUU9I=");
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();

@ -0,0 +1,8 @@
<StaticWebAssets Version="1.0">
<ContentRoot BasePath="/Identity" Path="C:\Users\Steafn Hutter lokal\.nuget\packages\microsoft.aspnetcore.identity.ui\3.1.15\staticwebassets\V4\" />
<ContentRoot BasePath="_content/FastReport.Web" Path="C:\Users\Steafn Hutter lokal\.nuget\packages\fastreport.web\2021.3.17\build\..\staticwebassets\" />
<ContentRoot BasePath="_content/Microsoft.AspNetCore.ProtectedBrowserStorage" Path="C:\Users\Steafn Hutter lokal\.nuget\packages\microsoft.aspnetcore.protectedbrowserstorage\0.1.0-alpha.19521.1\build\..\staticwebassets\" />
<ContentRoot BasePath="_content/Radzen.Blazor" Path="C:\Users\Steafn Hutter lokal\.nuget\packages\radzen.blazor\3.6.7\build\..\staticwebassets\" />
<ContentRoot BasePath="_content/Syncfusion.Blazor" Path="C:\Users\Steafn Hutter lokal\.nuget\packages\syncfusion.blazor\19.3.0.43\build\..\staticwebassets\" />
<ContentRoot BasePath="_content/Syncfusion.Blazor.Themes" Path="C:\Users\Steafn Hutter lokal\.nuget\packages\syncfusion.blazor.themes\19.3.0.43\build\..\staticwebassets\" />
</StaticWebAssets>

File diff suppressed because it is too large Load Diff

@ -0,0 +1,9 @@
{
"runtimeOptions": {
"additionalProbingPaths": [
"C:\\Users\\Steafn Hutter lokal\\.dotnet\\store\\|arch|\\|tfm|",
"C:\\Users\\Steafn Hutter lokal\\.nuget\\packages",
"C:\\Program Files (x86)\\Microsoft\\Xamarin\\NuGet"
]
}
}

@ -0,0 +1,13 @@
{
"runtimeOptions": {
"tfm": "net5.0",
"framework": {
"name": "Microsoft.AspNetCore.App",
"version": "5.0.0"
},
"configProperties": {
"System.GC.Server": true,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save