using System;
using System.Collections.Generic;
using System.Runtime.Serialization;

using BS.Shared.Core;
using BS.Shared.DataContracts.Compact;

namespace BS.Shared.DataContracts
{
    [DataContract]
    public class CustomerDC : PersonDC
    {
        [DataMember]
        public List<AbsenceTimeDC> AbsenceTimes { get; set; }

        [DataMember]
        public List<AssessmentSheetCategoryDC> AssessmentSheetCategoryDCs { get; set; }

        [DataMember]
        public String Childs { get; set; }

        [DataMember]
        public List<CustomerCostBearerRelationDC> CostBearers { get; set; }

        [DataMember]
        public List<ValueListEntryDC> CustomerCareTypes { get; set; }

        [DataMember]
        public long? CustomerOid { get; set; }

        [DataMember]
        public List<VarFieldDC> CustomerVarFields { get; set; }

        [DataMember]
        public long? CustomerVersion { get; set; }

        [DataMember]
        public String DebitorNumber { get; set; }

        [DataMember]
        public String CostCenter { get; set; }

        [DataMember]
        public String Diagnosis { get; set; }

        [DataMember]
        public List<ValueListEntryDC> Disabilities { get; set; }

        [DataMember]
        public List<CustomerPersonRelationDC> EnvironmentPersons { get; set; }

        [DataMember]
        public List<CustomerOrganisationRelationDC> EnvironmentOrganisations { get; set; }

	    [DataMember]
	    public List<MedikamentenverordnungslisteDC> Medikamentenverordnungslisten { get; set; }

		[DataMember]
        public decimal? EquityContribution { get; set; }

        [DataMember]
        public String ICD10Code { get; set; }

        [DataMember]
        public String ICD10Diagnosis { get; set; }

        [DataMember]
        public List<String> ICD10DiagnosisCodes { get; set; }

        [DataMember]
        public bool? IsAdvisedOrAttended { get; set; }

        [DataMember]
        public String Medication { get; set; }

        [DataMember]
        public String Notice { get; set; }

        [DataMember]
        public String ReferenceNumber { get; set; }

        [DataMember]
        public List<PlacementDC> PlacementList { get; set; }

        [DataMember]
        public String Environment { get; set; }

        [DataMember]
        public List<CustomerEmployeeRelationDC> RelatedEmployees { get; set; }

        [DataMember]
        public List<CustomerTeamRelationDC> RelatedTeams { get; set; }

        [DataMember]
        public DateTime? AssistanceBegin { get; set; }
        
        [DataMember]
        public DateTime? TerminationDate { get; set; }

        [DataMember]
        public ValueListEntryDC TerminationReason { get; set; }

        [DataMember]
	    public long? FamilyDataOid { get; set; }

    	[DataMember]
	    public long? FamilyDataVersion {get; set; }

        [DataMember]
        public String Kindesmutter { get; set; }

        [DataMember]
        public String Kindesvater { get; set; }

        [DataMember]
        public String Geschwister { get; set; }

        [DataMember]
        public String Vormund { get; set; }

        public bool ContainsFamilyDataData()
        {
            return !Utils.AreAllNullOrEmpty(Kindesmutter, Kindesvater, Geschwister, Vormund);
        }

        [DataMember]
        public CompactOrganisationDC Jugendamt { get; set; }

        [DataMember]
        public CompactPersonDC Ansprechpartner { get; set; }

		[DataMember]
		public int? DistanceInMeter { get; set; }

        [DataMember]
        public String AusstVersAmt { get; set; }

        [DataMember]
        public DateTime? AusweisGueltigVon { get; set; }

        [DataMember]
        public DateTime? AusweisGueltigBis { get; set; }

        [DataMember]
        public bool? AusweisUnbefristetGueltig { get; set; }

        [DataMember]
        public DateTime? BeiblattGueltigBis { get; set; }

        [DataMember]
        public String GradDerBehinderung { get; set; }

        [DataMember]
        public List<Behinderungsart> BehinderungsartenListe { get; set; }

        [DataMember]
        public List<Merkzeichen> MerkzeichenListe { get; set; }

        [DataMember]
        public String CustomerAlias { get; set; }


        [DataMember]
        public Pflegegrad? Pflegegrad { get; set; }

        [DataMember]
        public byte[] CustomerImage { get; set; }
     

    }
}