Files
BeWoPlaner/Shared/DataContracts/ClientPartials/SupportConceptOverviewDC.cs
2016-06-27 01:45:38 +02:00

164 lines
5.7 KiB
C#

using System;
using System.Windows.Media;
using BS.Shared.Extensions;
namespace BS.Shared.DataContracts
{
partial class SupportConceptOverviewDC
{
public string BERecordedAndBilled
{
get
{
decimal diff = BERecordedTillNow - BEBilledTillNow;
if (diff > 0)
{
return string.Format("{0:0.00} (von {1:0.00})", BEBilledTillNow, BERecordedTillNow);
}
return string.Format("{0:0.00}", BEBilledTillNow);
}
}
public string PassageStatus
{
get
{
decimal minpercent = -1;
decimal maxpercent = -1;
decimal sumPerYear = GetAppovedBEPerYear();
sumPerYear = Math.Round(sumPerYear);
if (sumPerYear == 99)
{
minpercent = 8900m/99m;
maxpercent = 10900m/99m;
}
else if (sumPerYear == 120)
{
minpercent = 11000m/120m;
maxpercent = 13300m/120m;
}
else if (sumPerYear == 147)
{
minpercent = 13400m/147m;
maxpercent = 17200m/147m;
}
else if (sumPerYear == 198)
{
minpercent = 17300m/198m;
maxpercent = 24300m/198m;
}
else if (sumPerYear == 288)
{
minpercent = 24400m/288m;
maxpercent = 31500m/288m;
}
else if (sumPerYear == 343)
{
minpercent = 31600m/343m;
maxpercent = 39600m/343m;
}
if (minpercent > 0)
{
if (minpercent <= BEDifferenceApprovedRecordedTillNowInPercent &&
BEDifferenceApprovedRecordedTillNowInPercent <= maxpercent)
{
return "Innerhalb des Korridors";
}
return "Außerhalb des Korridors";
}
return null;
}
}
private decimal GetAppovedBEPerYear()
{
decimal total = BEApprovedSum;
DateTime? start = ApprovedStartDate;
if (!start.HasValue)
start = RequestedStartDate;
DateTime? end = ApprovedEndDate;
if (!end.HasValue)
end = RequestedEndDate;
if (start.HasValue && end.HasValue)
{
decimal days = (decimal)end.Value.Subtract(start.Value).Days + 1;
decimal years = days / 365m;
if (years != 0)
{
return total/years;
}
}
return 0;
}
public Brush PassageStatusColor
{
get
{
var status = PassageStatus;
if (status != null)
{
if (status.Contains("Innerhalb"))
return Brushes.ForestGreen;
else
return Brushes.Red;
}
return null;
}
}
public string HeaderString
{
get
{
var open = this.BEOpen;
var openPerWeek = this.BEOpenPerWeek;
var unit = "Stunden";
if (this.ServiceUnit != null && this.ServiceUnit.CostRateValue.HasValue && !string.IsNullOrEmpty(this.ServiceUnit.UnitName))
{
unit = this.ServiceUnit.UnitName;
if (this.ServiceUnit.CostRateValue != 60)
{
open = this.ServiceUnit.GetMinutesInBE(open);
openPerWeek = this.ServiceUnit.GetMinutesInBE(openPerWeek);
}
}
if (this.IsApproved && this.ApprovedStartDate.HasValue && this.ApprovedEndDate.HasValue)
{
return string.Format("{0} - {1} | {2:0.00} Wochen verbleibend | {3:0.00} {4} bzw. {5:0.00} {4}/Woche verbleibend", this.ApprovedStartDate.Value.ToMonthSlashShortYear(), this.ApprovedEndDate.Value.ToMonthSlashShortYear(), this.OpenWeeks, open, unit, openPerWeek);
}
if (this.RequestedStartDate.HasValue && this.RequestedEndDate.HasValue)
{
return string.Format("{0} - {1} | {2:0.00} Wochen verbleibend | {3:0.00} {4} bzw. {5:0.00} {4}/Woche verbleibend | Nicht bewilligt!",
this.RequestedStartDate.Value.ToShortDateString(),
this.RequestedEndDate.Value.ToShortDateString(),
this.OpenWeeks,
open,
unit,
openPerWeek);
}
return "Keine Zeitangaben | Nicht bewilligt!";
}
}
public string Unit
{
get
{
if (this.ServiceUnit != null && this.ServiceUnit.CostRateValue.HasValue && !string.IsNullOrEmpty(this.ServiceUnit.UnitName))
{
return this.ServiceUnit.UnitName;
}
return "Stunden";
}
}
}
}