public static PostalAddressType GetPropertyLocationAddressType(FinancialEntities context)
 {
     PostalAddressType propertyLocationAddressType = new PostalAddressType();
     propertyLocationAddressType = context.PostalAddressTypes.SingleOrDefault(entity => entity.Name == PostalAddressTypeEnums.PropertyLocation);
     InitialDatabaseValueChecker.ThrowIfNull<PostalAddressType>(propertyLocationAddressType);
     return propertyLocationAddressType;
 }
 public static PostalAddress GetCurrentPostalAddress(FinancialEntities context, Party party, PostalAddressType type, Func<Address, bool> condition)
 {
     Address address = party.Addresses.SingleOrDefault(entity => entity.EndDate == null && entity.PostalAddress.PostalAddressTypeId == type.Id && condition(entity));
     if (address != null)
         return address.PostalAddress;
     return null;
 }
 public static PostalAddressType GetHomeAddressType(FinancialEntities context)
 {
     PostalAddressType homeAddressType = new PostalAddressType();
     homeAddressType = context.PostalAddressTypes.SingleOrDefault(entity => entity.Name == PostalAddressTypeEnums.HomeAddress);
     InitialDatabaseValueChecker.ThrowIfNull<PostalAddressType>(homeAddressType);
     return homeAddressType;
 }
 public static PostalAddressType GetBirthPlaceAddressType(FinancialEntities context)
 {
     PostalAddressType birthplaceType = new PostalAddressType();
     birthplaceType = context.PostalAddressTypes.SingleOrDefault(entity => entity.Name == PostalAddressTypeEnums.Birthplace);
     InitialDatabaseValueChecker.ThrowIfNull<PostalAddressType>(birthplaceType);
     return birthplaceType;
 }
 public static PostalAddress GetCurrentPostalAddressV2(FinancialEntities context, Party party, PostalAddressType type, Func<PostalAddress, bool> condition)
 {
     PostalAddress postalAddress = context.PostalAddresses.SingleOrDefault(entity =>entity.Address.PartyId == party.Id &&
         entity.Address.EndDate == null && entity.PostalAddressTypeId == type.Id && condition(entity));
     //Address address = party.Addresses.SingleOrDefault(entity => entity.EndDate == null && entity.PostalAddress.PostalAddressTypeId == type.Id && condition(entity));
     //if (address != null)
     //    return address.PostalAddress;
     return postalAddress;
 }
        public static PostalAddress AddPostal(Address address, PostalAddressType type, bool isPrimary)
        {
            PostalAddress postalAddress = new PostalAddress();
            postalAddress.Address = address;
            postalAddress.PostalAddressType = type;
            postalAddress.IsPrimary = isPrimary;

            return postalAddress;
        }
        public static PostalAddress CreatePostalAddress(FinancialEntities context, Party party, PostalAddressType type, DateTime now)
        {
            Address address = new Address();
            address.Party = party;
            address.AddressType = AddressTypeEnums.GetPostalAddressType(context);
            address.EffectiveDate = now;

            PostalAddress postalAddress = new PostalAddress();
            postalAddress.Address = address;
            postalAddress.PostalAddressType = type;
            return postalAddress;
        }
        public static void CreateOrUpdatePostalAddress(Party party, PostalAddress newPostalAddress, PostalAddressType addressType, DateTime now, bool isPrimary)
        {
            var address = party.Addresses.SingleOrDefault(entity => entity.EndDate == null && entity.AddressTypeId == AddressType.PostalAddressType.Id
                                                            && entity.PostalAddress.PostalAddressTypeId == addressType.Id
                                                            && entity.PartyId == party.Id
                                                            && entity.PostalAddress.IsPrimary == isPrimary);

            newPostalAddress.Barangay = string.IsNullOrWhiteSpace(newPostalAddress.Barangay) ? null : newPostalAddress.Barangay;
            newPostalAddress.StreetAddress = string.IsNullOrWhiteSpace(newPostalAddress.StreetAddress) ? null : newPostalAddress.StreetAddress;
            newPostalAddress.City = string.IsNullOrWhiteSpace(newPostalAddress.City) ? null : newPostalAddress.City;
            newPostalAddress.Municipality = string.IsNullOrWhiteSpace(newPostalAddress.Municipality) ? null : newPostalAddress.Municipality;
            newPostalAddress.PostalCode = string.IsNullOrWhiteSpace(newPostalAddress.PostalCode) ? null : newPostalAddress.PostalCode;
            newPostalAddress.Province = string.IsNullOrWhiteSpace(newPostalAddress.Province) ? null : newPostalAddress.Province;
            newPostalAddress.State = string.IsNullOrWhiteSpace(newPostalAddress.State) ? null : newPostalAddress.State;

            bool isNull = true;

            isNull &= newPostalAddress.Barangay == null;
            isNull &= newPostalAddress.City == null;
            isNull &= newPostalAddress.Municipality == null;
            isNull &= newPostalAddress.PostalCode == null;
            isNull &= newPostalAddress.Province == null;
            isNull &= (newPostalAddress.CountryId == null || newPostalAddress.CountryId == 0);

            if (isNull)
            {
                if (newPostalAddress.EntityState == System.Data.EntityState.Added)
                    Context.Detach(newPostalAddress);
                return;
            }

            bool isEqual = false;
            if (address != null)
            {
                isEqual = true;

                var currentPostalAddress = address.PostalAddress;
                isEqual = isEqual && currentPostalAddress.Barangay == newPostalAddress.Barangay;
                isEqual = isEqual && currentPostalAddress.StreetAddress == newPostalAddress.StreetAddress;
                isEqual = isEqual && currentPostalAddress.CountryId == newPostalAddress.CountryId;
                isEqual = isEqual && currentPostalAddress.City == newPostalAddress.City;
                isEqual = isEqual && currentPostalAddress.Municipality == newPostalAddress.Municipality;
                isEqual = isEqual && currentPostalAddress.PostalCode == newPostalAddress.PostalCode;
                isEqual = isEqual && currentPostalAddress.Province == newPostalAddress.Province;
                isEqual = isEqual && currentPostalAddress.State == newPostalAddress.State;

                if (isEqual == false)
                    address.EndDate = now;
            }

            if (isEqual == false)
            {
                Address newAddress = new Address();
                newAddress.Party = party;
                newAddress.AddressType = AddressType.PostalAddressType;
                newAddress.EffectiveDate = now;

                newPostalAddress.Address = newAddress;
                newPostalAddress.PostalAddressType = addressType;
                Context.PostalAddresses.AddObject(newPostalAddress);
            }
            else
            {
                if (newPostalAddress.EntityState == System.Data.EntityState.Added)
                    Context.Detach(newPostalAddress);
            }
        }
 public static PostalAddress GetCurrentPostalAddressV2(Party party, PostalAddressType type, Func<PostalAddress, bool> condition)
 {
     PostalAddress postalAddress = Context.PostalAddresses.SingleOrDefault(entity => entity.Address.PartyId == party.Id &&
         entity.Address.EndDate == null && entity.PostalAddressTypeId == type.Id && condition(entity));
     return postalAddress;
 }
 public static PostalAddress GetCurrentPostalAddress(Party party, PostalAddressType type, bool IsPrimaryPostalAddress)
 {
     Address address = party.Addresses.SingleOrDefault(entity => entity.EndDate == null && entity.AddressTypeId == AddressType.PostalAddressType.Id
             && entity.PostalAddress.PostalAddressTypeId == type.Id && entity.PostalAddress.IsPrimary == IsPrimaryPostalAddress);
     if (address != null)
         return address.PostalAddress;
     return null;
 }
 public static PostalAddress GetCurrentPostalAddress(Party party, PostalAddressType type, Asset asset)
 {
     Address address = party.Addresses.SingleOrDefault(entity => entity.EndDate == null && entity.AddressTypeId == AddressType.PostalAddressType.Id
             && entity.PostalAddress.PostalAddressTypeId == type.Id && entity.AssetId == asset.Id);
     if (address != null)
         return address.PostalAddress;
     return null;
 }
        public static PostalAddress CreatePostalAddress(Party party, PostalAddressType type, DateTime now)
        {
            Address address = new Address();
            address.Party = party;
            address.AddressType = AddressType.PostalAddressType;
            address.EffectiveDate = now;

            PostalAddress postalAddress = new PostalAddress();
            postalAddress.Address = address;
            postalAddress.PostalAddressType = type;
            return postalAddress;
        }
        //New Postal Address
        protected void CreatePostalAddress(Address Address, 
                                            PostalAddressType PostalAddressType, 
                                            Country Country, 
                                            string StreetAddress, 
                                            string Barangay, 
                                            string Municipality, 
                                            string City, 
                                            string Province, 
                                            string State, 
                                            string PostalCode)
        {
            PostalAddress NewPostalAddress = new PostalAddress();
            NewPostalAddress.Address = Address;
            NewPostalAddress.PostalAddressType = PostalAddressType;
            NewPostalAddress.Country = Country;

            if (string.IsNullOrWhiteSpace(StreetAddress)) NewPostalAddress.StreetAddress = null;
            else NewPostalAddress.StreetAddress = StreetAddress;

            NewPostalAddress.Barangay = Barangay;

            if (string.IsNullOrWhiteSpace(Municipality)) NewPostalAddress.Municipality = null;
            else NewPostalAddress.Municipality = Municipality;

            if (string.IsNullOrWhiteSpace(City)) NewPostalAddress.City = null;
            else NewPostalAddress.City = City;

            if (string.IsNullOrWhiteSpace(Province)) NewPostalAddress.Province = null;
            else NewPostalAddress.Province = Province;

            if (string.IsNullOrWhiteSpace(State)) NewPostalAddress.State = null;
            else NewPostalAddress.State = State;

            NewPostalAddress.PostalCode = PostalCode;
            NewPostalAddress.IsPrimary = true;

            ObjectContext.PostalAddresses.AddObject(NewPostalAddress);
        }