186 lines
6.1 KiB
C#
186 lines
6.1 KiB
C#
using System;
|
|
using BeWo.Report.ReportObjects;
|
|
using BeWo.Report;
|
|
using DevExpress.XtraReports.UI;
|
|
using System.Data;
|
|
using BeWo.Data.Access;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Xml.Schema;
|
|
using BeWo.Data.Entities;
|
|
using BeWo.Service.DCEntityMapper;
|
|
using BeWo.Service.Plugins;
|
|
using BeWo.Service.ServiceImplementations;
|
|
using BS.Shared;
|
|
using BS.Shared.Core;
|
|
using BS.Shared.Extensions;
|
|
using BS.Shared.Services;
|
|
using DevExpress.Xpo.DB;
|
|
|
|
namespace LebenshilfeCoburg
|
|
{
|
|
[IDSpecificClass(Identifier = "Jahresauswertung")]
|
|
public partial class Jahresauswertung : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<QueryRO>
|
|
{
|
|
protected Dictionary<long, VarFieldDef> Oid2VarfieldDef { get; set; }
|
|
public Jahresauswertung()
|
|
{
|
|
InitializeComponent();
|
|
|
|
}
|
|
|
|
public void SetReportDataSource(QueryRO queryRo)
|
|
{
|
|
Oid2VarfieldDef = new Dictionary<long, VarFieldDef>();
|
|
var varFieldDefs = DAOFactory.GenericDAO.GetAllActive<VarFieldDef>();
|
|
|
|
foreach (var varFieldDef in varFieldDefs)
|
|
{
|
|
Oid2VarfieldDef.Add(varFieldDef.Oid.Value, varFieldDef);
|
|
}
|
|
var ro = CreateRo(queryRo);
|
|
|
|
|
|
this.bindingSource1.DataSource = ro;
|
|
}
|
|
|
|
private JahresauswertungRO CreateRo(QueryRO queryRo)
|
|
{
|
|
JahresauswertungRO result = new JahresauswertungRO();
|
|
result.DetailList = new List<JahresauswertungDetailRO>();
|
|
|
|
//decimal flsKlientGesamt = 0;
|
|
//decimal flsKlientGesamt = 0;
|
|
//decimal hilfedauerInMonatenGesamt = 0;
|
|
|
|
int idx = 1;
|
|
foreach (var row in queryRo.Rows)
|
|
{
|
|
JahresauswertungDetailRO ro = new JahresauswertungDetailRO();
|
|
|
|
long oid = Int64.Parse(row.Field1.ToString());
|
|
Customer c = DAOFactory.GenericDAO.LoadByID<Customer>(oid);
|
|
|
|
ro.Nummer = idx++;
|
|
|
|
ro.Klient = String.Format("{0}, {1}", c.Person.LastName, c.Person.FirstName);
|
|
|
|
//ro.Strasse = c.Person.FirstNameLastName;
|
|
foreach (var vv in c.VarFieldValueList)
|
|
{
|
|
var varFieldValue = Utils.XMLDeserializeFromString(vv.SerializedValue, Type.GetType(vv.TypeName));
|
|
|
|
SetzeKontaktaufnahme(result, ro, vv, varFieldValue);
|
|
SetzeVermittlung(result, ro, vv, varFieldValue);
|
|
SetzeTagesstruktur(result, ro, vv, varFieldValue);
|
|
SetzeWohnsituation(result, ro, vv, varFieldValue);
|
|
}
|
|
|
|
//Klient, Kostenträger, Betreuungsart, Geburtstag, Kontaktaufn, Vermittlung, Wohnsituation, Tagesstruktur
|
|
|
|
DateTime birthday = DateTime.MinValue;
|
|
|
|
DateTime reportStart = DateTime.MinValue;
|
|
DateTime reportEnd = DateTime.MaxValue;
|
|
|
|
if (row.Field8 != null && DateTime.TryParse(row.Field8.ToString(), out birthday))
|
|
{
|
|
reportEnd = DateTime.Now;
|
|
|
|
int alter = reportEnd.Year - birthday.Year;
|
|
birthday = birthday.AddYears(alter);
|
|
if (reportEnd.CompareTo(birthday) < 0)
|
|
{
|
|
alter--;
|
|
}
|
|
|
|
ro.Geburtstag = birthday;
|
|
}
|
|
|
|
if (row.Field11 != null)
|
|
{
|
|
ro.Kostentraeger = row.Field11 as String;
|
|
}
|
|
SetzeBetreuungsart(c, ro);
|
|
|
|
result.DetailList.Add(ro);
|
|
}
|
|
return result;
|
|
}
|
|
|
|
private void SetzeBetreuungsart(Customer customer, JahresauswertungDetailRO ro)
|
|
{
|
|
foreach (var v2o in customer.ValueList)
|
|
{
|
|
if (v2o.Entry.Type == ValueListEntryType.CustomerCareType)
|
|
{
|
|
if (!String.IsNullOrWhiteSpace(ro.Betreuungsart))
|
|
{
|
|
ro.Betreuungsart += ", ";
|
|
}
|
|
ro.Betreuungsart += v2o.Entry.Value;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void SetzeKontaktaufnahme(JahresauswertungRO reportRo, JahresauswertungDetailRO ro, VarFieldValue vv, object varFieldValue)
|
|
{
|
|
if (vv.VarFieldDefOid >= 1 && vv.VarFieldDefOid <= 10)
|
|
{
|
|
|
|
bool wert = (bool)varFieldValue;
|
|
|
|
if (wert)
|
|
{
|
|
var def = Oid2VarfieldDef[vv.VarFieldDefOid.Value];
|
|
|
|
if (!String.IsNullOrWhiteSpace(ro.Kontaktaufnahme))
|
|
{
|
|
ro.Kontaktaufnahme += ", ";
|
|
}
|
|
ro.Kontaktaufnahme += def.Label;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void SetzeVermittlung(JahresauswertungRO reportRo, JahresauswertungDetailRO ro, VarFieldValue vv, object varFieldValue)
|
|
{
|
|
if (vv.VarFieldDefOid >= 11 && vv.VarFieldDefOid <= 19)
|
|
{
|
|
Boolean wert = true; //varFieldValue as Boolean;
|
|
|
|
if (wert)
|
|
{
|
|
var def = Oid2VarfieldDef[vv.VarFieldDefOid.Value];
|
|
|
|
if (!String.IsNullOrWhiteSpace(ro.Vermittlung))
|
|
{
|
|
ro.Vermittlung += ", ";
|
|
}
|
|
ro.Vermittlung += def.Label;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void SetzeWohnsituation(JahresauswertungRO reportRo, JahresauswertungDetailRO ro, VarFieldValue vv, object varFieldValue)
|
|
{
|
|
if (vv.VarFieldDefOid == 20)
|
|
{
|
|
String wert = varFieldValue as string;
|
|
|
|
ro.Wohnsituation = wert;
|
|
}
|
|
}
|
|
|
|
private void SetzeTagesstruktur(JahresauswertungRO reportRo, JahresauswertungDetailRO ro, VarFieldValue vv, object varFieldValue)
|
|
{
|
|
if (vv.VarFieldDefOid == 21)
|
|
{
|
|
String wert = varFieldValue as string;
|
|
|
|
ro.Tagesstruktur = wert;
|
|
}
|
|
}
|
|
}
|
|
}
|