コード例 #1
0
        private MarketingList InsertMarketingList()
        {
            MarketingList marketingListInserted = new MarketingList(_connection);

            marketingListInserted.listname = $"testList_{DateTime.Now.ToString("yyyyMMdd_HH:mm:ss")}";

            marketingListInserted.query = @"
				<fetch mapping='logical' distinct='true'>
					<entity name='contact'>
						<attribute name='firstname' />
						<order attribute='firstname' descending='false' />
						<link-entity name='new_group_contact' from='contactid' to='contactid' visible='false' intersect='true'>
							<link-entity name='new_group' from='new_groupid' to='new_groupid' visible='false' intersect='true'>
								<attribute name='new_name' />
								<filter type='and'>
									<condition attribute='new_name' operator='eq' value='Støtten' />
								</filter>
							</link-entity>
						</link-entity>
						<link-entity name='new_group_contact' from='contactid' to='contactid' visible='false' intersect='true'>
							<link-entity name='new_group' from='new_groupid' to='new_groupid' visible='false' intersect='true'>
								<attribute name='new_name' />
								<filter type='and'>
									<condition attribute='new_name' operator='eq' value='Årsmærker' />
								</filter>
							</link-entity>
						</link-entity>
					</entity>
				</fetch>"                ;

            marketingListInserted.InsertWithoutRead();
            return(marketingListInserted);
        }
コード例 #2
0
        public override void ExecuteOption(OptionReport report)
        {
            string urlLoginName = _databaseExportContactToMailrelay.urlLoginName;

            Guid?crmListId = _databaseExportContactToMailrelay.listId;

            DatabaseUrlLogin      login = DatabaseUrlLogin.GetUrlLogin(Connection, urlLoginName);
            DynamicsCrmConnection dynamicsCrmConnection = DynamicsCrmConnection.GetConnection(login.Url, login.Username, login.Password);

            PagingInformation pagingInformation = new PagingInformation();

            while (pagingInformation.FirstRun || pagingInformation.MoreRecords)
            {
                MarketingList marketingList = MarketingList.GetListForMailrelayUpdate(dynamicsCrmConnection, pagingInformation, crmListId);

                if (marketingList != null)
                {
                    UpdateReport <Guid> result = ExportMailrelayContactFromList(dynamicsCrmConnection, marketingList);
                    Log.Write(Connection, result.AsLogText($"ExportContactToMailrelay {marketingList.new_mailrelaygroupid.Value}"), typeof(ExportContactToMailrelay), DataLayer.MongoData.Config.LogLevelEnum.OptionReport);
                }
            }

            report.Success = true;

            return;
        }
コード例 #3
0
 private DatabaseExportContactToMailrelay CreateDatabaseUpdateMailrelayGroup(MarketingList list)
 {
     return(new DatabaseExportContactToMailrelay()
     {
         listId = list.Id,
         Name = "test",
         Schedule = CreateScheduleAlwaysOnDoOnce(),
         urlLoginName = "test",
     });
 }
コード例 #4
0
        public void DeleteRemovesInserted()
        {
            MarketingList marketingListInserted = InsertMarketingList();

            marketingListInserted.Delete();

            TestDelegate readTest = () => MarketingList.Read(_connection, marketingListInserted.Id);

            Assert.Throws(Is.InstanceOf(typeof(Exception)), readTest);
        }
コード例 #5
0
        public ActionResult Create()
        {
            Guid logonUser = new Guid(System.Web.HttpContext.Current.Session["CurrentUserID"].ToString());

            MarketingList ml = new MarketingList();

            ml.CreatedBy = logonUser;

            return(View());
        }
