Files
BeWoPlaner/BeWo/Office/TableModels/CustomerTableModel.cs
2016-06-27 01:45:38 +02:00

144 lines
4.8 KiB
C#

using System.Collections.Generic;
using System.Linq;
using BS.Shared;
using BS.Shared.DataContracts;
namespace BeWo.Office.TableModels
{
public class CustomerTableModel : AbstractTableModel
{
public List<CustomerDC> Customers { get; set; }
private int currentIndex = -1;
public override int Count
{
get { return Customers.Count; }
}
public CustomerDC GetCurrentCustomer()
{
if (Customers != null)
if (currentIndex >= 0 && currentIndex < Customers.Count)
return Customers[currentIndex];
return null;
}
private static List<string> CreateDefaultFieldNames()
{
var fieldnames = new List<string>
{
"Anrede",
"Beruf",
"Eigenbeteiligung",
"Familienstand",
"Fax",
"Geburtsdatum",
"Geschlecht",
"Handy",
"Kinder",
"Kommentar",
"Mail",
"Nachname",
"Ort",
"PLZ",
"Rechnungsadresse_Name",
"Rechnungsadresse_Ort",
"Rechnungsadresse_PLZ",
"Rechnungsadresse_Strasse",
"Strasse",
"Telefon",
"Vorname"
};
return fieldnames;
}
public override bool DataAvailable
{
get { return Customers != null && currentIndex >= 0 && currentIndex < Customers.Count; }
}
public override object GetPropertyValue(string propertyName)
{
var value = string.Empty;
var customer = GetCurrentCustomer();
switch (propertyName.ToLower())
{
case "anrede":
return customer.Title;
case "beruf":
return customer.Profession;
case "eigenbeteiligung":
return customer.CostCenter;
case "familienstand":
return (customer.FamilyStatus.HasValue ? customer.FamilyStatus.Value.ToString() : string.Empty);
case "fax":
return customer.ContactInformations.FirstOrDefault(ci => ci.ContactType.Equals(ContactType.business_Fax));
case "geburtsdatum":
return (customer.DateOfBirth.HasValue ? customer.DateOfBirth.Value.ToShortDateString() : string.Empty);
case "geschlecht":
return customer.Sex.ToString();
case "handy":
return customer.ContactInformations.FirstOrDefault(ci => ci.ContactType.Equals(ContactType.business_MobilePhone));
case "kinder":
return customer.Childs;
case "kommentar":
return customer.Notice;
case "mail":
return customer.ContactInformations.FirstOrDefault(ci => ci.ContactType.Equals(ContactType.business_Mail));
case "nachname":
return customer.LastName;
case "ort":
return customer.Town;
case "plz":
return customer.PostalCode;
case "rechnungsadresse_name":
return customer.InvoiceAddressLine1;
case "rechnungsadresse_ort":
return customer.InvoiceAddressTown;
case "rechnungsadresse_plz":
return customer.InvoiceAddressPostalCode;
case "rechnungsadresse_strasse":
return customer.InvoiceAddressStreet;
case "strasse":
return customer.Street;
case "telefon":
return customer.ContactInformations.FirstOrDefault(ci => ci.ContactType.Equals(ContactType.business_Phone));
case "vorname":
return customer.FirstName;
}
return value;
}
public override void MoveFirst()
{
currentIndex = 0;
}
public override void MoveLast()
{
currentIndex = Customers != null ? Customers.Count - 1 : -1;
}
public override void MoveNext()
{
currentIndex++;
}
public override void MovePrevious()
{
currentIndex--;
}
protected override string[] CreateFieldNames()
{
return CreateDefaultFieldNames().ToArray();
}
}
}