97 lines
5.9 KiB
C#
97 lines
5.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace PEP_Tool
|
|
{
|
|
public static class TableCreater
|
|
{
|
|
static int errCount = 0;
|
|
|
|
public static async Task<DataTable> CreateList(DataTable userList, string filterAbteilung = "%", string filterAbteilung2 = "%", string filterAbteilung3 = "%", string filterAbteilung4 = "%", 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
|
|
{
|
|
userList.DefaultView.RowFilter = "";
|
|
DataTable list = new DataTable("UserList");
|
|
list = userList;
|
|
|
|
if (Arbeitsmuster.Contains(";"))
|
|
{
|
|
switch (Arbeitsmuster.Count(t => t == ';'))
|
|
{
|
|
case 1:
|
|
if (list != null) list.DefaultView.RowFilter = $"(Arbeitsmuster like '{Arbeitsmuster.Split(';')[0]}*' OR Arbeitsmuster like '{Arbeitsmuster.Split(';')[1]}*')";
|
|
break;
|
|
|
|
case 2:
|
|
if (list != null) list.DefaultView.RowFilter = $"(Arbeitsmuster like '{Arbeitsmuster.Split(';')[0]}*' OR Arbeitsmuster like '{Arbeitsmuster.Split(';')[1]}*' OR Arbeitsmuster like '{Arbeitsmuster.Split(';')[2]}*')";
|
|
break;
|
|
|
|
case 3:
|
|
if (list != null) list.DefaultView.RowFilter = $"(Arbeitsmuster like '{Arbeitsmuster.Split(';')[0]}*' OR Arbeitsmuster like '{Arbeitsmuster.Split(';')[1]}*' OR Arbeitsmuster like '{Arbeitsmuster.Split(';')[2]}*' OR Arbeitsmuster like '{Arbeitsmuster.Split(';')[3]}*')";
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (list != null)
|
|
list.DefaultView.RowFilter = Arbeitsmuster != "" ? $"Arbeitsmuster like '{Arbeitsmuster}*'" : list.DefaultView.RowFilter;
|
|
}
|
|
|
|
|
|
if ((filterAbteilung == "%" || filterAbteilung == "") && (filterAbteilung2 == "%" || filterAbteilung2 == "") && (filterAbteilung3 == "%" || filterAbteilung3 == "") && (filterAbteilung4 == "%" || filterAbteilung4 == ""))
|
|
list = userList;
|
|
else if(list.DefaultView.RowFilter == "")
|
|
list.DefaultView.RowFilter = $"(Abteilung like '{filterAbteilung}' OR Abteilung like '{filterAbteilung2}' OR Abteilung like '{filterAbteilung3}' OR Abteilung like '{filterAbteilung4}')";
|
|
else list.DefaultView.RowFilter = list.DefaultView.RowFilter += $" AND (Abteilung like '{filterAbteilung}' OR Abteilung like '{filterAbteilung2}' OR Abteilung like '{filterAbteilung3}' OR Abteilung like '{filterAbteilung4}')";
|
|
|
|
if (list.DefaultView.RowFilter == "")
|
|
list.DefaultView.RowFilter = Datum != "" ? list.DefaultView.RowFilter = $"Datum = {String.Format(System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat, "#{0}#", DateTime.Parse(Datum))}" : list.DefaultView.RowFilter;
|
|
else list.DefaultView.RowFilter = Datum != "" ? list.DefaultView.RowFilter += $" AND Datum = {String.Format(System.Globalization.CultureInfo.InvariantCulture.DateTimeFormat, "#{0}#", DateTime.Parse(Datum.Replace(" 00:00:00", "")))}" : list.DefaultView.RowFilter;
|
|
|
|
if (!searchWithFilter && Search == "" && isSearch) list.DefaultView.RowFilter = "";
|
|
else if ((searchWithFilter && Search == "" && isSearch) || !isSearch) list = list;
|
|
else if (!searchWithFilter && Search != "" && isSearch && list.DefaultView.RowFilter == "")
|
|
list.DefaultView.RowFilter = $"(Name like '%{Search.ToLower()}%' OR Vorname like '%{Search.ToLower()}%')";
|
|
else if (!searchWithFilter && Search != "" && isSearch && list.DefaultView.RowFilter != "")
|
|
list.DefaultView.RowFilter = list.DefaultView.RowFilter += $" AND (Name like '%{Search.ToLower()}%' OR Vorname like '%{Search.ToLower()}%')";
|
|
else if (searchWithFilter && Search != "" && isSearch && list.DefaultView.RowFilter == "") list.DefaultView.RowFilter = $"(Name like '%{Search.ToLower()}%' OR Vorname like '%{Search.ToLower()}%')";
|
|
else if (searchWithFilter && Search != "" && isSearch && list.DefaultView.RowFilter != "") list.DefaultView.RowFilter = list.DefaultView.RowFilter += $" AND (Name like '%{Search.ToLower()}%' OR Vorname like '%{Search.ToLower()}%')";
|
|
|
|
list.DefaultView.Sort = "Name,Vorname,Abteilung,Datum";
|
|
|
|
|
|
return list;
|
|
//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);
|
|
}
|
|
return null;
|
|
//if (errCount < 5) return await Task.Run(() => CreateList(userList, filterAbteilung, filterAbteilung2, filterAbteilung3, Arbeitsmuster, Datum, Search, searchWithFilter, isSearch));
|
|
//else return new List<TableInfo>();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|