コード例 #6
0
        public ActionResult formSubmit(MarketingList model, string actionType)
        {
            Guid logonUser = new Guid(System.Web.HttpContext.Current.Session["CurrentUserID"].ToString());

            List <string> errorMessage   = new List <string>();
            string        successMessage = Resources.MarketingList.MarketingListSuccess;

            if (ModelState.IsValid)
            {
                KeyValuePair <int, string> results = new KeyValuePair <int, string>(1, "");
                switch (actionType)
                {
                case "Create":
                    //model.ID = Guid.NewGuid();
                    model.CreatedBy = logonUser;
                    model.CreatedOn = DateTime.Now;
                    results         = db.MarketingList_Insert(model);
                    break;

                case "Edit":
                    model.ModifiedBy = logonUser;
                    model.ModifiedOn = DateTime.Now;
                    results          = db.MarketingList_Update(model);
                    break;
                }

                if (results.Key == 0 || results.Key == 16 || results.Key == 6)
                {
                    UrlHelper u      = new UrlHelper(this.ControllerContext.RequestContext);
                    string    url    = u.Action("Edit", "MarketingList", new { id = model.ID, success = successMessage });
                    string    urlNew = u.Action("Create", "MarketingList");

                    var jsonData = new { flag = true, Message = url, urlNew = urlNew };
                    return(Json(jsonData));
                }
                else
                {
                    var jsonData = new { flag = false, Message = results.Value.ToString() };
                    return(Json(jsonData));
                }
            }
            else
            {
                foreach (var key in ModelState.Keys)
                {
                    var error = ModelState[key].Errors.FirstOrDefault();
                    if (error != null)
                    {
                        errorMessage.Add(error.ErrorMessage);
                    }
                }
                var jsonData = new { flag = false, Message = errorMessage.First() };
                return(Json(jsonData));
            }
        }
コード例 #7
0
ファイル: Profile.aspx.cs プロジェクト: bhushanawhad/OpenLan
        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack)
            {
                return;
            }

            // check if this is a profile edit, or a new signup
            if (Request.IsAuthenticated)
            {
                //bind timezone options
                BindTimeZoneDropDown();

                // the user is already authenticated, so this is a profile edit.
                if (Portal != null)
                {
                    if (Contact == null)
                    {
                        return;
                    }

                    PopulateAccountForm(Contact.contact_customer_accounts);

                    PopulateContactForm(Contact);
                }

                SubmitButton.Text = "Update Account";

                if (!AccountInformation.Visible && !SelfInformation.Visible)
                {
                    SubmitButton.Text    = "You do not have permissions to read your account information!";
                    SubmitButton.Enabled = false;
                }
                else if ((AccountName.ReadOnly && (!SelfInformation.Visible || FirstName.ReadOnly)) || (FirstName.ReadOnly && (!AccountInformation.Visible || AccountName.ReadOnly)))
                {
                    SubmitButton.Visible = false;
                }
            }
            else
            {
                // the user is not signed in
                var loginPage = ServiceContext.GetPageBySiteMarkerName(Website, "Login");

                Response.Redirect(ServiceContext.GetUrl(loginPage));
            }

            if (Website == null)
            {
                return;
            }

            MarketingList.DataSource = Website.adx_website_list;
            MarketingList.DataBind();
        }
コード例 #8
0
        new public void SetUp()
        {
            base.SetUp();

            _contact = CreateContact();
            _contact.new_mailrelaysubscriberid = _random.Next(0, int.MaxValue);
            _contact.InsertWithoutRead();

            _groupId = _random.Next(0, int.MaxValue);

            _list = InsertMarketingListOnContact(_contact);
        }
コード例 #9
0
        public void InsertedAreSameAsRead()
        {
            MarketingList marketingListInserted = InsertMarketingList();

            MarketingList marketingListRead = MarketingList.Read(_connection, marketingListInserted.Id);

            marketingListInserted.Delete();

            Assert.AreEqual(marketingListInserted.createdfrom, marketingListRead.createdfrom);
            Assert.AreEqual(marketingListInserted.listname, marketingListRead.listname);
            Assert.AreEqual(marketingListInserted.Id, marketingListRead.Id);
            Assert.AreEqual(marketingListInserted.query, marketingListRead.query);
        }
