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.
102 lines
3.2 KiB
102 lines
3.2 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 ();
|
|
}
|