using System;

using BeWo.Data.Access;
using BeWo.Data.Entities;

using BS.Shared.Core;

using BeWo.Report.ReportObjects;

namespace BeWo.Report.DerKarren
{
    public partial class Klientenstammblatt : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<CustomerDataRO>
    {
        public Klientenstammblatt()
        {
            InitializeComponent();
        }

        public void SetReportDataSource(CustomerDataRO pRO)
        {
	        String gueltigKeitsDatum = null;
	        bool unbefristet = false;

            var s0 = false;
            var sI = false;
            var sII = false;
            var sIII = false;
            
            var c = DAOFactory.GenericDAO.LoadByID<Customer>(pRO.CustomerOid);

            foreach (var vv in c.VarFieldValueList)
            {
                var varFieldValue = Utils.XMLDeserializeFromString(vv.SerializedValue, Type.GetType(vv.TypeName));
                if (varFieldValue != null)
                {
                    switch (vv.VarFieldDefOid)
                    {
                        case 9: // Aufgabenkreise
							alleAufgabenkreiseCB.Checked = (bool)varFieldValue;
                            break;
                        case 10:
							gesundheitssorgeCB.Checked = (bool)varFieldValue;
                            break;
                        case 11:
							aufenthaltsbestimmungCB.Checked = (bool)varFieldValue;
                            break;
                        case 12:
							vermoegenssorgeCB.Checked = (bool)varFieldValue;
                            break;
                        case 13:
							wohnungsangelegenheitenCB.Checked = (bool)varFieldValue;
                            break;
                        case 14:
							amtsundbehoerdenangelegenheitenCB.Checked = (bool)varFieldValue;
                            break;
                        case 15:
							postangelegenheitenCB.Checked = (bool)varFieldValue;
                            break;
                        case 16:
							vertretungInGerichtlichenVerfahrenCB.Checked = (bool)varFieldValue;
                            break;
                        case 17:
							erbschaftsangelegenheitenCB.Checked = (bool)varFieldValue;
                            break;
                        case 18:
                            sonstigeAufgabenCB.Text = string.Format("Sonstige {0}", varFieldValue);
                            sonstigeAufgabenCB.Checked = true;
                            break;
                        case 19:
							mitEinwilligungsvorbehaltCB.Checked = (bool)varFieldValue;
                            break;
                        case 20: // Schwerbehindertenausweis
							schwerbehindertenausweisJaCB.Checked = (bool)varFieldValue;
							schwerbehindertenausweisNeinCB.Checked = !(bool)varFieldValue;
                            break;
                        case 21:
							gueltigKeitsDatum = varFieldValue.ToString();
                            break;
                        case 22:
                            gradDerBehinderungLabel.Text = varFieldValue + " %";
                            break;
                        case 23:
							MerkzeichenBCB.Checked = (bool)varFieldValue;
                            break;
                        case 24:
							MerkzeichenGCB.Checked = (bool)varFieldValue;
                            break;
                        case 25:
							MerkzeichenaGCB.Checked = (bool)varFieldValue;
                            break;
                        case 26:
							MerkzeichenHCB.Checked = (bool)varFieldValue;
                            break;
                        case 27:
							MerkzeichenRFCB.Checked = (bool)varFieldValue;
                            break;
                        case 28:
							MerkzeichenBlCB.Checked = (bool)varFieldValue;
                            break;
                        case 29: //keine 0 I II III
                            var stufe = varFieldValue.ToString();
                            switch (stufe)
                            {
                                case "0":
                                    s0 = true;
                                    break;
                                case "I":
                                    sI = true;
                                    break;
                                case "II":
                                    sII = true;
                                    break;
                                case "III":
                                    sIII = true;
                                    break;
                            }
                            break;
                        case 30:
							leistungenNachSGBCB.Checked = (bool)varFieldValue;
                            break;
                        case 31:
							weitereLeistungenCB.Checked = varFieldValue != null && !String.IsNullOrEmpty(varFieldValue.ToString());
                            weitereLeistungenCB.Text = string.Format("weitere Leistungen: {0}", varFieldValue);
                            break;
						case 32:
							unbefristet = (bool)varFieldValue;
		                    break;
                    }
                }

                pflegestufe0CB.Checked = s0;
                pflegestufe1CB.Checked = sI;
                pflegestufe2CB.Checked = sII;
                pflegestufe3CB.Checked = sIII;
            }

	        if (unbefristet)
	        {
		        gueltigkeitLabel.Text = "unbefristet";
	        }
			else if (!String.IsNullOrEmpty(gueltigKeitsDatum))
			{
				DateTime dt;
				if (DateTime.TryParse(gueltigKeitsDatum, out dt))
				{
					gueltigkeitLabel.Text = String.Format("{0:dd.MM.yyyy}", dt);
				}
			}
            bindingSource1.DataSource = pRO;
        }
    }
}
