Files
BeWoPlaner/Service/Reporting/ExportAndPrintHelper.cs

161 lines
6.1 KiB
C#

using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Service.ServiceUtils;
using BS.Shared;
using BS.Shared.Extensions;
using BS.Shared.Translation;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BeWo.Service.Reporting
{
public class ExportAndPrintHelper
{
// Hier ist der Code, der die StringArrays für den Excel-Export und die Print-Versionen des Exports erstellt
public virtual string[] PrepareHeaderArrayForPersonExport()
{
return new string[] {
"Titel", // 0
"Nachname", // 1
"Vorname", // 2
"Funktion", // 3
"Geburtsdatum", // 4
"Strasse", // 5
"PLZ", // 6
"Ort", // 7
"Telefon", // 8
"Mobil", // 9
"Mail", // 10
"Fax", // 11
"Bemerkung" // 12
};
}
public virtual string[][] PrepareContentArrayForPersonExport(long[] pSortedOids)
{
var lPersons = DAOFactory.GenericDAO.LoadByIDs<Person>(pSortedOids);
string[][] lContent = new string[lPersons.Count][];
for (int iRowCount = 0; iRowCount < lPersons.Count; iRowCount++)
{
lContent[iRowCount] = new string[PrepareHeaderArrayForPersonExport().Count()];
if (lPersons[iRowCount].Title != null)
{
lContent[iRowCount][0] = lPersons[iRowCount].Title.Value;
}
else
{
lContent[iRowCount][0] = string.Empty;
}
lContent[iRowCount][1] = lPersons[iRowCount].LastName;
lContent[iRowCount][2] = lPersons[iRowCount].FirstName;
if (lPersons[iRowCount].Function != null)
{
lContent[iRowCount][3] = lPersons[iRowCount].Function.Value;
}
else
{
lContent[iRowCount][3] = string.Empty;
}
lContent[iRowCount][4] = lPersons[iRowCount].DateOfBirth.DoIfNotNull(d => d.ToShortDateString());
// lContent[iRowCount][4] = lPersons[iRowCount].Sex == Sex.Male ? "männlich" : "weiblich";
if (lPersons[iRowCount].Address != null)
{
lContent[iRowCount][5] = lPersons[iRowCount].Address.Street;
lContent[iRowCount][6] = lPersons[iRowCount].Address.PostalCode;
lContent[iRowCount][7] = lPersons[iRowCount].Address.Town;
}
foreach (var iContact in lPersons[iRowCount].Contacts)
{
switch (iContact.Type)
{
case ContactType.private_Phone:
lContent[iRowCount][8] = iContact.Value;
break;
case ContactType.private_MobilePhone:
lContent[iRowCount][9] = iContact.Value;
break;
case ContactType.private_Mail:
lContent[iRowCount][10] = iContact.Value;
break;
case ContactType.private_Fax:
lContent[iRowCount][11] = iContact.Value;
break;
}
}
lContent[iRowCount][12] = lPersons[iRowCount].Notice;
}
return lContent;
}
public virtual string[] PrepareHeaderArrayForUserExport()
{
return new string[]{ "Mitarbeiter", "Login", "zugeordnete Benutzergruppen" };
}
public virtual string[][] PrepareContentArrayForUserExport(long[] pSortedOids)
{
var lUser = DAOFactory.GenericDAO.LoadByIDs<ApplicationUser>(pSortedOids);
string[][] lContent = new string[lUser.Count][];
for (int iRowCount = 0; iRowCount < lUser.Count; iRowCount++)
{
lContent[iRowCount] = new string[3];
if (lUser[iRowCount].Employee != null)
{
lContent[iRowCount][0] = lUser[iRowCount].Employee.Person.ToString();
}
else
{
lContent[iRowCount][0] = "";
}
lContent[iRowCount][1] = lUser[iRowCount].LoginName;
lContent[iRowCount][2] = string.Join(", ", lUser[iRowCount].UserGroups.Select(ug => ug.Name).ToArray());
}
return lContent;
}
public virtual string[] PrepareHeaderArrayForUserGroupExport()
{
return new string[] { "Name", "Beschreibung", "zugeordnete Rechte" };
}
public virtual string[][] PrepareContentArrayForUserGroupExport(long[] pSortedOids)
{
Translator t = new Translator(new ServiceTranslator());
var lUserGroups = DAOFactory.GenericDAO.LoadByIDs<UserGroup>(pSortedOids);
string[][] lContent = new string[lUserGroups.Count][];
for (int iRowCount = 0; iRowCount < lUserGroups.Count; iRowCount++)
{
lContent[iRowCount] = new string[3];
lContent[iRowCount][0] = lUserGroups[iRowCount].Name;
lContent[iRowCount][1] = lUserGroups[iRowCount].Description;
lContent[iRowCount][2] = string.Join(", ", lUserGroups[iRowCount].Rights.Select(r => BS.Shared.Core.EnumTranslations.UserRightType2Translations[r.RightType]).OrderBy(s => s).ToArray());
}
return lContent;
}
}
}