| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- using comal.timesheets.Data_Classes;
- using Comal.Classes;
- using InABox.Clients;
- using InABox.Core;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using Xamarin.Forms;
- using Xamarin.Forms.Xaml;
- namespace comal.timesheets
- {
- [XamlCompilation(XamlCompilationOptions.Compile)]
- public partial class EmployeeSelect : ContentPage
- {
- List<EmployeeShell> employees = new List<EmployeeShell>();
- List<EmployeeShell> selectedEmployees = new List<EmployeeShell>();
- List<EmployeeShell> searchList = new List<EmployeeShell>();
- List<string> teams = new List<string>();
- string currentFilter = "";
- public event OnEmployeesSaved OnEmployeesSaved;
- public event OnEmployeeSaved OnEmployeeSaved;
- bool multiSelect = false;
- public EmployeeSelect(bool multiselect = false)
- {
- InitializeComponent();
- multiSelect = multiselect;
- NavigationPage.SetHasBackButton(this, false);
- LoadEmployees();
- }
- private void Exit(object sender, EventArgs e)
- {
- Navigation.PopAsync();
- }
- private void Save_Clicked(object sender, EventArgs e)
- {
- OnEmployeesSaved?.Invoke(selectedEmployees);
- Navigation.PopAsync();
- }
- private void Employee_Tapped(object sender, EventArgs e)
- {
- if (multiSelect)
- {
- EmployeeShell emp = employeeListview.SelectedItem as EmployeeShell;
- if (!selectedEmployees.Contains(emp))
- {
- emp.ImageSource = "tick.png";
- selectedEmployees.Add(emp);
- if (selectedEmployees.Count == 1)
- {
- saveBtn.IsVisible = true;
- column1.Width = new GridLength(1, GridUnitType.Star);
- selectedStackLayout.IsVisible = true;
- }
- selectedListview.ItemsSource = null;
- selectedListview.ItemsSource = selectedEmployees;
- }
- }
- else
- {
- EmployeeShell emp = employeeListview.SelectedItem as EmployeeShell;
- OnEmployeeSaved?.Invoke(emp);
- }
- }
- private void SelectedList_Tapped(object sender, EventArgs e)
- {
- EmployeeShell emp = selectedListview.SelectedItem as EmployeeShell;
- var selectedemp = selectedEmployees.Find(x => x.ID == emp.ID);
- if (selectedemp != null)
- {
- selectedEmployees.Remove(selectedemp);
- if (selectedEmployees.Count == 0)
- {
- saveBtn.IsVisible = false;
- column1.Width = 0;
- selectedStackLayout.IsVisible = false;
- selectedListview.ItemsSource = null;
- }
- else
- {
- selectedListview.ItemsSource = null;
- selectedListview.ItemsSource = selectedEmployees;
- }
- }
- }
- #region Loading / Utils
- private void LoadEmployees()
- {
- Task.Run(() =>
- {
- CoreTable table = new Client<EmployeeTeam>().Query(null,
- new Columns<EmployeeTeam>(
- x => x.EmployeeLink.Name,
- x => x.EmployeeLink.ID,
- x => x.TeamLink.Name
- ),
- new SortOrder<EmployeeTeam>(x => x.EmployeeLink.Name));
- if (table.Rows.Any())
- {
- foreach (CoreRow row in table.Rows)
- {
- EmployeeShell emp = new EmployeeShell
- {
- ID = row.Get<Guid>("EmployeeLink.ID"),
- Name = row.Get<string>("EmployeeLink.Name"),
- TeamName = row.Get<string>("TeamLink.Name")
- };
-
- employees.Add(emp);
- if (!teams.Contains(emp.TeamName))
- {
- teams.Add(emp.TeamName);
- }
- }
- Device.BeginInvokeOnMainThread(() =>
- {
- teams.Sort();
- teams.Remove("All Staff");
- teams.Insert(0, "All Staff");
- filterOptionsControl.Options = teams;
- filterOptionsControl.CreateRadioButtonsAndSetDefault(teams[0]);
- currentFilter = teams[0];
- filterOptionsControl.OnFilterOptionChanged += FilterOptionsControl_OnFilterOptionChanged;
- var list = employees.Where(x => x.TeamName == teams[0]);
- foreach (var v in list)
- {
- searchList.Add(v);
- }
- employeeListview.ItemsSource = searchList;
- });
- }
- });
- }
- private void FilterOptionsControl_OnFilterOptionChanged(string filterOption)
- {
- if (filterOption == currentFilter)
- return;
- currentFilter = filterOption;
- var list = employees.Where(x => x.TeamName == filterOption);
- searchList.Clear();
- foreach (var v in list)
- {
- searchList.Add(v);
- }
- employeeListview.ItemsSource = null;
- RunSearch();
- }
- private void SearchEnt_Changed(object sender, EventArgs e)
- {
- RunSearch();
- }
- private void RunSearch()
- {
- if (string.IsNullOrWhiteSpace(searchEnt.Text))
- employeeListview.ItemsSource = searchList;
- else
- employeeListview.ItemsSource = searchList.Where(x => x.Name.Contains(searchEnt.Text.ToUpper()) || x.Name.Contains(searchEnt.Text.ToLower())
- || x.Name.Contains(SearchUtils.UpperCaseFirst(searchEnt.Text)));
- }
- #endregion
- }
- }
|