Files
BeWoPlaner/ReportImp/LebenshilfeCoburg/QueryListReport.cs
2017-06-11 16:01:01 +02:00

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;
}
}
}
}