Files
webdoorcreator/WebDoorCreator.UI/Pages/SuperAdmin.razor.cs
T
2023-04-05 17:08:14 +02:00

308 lines
8.5 KiB
C#

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.UI.Services;
using Microsoft.AspNetCore.WebUtilities;
using System.Text;
using System.Text.Encodings.Web;
using WebDoorCreator.Data.DbModels;
using WebDoorCreator.UI.Data;
namespace WebDoorCreator.UI.Pages
{
[Authorize(Roles = "SuperAdmin")]
public partial class SuperAdmin
{
[Inject]
protected WebDoorCreatorService WDService { get; set; } = null!;
[Inject]
protected NavigationManager NavManager { get; set; } = null!;
[Inject]
protected UserManager<IdentityUser> _userManager { get; set; } = null!;
[Inject]
protected IEmailSender _emailSender { get; set; } = null!;
protected CompanyModel? currCompany { get; set; } = null;
protected AspNetUsers? currUser { get; set; } = null;
protected int _companyId = 0;
protected int companyId
{
get => _companyId;
set { _companyId = value; }
}
protected string _companyExtCode = "";
protected string companyExtCode
{
get => _companyExtCode;
set { _companyExtCode = value; }
}
protected string _companyName = "";
protected string companyName
{
get => _companyName;
set { _companyName = value; }
}
protected string _address = "";
protected string address
{
get => _address;
set { _address = value; }
}
protected int _zipCode = 0;
protected int zipCode
{
get => _zipCode;
set { _zipCode = value; }
}
protected string _city = "";
protected string city
{
get => _city;
set { _city = value; }
}
protected string _state = "";
protected string state
{
get => _state;
set { _state = value; }
}
protected string _vat = "";
protected string vat
{
get => _vat;
set { _vat = value; }
}
protected string _privateNote = "";
protected string privateNote
{
get => _privateNote;
set { _privateNote = value; }
}
protected string _companyToken = "";
protected string companyToken
{
get => _companyToken;
set { _companyToken = value; }
}
protected string _email = "";
protected string email
{
get => _email;
set { _email = value; }
}
protected string _password = "";
protected string password
{
get => _password;
set { _password = value; }
}
protected string _passwordConfirm = "";
protected string passwordConfirm
{
get => _passwordConfirm;
set { _passwordConfirm = value; }
}
protected string _defaultPath = "";
protected string defaultPath { get; set; } = "";
protected bool isCompShow { get; set; } = true;
protected async Task addModNewCompany()
{
Guid newCompToken = Guid.NewGuid();
bool done = false;
if (currCompany == null)
{
var newComp = new CompanyModel()
{
CompanyExtCode = companyExtCode,
CompanyName = companyName,
Address = address,
ZipCode = zipCode,
City = city,
State = state,
VAT = vat,
PrivateNote = privateNote,
CompanyToken = newCompToken.ToString()
};
done = await WDService.CompanyAddMod(newComp);
}
else
{
var editComp = new CompanyModel()
{
CompanyId = companyId,
CompanyExtCode = companyExtCode,
CompanyName = companyName,
Address = address,
ZipCode = zipCode,
City = city,
State = state,
VAT = vat,
PrivateNote = privateNote,
CompanyToken = companyToken
};
done = await WDService.CompanyAddMod(editComp);
}
if (done)
{
NavManager.NavigateTo(NavManager.Uri, true);
}
}
protected async Task addModNewUser()
{
Guid newCompToken = Guid.NewGuid();
bool done = false;
if (currUser == null)
{
var user = new IdentityUser { UserName = email, Email = email };
var result = await _userManager.CreateAsync(user, password);
if (result.Succeeded)
{
await _userManager.AddToRoleAsync(user, "User");
var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
var callbackUrl = $"/Account/ConfirmEmail?userId{user.Id}&code{code}&returnUrl=~/";
await _emailSender.SendEmailAsync(email, "Web Door Creator: Please confirm your email account",
$"<a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>Click here</a> to confirm the account linked with this email.");
NavManager.NavigateTo(NavManager.Uri, true);
}
}
else
{
var editComp = new CompanyModel()
{
CompanyId = companyId,
CompanyExtCode = companyExtCode,
CompanyName = companyName,
Address = address,
ZipCode = zipCode,
City = city,
State = state,
VAT = vat,
PrivateNote = privateNote,
CompanyToken = companyToken
};
done = await WDService.CompanyAddMod(editComp);
}
if (done)
{
NavManager.NavigateTo(NavManager.Uri, true);
}
}
protected async Task catchCurrComp(CompanyModel? selComp)
{
await Task.Delay(1);
if (selComp != null)
{
currCompany = selComp;
companyId = currCompany.CompanyId;
companyExtCode = currCompany.CompanyExtCode;
companyName = currCompany.CompanyName;
address = currCompany.Address;
zipCode = currCompany.ZipCode;
city = currCompany.City;
state = currCompany.State;
vat = currCompany.VAT;
privateNote = currCompany.PrivateNote;
companyToken = currCompany.CompanyToken;
}
}
protected async Task catchCurrUser(AspNetUsers? selUser)
{
await Task.Delay(1);
if (selUser != null)
{
currUser = selUser;
email = currUser.Email;
}
}
protected string selectedComp
{
get
{
string answ = "";
answ = isCompShow ? "tabActive" : "tab";
return answ;
}
}
protected string selectedUser
{
get
{
string answ = "";
answ = !isCompShow ? "tabActive" : "tab";
return answ;
}
}
protected async Task doShowComp()
{
await Task.Delay(1);
isCompShow = true;
}
protected async Task doShowUser()
{
await Task.Delay(1);
isCompShow = false;
}
protected async Task refreshHw()
{
await Task.Delay(1);
await WDService.CompoListSetAll(@$"{defaultPath}");
}
protected async Task refreshVoc()
{
await Task.Delay(1);
await WDService.VocLemmaInsert(@$"{defaultPath}");
}
protected async Task refreshFiles()
{
await Task.Delay(1);
await WDService.ListValuesLuaNgeInsert(@$"{defaultPath}");
}
}
}