コード例 #10
0
        public void GetListForMailrelayUpdateOnlyReturnsListThatShouldBeImported()
        {
            PagingInformation pagingInformation = new PagingInformation();

            while (pagingInformation.FirstRun || pagingInformation.MoreRecords)
            {
                MarketingList marketingList = MarketingList.GetListForMailrelayUpdate(_connection, pagingInformation, null);

                if (marketingList != null)
                {
                    Console.Out.WriteLine($" {marketingList.Id} {marketingList.new_controlmailrelaygroup} - {marketingList.new_mailrelaygroupid} - {marketingList.new_mailrelaycheck}");
                }
            }
        }
コード例 #11
0
        public void CrmIdsAndSubscriberIdsForTestList()
        {
            MarketingList list = MarketingList.Read(_connection, Guid.Parse("b70001ba-1569-e611-80f7-001c4215c4a0"));

            foreach (KeyValueEntity <Guid, int?> crmAndSubscriber in list.CrmIdsAndSubscriberIds)
            {
                Contact contact = Contact.ReadFromFetchXml(_connection, new List <string>()
                {
                    "emailaddress1", "new_mailrelaysubscriberid"
                }, new Dictionary <string, string>()
                {
                    { "contactid", crmAndSubscriber.key.ToString() }
                }).Single();
                Console.Out.WriteLine($"{contact.emailaddress1} - {contact.new_mailrelaysubscriberid}");
            }
        }
コード例 #12
0
        public void ContentIdsForNonMailrelaySubscribersTestList()
        {
            MarketingList list = MarketingList.Read(_connection, Guid.Parse("b70001ba-1569-e611-80f7-001c4215c4a0"));

            foreach (Guid crmId in list.ContentIdsForNonMailrelaySubscribers)
            {
                Contact contact = Contact.ReadFromFetchXml(_connection, new List <string>()
                {
                    "emailaddress1", "new_mailrelaysubscriberid"
                }, new Dictionary <string, string>()
                {
                    { "contactid", crmId.ToString() }
                }).Single();
                Console.Out.WriteLine($"{contact.emailaddress1} - {contact.new_mailrelaysubscriberid}");
            }
        }
コード例 #13
0
        private MarketingList InsertMarketingListOnContact(Contact contact)
        {
            MarketingList list = new MarketingList(DynamicsCrmConnection)
            {
                listname = $"test {Guid.NewGuid()}",
                new_controlmailrelaygroup = true,
                createdfrom = MarketingList.createdfromcodeEnum.Contact,
                query       =
                    new XDocument(
                        new XElement("fetch",
                                     new XElement("entity", new XAttribute("name", "contact"),
                                                  new XElement("attribute", new XAttribute("name", "emailaddress1")),
                                                  new XElement("filter",
                                                               new XElement("condition",
                                                                            new XAttribute("attribute", "contactid"),
                                                                            new XAttribute("operator", "eq"),
                                                                            new XAttribute("value", contact.Id)))))).ToString(),
            };

            list.InsertWithoutRead();
            return(list);
        }
