using System;
using System.Linq;

using BS.Shared;
using BS.Shared.Core;

using BeWo.Data.Access;
using BeWo.Data.Entities;
using BeWo.Report;
using BeWo.Report.ReportObjects;


namespace AidsInitiativeBonn
{
    public partial class PruefbogenEinzelfall : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<QueryRO>
    {

        public PruefbogenEinzelfall()
        {
            InitializeComponent();
        }

        public void SetReportDataSource(QueryRO pRO)
        {
            //var reportDate = DateTime.Parse(pRO.Rows[0].Field1.ToString());
            var reportDate = new DateTime(DateTime.Now.Year, 1, 1);

            if (pRO.Rows != null)
            {
                DateTime dt;
                if (DateTime.TryParse(pRO.Rows[0].Field1.ToString(), out dt))
                {
                    reportDate = new DateTime(dt.Year, 1, 1);


                }
            }

            Customer cust = DAOFactory.GenericDAO.LoadByID<Customer>(10);

            foreach (var vv in cust.VarFieldValueList)
            {
                var type = Type.GetType(vv.TypeName);
                var label = Utils.XMLDeserializeFromString(vv.SerializedValue, type).ToString();

                switch (vv.VarFieldDefOid)
                {
                    //Part 1
                    case 1:
                        if (label == "Betroffenen")
                        {
                            BeratungTab2.Text = "";
                        }
                        else if (label == "Angehörigen")
                        {
                            BeratungTab1.Text = "";
                        }
                        break;

                    //part 4
                    case 2:
                        if (label == "MSM")
                        {
                            PrävalenzgruppeMSMTab2.Text = "X";
                        }
                        else if (label == "IV-Drogengebrauch")
                        {
                            PrävalenzgruppeIVDrogenTab2.Text = "X";
                        }
                        else if (label == "HPL")
                        {
                            PrävalenzgruppeHPLTab2.Text = "X";
                        }
                        else if (label == "Hetero")
                        {
                            PrävalenzgruppeHeteroTab2.Text = "X";
                        }
                        else if (label == "SexarbeiterIn")
                        {
                            PrävalenzgruppeSexarbeitTab2.Text = "X";
                        }
                        break;

                    //Einleitung
                    case 3:
                        if (label == "JA")
                        {
                            SGBTab2.Text = " ";
                        }
                        else if (label == "Nein")
                        {
                            SGBTab1.Text = " ";
                        }
                        break;

                    //Part 5
                    case 4:
                        if (label == "KlientIn")
                        {
                            AIBKontaktKlientTab2.Text = "X";
                        }
                        else if (label == "Familie/Freunde/Ang.")
                        {
                            AIBKontaktFamlilieTab2.Text = "X";
                        }
                        else if (label == "Arzt/Ärztin")
                        {
                            AIBKontaktArztTab2.Text = "X";
                        }
                        else if (label == "Krankenhaus")
                        {
                            AIBKontaktKrankenhausTab2.Text = "X";
                        }
                        else if (label == "Soz. Einrichtung")
                        {
                            AIBKontaktSozEinrichtungTab2.Text = "X";
                        }
                        else if (label == "Behörde")
                        {
                            AIBKontaktBehördeTab2.Text = "X";
                        }
                        else if (label == "Sonstige")
                        {
                            AIBKontaktSonstigeTab2.Text = "X";
                        }
                        else if (label == "Unbekannt")
                        {
                            AIBKontaktUnbekanntTab2.Text = "X";
                        }
                        break;

                    // Part 12
                    case 5:
                        if (label == "Selbsthilfetreffen")
                        {
                            VeranstaltungenSelbsthilfetreffenTab2.Text = "X";
                        }
                        else if (label == "Fortbildungen")
                        {
                            VeranstaltungenFortbildungTab2.Text = "X";
                        }
                        else if (label == "Freizeitaktionen")
                        {
                            VeranstaltungenFreizeitaktionTab2.Text = "X";
                        }
                        else if (label == "Sonstige")
                        {
                            VeranstaltungenSonstigeTab2.Text = "X";
                        }
                        break;

                    // Part 9
                    case 6:
                        if (label == "Teambesprechung")
                        {
                            KlientBedarfTeambesprechungTab2.Text = "X";
                        }
                        else if (label == "Rücksprache mit dem Arzt")
                        {
                            KlientBedarfArztRückspracheTab2.Text = "X";
                        }
                        else if (label == "Bezugnahme externer Kräfte")
                        {
                            KlientBedarfBezugnahmeTab2.Text = "X";
                        }
                        else if (label == "Sonstiges")
                        {
                            KlientBedarfSonstigesTab2.Text = "X";
                        }
                        break;

                    // Part 14
                    case 7:
                        if (label == "Kontaktaufnahme zu externen Fachkräften")
                        {
                            VermittlungKontaktaufnahmeTab2.Text = "X";
                        }
                        else if (label == "Begleitung des Klienten / der Klientin")
                        {
                            VermittlungBegleitungTab2.Text = "X";
                        }
                        else if (label == "Persönliches, in Persona begleitetes Vermittlungsgespräch")
                        {
                            VermittlungPersonaTab2.Text = "X";
                        }
                        else if (label == "Sonstiges")
                        {
                            VermittlungSonstigeTab2.Text = "X";
                        }
                        break;

                    // Part 17
                    case 8:
                        if (label.Equals("true"))
                            GesamtDokuNachvollziehbarTab2.Text = "X";
                        break;

                    // Part 11
                    case 9:
                        MaßnahmenTab2.Text = label;
                        break;

                    // Part 13
                    case 10:
                        ExterneFachkräfteTab2.Text = label;
                        break;

                    // Part 15
                    case 11:
                        ErfolgsdefizitTab1.Text = label;
                        break;

                    // Part 7
                    case 12:
                        KlientProblemstellungTab1.Text = label;
                        break;

                    // Part 8
                    case 13:
                        if (label == "HIV-neg")
                        {
                            HIVStatusTab2.Text = " ";
                        }
                        else if (label == "HIV-pos")
                        {
                            HIVStatusTab1.Text = " ";
                        }
                        break;

                    //Part 8
                    case 14:
                        if (HIVStatusTab1.Text.Equals(" "))
                        {
                            COMorbiditätTab2.Text = label;
                        }
                        else if (HIVStatusTab2.Text.Equals(" "))
                        {
                            COMorbiditätTab1.Text = label;
                        }
                        break;

                    //Part 6
                    case 15:
                        BeratungsstelleFirstKonDatumTab2.Text = label;
                        break;
                    //Part 6
                    case 16:
                        BeratungsstelleLastKonDatumTab2.Text = label;
                        break;

                    //Part 5
                    case 17:
                        AIBKontaktAnmerkungTab2.Text = label;
                        break;

                    // Part Einleitung Prüfdatum
                    case 18:
                        PrüfdatumTab1.Text = label;
                        break;

                    // Part Einleitung Fall NR
                    case 19:
                        FallNRTab1.Text = label;
                        break;

                    // Part 14
                    case 20:
                        VermittlungAnmerkungTab2.Text = label;
                        break;

                    // Part 10
                    case 21:
                        LösungsansatzKurzMittelLangTab1.Text = label;
                        break;

                    // Part 9
                    case 22:
                        KlientBedarfAnmerkungTab2.Text = label;
                        break;

                    // Part 12
                    case 23:
                        VeranstaltungenSonstigeTab2.Text = label;
                        break;

                    // Part 16
                    case 24:
                        if (label == "Ja")
                            AlternativeKostenträgerTab2.Text = " ";
                        else if (label == "Nein")
                            AlternativeKostenträgerTab1.Text = " ";
                        break;

                    // Part 16
                    case 25:
                        if (AlternativeKostenträgerTab1.Text.Equals("Ja"))
                            AlternativeKostenträgerWelcheTab2.Text = label;
                        else
                            AlternativeKostenträgerWelcheTab2.Text = " ";
                        break;

                    // Part 16
                    case 26:
                        AlternativeKostenträgerAnmerkungTab2.Text = label;
                        break;


                    // Part 17
                    case 27:
                        GesamtDokuAnmerkungTab2.Text = label;
                        break;


                    // Part 3
                    case 28:
                        KlientenEinkünfteTab1.Text = label;
                        break;
                    case 29:
                        if (label.Equals("true"))
                            SRPWohnungTab1.Text = "X";
                        break;

                    case 30:
                        if (label.Equals("true"))
                            SRPSchuldenTab1.Text = "X";
                        break;

                    case 31:
                        if (label.Equals("true"))
                            SRPArbeitslosigkeitTab1.Text = "X";
                        break;

                    case 32:
                        if (label.Equals("true"))
                            SRPJustizKonfliktTab1.Text = "X";
                        break;

                    case 33:
                        if (label.Equals("true"))
                            SRPPapierlosTab1.Text = "X";
                        break;

                    case 34:
                        if (label.Equals("true"))
                            SRPGesundheitsProblemTab1.Text = "X";
                        break;

                    case 35:
                        if (label.Equals("true"))
                            SRPPSBTab1.Text = "X";
                        break;

                    case 36:
                        if (label.Equals("true"))
                            SRPRechtlicheProblemeTab1.Text = "X";
                        break;

                    case 37:
                        if (label.Equals("true"))
                        {
                            GesamtDokuVollständigTab2.Text = "X";
                        }
                        break;

                    // case 38:
                    ////geburtstag ausrechnen 
                    //     DateTime? birth = cust.Person.DateOfBirth;
                    //     int diff;

                    //     if (birth != null)
                    //     {
                    //        birth = DateTime.Parse("02/12/1979");
                    //        diff = DateTime.Now.Year - birth.value.Year;
                    //     }

                    //     if (diff < 18)
                    //         KlientenAlterU18Tab2.Text = "X";
                    //     else if (diff > 18 && diff < 59 )
                    //         KlientenAlterU59Tab2.Text = "X";
                    //     else if (diff > 60)
                    //         KlientenAlterÜ60Tab2.Text = "X";
                    //     else if (birth == null)
                    //         KlientenAlterUnbekannt.Text = "X";

                    //     break;

                    //############################ Ende switch/case  #############################################################
                }
            }

            //##############################Geburtstag berechnen #########################
            //geburtstag ausrechnen  Part 2
            DateTime? birth = cust.Person.DateOfBirth;
            int diffyear;
            //int diffmonth;
            //int diffday;


            if (birth != null)
            {
                birth = DateTime.Parse("02/12/1980");
                diffyear = DateTime.Now.Year - birth.Value.Year;
                //diffmonth = DateTime.Now.Month - birth.Value.Month;
                //diffday = DateTime.Now.Day - birth.Value.Day;

                if (diffyear < 18)
                {
                    if (birth.Value.Month <= DateTime.Now.Month)
                    {
                        if (birth.Value.Day <= DateTime.Now.Day)
                            KlientenAlterU18Tab2.Text = "X";
                    }
                }

                if (diffyear >= 18 && diffyear <= 59)
                {
                    if (birth.Value.Month <= DateTime.Now.Month)
                    {
                        if (birth.Value.Day <= DateTime.Now.Day)
                            KlientenAlterU59Tab2.Text = "X";
                    }
                }

                if (diffyear > 60)
                {
                    if (birth.Value.Month <= DateTime.Now.Month)
                    {
                        if (birth.Value.Day <= DateTime.Now.Day)
                            KlientenAlterÜ60Tab2.Text = "X";
                    }
                }
            }
            else if (birth == null)
                KlientenAlterUnbekannt.Text = "X";
        }
        //########################### Ende Geburtstag berechnen ######################

    }
}
