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); } } }
/// <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); }
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"); } }
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); } } }
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); } } }
/// <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); }
/// <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); }
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); } }
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); } } }
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; } }