コード例 #14
0
        public void ContactWithoutSubscriberIdWillBeExported()
        {
            _contact.new_mailrelaysubscriberid = null;
            _contact.Update();
            int newId = _random.Next(0, int.MaxValue);

            DatabaseExportContactToMailrelay databaseExportContactToMailrelay = CreateDatabaseUpdateMailrelayGroup(_list);

            ExportContactToMailrelay exportContactToMailrelay = new ExportContactToMailrelay(Connection, databaseExportContactToMailrelay);

            exportContactToMailrelay.ChangeMailrelayConnection(_mailrelayConnectionTester);

            _mailrelayConnectionTester.replies.Enqueue(new MailrelayIntReply()
            {
                status = 1, data = 1
            });
            _mailrelayConnectionTester.replies.Enqueue(new MailrelayIntReply()
            {
                status = 1, data = newId
            });

            exportContactToMailrelay.ExecuteOption(new Administration.Option.Options.OptionReport(typeof(ExportContactToMailrelayTest)));

            MarketingList listRead    = MarketingList.GetListForMailrelayUpdate(DynamicsCrmConnection, new PagingInformation(), _list.Id);
            Contact       contactRead = Contact.ReadFromFetchXml(DynamicsCrmConnection, new List <string>()
            {
                "contactid", "new_mailrelaysubscriberid"
            }, new Dictionary <string, string>()
            {
                { "contactid", _contact.Id.ToString() }
            }).Single();

            Assert.AreEqual(1, _mailrelayConnectionTester.sendFunctions.Count(function => function.GetType() == typeof(addSubscriber)));
            Assert.IsNotNull(listRead.new_mailrelaygroupid);
            Assert.AreEqual(newId, contactRead.new_mailrelaysubscriberid);
        }
コード例 #15
0
ファイル: SpMarketingList.cs プロジェクト: sun2dar/MKCRMApi
        public KeyValuePair <int, String> MarketingList_Update(MarketingList model)
        {
            var param = new SqlParameter[] {
                new SqlParameter("@ID", SqlDbType.UniqueIdentifier)
                {
                    Value = model.ID
                },
                new SqlParameter("@Name", SqlDbType.NVarChar, 100)
                {
                    Value = CheckForDbNull(model.Name)
                },
                new SqlParameter("@Purpose", SqlDbType.NVarChar, 100)
                {
                    Value = CheckForDbNull(model.Purpose)
                },
                new SqlParameter("@Description", SqlDbType.NVarChar, 200)
                {
                    Value = CheckForDbNull(model.Description)
                },
                new SqlParameter("@CreatedBy", SqlDbType.UniqueIdentifier)
                {
                    Value = CheckForDbNull(model.CreatedBy)
                },
                new SqlParameter("@CreatedOn", SqlDbType.DateTime)
                {
                    Value = CheckForDbNull(model.CreatedOn)
                },
                new SqlParameter("@ModifiedBy", SqlDbType.UniqueIdentifier)
                {
                    Value = CheckForDbNull(model.ModifiedBy)
                },
                new SqlParameter("@ModifiedOn", SqlDbType.DateTime)
                {
                    Value = CheckForDbNull(model.ModifiedOn)
                },
                new SqlParameter("@DeletionStateCode", SqlDbType.Int)
                {
                    Value = CheckForDbNull(model.DeletionStateCode)
                },
                new SqlParameter("@StateCode", SqlDbType.Int)
                {
                    Value = CheckForDbNull(model.StateCode)
                },
                new SqlParameter("@StatusCode", SqlDbType.Int)
                {
                    Value = CheckForDbNull(model.StatusCode)
                },
                new SqlParameter("@RetVal", SqlDbType.Int)
                {
                    Direction = ParameterDirection.Output
                },
                new SqlParameter("@Message", SqlDbType.NVarChar, 100)
                {
                    Direction = ParameterDirection.Output
                }
            };

            int rc = ((IObjectContextAdapter)this).ObjectContext.ExecuteStoreCommand("exec [CRM].[MarketingList_Update] @ID, @Name, @Purpose, @Description, @CreatedBy, @CreatedOn, @ModifiedBy, @ModifiedOn, @DeletionStateCode, @StateCode, @StatusCode, @RetVal out, @Message out", param);

            int    retVal   = (int)param[11].Value;
            string valueRes = param[12].Value.ToString();

            return(new KeyValuePair <int, string>(retVal, valueRes));
        }
