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

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();
}