83 lines
4.4 KiB
C#
83 lines
4.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Documents;
|
|
|
|
namespace PEP_Tool
|
|
{
|
|
class TableCreator
|
|
{
|
|
static int errCount = 0;
|
|
|
|
public static async Task<List<TableInfo>> CreateList(List<TableInfo> userList, string filterAbteilung = "%", string filterAbteilung2 = "%", string filterAbteilung3 = "%", string Arbeitsmuster = "", string Datum = "", string Search = "", bool searchWithFilter = false, bool isSearch = false)
|
|
{
|
|
errCount++;
|
|
//System.Diagnostics.Debug.WriteLine($"{filterAbteilung}, {filterAbteilung2}, {filterAbteilung3}, {Arbeitsmuster}, {Datum}, {Search}, {isSearch}, {searchWithFilter}");
|
|
try
|
|
{
|
|
var list = ((filterAbteilung == "%" || filterAbteilung == "") && (filterAbteilung2 == "%" || filterAbteilung2 == "") && (filterAbteilung3 == "%" || filterAbteilung3 == "")) ? MainWindow.main.DefaultUserList : userList.Where(p => (p.Abteilung == filterAbteilung || p.Abteilung == filterAbteilung2 || p.Abteilung == filterAbteilung3)).ToList();
|
|
|
|
|
|
if (Arbeitsmuster.Contains(";"))
|
|
{
|
|
switch (Arbeitsmuster.Count(t => t == ';'))
|
|
{
|
|
case 1:
|
|
if (list != null) list = list.Where(p => (p.Arbeitsmuster.StartsWith(Arbeitsmuster.Split(';')[0]) || p.Arbeitsmuster.StartsWith(Arbeitsmuster.Split(';')[1]))).ToList();
|
|
break;
|
|
|
|
case 2:
|
|
if (list != null) list = list.Where(p => (p.Arbeitsmuster.StartsWith(Arbeitsmuster.Split(';')[0]) || p.Arbeitsmuster.StartsWith(Arbeitsmuster.Split(';')[1]) || p.Arbeitsmuster.StartsWith(Arbeitsmuster.Split(';')[2]))).ToList();
|
|
break;
|
|
|
|
case 3:
|
|
if (list != null) list = list.Where(p => (p.Arbeitsmuster.StartsWith(Arbeitsmuster.Split(';')[0]) || p.Arbeitsmuster.StartsWith(Arbeitsmuster.Split(';')[1]) || p.Arbeitsmuster.StartsWith(Arbeitsmuster.Split(';')[2]) || p.Arbeitsmuster.StartsWith(Arbeitsmuster.Split(';')[3]))).ToList();
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (list != null)
|
|
list = Arbeitsmuster != "" ? list.Where(p => p.Arbeitsmuster.StartsWith(Arbeitsmuster)).ToList() : list;
|
|
}
|
|
|
|
if(list != null) list = Datum != "" ? list.Where(p => p.Datum == DateTime.Parse(Datum)).ToList() : list;
|
|
|
|
if (!searchWithFilter && Search == "" && isSearch) list = MainWindow.main.DefaultUserList;
|
|
else if ((searchWithFilter && Search == "" && isSearch) || !isSearch) list = list;
|
|
else if (!searchWithFilter && Search != "" && isSearch) list = userList.Where(p => (p.Name.ToLower().Contains(Search.ToLower()) || p.Vorname.ToLower().Contains(Search.ToLower()))).ToList();
|
|
else if (searchWithFilter && Search != "" && isSearch) if (list != null) list = list.Where(p => (p.Name.ToLower().Contains(Search.ToLower()) || p.Vorname.ToLower().Contains(Search.ToLower()))).ToList();
|
|
|
|
if (list != null) list = list.OrderBy(name => name.Name).ThenBy(vorname => vorname.Vorname).ThenBy(abteilung => abteilung.Abteilung).ThenBy(datum => datum.Datum).ToList();
|
|
|
|
|
|
if (list != null)
|
|
{
|
|
errCount = 0;
|
|
return list;
|
|
}
|
|
else return new List<TableInfo>();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
if (errCount > 1)
|
|
{
|
|
LogFile.WriteLine(ex.ToString());
|
|
LogFile.WriteLine("Message: " + ex.Message);
|
|
if (ex.InnerException != null) LogFile.WriteLine("InnerException: " + ex.InnerException);
|
|
}
|
|
|
|
if (errCount < 5) return await Task.Run(() => CreateList(userList, filterAbteilung, filterAbteilung2, filterAbteilung3, Arbeitsmuster, Datum, Search, searchWithFilter, isSearch));
|
|
else return new List<TableInfo>();
|
|
}
|
|
}
|
|
}
|
|
}
|