164 lines
5.7 KiB
C#
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";
|
|
}
|
|
}
|
|
|
|
}
|
|
} |