using System.Collections.ObjectModel; using UIKit; namespace YOUserbase; public partial class CreateUserPage : ContentPage { private User user; public CreateUserPage () { InitializeComponent (); groupPicker.ItemsSource = new List (Data.Groups.Select (x => x.Name)); } public CreateUserPage (User user) { InitializeComponent (); this.user = user; FirstnameEntry.Text = user.Firstname; LastnameEntry.Text = user.Lastname; birthdatePicker.Date = user.BirthDate; FullTimeSwitch.IsToggled = user.IsFullTime; DetailsEntry.Text = user.Details; IsExternalCheck.IsChecked = user.IsExternal; IsRemoteCheck.IsChecked = user.IsRemote; NbProjectsStepper.Value = user.NbProjects; groupPicker.ItemsSource = new List (Data.Groups.Select (x => x.Name)); groupPicker.SelectedIndex = Data.Groups.IndexOf (user.WorkingGroup); btnCreate.Text = "Save"; contentPage.Title = "Edit user"; } private async void OnCreateClicked (object sender, EventArgs e) { var isValid = true; string text = FirstnameEntry.Text; errFirstname.Text = ""; if (String.IsNullOrWhiteSpace (text)) { isValid = false; errFirstname.Text = "First name cannot be empty"; } else if (text.Length > 20) { isValid = false; errFirstname.Text = "First name cannot be longer than 20 characters"; } text = LastnameEntry.Text; errLastname.Text = ""; if (String.IsNullOrWhiteSpace (text)) { isValid = false; errLastname.Text = "Last name cannot be empty"; } else if (text.Length > 20) { isValid = false; errLastname.Text = "Last name cannot be longer than 20 characters"; } var date = birthdatePicker.Date; errBirthDate.Text = ""; if (DateTime.Compare (date, DateTime.Today) > 0) { isValid = false; errBirthDate.Text = "Birth date cannot be in the future"; } errGroup.Text = ""; if (groupPicker.SelectedIndex == -1) { errGroup.Text = "You have to select a valid group"; } errDetails.Text = ""; if (DetailsEntry.Text.Length > 100) { errDetails.Text = "Detail cannot be longer than 100 characters"; } if (isValid) { // Update if (user != null) { var usr = Data.Users.FirstOrDefault (usr => usr.Id == user.Id); usr.Firstname = FirstnameEntry.Text; usr.Lastname = LastnameEntry.Text; usr.BirthDate = birthdatePicker.Date.Date; usr.WorkingGroup = Data.Groups [groupPicker.SelectedIndex]; usr.Details = DetailsEntry.Text; usr.IsFullTime = FullTimeSwitch.IsToggled; usr.IsExternal = IsExternalCheck.IsChecked; usr.IsRemote = IsRemoteCheck.IsChecked; usr.NbProjects = (int)NbProjectsStepper.Value; } else { // Create Data.Users.Add (new User { Firstname = FirstnameEntry.Text, Lastname = LastnameEntry.Text, BirthDate = birthdatePicker.Date.Date, WorkingGroup = Data.Groups [groupPicker.SelectedIndex], Details = DetailsEntry.Text, IsFullTime = FullTimeSwitch.IsToggled, IsExternal = IsExternalCheck.IsChecked, IsRemote = IsRemoteCheck.IsChecked, NbProjects = (int)NbProjectsStepper.Value, }); } await Navigation.PopAsync (); } } void OnStepperChanged (System.Object sender, Microsoft.Maui.Controls.ValueChangedEventArgs e) => lblNbProj.Text = ((Stepper)sender).Value.ToString (); }