Пример #1
0
        public Rock.CRM.DTO.Address ApiGeocode(string apiKey, Rock.CRM.DTO.Address address)
        {
            using (new Rock.Data.UnitOfWorkScope())
            {
                Rock.CMS.UserService userService = new Rock.CMS.UserService();
                Rock.CMS.User        user        = userService.Queryable().Where(u => u.ApiKey == apiKey).FirstOrDefault();

                if (user != null)
                {
                    if (address != null)
                    {
                        Rock.CRM.AddressService addressService = new Rock.CRM.AddressService();
                        Rock.CRM.Address        addressModel   = addressService.Geocode(address, user.PersonId);
                        return(addressModel.DataTransferObject);
                    }
                    else
                    {
                        throw new WebFaultException <string>("Invalid Address", System.Net.HttpStatusCode.BadRequest);
                    }
                }
                else
                {
                    throw new WebFaultException <string>("Invalid API Key", System.Net.HttpStatusCode.Forbidden);
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Looks for an existing address model first by searching for a raw value, and then by the street,
        /// city, state, and zip of the specified address stub.  If a match is not found, then a new address
        /// block is returned.
        /// </summary>
        /// <param name="address">The address.</param>
        /// <param name="personId">The person id.</param>
        /// <returns></returns>
        private Rock.CRM.Address GetByAddressDTO(Rock.CRM.DTO.Address address, int?personId)
        {
            string raw = address.Raw;

            Rock.CRM.Address addressModel = GetByRaw(raw);

            if (addressModel == null)
            {
                addressModel = GetByStreet1AndStreet2AndCityAndStateAndZip(
                    address.Street1, address.Street2, address.City, address.State, address.Zip);
            }

            if (addressModel == null)
            {
                addressModel         = new CRM.Address();
                addressModel.Raw     = raw;
                addressModel.Street1 = address.Street1;
                addressModel.Street2 = address.Street2;
                addressModel.City    = address.City;
                addressModel.State   = address.State;
                addressModel.Zip     = address.Zip;
            }

            return(addressModel);
        }
Пример #3
0
        private void btnGo_Click(object sender, EventArgs e)
        {
            try
            {
                Rock.CRM.DTO.Address address = SendRequest("Standardize");
                if (address != null)
                {
                    tbStreet1.Text = address.Street1;
                    tbStreet2.Text = address.Street2;
                    tbCity.Text    = address.City;
                    tbState.Text   = address.State;
                    tbZip.Text     = address.Zip;

                    tbStandardized.Text = string.Format("{0}: {1}", address.StandardizeService, address.StandardizeResult);
                }

                address = SendRequest("Geocode");
                if (address != null)
                {
                    tbGeocoded.Text = string.Format("{0}[{3}]: {1} {2}", address.GeocodeService, address.Latitude, address.Longitude, address.GeocodeResult);
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message, "Exception");
            }
        }
Пример #4
0
        public void UpdateAddress(string id, Rock.CRM.DTO.Address Address)
        {
            var currentUser = Rock.CMS.UserService.GetCurrentUser();

            if (currentUser == null)
            {
                throw new WebFaultException <string>("Must be logged in", System.Net.HttpStatusCode.Forbidden);
            }

            using (Rock.Data.UnitOfWorkScope uow = new Rock.Data.UnitOfWorkScope())
            {
                uow.objectContext.Configuration.ProxyCreationEnabled = false;
                Rock.CRM.AddressService AddressService  = new Rock.CRM.AddressService();
                Rock.CRM.Address        existingAddress = AddressService.Get(int.Parse(id));
                if (existingAddress.Authorized("Edit", currentUser))
                {
                    uow.objectContext.Entry(existingAddress).CurrentValues.SetValues(Address);

                    if (existingAddress.IsValid)
                    {
                        AddressService.Save(existingAddress, currentUser.PersonId);
                    }
                    else
                    {
                        throw new WebFaultException <string>(existingAddress.ValidationResults.AsDelimited(", "), System.Net.HttpStatusCode.BadRequest);
                    }
                }
                else
                {
                    throw new WebFaultException <string>("Not Authorized to Edit this Address", System.Net.HttpStatusCode.Forbidden);
                }
            }
        }
Пример #5
0
        public void ApiCreateAddress(string apiKey, Rock.CRM.DTO.Address Address)
        {
            using (Rock.Data.UnitOfWorkScope uow = new Rock.Data.UnitOfWorkScope())
            {
                Rock.CMS.UserService userService = new Rock.CMS.UserService();
                Rock.CMS.User        user        = userService.Queryable().Where(u => u.ApiKey == apiKey).FirstOrDefault();

                if (user != null)
                {
                    uow.objectContext.Configuration.ProxyCreationEnabled = false;
                    Rock.CRM.AddressService AddressService  = new Rock.CRM.AddressService();
                    Rock.CRM.Address        existingAddress = new Rock.CRM.Address();
                    AddressService.Add(existingAddress, user.PersonId);
                    uow.objectContext.Entry(existingAddress).CurrentValues.SetValues(Address);

                    if (existingAddress.IsValid)
                    {
                        AddressService.Save(existingAddress, user.PersonId);
                    }
                    else
                    {
                        throw new WebFaultException <string>(existingAddress.ValidationResults.AsDelimited(", "), System.Net.HttpStatusCode.BadRequest);
                    }
                }
                else
                {
                    throw new WebFaultException <string>("Invalid API Key", System.Net.HttpStatusCode.Forbidden);
                }
            }
        }
Пример #6
0
        /// <summary>
        /// Standardizes the specified <see cref="Rock.CRM.DTO.Address"/>
        /// </summary>
        /// <param name="address">The address.</param>
        /// <param name="personId">The person id.</param>
        /// <returns></returns>
        public Rock.CRM.Address Standardize(Rock.CRM.DTO.Address address, int?personId)
        {
            Rock.CRM.Address addressModel = GetByAddressDTO(address, personId);

            Standardize(addressModel, personId);

            return(addressModel);
        }
Пример #7
0
        /// <summary>
        /// Geocodes the specified <see cref="Rock.CRM.DTO.Address"/>
        /// </summary>
        /// <param name="address">The address.</param>
        /// <param name="personId">The person id.</param>
        /// <returns></returns>
        public Rock.CRM.Address Geocode(Rock.CRM.DTO.Address address, int?personId)
        {
            Rock.CRM.Address addressModel = GetByAddressDTO(address, personId);

            Geocode(addressModel, personId);

            return(addressModel);
        }
Пример #8
0
        private Rock.CRM.DTO.Address SendRequest(string service)
        {
            Rock.CRM.DTO.Address address = new Rock.CRM.DTO.Address();
            address.Street1 = tbStreet1.Text;
            address.Street2 = tbStreet2.Text;
            address.City    = tbCity.Text;
            address.State   = tbState.Text;
            address.Zip     = tbZip.Text;

            WebClient proxy = new System.Net.WebClient();

            proxy.Headers["Content-type"] = "application/json";
            MemoryStream ms = new MemoryStream();
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Rock.CRM.DTO.Address));

            serializer.WriteObject(ms, address);

            try
            {
                byte[] data = proxy.UploadData(string.Format("http://localhost:6229/RockWeb/REST/CRM/Address/{0}/{1}", service, APIKEY),
                                               "PUT", ms.ToArray());
                Stream stream = new MemoryStream(data);
                return(serializer.ReadObject(stream) as Rock.CRM.DTO.Address);
            }
            catch (WebException ex)
            {
                //string response = (ex.Response
                using (Stream data = ex.Response.GetResponseStream())
                {
                    string text = new StreamReader(data).ReadToEnd();

                    MessageBox.Show(string.Format("Response: {0}\n{1}",
                                                  ((System.Net.HttpWebResponse)ex.Response).StatusDescription, text), service + " Error");
                }

                return(null);
            }
        }
Пример #9
0
        public Rock.CRM.DTO.Address Standardize(Rock.CRM.DTO.Address address)
        {
            var currentUser = Rock.CMS.UserService.GetCurrentUser();

            if (currentUser == null)
            {
                throw new WebFaultException <string>("Must be logged in", System.Net.HttpStatusCode.Forbidden);
            }

            using (new Rock.Data.UnitOfWorkScope())
            {
                if (address != null)
                {
                    Rock.CRM.AddressService addressService = new Rock.CRM.AddressService();
                    Rock.CRM.Address        addressModel   = addressService.Standardize(address, currentUser.PersonId);
                    return(addressModel.DataTransferObject);
                }
                else
                {
                    throw new WebFaultException <string>("Invalid Address", System.Net.HttpStatusCode.BadRequest);
                }
            }
        }
Пример #10
0
        private Rock.CRM.DTO.Address SendRequest( string service )
        {
            Rock.CRM.DTO.Address address = new Rock.CRM.DTO.Address();
            address.Street1 = tbStreet1.Text;
            address.Street2 = tbStreet2.Text;
            address.City = tbCity.Text;
            address.State = tbState.Text;
            address.Zip = tbZip.Text;

            WebClient proxy = new System.Net.WebClient();
            proxy.Headers["Content-type"] = "application/json";
            MemoryStream ms = new MemoryStream();
            DataContractJsonSerializer serializer = new DataContractJsonSerializer( typeof( Rock.CRM.DTO.Address ) );
            serializer.WriteObject(ms, address);

            try
            {
                byte[] data = proxy.UploadData( string.Format( "http://localhost:6229/RockWeb/REST/CRM/Address/{0}/{1}", service, APIKEY ),
                    "PUT", ms.ToArray() );
                Stream stream = new MemoryStream( data );
                return serializer.ReadObject( stream ) as Rock.CRM.DTO.Address;
            }
            catch ( WebException ex )
            {
                //string response = (ex.Response
                using ( Stream data = ex.Response.GetResponseStream() )
                {
                    string text = new StreamReader( data ).ReadToEnd();

                    MessageBox.Show( string.Format( "Response: {0}\n{1}",
                        ( ( System.Net.HttpWebResponse )ex.Response ).StatusDescription, text ), service + " Error" );
                }

                return null;
            }
        }