You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
3.8 KiB
98 lines
3.8 KiB
using System.Collections.ObjectModel;
|
|
using UIKit;
|
|
|
|
namespace YOUserbase;
|
|
|
|
public partial class CreateUserPage : ContentPage {
|
|
|
|
private User user;
|
|
|
|
public CreateUserPage() {
|
|
InitializeComponent();
|
|
groupPicker.ItemsSource = new List<string>(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<string>(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();
|
|
} |