public override void PostAddMember(Guid mkList, Guid member, ConnectionHelper ch)
        {
            //get member type
            MarketingListInfo listInfo = Common.GetListTargetType(ch.OrganizationService, mkList);

            SendMemberToNewsman(listInfo, member, ch.OrganizationService);
        }
Example #2
0
        /// <summary>
        /// Target types: Account - 1, Contact - 2, Lead - 4
        /// </summary>
        /// <param name="service">CRM org service</param>
        /// <param name="listId">CRM marketing list guid</param>
        /// <returns></returns>
        public static MarketingListInfo GetListTargetType(IOrganizationService service, Guid listId)
        {
            Entity            mklist   = service.Retrieve("list", listId, new ColumnSet("listname", "createdfromcode", "nmc_newsmansegmentid"));
            MarketingListInfo listInfo = new MarketingListInfo();

            if (mklist.Contains("listname"))
            {
                listInfo.ListName = (string)mklist["listname"];
            }

            if (mklist.Contains("createdfromcode"))
            {
                int entityType = ((OptionSetValue)mklist["createdfromcode"]).Value;
                listInfo.ListTargetType = entityType == 1 ? "account" : (entityType == 2 ? "contact" : "lead");
            }

            if (mklist.Contains("nmc_newsmansegmentid"))
            {
                listInfo.NewsmanSegmentId = mklist["nmc_newsmansegmentid"].ToString();
            }

            return(listInfo);
        }
        private void SendMemberToNewsman(MarketingListInfo listInfo, Guid member, IOrganizationService service)
        {
            //get member email and information
            Subscriber subscriber = Common.CreateSubscriber(service, member, listInfo.ListTargetType);

            if (subscriber != null)
            {
                #region check config params
                string apikey = Common.GetParamValue(service, "ApiKey");
                string userid = Common.GetParamValue(service, "UserId");
                string nmList = Common.GetParamValue(service, "Default List");

                if (apikey == null || userid == null || nmList == null)
                {
                    return;
                }
                #endregion
                using (NewsmanAPI api = new NewsmanAPI(apikey, userid))
                {
                    var resp = api.ImportSubscribers(nmList, listInfo.NewsmanSegmentId, subscriber);
                    Common.LogToCRM(service, $"Importing [{subscriber.Email}] for [{listInfo.ListName}] list", $"Import id: {resp.Replace("\"","")}");
                }
            }
        }