PEPTool/AV-ToolV3/TableCreater.cs
2019-11-21 08:32:45 +01:00

97 lines
5.7 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 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 == ""))
list = userList;
else if(list.DefaultView.RowFilter == "")
list.DefaultView.RowFilter = $"(Abteilung like '{filterAbteilung}' OR Abteilung like '{filterAbteilung2}' OR Abteilung like '{filterAbteilung3}')";
else list.DefaultView.RowFilter = list.DefaultView.RowFilter += $" AND (Abteilung like '{filterAbteilung}' OR Abteilung like '{filterAbteilung2}' OR Abteilung like '{filterAbteilung3}')";
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>();
}
}
}
}