Files
BeWoPlaner/BeWo/SchulbegleitenderDienst/TagesansichtVM.cs
2019-09-27 15:55:01 +02:00

272 lines
9.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using BeWo.SchulbegleitenderDienst.ViewModel;
using BS.Shared;
using BS.Shared.DataContracts;
using BS.Shared.DataContracts.Compact;
namespace BeWo.SchulbegleitenderDienst
{
public class TagesansichtVM : VertretungsansichtBaseVM
{
public DateTime Datum { get; set; }
public IList<ArbeitszeitEintragDC> Arbeitszeiten { get; set; }
public CompactOrganisationDC Schule { get; set; }
public CompactEmployeeDC Vertreter { get; set; }
public VertretungsStatus VertretungsStatus { get; set; }
public string WochenansichtBemerkung { get; set; }
public string MitarbeiterStatusColor { get; set; }
public string KlientStatusColor { get; set; }
public string Krankheitszeitraum { get; set; }
public string MitarbeiterEinsatzBei { get; set; }
public DateTime Krankheitsmeldung { get; set; }
public AbsenceTimeDC Absencetime { get; set; }
public VertretungDC Vertretung { get; set; }
public Dictionary<AppointmentDayOfWeek, string> Wochentagsarbeitszeit { get; set; }
public DateTime? StartDate => Absencetime?.Start;
public DateTime? EndDate => Absencetime?.End;
public string ArbeitszeitenString
{
get
{
var text = "";
if (Arbeitszeiten != null)
{
foreach (var ae in Arbeitszeiten)
{
if (text.Length > 0)
{
text += ", ";
}
text += $"{ae.UhrzeitVon} - {ae.UhrzeitBis}";
}
}
return text;
}
}
public string Vertretungszeitraum
{
get
{
var zeitraum = string.Empty;
if (Vertretung != null)
{
if (Vertretung.VertretungsZeitraumVon.Date != Vertretung.VertretungsZeitraumBis.Date)
{
if (Vertretung.VertretungsZeitraumVon.Hour == 0 &&
Vertretung.VertretungsZeitraumVon.Minute == 0 &&
Vertretung.VertretungsZeitraumBis.Hour == 0 &&
Vertretung.VertretungsZeitraumBis.Minute == 0)
{
zeitraum =
Vertretung.VertretungsZeitraumVon.ToString("dd.MM.yyyy") + " - " +
Vertretung.VertretungsZeitraumBis.ToString("dd.MM.yyyy");
}
else
{
zeitraum =
Vertretung.VertretungsZeitraumVon.ToString("dd.MM.yyyy HH:mm") + " - " +
Vertretung.VertretungsZeitraumBis.ToString("dd.MM.yyyy HH:mm");
}
}
else
{
if (Vertretung.VertretungsZeitraumVon.Hour == 0 &&
Vertretung.VertretungsZeitraumVon.Minute == 0 &&
Vertretung.VertretungsZeitraumBis.Hour == 0 &&
Vertretung.VertretungsZeitraumBis.Minute == 0)
{
zeitraum = Vertretung.VertretungsZeitraumVon.ToString("dd.MM.yyyy");
}
else
{
zeitraum =
Vertretung.VertretungsZeitraumVon.ToString("dd.MM.yyyy HH:mm") + " - " +
Vertretung.VertretungsZeitraumBis.ToString("HH:mm");
}
}
}
return zeitraum;
}
}
private List<ArbeitszeitEintragDC> _AssistanceTimes;
public List<ArbeitszeitEintragDC> AssistanceTimes
{
get => _AssistanceTimes;
set
{
if(_AssistanceTimes != value)
{
_AssistanceTimes = value;
FirePropertyChanged(nameof(AssistanceTimes));
}
}
}
public ArbeitszeitEintragDC FirstAssistanceTimeEntry
{
get
{
if (AssistanceTimes != null && AssistanceTimes.Any())
{
return AssistanceTimes[0];
}
return null;
}
}
public new string SchulbegleitenderDienstString
{
get
{
var result = string.Empty;
if(Absencetime != null)
{
if(VertretungsStatus == VertretungsStatus.KlientKrank || Vertretung?.VertretenderMitarbeiterOid != null || Customer.SubstitutionStartingDayCount > 0)
{
if(CustomerPflege?.Equals("Ja") ?? false)
{
result += "Benötigt Pflege";
}
if (CustomerToilettengang?.Equals("Ja") ?? false)
{
if(result.Length > 0)
{
result += ", ";
}
result += "Toilettengang";
}
if (CustomerAggressivitaet?.Equals("Ja") ?? false)
{
if (result.Length > 0)
{
result += ", ";
}
result += "Aggressivität";
}
if (CustomerHygienebelehrung?.Equals("Ja") ?? false)
{
if (result.Length > 0)
{
result += ", ";
}
result += "Hygienebelehrung";
}
if (string.IsNullOrWhiteSpace(CustomerSchutzstufe) == false)
{
if (result.Length > 0)
{
result += ", ";
}
result += $"Schutzstufe {CustomerSchutzstufe}";
}
// Vertretung gewünscht [ab x. Tag]
if (Customer.SubstitutionNeed == SubstitutionNeed.SubstitutionWanted)
{
if(result.Length > 0)
{
result += "\n";
}
result += "Vertretung gewünscht";
if(Customer.SubstitutionStartingDayCount > 0)
{
result += $" ab {Customer.SubstitutionStartingDayCount}. Tag";
}
}
}
else
{
if (EmployeePflege?.Equals("Ja") ?? false)
{
result += "Benötigt Pflege";
}
if (EmployeeToilettengang?.Equals("Ja") ?? false)
{
if (result.Length > 0)
{
result += ", ";
}
result += "Toilettengang";
}
if (EmployeeAggressivitaet?.Equals("Ja") ?? false)
{
if (result.Length > 0)
{
result += ", ";
}
result += "Aggressivität";
}
if (EmployeeHygienebelehrung?.Equals("Ja") ?? false)
{
if (result.Length > 0)
{
result += ", ";
}
result += "Hygienebelehrung";
}
if (string.IsNullOrWhiteSpace(EmployeeSchutzstufe) == false)
{
if (result.Length > 0)
{
result += ", ";
}
result += $"Schutzstufe {EmployeeSchutzstufe}";
}
}
}
return result;
}
}
public new string VertreterInfoString { get; set; }
}
}