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

using BS.Shared.DataContracts.Compact;

namespace BS.Shared.DataContracts
{
    [DataContract]
    public class SupportConceptDC : IDataContract
    {
        private List<SupportConceptCostBearerRelDC> _CostBearerRelations;

        [DataMember]
        public ActivationTypeId ActivationType { get; set; }

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

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

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

        [DataMember]
        public string ConferenceVenue { get; set; }

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

        [DataMember]
        public List<SupportConceptCostBearerRelDC> CostBearerRelations
        {
            get
            {
                return this._CostBearerRelations ?? (this._CostBearerRelations = new List<SupportConceptCostBearerRelDC>());
            }

            set
            {
                this._CostBearerRelations = value;
            }
        }

        [DataMember]
        public CompactCustomerDC Customer { get; set; }

        [DataMember]
        public UserDC DocumentUploadLockedBy { get; set; }

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

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

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

        [DataMember]
        public CompactEmployeeDC Originator { get; set; }

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

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

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

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

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

        [DataMember]
        public List<TaskDC> Tasks { get; set; }

        [DataMember]
        public List<ServiceAccountingDC> ServiceAccountings { get; set; }
    }
}