public void AddCustomerWithMultiaddress() { string preferenceName = ConfigurationManager.AppSettings["MultiaddressName"]; HttpStatusCode status; string statusMessage; BrickStreetConnect brickStreetConnect = makeClient(); BrickStAPI.Connect.Attribute attrDef = brickStreetConnect.GetCustomerAttribute(preferenceName, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.IsNotNull(attrDef); string attrType = attrDef.Type; //create new customer Random r = new Random(); long val = r.Next(); if (val < 0) { val *= -1; } String custVal = "cmaeda+" + val + "@cmaeda.com"; Customer c = new Customer(); c.EmailAddress = custVal; c.AltCustomerId = custVal; c.AddressLine1 = "215 S Broadway 241"; c.City = "Salem"; c.State = "NH"; c.Country = "USA"; Customer c2 = brickStreetConnect.AddCustomer(c, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.IsNotNull(c2, "Customer is null"); Assert.IsNotNull(c2.Id, "Customer ID is null"); Assert.AreEqual(c2.EmailAddress, custVal); Assert.AreEqual(c2.AltCustomerId, custVal); c = c2; // //add preference // CustomerAttribute attr = null; if (string.Compare("preference", attrType, StringComparison.OrdinalIgnoreCase) == 0) { attr = c.GetAttribute(preferenceName); if (attr == null) { attr = new CustomerAttribute(); attr.Name = attrDef.Name; attr.Type = attrDef.Type; attr.DataType = attrDef.DataType; //start with 1 value attr.PreferenceValues = new string[1]; attr.PreferenceValues[0] = "pval" + val; c.Attributes.Add(attr); } else { string[] vals = attr.PreferenceValues; string[] newVals = new string[vals.Length + 1]; Array.Copy(vals, 0, newVals, 0, vals.Length); newVals[newVals.Length - 1] = "pval" + val; attr.PreferenceValues = newVals; } } else if (string.Compare("multiaddress", attrType, StringComparison.OrdinalIgnoreCase) == 0) { //add a channel address attr = c.GetChannelAddress(preferenceName); if (attr == null) { attr = new CustomerAttribute(); attr.Name = attrDef.Name; attr.Type = attrDef.Type; attr.DataType = attrDef.DataType; //start with 1 value attr.PreferenceValues = new string[1]; attr.PreferenceValues[0] = "pval" + val; c.ChannelAddresses.Add(attr); } else { string[] vals = attr.PreferenceValues; string[] newVals = new string[vals.Length + 1]; Array.Copy(vals, 0, newVals, 0, vals.Length); newVals[newVals.Length - 1] = "pval" + val; attr.PreferenceValues = newVals; } } else { Assert.IsTrue(false, "Unknown pref type " + attrType); } //save orig value string[] prefVals = attr.PreferenceValues; c2 = brickStreetConnect.UpdateCustomer(c, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.IsNotNull(c2, "Customer 2 is null"); //check saved data CustomerAttribute c2attr = null; if (string.Compare("preference", attrType, StringComparison.OrdinalIgnoreCase) == 0) { c2attr = c2.GetAttribute(preferenceName); } else if (string.Compare("multiaddress", attrType, StringComparison.OrdinalIgnoreCase) == 0) { c2attr = c2.GetChannelAddress(preferenceName); } Assert.IsNotNull(c2attr); CollectionAssert.AreEquivalent(prefVals, c2attr.PreferenceValues); c = c2; // //add a second pref value // //new random value val = r.Next(); if (val < 0) { val *= -1; } if (string.Compare("preference", attrType, StringComparison.OrdinalIgnoreCase) == 0) { attr = c.GetAttribute(preferenceName); Assert.IsNotNull(attr); //add a value string[] vals = attr.PreferenceValues; string[] newVals = new string[vals.Length + 1]; Array.Copy(vals, 0, newVals, 0, vals.Length); newVals[newVals.Length - 1] = "pval" + val; attr.PreferenceValues = newVals; } else if (string.Compare("multiaddress", attrType, StringComparison.OrdinalIgnoreCase) == 0) { //add a channel attr = c.GetChannelAddress(preferenceName); Assert.IsNotNull(attr); string[] vals = attr.PreferenceValues; string[] newVals = new string[vals.Length + 1]; Array.Copy(vals, 0, newVals, 0, vals.Length); newVals[newVals.Length - 1] = "pval" + val; attr.PreferenceValues = newVals; } else { Assert.IsTrue(false, "Unknown pref type " + attrType); } prefVals = attr.PreferenceValues; c2 = brickStreetConnect.UpdateCustomer(c, out status, out statusMessage); Assert.IsNotNull(c2, "Customer 2 is null"); //check saved data c2attr = null; if (string.Compare("preference", attrType, StringComparison.OrdinalIgnoreCase) == 0) { c2attr = c2.GetAttribute(preferenceName); } else if (string.Compare("multiaddress", attrType, StringComparison.OrdinalIgnoreCase) == 0) { c2attr = c2.GetChannelAddress(preferenceName); } Assert.IsNotNull(c2attr); CollectionAssert.AreEquivalent(prefVals, c2attr.PreferenceValues); c = c2; // //remove a preference // if (string.Compare("preference", attrType, StringComparison.OrdinalIgnoreCase) == 0) { attr = c2.GetAttribute(preferenceName); } else if (string.Compare("multiaddress", attrType, StringComparison.OrdinalIgnoreCase) == 0) { attr = c2.GetChannelAddress(preferenceName); } Assert.IsNotNull(attr); //remove first value string[] oldVals = attr.PreferenceValues; string[] newVals1 = new string[oldVals.Length - 1]; Array.Copy(oldVals, 1, newVals1, 0, newVals1.Length); attr.PreferenceValues = newVals1; prefVals = attr.PreferenceValues; c2 = brickStreetConnect.UpdateCustomer(c, out status, out statusMessage); Assert.AreNotEqual(c2, "Customer 2 is null"); //check saved data c2attr = null; if (string.Compare("preference", attrType, StringComparison.OrdinalIgnoreCase) == 0) { c2attr = c2.GetAttribute(preferenceName); } else if (string.Compare("multiaddress", attrType, StringComparison.OrdinalIgnoreCase) == 0) { c2attr = c2.GetChannelAddress(preferenceName); } Assert.IsNotNull(c2attr); CollectionAssert.AreEquivalent(prefVals, c2attr.PreferenceValues); }
public void ExistingEventCampaign() { // //Test Parameters // string altCustId = ConfigurationManager.AppSettings["AltCustId"]; string eventName = ConfigurationManager.AppSettings["EventName"]; string tokenName = ConfigurationManager.AppSettings["TokenName"]; string tokenValue = ConfigurationManager.AppSettings["TokenValue"]; // BrickStreetConnect brickst = makeClient(); HttpStatusCode status; string statusMessage; string timecode = DateTime.Now.ToLongTimeString(); Customer customer = brickst.GetCustomerByAltId(altCustId, out status, out statusMessage); if (customer == null) { string randomEmail = "user" + timecode + "@example.com"; customer = new Customer(); customer.EmailAddress = randomEmail; customer.AltCustomerId = altCustId; Customer cust2 = brickst.AddCustomer(customer, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); throw new Exception("null customer received from add customer"); } } long custId = Convert.ToInt32(customer.Id); if (!string.IsNullOrEmpty(tokenName) && !string.IsNullOrEmpty(tokenValue)) { //fetch attribute metadata BrickStAPI.Connect.Attribute attrDef = brickst.GetCustomerAttribute(tokenName, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } string attrType = attrDef.Type; bool doupdate = false; CustomerAttribute attr = customer.GetChannelAddress(tokenName); if (string.Compare("attribute", attrType, StringComparison.OrdinalIgnoreCase) == 0) { if (attr == null) { attr = new CustomerAttribute(); attr.Name = attrDef.Name; attr.Type = attrDef.Type; attr.DataType = attrDef.DataType; attr.Value = tokenValue; customer.Attributes.Add(attr); doupdate = true; } else { // update if new if (!tokenValue.Equals(attr.Value)) { attr.Value = tokenValue; doupdate = true; } } } else if (string.Compare("preference", attrType, StringComparison.OrdinalIgnoreCase) == 0) { if (attr == null) { attr = new CustomerAttribute(); attr.Name = attrDef.Name; attr.Type = attrDef.Type; attr.DataType = attrDef.DataType; // start with 1 value attr.PreferenceValues = new String[1]; attr.PreferenceValues[0] = tokenValue; customer.ChannelAddresses.Add(attr); doupdate = true; } else { // existing preference record // add the token value if it is not already there // the push channel code will automatically remove invalid device tokens String[] vals = attr.PreferenceValues; bool valuefound = false; for (int i = 0; i < vals.Length; i++) { String val = vals[i]; if (tokenValue.Equals(val)) { valuefound = true; break; } } if (!valuefound) { String[] newVals = new String[vals.Length + 1]; Array.Copy(vals, 0, newVals, 0, vals.Length); newVals[newVals.Length - 1] = tokenValue; attr.PreferenceValues = newVals; doupdate = true; } } } // save updated customer record if necessary if (doupdate) { Customer custSave2 = brickst.UpdateCustomer(customer, out status, out statusMessage); if (custSave2 == null) { throw new Exception("null customer received from updateCustomer"); } customer = custSave2; } } // //create an event record // BrickStreetAPI.Connect.Event eventObj = new BrickStreetAPI.Connect.Event(); eventObj.EventName = eventName; eventObj.CustomerId = custId; eventObj.Subscribe = true; eventObj.Parameters = new List<EventParameter>(); DateTime now = new DateTime(); //event parameter: Message EventParameter ep1 = new EventParameter(); ep1.ParameterName = "Message"; ep1.ParameterValue = "Test at " + now.ToString(); ep1.Encrypted = false; eventObj.Parameters.Add(ep1); //event parameter:Badge EventParameter ep2 = new EventParameter(); ep2.ParameterName = "Badge"; ep2.ParameterValue = "42"; ep2.Encrypted = false; eventObj.Parameters.Add(ep2); //event parameter: AlertID EventParameter ep3 = new EventParameter(); ep3.ParameterName = "AlertID"; ep3.ParameterValue = timecode; ep3.Encrypted = false; eventObj.Parameters.Add(ep3); // //submit event to connect // BrickStreetAPI.Connect.Event posted = brickst.AddEvent(eventObj, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); throw new Exception("addEvent returned null"); } long eventQueueId = Convert.ToInt32(posted.Id); long eventId = Convert.ToInt32(posted.EventId); Console.WriteLine("Posted Event;ID=" + eventQueueId + " for CustomerID=" + custId + " and Event ID=" + eventId); }
public void AddCustomerWithAttribute() { String attributeName = ConfigurationManager.AppSettings["AttrName"];//this will be probably fetched from app.config String attributeValue = ConfigurationManager.AppSettings["AttrValue"]; HttpStatusCode status; string statusMessage; BrickStreetConnect brickStreetConnect = makeClient(); var attrDef = brickStreetConnect.GetCustomerAttribute(attributeName, out status, out statusMessage); Assert.AreNotEqual(attrDef, "Attribute Not Found"); //create new customer Random r = new Random(); long val = r.Next(); if (val < 0) { val *= -1; } String custVal = "cmaeda" + val + "@cmaeda.com"; Customer c = new Customer(); c.EmailAddress = custVal; c.AltCustomerId = custVal; c.AddressLine1 = "215 S Broadway 241"; c.City = "Salem"; c.State = "NH"; c.Country = "USA"; Customer c2 = brickStreetConnect.AddCustomer(c, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.IsNotNull(c2); Assert.IsNotNull(c2.Id); Assert.AreEqual(c2.EmailAddress, custVal); Assert.AreEqual(c2.AltCustomerId, custVal); CustomerAttribute attr = c2.GetAttribute(attributeName); if (attr == null) { attr = new CustomerAttribute(); attr.Name = attrDef.Name; attr.Type = attrDef.Type; attr.DataType = attrDef.DataType; attr.Value = attributeValue; c2.Attributes.Add(attr); } else { attr.Value = attributeValue; } Customer c3 = brickStreetConnect.UpdateCustomer(c2, out status, out statusMessage); if (status != HttpStatusCode.OK) { Console.WriteLine("ERROR: STATUS:" + status.ToString() + " " + statusMessage); } Assert.IsNotNull(c3, "Customer 3 is null"); CustomerAttribute c3attr = c3.GetAttribute(attributeName); Assert.IsNotNull(c3attr); Assert.AreEqual(c3attr.Value, attributeValue); }