using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using UnivateProperties_API.Containers.Timeshare.Detailed; using UnivateProperties_API.Model.Banks; using UnivateProperties_API.Model.Misc; using UnivateProperties_API.Model.Properties; namespace UnivateProperties_API.Model.Users { public class Individual : Person { #region Constructor public Individual() { } #endregion Constructor #region Properties public string IdNumber { get; set; } public string CompanyRegNumber { get; set; } [ForeignKey("Address")] public int? AddressId { get; set; } public string IncomeTaxNumber { get; set; } [ForeignKey("BankAccount")] public int? BankAccountId { get; set; } public MarriedType HowMarried { get; set; } public string SpouseName { get; set; } public string SpouseSurname { get; set; } [DataType(DataType.EmailAddress)] public string SpouseEmail { get; set; } [Phone] public string SpouseTelephone { get; set; } [Phone] public string SpouseCellnumber { get; set; } public virtual Address Address { get; set; } public virtual BankAccount BankAccount { get; set; } public virtual ICollection Properties { get; set; } #endregion Properties #region Methods public void UpdateFromDetailedOwner(DetailedOwner owner) { if (owner.Id == Id) { Name = owner.Name; Surname = owner.Surname; IdNumber = owner.IdNumber; CompanyRegNumber = owner.CompanyRegNumber; Email = owner.EmailAddress; CellNumber = owner.CellNumber; Telephone = owner.LandlineNumber; if (owner.Address != null) { if (Address == null) { Address = new Address() { StreetNumber = owner.Address.StreetNumber, Street = owner.Address.Street, City = owner.Address.City, Suburb = owner.Address.Suburb, Province = owner.Address.Province, PostalCode = owner.Address.PostalCode }; } else { Address.StreetNumber = owner.Address.StreetNumber; Address.Street = owner.Address.Street; Address.City = owner.Address.City; Address.Suburb = owner.Address.Suburb; Address.Province = owner.Address.Province; Address.PostalCode = owner.Address.PostalCode; } } if (owner.BankingDetails != null) { if (BankAccount == null) { BankAccount = new BankAccount() { BankId = owner.BankingDetails.BankId, AccountNumber = owner.BankingDetails.AccountNumber, AccountHolder = owner.BankingDetails.AccountHolder }; } else { BankAccount.BankId = owner.BankingDetails.BankId; BankAccount.AccountNumber = owner.BankingDetails.AccountNumber; BankAccount.AccountHolder = owner.BankingDetails.AccountHolder; } } if (owner.User != null) { User.Role = owner.User.Role; User.LoginPasswordChange = owner.User.LoginPasswordChange; } if (owner.HowMarried != 0) { switch (owner.HowMarried) { case 1: HowMarried = MarriedType.ICOP; break; case 2: HowMarried = MarriedType.OCOP; break; case 3: HowMarried = MarriedType.Other; break; case 4: HowMarried = MarriedType.Traditional; break; case 5: HowMarried = MarriedType.Single; break; case 6: HowMarried = MarriedType.Divorced; break; case 7: HowMarried = MarriedType.Widow; break; case 8: HowMarried = MarriedType.CommittedRelationship; break; case 9: HowMarried = MarriedType.Partner; break; } SpouseName = owner.SpouseName; SpouseSurname = owner.SpouseSurname; SpouseCellnumber = owner.SpouseCellnumber; SpouseTelephone = owner.SpouseTelephone; SpouseEmail = owner.SpouseEmail; } else { HowMarried = MarriedType.NotApplicable; } } } #endregion Methods } }