Add real name to profile form (#12)

This commit is contained in:
Daniel J. Summers 2021-02-07 16:37:47 -05:00
parent 1b2540e5d2
commit 8350d0bddf
6 changed files with 26 additions and 4 deletions

View File

@ -11,6 +11,16 @@
<Loading OnLoad=@SetUpProfile Message=@(new MarkupString("Loading Your Profile&hellip;"))> <Loading OnLoad=@SetUpProfile Message=@(new MarkupString("Loading Your Profile&hellip;"))>
<EditForm Model=@ProfileForm OnValidSubmit=@SaveProfile> <EditForm Model=@ProfileForm OnValidSubmit=@SaveProfile>
<DataAnnotationsValidator /> <DataAnnotationsValidator />
<div class="form-row">
<div class="col col-xs-12 col-sm-10 col-md-8 col-lg-6">
<div class="form-group">
<label for="realName" class="jjj-label">Real Name</label>
<InputText id="realName" @bind-Value=@ProfileForm.RealName class="form-control"
placeholder="Leave blank to use your NAS display name" />
<ValidationMessage For=@(() => ProfileForm.RealName) />
</div>
</div>
</div>
<div class="form-row"> <div class="form-row">
<div class="col"> <div class="col">
<div class="form-check"> <div class="form-check">

View File

@ -48,6 +48,7 @@ namespace JobsJobsJobs.Client.Pages.Citizen
ServerApi.SetJwt(http, state); ServerApi.SetJwt(http, state);
var continentTask = state.GetContinents(http); var continentTask = state.GetContinents(http);
var profileTask = ServerApi.RetrieveProfile(http, state); var profileTask = ServerApi.RetrieveProfile(http, state);
//var citizenTask = ServerApi.RetrieveOne<Citizen>(http,)
await Task.WhenAll(continentTask, profileTask); await Task.WhenAll(continentTask, profileTask);

View File

@ -5,7 +5,7 @@
</div> </div>
<div class="col col-xs-10 col-sm-10 col-md-6"> <div class="col col-xs-10 col-sm-10 col-md-6">
<div class="form-group"> <div class="form-group">
<label for="skillDesc@(Skill.Id)">Skill</label> <label for="skillDesc@(Skill.Id)" class="jjj-label">Skill</label>
<input type="text" id="skillDesc@(Skill.Id)" @bind="@Skill.Description" class="form-control" maxlength="100" <input type="text" id="skillDesc@(Skill.Id)" @bind="@Skill.Description" class="form-control" maxlength="100"
placeholder="A skill (language, design technique, process, etc.)"> placeholder="A skill (language, design technique, process, etc.)">
<ValidationMessage For="@(() => Skill.Description)" /> <ValidationMessage For="@(() => Skill.Description)" />
@ -13,7 +13,7 @@
</div> </div>
<div class="col col-xs-12 col-sm-12 col-md-5"> <div class="col col-xs-12 col-sm-12 col-md-5">
<div class="form-group"> <div class="form-group">
<label for="skillNotes@(Skill.Id)">Notes</label> <label for="skillNotes@(Skill.Id)" class="jjj-label">Notes</label>
<input type="text" id="skillNotes@(Skill.Id)" @bind="@Skill.Notes" class="form-control" maxlength="100" <input type="text" id="skillNotes@(Skill.Id)" @bind="@Skill.Notes" class="form-control" maxlength="100"
placeholder="A further description of the skill (100 characters max)"> placeholder="A further description of the skill (100 characters max)">
<ValidationMessage For="@(() => Skill.Notes)" /> <ValidationMessage For="@(() => Skill.Notes)" />

View File

@ -66,6 +66,7 @@ label.jjj-required::after {
content: ' *'; content: ' *';
} }
label.jjj-label { label.jjj-label,
::placeholder {
font-style: italic; font-style: italic;
} }

View File

@ -46,7 +46,7 @@ namespace JobsJobsJobs.Server.Areas.Api.Controllers
private CitizenId CurrentCitizenId => CitizenId.Parse(User.FindFirst(ClaimTypes.NameIdentifier)!.Value); private CitizenId CurrentCitizenId => CitizenId.Parse(User.FindFirst(ClaimTypes.NameIdentifier)!.Value);
// This returns 204 to indicate that there is no profile data for the current citizen (if, of course, that is // This returns 204 to indicate that there is no profile data for the current citizen (if, of course, that is
// the case. The version where an ID is specified returns 404, which is an error condition, as it should not // the case). The version where an ID is specified returns 404, which is an error condition, as it should not
// occur unless someone is messing with a URL. // occur unless someone is messing with a URL.
[HttpGet("")] [HttpGet("")]
public async Task<IActionResult> Get() public async Task<IActionResult> Get()
@ -89,6 +89,10 @@ namespace JobsJobsJobs.Server.Areas.Api.Controllers
foreach (var skill in skills) await _db.SaveSkill(skill); foreach (var skill in skills) await _db.SaveSkill(skill);
await _db.DeleteMissingSkills(CurrentCitizenId, skills.Select(s => s.Id)); await _db.DeleteMissingSkills(CurrentCitizenId, skills.Select(s => s.Id));
// Real Name
_db.Update((await _db.FindCitizenById(CurrentCitizenId))!
with { RealName = string.IsNullOrWhiteSpace(form.RealName) ? null : form.RealName });
await _db.SaveChangesAsync(); await _db.SaveChangesAsync();
return Ok(); return Ok();
} }

View File

@ -19,6 +19,12 @@ namespace JobsJobsJobs.Shared.Api
/// </summary> /// </summary>
public bool IsPublic { get; set; } public bool IsPublic { get; set; }
/// <summary>
/// The user's real name
/// </summary>
[StringLength(255)]
public string RealName { get; set; } = "";
/// <summary> /// <summary>
/// The ID of the continent on which the citizen is located /// The ID of the continent on which the citizen is located
/// </summary> /// </summary>