472 lines
13 KiB
C#
472 lines
13 KiB
C#
using BS.Shared.Extensions;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Media;
|
|
|
|
namespace BS.Shared.DataContracts.Compact
|
|
{
|
|
public partial class CompactSupportConceptDC : IFilterableDC
|
|
{
|
|
private List<string> _CostBearerDetailStrings;
|
|
|
|
public string AddressString
|
|
{
|
|
get
|
|
{
|
|
return this.Customer.AddressString;
|
|
}
|
|
}
|
|
|
|
public string AllCostBearerNames
|
|
{
|
|
get
|
|
{
|
|
return string.Join(", ", this.CostBearerList.Select(cb => cb.Organisation != null ? cb.Organisation.Name : string.Empty).ToArray());
|
|
}
|
|
}
|
|
|
|
public string ConferenceDateString
|
|
{
|
|
get
|
|
{
|
|
if (this.ConferenceDate != null)
|
|
{
|
|
return this.ConferenceDate.Value.ToShortDateString();
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public string CostBearer
|
|
{
|
|
get
|
|
{
|
|
List<string> cbs = this.CostBearerDetailStrings;
|
|
|
|
if (cbs != null && cbs.Count > 0)
|
|
{
|
|
return cbs[0];
|
|
}
|
|
|
|
return string.Empty;
|
|
}
|
|
}
|
|
|
|
public List<string> CostBearerDetailStrings
|
|
{
|
|
get
|
|
{
|
|
return this._CostBearerDetailStrings ?? this.CreateCostBearerDetailStrings();
|
|
}
|
|
}
|
|
|
|
public string CustomerFullName
|
|
{
|
|
get
|
|
{
|
|
return this.Customer != null ? this.Customer.FullName : null;
|
|
}
|
|
}
|
|
|
|
public string CustomerName
|
|
{
|
|
get
|
|
{
|
|
return this.Customer != null ? this.Customer.ToString() : null;
|
|
}
|
|
}
|
|
|
|
public string DetailDescription
|
|
{
|
|
get
|
|
{
|
|
string teamString = "";
|
|
if (!this.Customer.RelatedTeams.IsNullOrEmpty())
|
|
teamString = " | " + this.Customer.RelatedTeams;
|
|
|
|
if (this.Customer != null && !String.IsNullOrWhiteSpace(this.Customer.CustomerAlias))
|
|
{
|
|
return String.Format("{0} ({1}) {2}{3}", this.Customer, this.Customer.CustomerAlias, this.Customer.DateOfBirthString, teamString);
|
|
}
|
|
|
|
return this.Customer + " " + this.Customer.DateOfBirthString + teamString;
|
|
}
|
|
}
|
|
|
|
public DateTime? EndDate
|
|
{
|
|
get
|
|
{
|
|
DateTime? maxDate = null;
|
|
|
|
foreach (CompactCostBearerDC cb in this.CostBearerList)
|
|
{
|
|
DateTime? end = null;
|
|
end = cb.ApprovedEndDate;
|
|
|
|
if (end == null)
|
|
{
|
|
end = cb.RequestedEndDate;
|
|
}
|
|
|
|
if (maxDate == null || (end != null && end.Value > maxDate.Value))
|
|
{
|
|
maxDate = end;
|
|
}
|
|
}
|
|
|
|
return maxDate;
|
|
}
|
|
}
|
|
|
|
public bool ExpiresIn3MonthOrLess
|
|
{
|
|
get
|
|
{
|
|
bool expires = false;
|
|
|
|
DateTime? date = this.EndDate;
|
|
|
|
if (this.Customer.TerminationDate.HasValue)
|
|
{
|
|
if (this.Customer.TerminationDate < date)
|
|
{
|
|
date = this.Customer.TerminationDate;
|
|
}
|
|
}
|
|
if (date != null)
|
|
{
|
|
expires = date < DateTime.Now.AddMonths(Settings.ApplicationSettings.SupportConceptExpirationLimitInMonths);
|
|
}
|
|
|
|
return expires;
|
|
}
|
|
}
|
|
|
|
public string FilterRelevants
|
|
{
|
|
get
|
|
{
|
|
// return string.Join(" ", CostBearerDetailStrings.ToArray())
|
|
// + " " + string.Join(" ", CustomerReferenceNumbers.ToArray())
|
|
// + " " + Customer.ToString();
|
|
string fr = string.Join(" ", this.CustomerReferenceNumbers.ToArray()) + " " + DetailDescription;
|
|
|
|
fr += " " + string.Join(" ", this.CostBearerDetailStrings.ToArray());
|
|
|
|
fr += " " + this.Customer.PostalCode;
|
|
|
|
return fr;
|
|
}
|
|
}
|
|
|
|
public string FirstCostBearerDetailString
|
|
{
|
|
get
|
|
{
|
|
|
|
if (this.CostBearerDetailStrings != null && this.CostBearerDetailStrings.Count > 0)
|
|
{
|
|
return this.CostBearerDetailStrings[0];
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public string FirstName
|
|
{
|
|
get
|
|
{
|
|
return this.Customer != null ? this.Customer.FirstName : null;
|
|
}
|
|
}
|
|
|
|
public string PostalCode
|
|
{
|
|
get
|
|
{
|
|
return this.Customer.PostalCode;
|
|
}
|
|
}
|
|
|
|
public Brush ForegroundBrush
|
|
{
|
|
get
|
|
{
|
|
if (this.IsAboutToExpire)
|
|
{
|
|
return Brushes.Red;
|
|
}
|
|
else if (this.ExpiresIn3MonthOrLess)
|
|
{
|
|
return Brushes.Yellow;
|
|
}
|
|
else
|
|
{
|
|
return new SolidColorBrush(Color.FromRgb(160, 160, 160));
|
|
}
|
|
}
|
|
}
|
|
|
|
public string IconPath
|
|
{
|
|
get
|
|
{
|
|
return @"..\..\Ressources\Icons\IDBadgeDisabled.png";
|
|
}
|
|
}
|
|
|
|
public List<IInvoiceRecipient> InvoiceRecipients
|
|
{
|
|
get
|
|
{
|
|
var result = new List<IInvoiceRecipient> { this.Customer };
|
|
result.AddRange(this.CostBearerList.Cast<IInvoiceRecipient>());
|
|
return result;
|
|
}
|
|
}
|
|
|
|
public bool IsAboutToExpire
|
|
{
|
|
get
|
|
{
|
|
bool expires = false;
|
|
|
|
DateTime? date = this.EndDate;
|
|
|
|
if (this.Customer.TerminationDate.HasValue)
|
|
{
|
|
if (this.Customer.TerminationDate < date)
|
|
{
|
|
date = this.Customer.TerminationDate;
|
|
}
|
|
}
|
|
|
|
if (date != null)
|
|
{
|
|
expires = date < DateTime.Now.AddDays(7); // TODO anz Tage einstellbar machen
|
|
}
|
|
|
|
return expires;
|
|
}
|
|
}
|
|
|
|
public bool IsArchived
|
|
{
|
|
get
|
|
{
|
|
return this.ActivationType == ActivationTypeId.Archived;
|
|
}
|
|
}
|
|
|
|
public bool IsDeleted
|
|
{
|
|
get
|
|
{
|
|
return this.ActivationType == ActivationTypeId.Deleted;
|
|
}
|
|
}
|
|
|
|
public string LastName
|
|
{
|
|
get
|
|
{
|
|
return this.Customer != null ? this.Customer.LastName : null;
|
|
}
|
|
}
|
|
|
|
public string SimpleDescription
|
|
{
|
|
get
|
|
{
|
|
return this.ToString();
|
|
}
|
|
}
|
|
|
|
public DateTime? StartDate
|
|
{
|
|
get
|
|
{
|
|
DateTime? minDate = null;
|
|
|
|
foreach (CompactCostBearerDC cb in this.CostBearerList)
|
|
{
|
|
DateTime? start = null;
|
|
start = cb.ApprovedStartDate;
|
|
|
|
if (start == null)
|
|
{
|
|
start = cb.RequestedStartDate;
|
|
}
|
|
|
|
if (minDate == null || (start != null && start.Value < minDate.Value))
|
|
{
|
|
minDate = start;
|
|
}
|
|
}
|
|
|
|
return minDate;
|
|
}
|
|
}
|
|
|
|
public bool SupportsActivationType
|
|
{
|
|
get
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
public long Version
|
|
{
|
|
get
|
|
{
|
|
return this.SupportConceptVersion;
|
|
}
|
|
|
|
set
|
|
{
|
|
this.SupportConceptVersion = value;
|
|
}
|
|
}
|
|
|
|
public SolidColorBrush FilterableBrush { get { return new SolidColorBrush(Colors.Transparent); } }
|
|
|
|
public override bool Equals(object obj)
|
|
{
|
|
if (obj is CompactSupportConceptDC)
|
|
{
|
|
CompactSupportConceptDC dc = obj as CompactSupportConceptDC;
|
|
|
|
if (this.CostBearerList != null && this.CostBearerList.Count == 1 && dc.CostBearerList != null && dc.CostBearerList.Count == 1)
|
|
{
|
|
return this.CostBearerList[0].CostBearer2SupportConceptOid == dc.CostBearerList[0].CostBearer2SupportConceptOid;
|
|
}
|
|
|
|
return this.SupportConceptOid == ((CompactSupportConceptDC)obj).SupportConceptOid;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public override int GetHashCode()
|
|
{
|
|
if (this.CostBearerList != null && this.CostBearerList.Count == 1)
|
|
{
|
|
return this.GetType().Name.GetHashCode() ^ this.CostBearerList[0].CostBearer2SupportConceptOid.GetHashCode();
|
|
}
|
|
|
|
return this.GetType().Name.GetHashCode() ^ this.SupportConceptOid.GetHashCode();
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
DateTime? start = this.StartDate;
|
|
DateTime? end = this.EndDate;
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
if (start != null)
|
|
{
|
|
sb.Append(start.Value.ToShortDateString());
|
|
}
|
|
|
|
if (start != null || end != null)
|
|
{
|
|
sb.Append(" - ");
|
|
}
|
|
|
|
if (end != null)
|
|
{
|
|
sb.Append(end.Value.ToShortDateString());
|
|
}
|
|
|
|
return sb.ToString();
|
|
}
|
|
|
|
private List<string> CreateCostBearerDetailStrings()
|
|
{
|
|
this._CostBearerDetailStrings = new List<string>();
|
|
foreach (CompactCostBearerDC cb in this.CostBearerList)
|
|
{
|
|
DateTime? from = null;
|
|
DateTime? to = null;
|
|
|
|
from = cb.ApprovedStartDate;
|
|
to = cb.ApprovedEndDate;
|
|
|
|
if (from == null)
|
|
{
|
|
from = cb.RequestedStartDate;
|
|
}
|
|
|
|
if (to == null)
|
|
{
|
|
to = cb.RequestedEndDate;
|
|
}
|
|
|
|
StringBuilder cbstr = new StringBuilder();
|
|
|
|
|
|
if (from != null && to != null)
|
|
{
|
|
cbstr.Append(from.Value.ToShortDateString());
|
|
cbstr.Append(" - ");
|
|
cbstr.Append(to.Value.ToShortDateString());
|
|
}
|
|
|
|
if (this.Customer.TerminationDate.HasValue)
|
|
{
|
|
String grund = "";
|
|
if (!String.IsNullOrEmpty(Customer.TerminationReason))
|
|
{
|
|
grund = ", Begründung: " + Customer.TerminationReason;
|
|
}
|
|
cbstr.Append(String.Format(" (Betreuung beendet am: {0:dd.MM.yyyy}{1})", Customer.TerminationDate, grund));
|
|
}
|
|
|
|
if (cbstr.Length > 0)
|
|
{
|
|
cbstr.Append(" ");
|
|
}
|
|
|
|
if (cb.Organisation != null)
|
|
{
|
|
cbstr.Append(cb.Organisation.Name);
|
|
}
|
|
|
|
if (cb.ApprovedStartDate == null || cb.ApprovedEndDate == null)
|
|
{
|
|
cbstr.Append(" nicht bewilligt!");
|
|
}
|
|
|
|
String str = cbstr.ToString();
|
|
|
|
if (!String.IsNullOrEmpty(cb.CustomerReferenceNumber))
|
|
{
|
|
str = String.Format("{0}, {1}", str, cb.CustomerReferenceNumber);
|
|
}
|
|
|
|
if (!String.IsNullOrEmpty(cb.Bezeichnung))
|
|
{
|
|
str = String.Format("{0} {1}", cb.Bezeichnung, str);
|
|
}
|
|
|
|
this._CostBearerDetailStrings.Add(str);
|
|
}
|
|
|
|
return this._CostBearerDetailStrings;
|
|
}
|
|
|
|
public String CustomerAndFirstDetailString
|
|
{
|
|
get { return String.Format("{0}\n{1}", CustomerName, FirstCostBearerDetailString); }
|
|
}
|
|
|
|
public string RelatedTeams { get; set; }
|
|
}
|
|
} |