308 lines
8.5 KiB
C#
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}");
|
|
}
|
|
}
|
|
} |