Files
BeWoPlaner/ReportImp/VereinLebensgestaltung/CustomerDataReport.cs
2016-06-27 01:45:38 +02:00

539 lines
24 KiB
C#

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using BeWo.Data.Access;
using BeWo.Data.Entities;
using BS.Shared.Core;
using BeWo.Report.ReportObjects;
using BS.Shared.Extensions;
using DevExpress.XtraReports.UI;
namespace BeWo.Report.VereinLebensgestaltung
{
public partial class Klientenstammblatt : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<CustomerDataRO>
{
public Klientenstammblatt()
{
InitializeComponent();
}
public void SetReportDataSource(CustomerDataRO pRO)
{
var c = DAOFactory.GenericDAO.LoadByID<Customer>(pRO.CustomerOid);
String aufgabenKreis = null;
String aufgabenKreisCheck = "";
foreach (var vv in c.VarFieldValueList)
{
var varFieldValue = Utils.XMLDeserializeFromString(vv.SerializedValue, Type.GetType(vv.TypeName));
if (varFieldValue != null)
{
switch (vv.VarFieldDefOid)
{
case 63:
geburtsnamensLabel.Text = varFieldValue.ToString();
break;
case 64:
konfessionsLabel.Text = varFieldValue.ToString();
break;
case 65:
staatsangehoerigkeitsLabel.Text = varFieldValue.ToString();
break;
case 66:
//bisherige anschrift
//anschriftsLabel.Text = varFieldValue.ToString();
break;
case 67:
//if (((decimal) varFieldValue) > 0)
//{
// behindertJaCB.Text = string.Format("ja {0} %", varFieldValue);
//}
break;
case 68:
//var gr = Graphics.FromHwnd(IntPtr.Zero);
//var a = gr.MeasureString(varFieldValue.ToString(), merkmale1Label.Font);
//if (a.Width > merkmale1Label.Width)
//{
// WrapText(varFieldValue.ToString(), new List<XRLabel> { merkmale1Label, merkmale2Label });
//}
break;
case 69:
impfausweisJaCB.Checked = (bool)varFieldValue;
impfausweisNeinCB.Checked = !(bool)varFieldValue;
break;
case 70:
rezeptgebbefreitJaCB.Checked = (bool)varFieldValue;
rezeptgebbefreitNeinCB.Checked = !(bool)varFieldValue;
break;
case 71:
rezeptgebbefreitLabel.Text = ((DateTime) varFieldValue).ToShortDateString();
break;
case 72:
fahrtkostenbefreitJaCB.Checked = (bool)varFieldValue;
fahrtkostenbefreitNeinCB.Checked = !(bool)varFieldValue;
break;
case 73:
gezBefreitJaCB.Checked = (bool)varFieldValue;
gezBefreitNeinCB.Checked = !(bool)varFieldValue;
break;
case 74:
break;
case 75:
aufgabenKreis = varFieldValue.ToString();
//WrapText(varFieldValue.ToString(), new[] {aufgabenKreis1Labelx, aufgabenKreis2Labelx});
break;
case 76:
gdtLabel.Text = varFieldValue.ToString();
break;
case 77:
gdtWohnenLabel.Text = varFieldValue.ToString();
break;
case 78:
WrapText(varFieldValue.ToString(), new List<XRLabel> { gesundRisiko1Label, gesundRisiko2Label });
break;
case 79: // Allergien/Unverträglichekiten
switch (varFieldValue.ToString())
{
case "ja, welche?":
allergienNeinCB.Checked = false;
allergienJaCB.Checked = true;
allergienNichtBekanntCB.Checked = false;
break;
case "nicht bekannt":
allergienNeinCB.Checked = false;
allergienJaCB.Checked = false;
allergienNichtBekanntCB.Checked = true;
break;
default:
allergienNeinCB.Checked = true;
allergienJaCB.Checked = false;
allergienNichtBekanntCB.Checked = false;
break;
}
break;
case 80: // Besonderheiten bei der Ernährung
besonderheitenErnaehrungLabel.Text = varFieldValue.ToString();
break;
case 81: // Montag Uhrzeit
//strukturMontagLabelx.Text = varFieldValue.ToString();
if (!String.IsNullOrEmpty(varFieldValue.ToString()))
{
cellUhrzeitMontag.Text = varFieldValue.ToString();
//xrCheckBox3.Checked = true;
chkMontag.Checked = true;
}
break;
case 82: // Dienstag Uhrzeit
//strukturDienstagLabel.Text = varFieldValue.ToString();
if (!String.IsNullOrEmpty(varFieldValue.ToString()))
{
cellUhrzeitDi.Text = varFieldValue.ToString();
//xrCheckBox4.Checked = true;
chkDienstag.Checked = true;
}
break;
case 83: // Mittwoch Uhrzeit
//strukturMittwochLabel.Text = varFieldValue.ToString();
if (!String.IsNullOrEmpty(varFieldValue.ToString()))
{
cellUhrzeitMi.Text = varFieldValue.ToString();
//xrCheckBox5.Checked = true;
chkMittwoch.Checked = true;
}
break;
case 84: // Donnerstag Uhrzeit
//strukturDonnerstagLabel.Text = varFieldValue.ToString();
if (!String.IsNullOrEmpty(varFieldValue.ToString()))
{
cellUhrzeitDo.Text = varFieldValue.ToString();
//xrCheckBox6.Checked = true;
chkDonnerstag.Checked = true;
}
break;
case 85: // Freitag Uhrzeit
//strukturFreitagLabel.Text = varFieldValue.ToString();
if (!String.IsNullOrEmpty(varFieldValue.ToString()))
{
cellUhrzeitFr.Text = varFieldValue.ToString();
//xrCheckBox7.Checked = true;
chkFreitag.Checked = true;
}
break;
case 86: // Brille/Kontaktlinsen bool
brilleCB.Checked = (bool)varFieldValue;
break;
case 87: // Hörapparat bool
hoerapparatCB.Checked = (bool)varFieldValue;
break;
case 88: // Arm-/Beinprothesen bool
armBeinCB.Checked = (bool)varFieldValue;
break;
case 89: // orthop. Schuhe
orthopSchuheCB.Checked = (bool)varFieldValue;
break;
case 90: // Zahnproth.: oben/unten
zahnprothCB.Checked = (bool)varFieldValue;
break;
case 91: // Rollstuhl bool
rollstuhlCB.Checked = (bool)varFieldValue;
break;
case 92: // Protektoren (z.B. Helm)
protektorenCB.Checked = (bool)varFieldValue;
break;
case 93: // Gehhilfen
gehhilfenCB.Checked = (bool)varFieldValue;
break;
case 94: // Bestattungswünsche
bestattungswuenscheLabel.Text = varFieldValue.ToString();
break;
case 95: // Besonderheiten Bewohner
besonderheitenLabel.Text = varFieldValue.ToString();
break;
case 96: // Einzug
//einzugsLabel.Text = ((DateTime) varFieldValue).ToShortDateString();
break;
case 97:
//behindertJaCB.Checked = (bool)varFieldValue;
//behindertNeinCB.Checked = !(bool)varFieldValue;
break;
case 98:
if ((bool) varFieldValue)
{
if (aufgabenKreisCheck.Length > 0)
aufgabenKreisCheck += ", ";
aufgabenKreisCheck += "Sorge für die Gesundheit";
}
break;
case 99:
if ((bool) varFieldValue)
{
if (aufgabenKreisCheck.Length > 0)
aufgabenKreisCheck += ", ";
aufgabenKreisCheck += "Vermögenssorge";
}
break;
case 100:
if ((bool) varFieldValue)
{
if (aufgabenKreisCheck.Length > 0)
aufgabenKreisCheck += ", ";
aufgabenKreisCheck += "Vertretung gegenüber Behörden, Versicherungen und sonstigen Institutionen";
}
break;
case 101:
if ((bool) varFieldValue)
{
if (aufgabenKreisCheck.Length > 0)
aufgabenKreisCheck += ", ";
aufgabenKreisCheck += "Vertretung in postalischen Angelegenheiten";
}
break;
case 102:
if ((bool) varFieldValue)
{
if (aufgabenKreisCheck.Length > 0)
aufgabenKreisCheck += ", ";
aufgabenKreisCheck += "Aufenthaltsbestimmung";
}
break;
case 103:
if ((bool) varFieldValue)
{
if (aufgabenKreisCheck.Length > 0)
aufgabenKreisCheck += ", ";
aufgabenKreisCheck += "Einwilligungsvorbehalt";
}
break;
case 104:
if ((bool) varFieldValue)
{
if (aufgabenKreisCheck.Length > 0)
aufgabenKreisCheck += ", ";
aufgabenKreisCheck += "Vertretung in Wohnungsangelegenheiten";
}
break;
}
}
}
StringBuilder phoneSb = new StringBuilder();
phoneSb.Append(pRO.Phone);
if (phoneSb.Length > 0)
phoneSb.Append(", ");
phoneSb.Append(pRO.Mobile);
lblTelefonKlient.Text = phoneSb.ToString();
if (c.AssistanceBegin.HasValue)
{
einzugsLabel.Text = c.AssistanceBegin.Value.ToShortDateString();
}
if (!String.IsNullOrWhiteSpace(c.GradDerBehinderung))
{
behindertJaCB.Text = string.Format("ja {0} %", c.GradDerBehinderung);
behindertJaCB.Checked = true;
behindertNeinCB.Checked = false;
}
else
{
behindertJaCB.Checked = false;
behindertNeinCB.Checked = true;
}
if (c.MerkzeichenListe != null)
{
String merkzeichen = "";
foreach (var mz in c.MerkzeichenListe)
{
if (merkzeichen.Length > 0)
merkzeichen += ", ";
merkzeichen += mz.ToString();
}
//var graph = Graphics.FromHwnd(IntPtr.Zero);
//var size = graph.MeasureString(merkzeichen, merkmale1Label.Font);
//if (size.Width > merkmale1Label.Width)
//{
WrapText(merkzeichen, new List<XRLabel> { merkmale1Label, merkmale2Label });
//}
}
if (String.IsNullOrEmpty(aufgabenKreisCheck))
{
cellAufgabenkreis2.Text = aufgabenKreis;
}
else
{
cellAufgabenkreis2.Text = aufgabenKreisCheck;
}
WrapText(c.Diagnosis2CustomerList.Select(s => s.ICD10DiagnosisCode).ToSeparatedString(", "), new[] { diagnosen1Label, diagnosen2Label });
var ang = pRO.EnvironmentPersons.Where(w => (
w.RelationRole.TypeDescription.Equals("Familie") ||
w.RelationRole.TypeDescription.Equals("Ehepartner") ||
w.RelationRole.TypeDescription.Equals("Eltern") ||
w.RelationRole.TypeDescription.Equals("Geschwister") ||
w.RelationRole.TypeDescription.Equals("Tochter / Sohn") ||
w.RelationRole.TypeDescription.Equals("sonstige Angehörige") ||
w.RelationRole.TypeDescription.Equals("Lebensgefährte/in")) && !String.IsNullOrEmpty(w.Customer2PersonNotice) && w.Customer2PersonNotice.ToLower().StartsWith("x")
).OrderBy(a => a.Person.LastName).ToList();
if (ang.Count > 0)
{
relPers1NameLabel.Text = ang[0].Person.FullName;
relPers1Anschrift1Label.Text = ang[0].Person.Street;
relPers1Anschrift2Label.Text = string.Format("{0} {1}", ang[0].Person.PostalCode, ang[0].Person.Town);
relPers1TelnrLabel.Text = ang[0].Person.Communication1;
if(ang.Count > 1)
{
relPers2NameLabel.Text = ang[1].Person.FullName;
relPers2Anschrift1Label.Text = ang[1].Person.Street;
relPers2Anschrift2Label.Text = string.Format("{0} {1}", ang[1].Person.PostalCode, ang[1].Person.Town);
relPers2TelnrLabel.Text = ang[1].Person.Communication1;
}
}
var kk = pRO.EnvironmentOrganisations.FirstOrDefault(f => f.RelationRole.TypeDescription.Equals("Krankenkasse"));
if (kk != null && kk.Customer2OrganisationOid != null)
{
krankenkassenLabel.Text = kk.Organisation.Name;
//var vnr = pRO.CostBearers.FirstOrDefault(f => f.CostBearer.OrganisationOid.Equals(kk.Organisation.OrganisationOid));
//if(vnr != null)
versichertennrlabel.Text = kk.Info1;
}
// Psychiater
var psychoDoc = pRO.EnvironmentPersons.FirstOrDefault(f => f.RelationRole.TypeDescription.Equals("Psychiater")
&& !String.IsNullOrEmpty(f.Customer2PersonNotice) && f.Customer2PersonNotice.ToLower().StartsWith("x"));
if (psychoDoc != null)
{
var tn = string.Format("{0}{1}{2}", psychoDoc.Person.Title, string.IsNullOrEmpty(psychoDoc.Person.Title) ? "" : " ", psychoDoc.Person.FullName);
psychiaterNameLabel.Text = tn;
psychiaterAdr1Label.Text = psychoDoc.Person.Street;
psychiaterAdr2Label.Text = string.Format("{0} {1}", psychoDoc.Person.PostalCode, psychoDoc.Person.Town);
psychiaterTelLabel.Text = psychoDoc.Person.Communication1;
psychiaterFaxLabel.Text = psychoDoc.Person.Communication4;
}
// Hausarzt
var hausarzt = pRO.EnvironmentPersons.FirstOrDefault(f => f.RelationRole.TypeDescription.Equals("Hausarzt")
&& !String.IsNullOrEmpty(f.Customer2PersonNotice) && f.Customer2PersonNotice.ToLower().StartsWith("x"));
if (hausarzt != null)
{
var tn = string.Format("{0}{1}{2}", hausarzt.Person.Title, string.IsNullOrEmpty(hausarzt.Person.Title) ? "" : " ", hausarzt.Person.FullName);
hausarztNameLabel.Text = tn;
hausarztAdresse1Label.Text = hausarzt.Person.Street;
hausarztAdresse2Label.Text = string.Format("{0} {1}", hausarzt.Person.PostalCode, hausarzt.Person.Town);
hausarztTelLabel.Text = hausarzt.Person.Communication1;
hausarztFaxLabel.Text = hausarzt.Person.Communication4;
}
var fachaerzte = pRO.EnvironmentPersons.Where(w =>
(w.RelationRole.TypeDescription.Equals("Augenarzt") ||
w.RelationRole.TypeDescription.Equals("Gynäkologe") ||
w.RelationRole.TypeDescription.Equals("Hautarzt") ||
w.RelationRole.TypeDescription.Equals("Hepatologe") ||
w.RelationRole.TypeDescription.Equals("HNO-Arzt") ||
w.RelationRole.TypeDescription.Equals("Internist") ||
w.RelationRole.TypeDescription.Equals("Kardiologe") ||
w.RelationRole.TypeDescription.Equals("Orthopäde") ||
w.RelationRole.TypeDescription.Equals("Podologe") ||
w.RelationRole.TypeDescription.Equals("Psychotherapeut") ||
w.RelationRole.TypeDescription.Equals("Sonstige Fachärzte") ||
w.RelationRole.TypeDescription.Equals("Zahnarzt"))
&& !String.IsNullOrEmpty(w.Customer2PersonNotice) && w.Customer2PersonNotice.ToLower().StartsWith("x")).Take(2).ToList();
if (fachaerzte.Count > 0)
{
var t = fachaerzte[0].Person.Title;
facharzt1NameLabel.Text = t + (string.IsNullOrEmpty(t) ? "" : " ") + fachaerzte[0].Person.FullName;
facharzt1Adress1Label.Text = fachaerzte[0].Person.Street;
facharzt1Adress2Label.Text = string.Format("{0} {1}", fachaerzte[0].Person.PostalCode, fachaerzte[0].Person.Town);
facharzt1TelLabel.Text = fachaerzte[0].Person.Communication1;
facharzt1FaxLabel.Text = fachaerzte[0].Person.Communication1;
if (fachaerzte.Count >= 2)
{
t = fachaerzte[1].Person.Title;
facharzt2NameLabel.Text = t + (string.IsNullOrEmpty(t) ? "" : " ") + fachaerzte[1].Person.FullName;
facharzt2Adress1Label.Text = fachaerzte[1].Person.Street;
facharzt2Adress2Label.Text = string.Format("{0} {1}", fachaerzte[1].Person.PostalCode, fachaerzte[1].Person.Town);
facharzt2TelLabel.Text = fachaerzte[1].Person.Communication1;
facharzt2FaxLabel.Text = fachaerzte[1].Person.Communication1;
}
}
var endeBewilligung = new DateTime(1900, 1, 1);
foreach (var hp in c.SupportConcepts)
{
if (hp.EndDate.HasValue && hp.EndDate.Value > endeBewilligung)
{
endeBewilligung = hp.EndDate.Value;
}
}
kostenzusageBisLabel.Text = endeBewilligung.Equals(new DateTime(1900, 1, 1)) ? "" : endeBewilligung.ToShortDateString();
var gesetzlicherBetreuer = pRO.EnvironmentPersons.FirstOrDefault(f =>
(f.RelationRole.TypeDescription.Equals("Gesetzliche Betreuung") ||
f.RelationRole.TypeDescription.Equals("Gesetzliche Betreuung/Angehörige/r"))
&& !String.IsNullOrEmpty(f.Customer2PersonNotice) && f.Customer2PersonNotice.ToLower().StartsWith("x"));
if (gesetzlicherBetreuer != null)
{
gesetzlicheBetreuungJaCB.Checked = true;
gesetzlicheBetreuungNeinCB.Checked = false;
cellGestzBetreuer.Text = gesetzlicherBetreuer.Person.FullName;
cellAnschrift1.Text = gesetzlicherBetreuer.Person.Street;
cellAnschrift2.Text = string.Format("{0} {1}", gesetzlicherBetreuer.Person.PostalCode,
gesetzlicherBetreuer.Person.Town);
cellTel.Text = gesetzlicherBetreuer.Person.Communication1;
cellFax.Text = gesetzlicherBetreuer.Person.Communication4;
}
else
{
gesetzlicheBetreuungJaCB.Checked = false;
gesetzlicheBetreuungNeinCB.Checked = true;
}
var betreuer =
pRO.RelatedEmployees.FirstOrDefault(e2c => e2c.RelationRole != null && e2c.RelationRole.TypeDescription.ToLower().Contains("koordinierende bezugsbetreuung"));
if (betreuer == null)
{
betreuer =
pRO.RelatedEmployees.FirstOrDefault(e2c => e2c.RelationRole != null && e2c.RelationRole.TypeDescription.ToLower().Contains("bezugsbetreuung"));
}
if (betreuer != null)
{
lblBetreuuer.Text = String.Format("Koordinierende Bezugsbetreuung: {0} {1}", betreuer.Employee.FirstName, betreuer.Employee.LastName);
}
String betreuungsart = "";
String kostentraeger = "";
String aktenzeichen = "";
decimal? fls = null;
foreach (var hp in c.SupportConcepts)
{
if (String.IsNullOrEmpty(betreuungsart) && (c.SupportConcepts.Count == 1 ||
(hp.StartDate.HasValue && hp.StartDate <= DateTime.Now && hp.EndDate.HasValue &&
hp.EndDate.Value >= DateTime.Now)))
{
foreach (var c2s in hp.CostBearer2SupportConceptList)
{
foreach (var scap in c2s.ApprovalPeriodList)
{
if (scap.ServiceCategory != null)
{
betreuungsart = scap.ServiceCategory.Name;
if (betreuungsart.StartsWith("Wohnheim"))
{
betreuungsart = "Wohnheim";
}
}
fls = scap.ApprovedBEPerInterval;
}
kostentraeger = c2s.CostBearer.Organisation.Name;
aktenzeichen = c2s.CustomerReferenceNumber;
}
}
}
kostentraegerLabel.Text = kostentraeger;
lblAktenzeichen.Text = aktenzeichen;
lblBetreuungsart.Text = betreuungsart;
lblFLS.Text = String.Format("{0:0.##}", fls);
bindingSource1.DataSource = pRO;
}
private void WrapText(string varFieldValue, IList<XRLabel> labels)
{
var gr = Graphics.FromHwnd(IntPtr.Zero);
var a = gr.MeasureString(varFieldValue, labels[0].Font);
if (a.Width > labels[0].Width)
{
var x = varFieldValue;
var zwoteZeile = string.Empty;
var cutString = x;
while (gr.MeasureString(cutString, labels[0].Font).Width > labels[0].Width)
{
var li = cutString.LastIndexOf(' ');
cutString = cutString.Substring(0, li);
zwoteZeile = x.Substring(li, x.Length - li);
}
labels[0].Text = cutString;
labels[1].Text = zwoteZeile.TrimStart(new[] {' '});
}
else
{
labels[0].Text = varFieldValue;
}
}
}
}