Skip to content

Commit 251f6ef

Browse files
authored
Merge pull request #1044 from TechnologyEnhancedLearning/Develop/Fixes/TD-5134-Issue-not-showing-the-inputted-text-on-the-date-fields-when-there-is-an-error-on-the-screen
TD-5134: Fixed issue not showing the inputted text on the date fields when there is an error on the screen
2 parents b310ed4 + 3f030a9 commit 251f6ef

File tree

2 files changed

+55
-8
lines changed

2 files changed

+55
-8
lines changed

LearningHub.Nhs.WebUI/Controllers/AccountController.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -897,7 +897,7 @@ public async Task<IActionResult> CreateAccountWorkStartDate(AccountCreationViewM
897897
}
898898

899899
await this.multiPageFormService.SetMultiPageFormData(accountCreation, MultiPageFormDataFeature.AddRegistrationPrompt, this.TempData);
900-
var dateVM = accountCreation.StartDate.HasValue ? new AccountCreationDateViewModel() { Day = accountCreation.StartDate.Value.Day, Month = accountCreation.StartDate.GetValueOrDefault().Month, Year = accountCreation.StartDate.Value.Year, FilterText = accountCreationViewModel.FilterText, ReturnToConfirmation = accountCreationViewModel.ReturnToConfirmation } : new AccountCreationDateViewModel() { FilterText = accountCreationViewModel.FilterText, ReturnToConfirmation = accountCreationViewModel.ReturnToConfirmation };
900+
var dateVM = accountCreation.StartDate.HasValue ? new AccountCreationDateViewModel() { Day = accountCreation.StartDate.HasValue ? accountCreation.StartDate.Value.Day.ToString() : string.Empty, Month = accountCreation.StartDate.HasValue ? accountCreation.StartDate.GetValueOrDefault().Month.ToString() : string.Empty, Year = accountCreation.StartDate.HasValue ? accountCreation.StartDate.Value.Year.ToString() : string.Empty, FilterText = accountCreationViewModel.FilterText, ReturnToConfirmation = accountCreationViewModel.ReturnToConfirmation } : new AccountCreationDateViewModel() { FilterText = accountCreationViewModel.FilterText, ReturnToConfirmation = accountCreationViewModel.ReturnToConfirmation };
901901
if (!string.IsNullOrWhiteSpace(accountCreationViewModel.PrimarySpecialtyId) && string.IsNullOrWhiteSpace(accountCreationViewModel.FilterText))
902902
{
903903
var specialty = this.specialtyService.GetSpecialtiesAsync().Result.FirstOrDefault(x => x.Id == specialtyId);
@@ -959,7 +959,7 @@ public async Task<IActionResult> CreateAccountStartDate(bool? returnToConfirmati
959959
}
960960
}
961961

962-
var dateVM = accountCreation.StartDate.HasValue ? new AccountCreationDateViewModel() { Day = accountCreation.StartDate.Value.Day, Month = accountCreation.StartDate.GetValueOrDefault().Month, Year = accountCreation.StartDate.Value.Year, ReturnToConfirmation = returnToConfirmation } : new AccountCreationDateViewModel() { ReturnToConfirmation = returnToConfirmation };
962+
var dateVM = accountCreation.StartDate.HasValue ? new AccountCreationDateViewModel() { Day = accountCreation.StartDate.HasValue ? accountCreation.StartDate.Value.Day.ToString() : string.Empty, Month = accountCreation.StartDate.HasValue ? accountCreation.StartDate.GetValueOrDefault().Month.ToString() : string.Empty, Year = accountCreation.StartDate.HasValue ? accountCreation.StartDate.Value.Year.ToString() : string.Empty, ReturnToConfirmation = returnToConfirmation } : new AccountCreationDateViewModel() { ReturnToConfirmation = returnToConfirmation };
963963
return this.View("CreateAccountWorkStartDate", dateVM);
964964
}
965965

LearningHub.Nhs.WebUI/Models/Account/AccountCreationDateViewModel.cs

Lines changed: 53 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,32 +13,79 @@ public class AccountCreationDateViewModel : AccountCreationViewModel, IValidatab
1313
/// <summary>
1414
/// Gets or sets the Day.
1515
/// </summary>
16-
public int? Day { get; set; }
16+
public string Day { get; set; }
17+
18+
/// <summary>
19+
/// Gets or sets the Day Field.
20+
/// </summary>
21+
public int? DayInput { get; set; }
1722

1823
/// <summary>
1924
/// Gets or sets the Country.
2025
/// </summary>
21-
public int? Month { get; set; }
26+
public string Month { get; set; }
27+
28+
/// <summary>
29+
/// Gets or sets the Month input.
30+
/// </summary>
31+
public int? MonthInput { get; set; }
2232

2333
/// <summary>
2434
/// Gets or sets the Year.
2535
/// </summary>
26-
public int? Year { get; set; }
36+
public string Year { get; set; }
37+
38+
/// <summary>
39+
/// Gets or sets YearInput.
40+
/// </summary>
41+
public int? YearInput { get; set; }
2742

2843
/// <summary>
2944
/// Gets or sets the GetDate.
3045
/// </summary>
3146
/// <returns>DateTime.</returns>
3247
public DateTime? GetDate()
3348
{
34-
return (this.Day.HasValue && this.Month.HasValue && this.Year.HasValue) ? new DateTime(this.Year!.Value, this.Month!.Value, this.Day!.Value) : (DateTime?)null;
49+
return (this.DayInput.HasValue && this.MonthInput.HasValue && this.YearInput.HasValue) ? new DateTime(this.YearInput!.Value, this.MonthInput!.Value, this.DayInput!.Value) : (DateTime?)null;
3550
}
3651

3752
/// <inheritdoc/>
3853
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
3954
{
40-
return DateValidator.ValidateDate(this.Day, this.Month, this.Year, "valid start date")
41-
.ToValidationResultList(nameof(this.Day), nameof(this.Month), nameof(this.Year));
55+
var validationResults = new List<ValidationResult>();
56+
int parsedDay = 0;
57+
int parsedMonth = 0;
58+
int parsedYear = 0;
59+
60+
if (!string.IsNullOrWhiteSpace(this.Day) && !int.TryParse(this.Day, out parsedDay))
61+
{
62+
validationResults.Add(new ValidationResult(
63+
$"The value '{this.Day}' is not valid for Day.", new[] { nameof(this.Day) }));
64+
}
65+
66+
if (!string.IsNullOrWhiteSpace(this.Month) && !int.TryParse(this.Month, out parsedMonth))
67+
{
68+
validationResults.Add(new ValidationResult(
69+
$"The value '{this.Month}' is not valid for Month.", new[] { nameof(this.Month) }));
70+
}
71+
72+
if (!string.IsNullOrWhiteSpace(this.Year) && !int.TryParse(this.Year, out parsedYear))
73+
{
74+
validationResults.Add(new ValidationResult(
75+
$"The value '{this.Year}' is not valid for Year.", new[] { nameof(this.Year) }));
76+
}
77+
78+
if (validationResults.Count > 0)
79+
{
80+
return validationResults;
81+
}
82+
83+
this.DayInput = parsedDay;
84+
this.MonthInput = parsedMonth;
85+
this.YearInput = parsedYear;
86+
87+
return DateValidator.ValidateDate(this.DayInput, this.MonthInput, this.YearInput, "valid start date")
88+
.ToValidationResultList(nameof(this.Day), nameof(this.Month), nameof(this.Year));
4289
}
4390
}
4491
}

0 commit comments

Comments
 (0)