コード例 #16
0
        private UpdateReport <Guid> ExportMailrelayContactFromList(DynamicsCrmConnection dynamicsCrmConnection, MarketingList marketingList)
        {
            if (marketingList.new_mailrelaygroupid.HasValue == false)
            {
                marketingList.new_mailrelaygroupid = Subscriber.CreateGroup(_mailrelayConnection, $"crm_{marketingList.listname}", "crm kontrolleret gruppe");

                marketingList.UpdateMailrelaygroupid(dynamicsCrmConnection);
            }

            IEnumerable <Guid> contactIdsToUpdate = marketingList.ContentIdsForNonMailrelaySubscribers;

            UpdateReport <Guid> updateReport = new UpdateReport <Guid>();

            foreach (Guid contactId in contactIdsToUpdate)
            {
                MailrelayInformation mailrelayInformation = MailrelayInformation.GetInformationNotInMailrelayFromContact(dynamicsCrmConnection, Config.GetResourcePath, contactId);

                UpdateResultEnum result = AddToMailrelay(dynamicsCrmConnection, mailrelayInformation, marketingList.new_mailrelaygroupid.Value);

                updateReport.CollectUpdate(result, contactId);
            }

            return(null);
        }
コード例 #17
0
 public ActionResult Edit(MarketingList model)
 {
     return(formSubmit(model, "Edit"));
 }
コード例 #18
0
        public ActionResult MCustomer(Guid id)
        {
            MarketingList model = db.marketingList.Find(id);

            return(View(model));
        }
コード例 #19
0
        private UpdateReport <int> AddOrRemoveMembersFromMailrelayGroup(DynamicsCrmConnection dynamicsCrmConnection, MarketingList marketingList, int groupId)
        {
            List <KeyValueEntity <Guid, int?> > crmIdsAndSubscriberIds = marketingList.CrmIdsAndSubscriberIds;

            List <getSubscribersReply> subscribersToRemoveFromMailrelay = new List <getSubscribersReply>();

            Subscriber subscriber = new Subscriber(_mailrelayConnection);

            getSubscribers getSubscribersFunction = new getSubscribers()
            {
                groups = new List <int>()
                {
                    groupId
                },
            };

            IEnumerable <getSubscribersReply> subscribersInMailrelay = subscriber.GetMailrelaySubscribers(getSubscribersFunction, 100);

            foreach (getSubscribersReply currentInMailrelay in subscribersInMailrelay)
            {
                int removed = crmIdsAndSubscriberIds.RemoveAll(idInCrm => currentInMailrelay.id == idInCrm.value.ToString());

                if (removed == 0)
                {
                    subscribersToRemoveFromMailrelay.Add(currentInMailrelay);
                }
            }

            UpdateReport <int> report = new UpdateReport <int>();

            RemoveFromMailrelayGroup(report, subscribersToRemoveFromMailrelay, subscriber, groupId);
            AddToMailrelayGroup(dynamicsCrmConnection, report, subscriber, crmIdsAndSubscriberIds, groupId);

            return(report);
        }
コード例 #20
0
        private UpdateReport <int> UpdateMailrelayGroupFromList(DynamicsCrmConnection dynamicsCrmConnection, MarketingList marketingList)
        {
            int?id = marketingList.new_mailrelaygroupid;

            if (id.HasValue == false)
            {
                id = Subscriber.CreateGroup(_mailrelayConnection, $"crm_{marketingList.listname}", "crm kontrolleret gruppe");

                marketingList.new_mailrelaygroupid = id;

                marketingList.UpdateMailrelaygroupid(dynamicsCrmConnection);
            }

            bool needsUpdate = marketingList.RecalculateMarketingListCheck();

            if (needsUpdate == false)
            {
                return(new UpdateReport <int>());
            }

            UpdateReport <int> report = AddOrRemoveMembersFromMailrelayGroup(dynamicsCrmConnection, marketingList, id.Value);

            marketingList.UpdateMailrelaycheck(dynamicsCrmConnection);

            return(report);
        }
コード例 #21
0
 public ActionResult Create(MarketingList model)
 {
     return(formSubmit(model, "Create"));
 }