using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Bilfinger.HRcules.SuccessFactorData.Model
{
    public class PersonSuccessFactorViewModel
    {
        public int Id { get; set; }

        [MaxLength(256)]
        public string UserId { get; set; }

        [MaxLength(256)]
        public string UserName { get; set; }

        public string FirstName { get; set; }

        [Required]
        public string LastName { get; set; }

        public string Function { get; set; }

        public string Email { get; set; }

        public int? Manager_Id { get; set; }
        public PersonSelectViewModel Manager { get; set; }
        [NotMapped]
        public int? GetManagerId { get { return Manager?.Id; } }
        [NotMapped]
        public string GetManagerName { get { return string.Format("{0}", Manager?.Name); } }

        public string Department { get; set; }

        public string BusinessArea { get; set; }

        public string Location { get; set; }

        [MaxLength(1)]
        public string Gender { get; set; }

        public int? HrResponsible_Id { get; set; }
        public PersonSelectViewModel HrResponsible { get; set; }
        [NotMapped]
        public int? GetHrResponsibleId { get { return HrResponsible?.Id; } }

        public DateTime? HireDate { get; set; }

        public string Country { get; set; }

        public string BusinessSegment { get; set; }

        public string BusinessUnit { get; set; }

        public string CostCenter { get; set; }

        public string ManagementLevel { get; set; }

        [MaxLength(1)]
        public string Mitarbeiterkreis { get; set; }

        public int? CostCenterResponsible_Id { get; set; }
        public PersonSelectViewModel CostCenterResponsible { get; set; }
        [NotMapped]
        public int? GetCostCenterResponsibleId { get { return CostCenterResponsible?.Id; } }

        [MaxLength(1)]
        public string ExposedFunctions { get; set; }

        public string JobFamily { get; set; }

        [MaxLength(3)]
        public string LoginMethod { get; set; }

        public string DefaultLocale { get; set; }

        public bool PcArbeitsplatz { get; set; }

        
    }
}
