Merge branch 'main' into CleanupAndFixes
This commit is contained in:
@@ -9,7 +9,14 @@ public class User
|
|||||||
|
|
||||||
// Personal data
|
// Personal data
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
[MinLength(3, ErrorMessage = "Invalid first name")]
|
||||||
|
[MaxLength(64, ErrorMessage = "Max lenght reached")]
|
||||||
public string FirstName { get; set; } = "";
|
public string FirstName { get; set; } = "";
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
[MinLength(3, ErrorMessage = "Invalid last name")]
|
||||||
|
[MaxLength(64, ErrorMessage = "Max lenght reached")]
|
||||||
public string LastName { get; set; } = "";
|
public string LastName { get; set; } = "";
|
||||||
|
|
||||||
[Required(ErrorMessage = "You need to enter an email address")]
|
[Required(ErrorMessage = "You need to enter an email address")]
|
||||||
@@ -19,9 +26,26 @@ public class User
|
|||||||
[Required(ErrorMessage = "You need to enter a password")]
|
[Required(ErrorMessage = "You need to enter a password")]
|
||||||
[MinLength(8, ErrorMessage = "You need to enter a password with minimum 8 characters in lenght")]
|
[MinLength(8, ErrorMessage = "You need to enter a password with minimum 8 characters in lenght")]
|
||||||
public string Password { get; set; } = "";
|
public string Password { get; set; } = "";
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
[RegularExpression(@"^(?:[A-Z] \d|[^\W\d_]{2,}\.?)(?:[- '’][^\W\d_]+\.?)*\s+[1-9]\d{0,3} ?[a-zA-Z]?(?: ?[/-] ?[1-9]\d{0,3} ?[a-zA-Z]?)?$",
|
||||||
|
ErrorMessage = "Street and house number required")]
|
||||||
|
[MaxLength(128, ErrorMessage = "Max lenght reached")]
|
||||||
public string Address { get; set; } = "";
|
public string Address { get; set; } = "";
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
[MinLength(3, ErrorMessage = "Invalid city")]
|
||||||
|
[MaxLength(128, ErrorMessage = "Max lenght reached")]
|
||||||
public string City { get; set; } = "";
|
public string City { get; set; } = "";
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
[MinLength(3, ErrorMessage = "Invalid state")]
|
||||||
|
[MaxLength(64, ErrorMessage = "Max lenght reached")]
|
||||||
public string State { get; set; } = "";
|
public string State { get; set; } = "";
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
[MinLength(3, ErrorMessage = "Invalid country")]
|
||||||
|
[MaxLength(64, ErrorMessage = "Max lenght reached")]
|
||||||
public string Country { get; set; } = "";
|
public string Country { get; set; } = "";
|
||||||
|
|
||||||
// States
|
// States
|
||||||
|
|||||||
@@ -96,11 +96,16 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="d-flex flex-row mb-5">
|
<!--d-flex flex-row mb-5-->
|
||||||
<div class="card card-body">
|
<div class="card mb-5">
|
||||||
<span class="card-title mb-3 fs-3">
|
<div class="card-header card-header-stretch">
|
||||||
<TL>Create something new</TL>
|
<div class="card-title d-flex align-items-center">
|
||||||
</span>
|
<h3 class="fw-bold m-0 text-gray-800">
|
||||||
|
<TL>Create something new</TL>
|
||||||
|
</h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body pt-3">
|
||||||
<div class="flex-row">
|
<div class="flex-row">
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center">
|
||||||
<div class="symbol symbol-50px me-3">
|
<div class="symbol symbol-50px me-3">
|
||||||
@@ -115,6 +120,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="separator mb-2 mt-2"></div>
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center">
|
||||||
<div class="symbol symbol-50px me-3">
|
<div class="symbol symbol-50px me-3">
|
||||||
<i class="bx bx-md bx-data"></i>
|
<i class="bx bx-md bx-data"></i>
|
||||||
@@ -128,6 +134,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="separator mb-2 mt-2"></div>
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center">
|
||||||
<div class="symbol symbol-50px me-3">
|
<div class="symbol symbol-50px me-3">
|
||||||
<i class="bx bx-md bx-globe"></i>
|
<i class="bx bx-md bx-globe"></i>
|
||||||
@@ -141,6 +148,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="separator mb-2 mt-2"></div>
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center">
|
||||||
<div class="symbol symbol-50px me-3">
|
<div class="symbol symbol-50px me-3">
|
||||||
<i class="bx bx-md bx-purchase-tag"></i>
|
<i class="bx bx-md bx-purchase-tag"></i>
|
||||||
@@ -157,11 +165,16 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="d-flex flex-row">
|
|
||||||
<div class="card card-body">
|
<div class="card mb-5">
|
||||||
<span class="card-title mb-3 fs-3">
|
<div class="card-header card-header-stretch">
|
||||||
<TL>Manage your services</TL>
|
<div class="card-title d-flex align-items-center">
|
||||||
</span>
|
<h3 class="fw-bold m-0 text-gray-800">
|
||||||
|
<TL>Manage your services</TL>
|
||||||
|
</h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body pt-3">
|
||||||
<div class="flex-row">
|
<div class="flex-row">
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center">
|
||||||
<div class="symbol symbol-50px me-3">
|
<div class="symbol symbol-50px me-3">
|
||||||
@@ -176,6 +189,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="separator mb-2 mt-2"></div>
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center">
|
||||||
<div class="symbol symbol-50px me-3">
|
<div class="symbol symbol-50px me-3">
|
||||||
<i class="bx bx-md bx-data"></i>
|
<i class="bx bx-md bx-data"></i>
|
||||||
@@ -189,6 +203,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="separator mb-2 mt-2"></div>
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center">
|
||||||
<div class="symbol symbol-50px me-3">
|
<div class="symbol symbol-50px me-3">
|
||||||
<i class="bx bx-md bx-globe"></i>
|
<i class="bx bx-md bx-globe"></i>
|
||||||
@@ -202,6 +217,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="separator mb-2 mt-2"></div>
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center">
|
||||||
<div class="symbol symbol-50px me-3">
|
<div class="symbol symbol-50px me-3">
|
||||||
<i class="bx bx-md bx-purchase-tag"></i>
|
<i class="bx bx-md bx-purchase-tag"></i>
|
||||||
|
|||||||
@@ -1,4 +1,94 @@
|
|||||||
@page "/profile"
|
@page "/profile"
|
||||||
@using Moonlight.Shared.Components.Navigations
|
|
||||||
|
|
||||||
<ProfileNavigation Index="0" />
|
@using Moonlight.Shared.Components.Navigations
|
||||||
|
@using Moonlight.App.Services.Sessions
|
||||||
|
@using Moonlight.App.Database.Entities
|
||||||
|
@using Moonlight.App.Repositories
|
||||||
|
|
||||||
|
@inject IdentityService IdentityService
|
||||||
|
@inject UserRepository UserRepository
|
||||||
|
|
||||||
|
<ProfileNavigation Index="0" />
|
||||||
|
|
||||||
|
<LazyLoader Load="Load">
|
||||||
|
<SmartForm OnValidSubmit="Save" Model="User">
|
||||||
|
<div class="card mb-5 mb-xl-10">
|
||||||
|
<div class="card-header">
|
||||||
|
<div class="card-title">
|
||||||
|
<h3 class="fw-bold m-0 text-gray-800">Persönliche Daten</h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-body border-top p-9">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-6 fv-row fv-plugins-icon-container">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">
|
||||||
|
<TL>First name</TL>
|
||||||
|
</label>
|
||||||
|
<InputText @bind-Value="User.FirstName" class="form-control"></InputText>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-6 fv-row fv-plugins-icon-container">
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">
|
||||||
|
<TL>Last name</TL>
|
||||||
|
</label>
|
||||||
|
<InputText @bind-Value="User.LastName" class="form-control"></InputText>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">
|
||||||
|
<TL>Email address</TL>
|
||||||
|
</label>
|
||||||
|
<InputText @bind-Value="User.Email" class="form-control"></InputText>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">
|
||||||
|
<TL>Address</TL>
|
||||||
|
</label>
|
||||||
|
<InputText @bind-Value="User.Address" class="form-control"></InputText>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">
|
||||||
|
<TL>City</TL>
|
||||||
|
</label>
|
||||||
|
<InputText @bind-Value="User.City" class="form-control"></InputText>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">
|
||||||
|
<TL>State</TL>
|
||||||
|
</label>
|
||||||
|
<InputText @bind-Value="User.State" class="form-control"></InputText>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">
|
||||||
|
<TL>Country</TL>
|
||||||
|
</label>
|
||||||
|
<InputText @bind-Value="User.Country" class="form-control"></InputText>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card-footer d-flex justify-content-end py-6 px-9">
|
||||||
|
<button type="submit" class="btn btn-primary">
|
||||||
|
<TL>Save</TL>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</SmartForm>
|
||||||
|
</LazyLoader>
|
||||||
|
|
||||||
|
@code
|
||||||
|
{
|
||||||
|
private User User = new User();
|
||||||
|
|
||||||
|
|
||||||
|
private async Task Load(LazyLoader loader)
|
||||||
|
{
|
||||||
|
User = await IdentityService.Get();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Save()
|
||||||
|
{
|
||||||
|
UserRepository.Update(User);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -399,3 +399,11 @@ You need to enter an email address;You need to enter an email address
|
|||||||
You need to enter a password;You need to enter a password
|
You need to enter a password;You need to enter a password
|
||||||
You need to enter a password with minimum 8 characters in lenght;You need to enter a password with minimum 8 characters in lenght
|
You need to enter a password with minimum 8 characters in lenght;You need to enter a password with minimum 8 characters in lenght
|
||||||
Proccessing;Proccessing
|
Proccessing;Proccessing
|
||||||
|
The FirstName field is required.;The FirstName field is required.
|
||||||
|
The LastName field is required.;The LastName field is required.
|
||||||
|
The Address field is required.;The Address field is required.
|
||||||
|
The City field is required.;The City field is required.
|
||||||
|
The State field is required.;The State field is required.
|
||||||
|
The Country field is required.;The Country field is required.
|
||||||
|
Street and house number requered;Street and house number requered
|
||||||
|
Max lenght reached;Max lenght reached
|
||||||
Reference in New Issue
Block a user