Exemplo n.º 1
0
        private void CheckAddressData(CU_B_ADDRESS Item, CU_B_ADDRESS_EXT_AUS ItemExt)
        {
            short? cityCounter;
            string errorMessage;
            string areaCode = Item.AREA_CODE;
            string zipCode  = Item.ZIP_CODE;

            if (FoxDataService.CheckAddressCityData(ItemExt.STATE_CODE, Item.CITY_NAME, ref areaCode, ref zipCode, out cityCounter, out errorMessage))
            {
                Item.AREA_CODE    = areaCode;
                Item.ZIP_CODE     = zipCode;
                Item.CITY_COUNTER = cityCounter;
            }
            else
            {
                throw new InvalidOperationException(errorMessage);
            }

            if (ItemExt.STATE_CODE != null)
            {
                CM_S_STATE_EXT_AUS state = DBContext.CM_S_STATE_EXT_AUS.FirstOrDefault(E => E.STATE_CODE == ItemExt.STATE_CODE);
                if (state == null)
                {
                    throw new InvalidOperationException("State Code is not correct");
                }
            }
        }
        public void InsertCity(dynamic address)
        {
            CM_S_CITY_BOOK Item = new CM_S_CITY_BOOK();

            EntityMapper.UpdateEntity(address, Item);
            Item.DT_INSERT  = Item.DT_UPDATE = DateTime.UtcNow;
            Item.USERINSERT = Item.USERUPDATE = Settings.Value.Username;
            Item.CITY_NAME  = Item.CITY_NAME.ToUpperInvariant();
            Item.ROWGUID    = Guid.NewGuid();
            if (string.IsNullOrWhiteSpace(Item.COUNTRY_CODE))
            {
                Item.COUNTRY_CODE = Settings.Value.CountryCode;
            }

            CM_S_AREA_BOOK Area = null;

            if (!string.IsNullOrWhiteSpace(Item.AREA_CODE))
            {
                Area = DBContext.CM_S_AREA_BOOK.FirstOrDefault(E => E.AREA_CODE == Item.AREA_CODE);
            }

            if (Area == null)             //Revert to default state area, if possibile
            {
                string             StateCode = address.StateCode;
                CM_S_STATE_EXT_AUS State     = DBContext.CM_S_STATE_EXT_AUS.FirstOrDefault(E => E.STATE_CODE == StateCode);
                if (State == null)
                {
                    throw new InvalidOperationException($"Cannot find a state with state code = '{StateCode}'");
                }

                Item.AREA_CODE = State.DEFAULT_AREA_CODE;
            }
            Area = DBContext.CM_S_AREA_BOOK.FirstOrDefault(E => E.AREA_CODE == Item.AREA_CODE);
            if (Area == null)
            {
                throw new InvalidOperationException($"Cannot find area with code = '{Item.AREA_CODE}' for state '{address.StateCode}'");
            }

            CM_S_CITY_BOOK City = DBContext.CM_S_CITY_BOOK.Where(E => E.COUNTRY_CODE == Item.COUNTRY_CODE && E.AREA_CODE == Item.AREA_CODE && E.ZIP_CODE == Item.ZIP_CODE).OrderByDescending(E => E.CITY_COUNTER).FirstOrDefault();

            Item.CITY_COUNTER = (short)(City != null ? City.CITY_COUNTER + 1 : 1);

            DBContext.CM_S_CITY_BOOK.Add(Item);
            DBContext.SaveChanges();
        }