public void BtnDeleteConfirm_Click_DeletedItemsExist_ExceptionOnLoadGrid()
        {
            //Arrange
            InitilizeTestObjects();

            var errorMessage = "";

            var btnDeleteConfirm = privateObject.GetFieldOrProperty("btnDeleteConfirm") as Button;

            btnDeleteConfirm.CommandArgument = "1";

            ShimUser.IsChannelAdministratorUser = (p1) =>
            {
                return(true);
            };

            ShimCampaignItem.GetByCampaignIDInt32UserBoolean = (p1, p2, p3) =>
            {
                var listCI = new List <CampaignItem>();
                var item   = new CampaignItem
                {
                    CampaignID     = p1,
                    IsDeleted      = true,
                    CampaignItemID = p1
                };

                listCI.Add(item);

                return(listCI);
            };

            ShimCampaignItemBlast.GetByCampaignItemIDInt32UserBoolean = (p1, p2, p3) =>
            {
                return(new List <CampaignItemBlast>());
            };

            ShimCampaignItemTestBlast.GetByCampaignItemIDInt32UserBoolean = (p1, p2, p3) =>
            {
                return(new List <CampaignItemTestBlast>());;
            };

            ShimCampaign.DeleteInt32User = (p1, p2) => { };
            ShimManageCampaigns.AllInstances.LoadGrid = (p1) =>
            {
                throw new ECNException(new List <ECNError> {
                    new ECNError(Enums.Entity.Customer, Enums.Method.Save, "Test Exception")
                });
            };

            ShimManageCampaigns.AllInstances.setECNErrorECNException = (p1, p2) =>
            {
                errorMessage = p2.ErrorList[0].ErrorMessage;
            };

            // Act
            privateObject.Invoke("btnDeleteConfirm_Click", new object[] { null, EventArgs.Empty });

            //Assert
            errorMessage.ShouldBe("Test Exception");
        }
示例#2
0
        /// <summary>
        ///     Load all campaign items from the database.
        /// </summary>
        /// <returns></returns>
        private CampaignItemSet LoadCampaignItemSet()
        {
            var campaignItemSet = new CampaignItemSet();

            // Get the collection from the ORM data layer
            var metaData = new LinqMetaData();

            IQueryable <CampaignItemEntity> campaignItems = from c in metaData.CampaignItem select c;

            var campaignItemCollection = ((ILLBLGenProQuery)campaignItems).Execute <CampaignItemCollection>();

            // Fill the entity set from the data collection
            if (campaignItemCollection.Count > 0)
            {
                foreach (var campaignItemEntity in campaignItemCollection)
                {
                    var campaignItem = new CampaignItem(campaignItemEntity);

                    campaignItemSet.Add(campaignItem);
                }
            }

            // Return the entity set
            return(campaignItemSet);
        }
        public void SaveCampaignItem_smartsegment_WhenValidCampaignItem_SavesRelatedEntities()
        {
            // Arrange
            CampaignItem campaignItem = GetCampaignItem();
            var          parentCI     = GetCampaignItem();

            parentCI.SendTime = parentCI.SendTime.Value.AddDays(-1);
            var campaignId = 1;

            SetPageControls();
            SetGvSelectedGroupsGrid();
            SetGvSuppressedGroupsGrid();
            SetFakesForSaveCampaignItem();

            // Act
            var isSaved = _testEntity.saveCampaignItem_smartsegment(campaignItem, parentCI, campaignId);

            // Assert
            isSaved.ShouldSatisfyAllConditions(
                () => isSaved.ShouldBeTrue(),
                () => _isBlastCreated.ShouldBeTrue(),
                () => _isBlastLitRefDeleted.ShouldBeTrue(),
                () => _isCampaignItemBlastSaved.ShouldBeTrue(),
                () => _isCampaignItemSaved.ShouldBeTrue(),
                () => _isCampaignSuppressionDeleted.ShouldBeTrue(),
                () => _isCampaignSuppressionSaved.ShouldBeTrue(),
                () => _savedCampaignItemBlast.ShouldNotBeNull(),
                () => _savedCampaignItem.ShouldNotBeNull(),
                () => _savedCampaignSuppresseion.ShouldNotBeNull(),
                () => _deletedBlastRefId.Count.ShouldBe(1),
                () => _deletedBlastRefId.ShouldContain(-1),
                () => _deletedSuppressionCamapaignId.ShouldBe(-1));
        }
示例#4
0
        /// <summary>
        ///     Get the campaign item. The cache is not bypassed by default.
        /// </summary>
        /// <param name="campaignItemId">The campaign item identifier</param>
        /// <param name="noCache">Bypass the cache</param>
        /// <param name="refreshCache">Force refresh the cache</param>
        /// <returns>A campaign item</returns>
        public CampaignItem GetCampaignItem(int campaignItemId, bool noCache, bool refreshCache)
        {
            // If no cache the load and return a entity from the database
            if (noCache && !refreshCache)
            {
                return(LoadCampaign(campaignItemId));
            }

            CampaignItem campaignItem;

            string cacheKey = CampaignItem.GetCacheKeyById(campaignItemId);

            if (!CacheManagerProvider.GetCacheManagerInstance().Contains <CampaignItem>(cacheKey) || refreshCache)
            {
                // Load the entity from the database
                campaignItem = LoadCampaign(campaignItemId);

                if (campaignItem != null)
                {
                    // Add the entity to the cache by reading caching parameters from the configuration
                    CacheManagerProvider.GetCacheManagerInstance().Insert(cacheKey, campaignItem,
                                                                          ConfigurationManager.GetCacheExpirationByType(
                                                                              campaignItem.GetType()));
                }
            }
            else
            {
                campaignItem = CacheManagerProvider.GetCacheManagerInstance().Get <CampaignItem>(cacheKey);
            }

            return(campaignItem);
        }
示例#5
0
        public Campaign AddCampaignItems(Campaign campaign, Definition campaignItemDefinition, params string[] names)
        {
            if (campaign.CampaignItems == null)
            {
                campaign.CampaignItems = new List <CampaignItem>();
            }

            foreach (var name in names)
            {
                CampaignItem campaignItem = _campaignItems.Value.SingleOrDefault(x => x.Name == name && x.Campaign == campaign) ?? new CampaignItem
                {
                    AllowNextCampaignItems = true,                     // Allow additional discounts
                    Campaign = campaign,
                    CampaignItemProperties = null,
                    Definition             = campaignItemDefinition,
                    Enabled = true,
                    Name    = name,
                };

                campaignItem.Deleted = false;
                campaign.CampaignItems.Add(campaignItem);
            }

            Save(campaign);

            return(campaign);
        }
示例#6
0
        /// <summary>
        /// Gets the number of pending connection request based on existing request that don't have a connector plus the ones in the CampaignConnectionItem's EntitySet
        /// </summary>
        /// <param name="campaignConnectionItem">The campaign connection item.</param>
        /// <param name="connectorPerson">The connector person.</param>
        /// <returns></returns>
        public static int GetPendingConnectionCount(CampaignItem campaignConnectionItem, Person connectorPerson)
        {
            var rockContext      = new RockContext();
            var entitySetService = new EntitySetService(rockContext);
            var entitySetId      = GetEntitySet(campaignConnectionItem);

            var pendingPersonPrimaryCampusIdList = entitySetService.GetEntityQuery <Person>(entitySetId)
                                                   .Select(a => new
            {
                a.PrimaryCampusId
            })
                                                   .ToList();

            int pendingCount       = 0;
            var connectorCampusIds = GetConnectorCampusIds(campaignConnectionItem, connectorPerson);

            foreach (var pendingPerson in pendingPersonPrimaryCampusIdList)
            {
                int?entitySetPersonPrimaryCampusId = pendingPerson.PrimaryCampusId;

                if (IsValidCampus(connectorCampusIds, entitySetPersonPrimaryCampusId))
                {
                    pendingCount++;
                }
            }

            pendingCount += CampaignConnectionHelper.GetConnectionRequestsWithoutConnectorQuery(rockContext, campaignConnectionItem, connectorPerson).Count();
            return(pendingCount);
        }
示例#7
0
        /// <summary>
        /// Gets the connector campus ids, if the connectorPerson is not a member of the connecter groups for the opportunity, this wil return an empty lkist
        /// </summary>
        /// <param name="selectedCampaignItem">The selected campaign item.</param>
        /// <param name="connectorPerson">The connector person.</param>
        /// <returns></returns>
        public static List <int?> GetConnectorCampusIds(CampaignItem selectedCampaignItem, Person connectorPerson)
        {
            if (connectorPerson == null)
            {
                // if no connector person is specified, we can return list that just an "All" (null) campus
                var result = new List <int?>();
                result.Add(( int? )null);
                return(result);
            }

            var         rockContext = new RockContext();
            List <int?> connectorCampusIds;
            var         opportunityService = new ConnectionOpportunityService(rockContext);

            IQueryable <ConnectionOpportunityConnectorGroup> opportunityConnecterGroupQuery = opportunityService.Queryable()
                                                                                              .Where(a => a.IsActive && a.Guid == selectedCampaignItem.OpportunityGuid)
                                                                                              .SelectMany(a => a.ConnectionOpportunityConnectorGroups);

            int connectorPersonId = connectorPerson.Id;

            // get the campusid of the connector's connector group) of this opportunity
            // If the person is a member in more than one of opportunity groups, get all the campus ids that the connector can work with
            connectorCampusIds = opportunityConnecterGroupQuery.Where(a => a.ConnectorGroup.Members.Any(m => m.GroupMemberStatus == GroupMemberStatus.Active && m.PersonId == connectorPersonId)).Select(a => a.CampusId).Distinct().ToList();

            // NOTE: if connectorPerson isn't in a ConnectionOpportunityConnectorGroup, there will be no campus ids. The AddCampaignRequests block shouldn't of let them request connections for this campaign
            return(connectorCampusIds);
        }
 private void CreateCampaignItemShim()
 {
     ShimCampaignItem.GetByCampaignItemID_NoAccessCheckInt32Boolean = (x, y) =>
     {
         var campaignItemBlastFilterObject = CreateInstance(typeof(CampaignItemBlastFilter));
         var campaignItemBlastFilterList   = new List <CampaignItemBlastFilter>
         {
             campaignItemBlastFilterObject
         };
         var campaignItemBlastObject = CreateInstanceWithValues(typeof(CampaignItemBlast), new
         {
             Filters = campaignItemBlastFilterList
         });
         var CampaignItemSuppressionObject = CreateInstance(typeof(CampaignItemSuppression));
         _campaignItemObject = CreateInstanceWithValues(typeof(CampaignItem), new
         {
             BlastList = new List <CampaignItemBlast>()
             {
                 campaignItemBlastObject,
                 campaignItemBlastObject
             },
             SuppressionList = new List <CampaignItemSuppression>
             {
                 CampaignItemSuppressionObject
             },
         });
         _campaignItemObject.IgnoreSuppression = (bool?)false;
         return(_campaignItemObject);
     };
 }
        public void Page_Load_WhenUserHasNotAccess_BtnActiveOpensShouldNotBeVisible()
        {
            // Arrange
            CreateShims();
            InitializeSession();
            Mock <HttpResponseBase> response;
            Mock <IReportViewer>    reportViewer;
            var open = CreateOpens(out response, out reportViewer);

            Initialize(open);
            Shimopens.AllInstances.getBlastID = (x) => Zero;
            KM.Platform.Fakes.ShimUser.HasAccessUserEnumsServicesEnumsServiceFeaturesEnumsAccess = (a, b, c, d) => false;
            Shimopens.AllInstances.getCampaignItemID = (x) => One;
            var campaignItem = new CampaignItem();

            campaignItem.CampaignItemType = DummyLayout;
            ShimCampaignItem.GetByCampaignItemID_NoAccessCheckInt32Boolean = (x, y) => campaignItem;
            var methodArgs = new object[] { null, EventArgs.Empty };

            // Act
            typeof(opens).CallMethod(MethodPageLoad, methodArgs, open);

            // Assert
            var btnActiveOpens = ReflectionHelper.GetField(open, "btnActiveOpens") as LinkButton;

            open.ShouldSatisfyAllConditions(
                () => btnActiveOpens.ShouldNotBeNull(),
                () => btnActiveOpens.Visible.ShouldBeFalse());
        }
        public void Save_WhenCheckLosingCampaignChecked_SavesRelatedEntities(CampaignItem campaignItem)
        {
            // Arrange
            const string deliveredOrOpened = "TestString";

            InitializePageAndControls();
            SetupFakesIfEmptyWinnerType(deliveredOrOpened);
            SetFakesForSaveMethod();
            SetPageViewState();
            Get <CheckBox>(_privateControlObj, ChkAorB).Checked            = true;
            Get <CheckBox>(_privateControlObj, ChkLosingCampaign).Checked  = true;
            ShimCampaignItem.GetByCampaignItemID_NoAccessCheckInt32Boolean = (id, child) => campaignItem;

            // Act
            var isSaved = _control.Save();

            // Assert
            isSaved.ShouldSatisfyAllConditions(
                () => isSaved.ShouldBeTrue(),
                () => _isBlastCreated.ShouldBeTrue(),
                () => _isCampaignItemSaved.ShouldBeTrue(),
                () => _isSampleSaved.ShouldBeTrue(),
                () => _deletedCampaignItemBlastID.ShouldBe(campaignItem.BlastList.Any() ? campaignItem.BlastList[0].CampaignItemBlastID : 0),
                () => _deletedCampaignItemId.ShouldBe(0),
                () => _savedCampaignItemBlast.ShouldNotBeNull(),
                () => _savedCampaignItems.ShouldNotBeEmpty(),
                () => _savedCampaignItems.Count.ShouldBe(2),
                () => _savedCampaignItemSuppression.ShouldNotBeNull(),
                () => _savedCampaignItemSuppression.ShouldNotBeEmpty(),
                () => _savedCampaignItemSuppression.Count.ShouldBe(1),
                () => _savedSample.ShouldNotBeNull());
        }
        public void SaveCampaignItem_smartsegment_WhenCampaignItemNullAndGridRowCountGreaterThanOne_LogsECNException()
        {
            // Arrange
            CampaignItem campaignItem = null;
            var          parentCI     = new CampaignItem();
            var          campaignId   = 1;

            SetPageControls();
            var gvSelectedGroups = (GridView)_privateTestObject.GetFieldOrProperty(GvSelectedGroupsPropertyName);

            gvSelectedGroups.DataSource = new List <Group>
            {
                new Group {
                    GroupID = 1, GroupName = SampleGroup
                },
                new Group {
                    GroupID = 2, GroupName = SampleGroup
                }
            };
            gvSelectedGroups.DataBind();

            // Act
            var isSaved = _testEntity.saveCampaignItem_smartsegment(campaignItem, parentCI, campaignId);

            // Assert
            isSaved.ShouldSatisfyAllConditions(
                () => isSaved.ShouldBeFalse(),
                () => Get <PlaceHolder>(_privateGroupExplorerObj, PhErrorControl).Visible.ShouldBeTrue(),
                () => Get <Label>(_privateGroupExplorerObj, LblErrorMessageControl).Text.
                ShouldContain($"The parent CampaignItem is a multi-group blast. Please select only one group."));
        }
        public override void Update(CampaignItem item)
        {
            if (item == null)
            {
                throw new ArgumentNullException("item");
            }

            var dbItem = new Product();

            dbItem.ProductId = item.Product.Id;

            this.context.AttachTo("Products", dbItem);

            dbItem.IsFeatured = item.IsFeatured;
            if (item.DiscountPrice == null)
            {
                dbItem.DiscountedUnitPrice = null;
            }
            else
            {
                dbItem.DiscountedUnitPrice = item.DiscountPrice.Amount;
            }

            this.context.SaveChanges();
        }
        public void BtnDeleteConfirm_Click_CannotDeleteException()
        {
            //Arrange
            InitilizeTestObjects();

            var errorMessage = "";

            var btnDeleteConfirm = privateObject.GetFieldOrProperty("btnDeleteConfirm") as Button;

            btnDeleteConfirm.CommandArgument = "1";

            ShimUser.IsChannelAdministratorUser = (p1) =>
            {
                return(true);
            };

            ShimCampaignItem.GetByCampaignIDInt32UserBoolean = (p1, p2, p3) =>
            {
                var listCI = new List <CampaignItem>();
                var item   = new CampaignItem
                {
                    CampaignID     = p1,
                    IsDeleted      = false,
                    CampaignItemID = p1
                };

                listCI.Add(item);

                return(listCI);
            };

            ShimCampaignItemBlast.GetByCampaignItemIDInt32UserBoolean = (p1, p2, p3) =>
            {
                var listCIB   = new List <CampaignItemBlast>();
                var blastItem = new CampaignItemBlast
                {
                    CampaignItemID = p1,
                    BlastID        = p1
                };

                var blast = new BlastAB();
                blastItem.Blast = blast;

                listCIB.Add(blastItem);

                return(listCIB);
            };

            ShimManageCampaigns.AllInstances.throwECNExceptionString = (p1, p2) =>
            {
                errorMessage = p2;
            };

            // Act
            privateObject.Invoke("btnDeleteConfirm_Click", new object[] { null, EventArgs.Empty });

            //Assert
            errorMessage.ShouldBe("Cannot delete Campaign because it contains Campaign Items");
        }
        private void SetFakesForSaveCampaignItem()
        {
            _isBlastLitRefDeleted         = false;
            _deletedBlastRefId            = new List <int>();
            _savedCampaignItem            = null;
            _isCampaignItemSaved          = false;
            _savedCampaignItemBlast       = null;
            _isCampaignItemBlastSaved     = false;
            _isCampaignSuppressionDeleted = false;
            _isCampaignSuppressionSaved   = false;
            _savedCampaignSuppresseion    = new List <CampaignItemSuppression>();
            _isBlastCreated = false;

            var viewState = Get <StateBag>(_privateTestObject, ViewStateProperty);

            viewState.Add(KeyMyNodeID, "1");

            ShimBlastScheduler.AllInstances.SetupScheduleString = (_, __) => new BlastSetupInfo
            {
                BlastScheduleID = 1,
                SendNowIsAmount = true,
                SendNowAmount   = 1,
                SendTime        = DateTime.UtcNow,
            };

            ShimCustomer.HasProductFeatureInt32EnumsServicesEnumsServiceFeatures = (_, __, ___) => true;

            ShimCampaignItem.SaveCampaignItemUser = (ci, user) =>
            {
                _savedCampaignItem   = ci;
                _isCampaignItemSaved = true;
                return(_savedCampaignItem.CampaignItemID);
            };
            ShimCampaignItemBlastRefBlast.DeleteInt32UserBoolean = (crefId, user, b) =>
            {
                _deletedBlastRefId.Add(crefId);
                _isBlastLitRefDeleted = true;
            };
            ShimCampaignItemBlast.SaveInt32ListOfCampaignItemBlastUser = (cid, cbList, user) =>
            {
                _savedCampaignItemBlast   = cbList[0];
                _isCampaignItemBlastSaved = true;
            };
            ShimCampaignItemSuppression.DeleteInt32UserBoolean = (csid, user, b) =>
            {
                _deletedSuppressionCamapaignId = csid;
                _isCampaignSuppressionDeleted  = true;
            };
            ShimCampaignItemSuppression.SaveCampaignItemSuppressionUser = (csuppression, user) =>
            {
                _savedCampaignSuppresseion.Add(csuppression);
                _isCampaignSuppressionSaved = true;
                return(csuppression.CampaignItemID.Value);
            };
            ShimBlast.CreateBlastsFromCampaignItemInt32UserBoolean = (cid, user, b) =>
            {
                _isBlastCreated = true;
            };
        }
 private void InitilizeTestObject()
 {
     var wizardPreview = new WizardPreview_AB();
     wizardPreview.Page = new Page();
     _testObject = new PrivateObject(wizardPreview);
     _campaignItemObject = new CampaignItem();
     _dummySocialMedia = new CampaignItemSocialMedia();
 }
示例#16
0
        /// <summary>
        /// Create a new campaign item object and persist it into the database.
        /// </summary>
        /// <param name="campaignItem">The campaign item object</param>
        public CampaignItem AddCampaignItem(CampaignItem campaignItem)
        {
            // Persist the object into the database
            campaignItem.Save();

            // Return the new object with the new identifier (AUTO)
            return(campaignItem);
        }
        private static void CreateAward(CampaignItem campaignItem)
        {
            var percentOffOrderTotalAward = new PercentOffOrderTotalAward();

            percentOffOrderTotalAward.PercentOff   = 10m;
            percentOffOrderTotalAward.CampaignItem = campaignItem;
            percentOffOrderTotalAward.Name         = "10% off";
            percentOffOrderTotalAward.Save();
        }
        public void GvCampaigns_RowCommand_Delete_PreviouslyDeleted_ECNException()
        {
            //Arrange
            InitilizeTestObjects();

            var eventArgs = new GridViewCommandEventArgs(null, new CommandEventArgs("deletecampaign", "1"));

            var errorMessage = "";

            ShimManageCampaigns.AllInstances.LoadGrid = (p1) =>
            {
                throw new ECNException(new List <ECNError> {
                    new ECNError(Enums.Entity.Customer, Enums.Method.Save, "Test Exception")
                });
            };

            ShimManageCampaigns.AllInstances.setECNErrorECNException = (p1, p2) =>
            {
                errorMessage = p2.ErrorList[0].ErrorMessage;
            };

            ShimCampaign.DeleteInt32User = (p1, p2) => { };

            ShimUser.IsChannelAdministratorUser = (p1) =>
            {
                return(true);
            };

            ShimCampaignItem.GetByCampaignIDInt32UserBoolean = (p1, p2, p3) =>
            {
                var listCI = new List <CampaignItem>();
                var item   = new CampaignItem
                {
                    CampaignID     = p1,
                    IsDeleted      = true,
                    CampaignItemID = p1
                };

                listCI.Add(item);

                return(listCI);
            };

            ShimCampaignItemBlast.GetByCampaignItemIDInt32UserBoolean = (p1, p2, p3) =>
            {
                var listCIB = new List <CampaignItemBlast>();

                return(listCIB);
            };

            // Act
            privateObject.Invoke("gvCampaigns_RowCommand", new object[] { null, eventArgs });

            //Assert
            errorMessage.ShouldBe("Test Exception");
        }
        public void GvCampaigns_RowCommand_Delete_CannotDeleteException()
        {
            //Arrange
            InitilizeTestObjects();

            var eventArgs    = new GridViewCommandEventArgs(null, new CommandEventArgs("deletecampaign", "1"));
            var errorMessage = "";

            ShimUser.IsChannelAdministratorUser = (p1) =>
            {
                return(true);
            };

            ShimCampaignItem.GetByCampaignIDInt32UserBoolean = (p1, p2, p3) =>
            {
                var listCI = new List <CampaignItem>();
                var item   = new CampaignItem
                {
                    CampaignID     = p1,
                    IsDeleted      = false,
                    CampaignItemID = p1
                };

                listCI.Add(item);

                return(listCI);
            };

            ShimCampaignItemBlast.GetByCampaignItemIDInt32UserBoolean = (p1, p2, p3) =>
            {
                var listCIB   = new List <CampaignItemBlast>();
                var blastItem = new CampaignItemBlast
                {
                    CampaignItemID = p1,
                    BlastID        = p1
                };

                var blast = new BlastAB();
                blastItem.Blast = blast;

                listCIB.Add(blastItem);

                return(listCIB);
            };

            ShimManageCampaigns.AllInstances.throwECNExceptionString = (p1, p2) =>
            {
                errorMessage = p2;
            };

            // Act
            privateObject.Invoke("gvCampaigns_RowCommand", new object[] { null, eventArgs });

            //Assert
            errorMessage.ShouldBe("Cannot delete Campaign because it contains Campaign Items");
        }
示例#20
0
        /// <summary>
        /// Get the connector based on entity Item and campaign configuration.
        /// </summary>
        /// <param name="campaignItem">The campaign item.</param>
        /// <param name="connectionOpportunity">The connection opportunity.</param>
        /// <param name="eligibleConnectors">The eligible connectors.</param>
        /// <param name="entityItemPersonAlias">The entity set item person alias.</param>
        /// <param name="rockContext">The rock context.</param>
        /// <returns></returns>
        private int?GetConnector(CampaignItem campaignItem, ConnectionOpportunity connectionOpportunity, List <ConnectionConnector> eligibleConnectors, PersonAlias entityItemPersonAlias, RockContext rockContext)
        {
            int?connectorPersonId        = null;
            var dayofWeek                = RockDateTime.Now.DayOfWeek;
            var connectionRequestService = new ConnectionRequestService(rockContext);

            var defaultCampus = entityItemPersonAlias.Person.GetCampus();

            if (campaignItem.PreferPreviousConnector)
            {
                var personIds = eligibleConnectors
                                .Where(a => a.Limit - a.Current > 0 &&
                                       (!a.DaysOfWeek.Any() || a.DaysOfWeek.Contains(dayofWeek)) &&
                                       (!a.CampusId.HasValue || (a.CampusId.HasValue && defaultCampus != null && defaultCampus.Id == a.CampusId.Value)))
                                .Select(a => a.PersonId)
                                .ToList();

                if (personIds.Any())
                {
                    var person = connectionRequestService
                                 .Queryable()
                                 .Where(a => a.ConnectionOpportunityId == connectionOpportunity.Id &&
                                        a.PersonAlias.PersonId == entityItemPersonAlias.PersonId &&
                                        a.ConnectionState == ConnectionState.Connected &&
                                        a.ConnectorPersonAliasId.HasValue &&
                                        personIds.Contains(a.ConnectorPersonAlias.PersonId) &&
                                        a.ModifiedDateTime.HasValue)
                                 .OrderByDescending(a => a.ModifiedDateTime)
                                 .Select(a => a.ConnectorPersonAlias.Person)
                                 .FirstOrDefault();

                    if (person != null)
                    {
                        connectorPersonId = person.Id;
                    }
                }
            }

            if (!connectorPersonId.HasValue)
            {
                var eligibleConnector = eligibleConnectors
                                        .Where(a => a.Limit - a.Current > 0 &&
                                               (!a.DaysOfWeek.Any() || a.DaysOfWeek.Contains(dayofWeek)) &&
                                               (!a.CampusId.HasValue || (a.CampusId.HasValue && defaultCampus != null && defaultCampus.Id == a.CampusId.Value)))
                                        .OrderBy(a => a.Current)     // order from least assigned to most assigned
                                        .ThenBy(x => Guid.NewGuid()) // and then randomize
                                        .FirstOrDefault();

                if (eligibleConnector != null)
                {
                    connectorPersonId = eligibleConnector.PersonId;
                }
            }

            return(connectorPersonId);
        }
示例#21
0
        public void ProductIsCorrect([Frozen] Product expectedProduct, CampaignItem sut)
        {
            // Fixture setup
            // Exercise system
            Product result = sut.Product;

            // Verify outcome
            Assert.Equal(expectedProduct, result);
            // Teardown
        }
示例#22
0
        public void IsFeaturedIsCorrect([Frozen] bool expectedResult, CampaignItem sut)
        {
            // Fixture setup
            // Exercise system
            bool result = sut.IsFeatured;

            // Verify outcome
            Assert.Equal(expectedResult, result);
            // Teardown
        }
示例#23
0
        public void DiscountPriceIsCorrect([Frozen] Money expectedPrice, CampaignItem sut)
        {
            // Fixture setup
            // Exercise system
            Money result = sut.DiscountPrice;

            // Verify outcome
            Assert.Equal(expectedPrice, result);
            // Teardown
        }
示例#24
0
        public async Task <BaseResult> CreateOrUpdate(CampaignItem campaignItem)
        {
            var campaign = campaignItem.ToCampaign();
            var rs       = new BaseResult()
            {
                Result = Result.Success
            };

            return(campaign.Id <= 0 ? await Create(campaign) : await Update(campaign));
        }
示例#25
0
 private void CreateAssociationToNewCampaign(IOrganizationService service, List <List> listAssociate, Campaign campaign)
 {
     foreach (List list in listAssociate)
     {
         CampaignItem campaignItem = new CampaignItem();
         campaignItem.EntityType = list.LogicalName;
         campaignItem.EntityId   = list.Id;
         campaignItem.CampaignId = campaign.ToEntityReference();
         service.Create(campaignItem);
     }
 }
示例#26
0
        /// <summary>
        /// Handles the Click event of the btnSave control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void btnSave_Click(object sender, EventArgs e)
        {
            var campaignConnectionGuid = hfCampaignConnectionGuid.Value.AsGuid();

            CampaignItem campaignConnection = null;

            if (campaignConnectionGuid == Guid.Empty)
            {
                campaignConnection = new CampaignItem()
                {
                    Guid = Guid.NewGuid()
                };
            }
            else
            {
                campaignConnection = CampaignConnectionHelper.GetCampaignConfiguration(campaignConnectionGuid);
            }

            campaignConnection.Name                        = tbName.Text;
            campaignConnection.IsActive                    = cbIsActive.Checked;
            campaignConnection.ConnectionTypeGuid          = ddlConnectionType.SelectedValue.AsGuid();
            campaignConnection.RequestCommentsLavaTemplate = ceCommentLavaTemplate.Text;
            campaignConnection.OpportunityGuid             = ddlConnectionOpportunity.SelectedValue.AsGuid();
            var dataViewGuid = new DataViewService(new RockContext()).GetGuid(dvRequestor.SelectedValue.AsInteger());

            if (dataViewGuid.HasValue)
            {
                campaignConnection.DataViewGuid = dataViewGuid.Value;
            }
            campaignConnection.FamilyLimits = rblFamilyLimits.SelectedValueAsEnum <FamilyLimits>(FamilyLimits.Everyone);
            campaignConnection.CreateConnectionRequestOption = rblCreateConnectionRequests.SelectedValueAsEnum <CreateConnectionRequestOptions>(CreateConnectionRequestOptions.AsNeeded);
            if (gpOptOutGroup.GroupId.HasValue)
            {
                campaignConnection.OptOutGroupGuid = new GroupService(new RockContext()).GetGuid(gpOptOutGroup.GroupId.Value);
            }
            campaignConnection.DailyLimitAssigned      = nbDailyLimit.Text.AsIntegerOrNull();
            campaignConnection.DaysBetweenConnection   = nbNumberOfDays.Text.AsInteger();
            campaignConnection.PreferPreviousConnector = cbPreferPreviousConnector.Checked;

            // Save what we have so far, and it will be saved again once the EntitySetId is updated when the thread completes.
            CampaignConnectionHelper.AddOrUpdateCampaignConfiguration(campaignConnection.Guid, campaignConnection);

            // Only update the EntitySet if the campaign is active
            if (campaignConnection.IsActive)
            {
                // Run this thread in the background since it takes several seconds to calculate.
                Task.Run(() => {
                    campaignConnection.EntitySetId = CampaignConnectionHelper.GetEntitySet(campaignConnection);
                    CampaignConnectionHelper.AddOrUpdateCampaignConfiguration(campaignConnection.Guid, campaignConnection);
                });
            }

            NavigateToParentPage();
        }
        public void BtnDeleteConfirm_Click_DeletedItemsExist_DeleteSuccess()
        {
            //Arrange
            InitilizeTestObjects();

            var loadGrid = false;

            var btnDeleteConfirm = privateObject.GetFieldOrProperty("btnDeleteConfirm") as Button;

            btnDeleteConfirm.CommandArgument = "1";

            ShimUser.IsChannelAdministratorUser = (p1) =>
            {
                return(true);
            };

            ShimCampaignItem.GetByCampaignIDInt32UserBoolean = (p1, p2, p3) =>
            {
                var listCI = new List <CampaignItem>();
                var item   = new CampaignItem
                {
                    CampaignID     = p1,
                    IsDeleted      = true,
                    CampaignItemID = p1
                };

                listCI.Add(item);

                return(listCI);
            };

            ShimCampaignItemBlast.GetByCampaignItemIDInt32UserBoolean = (p1, p2, p3) =>
            {
                return(new List <CampaignItemBlast>());
            };

            ShimCampaignItemTestBlast.GetByCampaignItemIDInt32UserBoolean = (p1, p2, p3) =>
            {
                return(new List <CampaignItemTestBlast>());;
            };

            ShimCampaign.DeleteInt32User = (p1, p2) => { };

            ShimManageCampaigns.AllInstances.LoadGrid = (p1) =>
            {
                loadGrid = true;
            };

            // Act
            privateObject.Invoke("btnDeleteConfirm_Click", new object[] { null, EventArgs.Empty });

            //Assert
            loadGrid.ShouldBeTrue();
        }
        protected virtual void Page_Load(object sender, EventArgs e)
        {
            if (Tracker.CurrentVisit.IsCampaignIdNull())
            {
                this.Visible = false;
                return;
            }

            var campaignId = Tracker.CurrentVisit.CampaignId;

            Model = (CampaignItem)Tracker.DefinitionItems.Campaigns[campaignId].InnerItem;
        }
        public void BtnMoveCampaign_Click_SystemException()
        {
            //Arrange
            InitilizeTestObjects();

            var errorMessage = "";

            var btnMoveCampaign = privateObject.GetFieldOrProperty("btnMoveCampaign") as Button;

            btnMoveCampaign.CommandArgument = "1";

            var ddlCampaigns = privateObject.GetFieldOrProperty("ddlCampaigns") as DropDownList;

            ddlCampaigns.Items.Add("1");
            ddlCampaigns.SelectedValue = "1";

            ShimCampaignItem.GetByCampaignIDInt32UserBoolean = (p1, p2, p3) =>
            {
                var listCI = new List <CampaignItem>();
                var item   = new CampaignItem
                {
                    CampaignID     = p1,
                    IsDeleted      = true,
                    CampaignItemID = p1
                };

                listCI.Add(item);

                return(listCI);
            };

            ShimCampaignItem.MoveCampaignItemUser = (p1, p2) =>
            {
                throw new Exception("Test Exception");
            };

            ShimManageCampaigns.AllInstances.throwECNExceptionString = (p1, p2) =>
            {
                errorMessage = p2;
            };

            EntityFake.ShimApplicationLog.LogCriticalErrorExceptionStringInt32StringInt32Int32 = (ex, w, e, desc, t, y) =>
            {
                return(1);
            };

            // Act
            privateObject.Invoke("btnMoveCampaign_Click", new object[] { null, EventArgs.Empty });

            //Assert
            errorMessage.ShouldBe("An error has occurred");
        }
示例#30
0
        private void AddListMembersAsync(IPluginExecutionContext context, IOrganizationService service, ITracingService tracingService)
        {
            CampaignItem campaignItem = (context.InputParameters["Target"] as Entity).ToEntity <CampaignItem>();

            CrmEarlyBound.Campaign campaign = service.Retrieve(campaignItem.CampaignId.LogicalName, campaignItem.CampaignId.Id, new ColumnSet("name", "find_mailchimp_integration_count", "find_createcampaign")).ToEntity <CrmEarlyBound.Campaign>();

            if (campaignItem.EntityType.Equals("list") && campaign.find_createcampaign == 0)
            {
                campaign.find_mailchimp_integration_count++;
                campaign.find_createcampaign++;
                service.Update(campaign);
            }
        }
示例#31
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //THIS IS WHERE WE HIDE/SHOW COOKIE MESSAGE -N.B. User Session initialised and set in Header

            //Interorgate the request 'Do Not Track' settings.
            HttpContext objContext = HttpContext.Current;
            bool headerDoNotTrack = false;

            if (!string.IsNullOrEmpty(objContext.Request.Headers["DNT"]))
            {
                headerDoNotTrack = objContext.Request.Headers["DNT"] == "1" ? true : false;
            }

            User objUser = new User();

            //READ/SET COOKIE OPTIONS
            if (Session["sess_User"] == null)
            {
                newSession = true;
            }
            else
            {
                objUser = (User)Session["sess_User"];
            }

            //If this has not been set -we need to show the cookie message
            if (!headerDoNotTrack)
            {
                //Check if User Session object has been set -i.e. not first page load
                if (!newSession)
                {
                    //Have the cookie preferences been set?
                    if (objUser.Preferences == null)
                    {
                        //Show Cookie Preferences ribbon
                        CookieRibbon cookieDeclaration = Page.LoadControl("~/layouts/virginactive/CookieRibbon.ascx") as CookieRibbon;
                        RibbonPh.Controls.Add(cookieDeclaration);

                        string classNames = BodyTag.Attributes["class"] != null ? BodyTag.Attributes["class"] : "";
                        BodyTag.Attributes.Add("class", classNames.Length > 0 ? classNames + " cookie-show" : "cookie-show");
                    }
                }
                else
                {
                    //Seesion info not set (as it's a new session) -Check the 'Cookie Preferences Cookie' exists
                    if (string.IsNullOrEmpty(CookieHelper.GetOptInCookieValue(CookieKeyNames.MarketingCookies)))
                    {
                        //User has NOT stored settings
                        //Show Cookie Preferences ribbon
                        CookieRibbon cookieDeclaration = Page.LoadControl("~/layouts/virginactive/CookieRibbon.ascx") as CookieRibbon;
                        RibbonPh.Controls.Add(cookieDeclaration);

                        string classNames = BodyTag.Attributes["class"] != null ? BodyTag.Attributes["class"] : "";
                        BodyTag.Attributes.Add("class", classNames.Length > 0 ? classNames + " cookie-show" : "cookie-show");
                    }
                }
            }

            //READ/SET COOKIE OPTIONS
            if (newSession)
            {
                //New Session

                //Check if cookie preferences session cookie exists
                if (!string.IsNullOrEmpty(CookieHelper.GetOptInCookieValue(CookieKeyNames.MarketingCookies)))
                {
                    Preferences preferences = new Preferences();

                    preferences.MarketingCookies = CookieHelper.GetOptInCookieValue(CookieKeyNames.MarketingCookies) == "Y" ? true : false;
                    preferences.MetricsCookies = CookieHelper.GetOptInCookieValue(CookieKeyNames.MetricsCookies) == "Y" ? true : false;
                    preferences.PersonalisedCookies = CookieHelper.GetOptInCookieValue(CookieKeyNames.PersonalisedCookies) == "Y" ? true : false;
                    preferences.SocialCookies = CookieHelper.GetOptInCookieValue(CookieKeyNames.SocialCookies) == "Y" ? true : false;

                    //Store to session
                    objUser.Preferences = preferences;
                }
                else
                {
                    if (headerDoNotTrack)
                    {
                        //Set Preferences in User Session -default to N
                        Preferences preferences = new Preferences();

                        preferences.MarketingCookies = false;
                        preferences.MetricsCookies = false;
                        preferences.PersonalisedCookies = false;
                        preferences.SocialCookies = false;

                        objUser.Preferences = preferences;

                        //Set Cookie Preferences Cookie
                        CookieHelper.AddUpdateOptInCookie(CookieKeyNames.MarketingCookies, "N");
                        CookieHelper.AddUpdateOptInCookie(CookieKeyNames.MetricsCookies, "N");
                        CookieHelper.AddUpdateOptInCookie(CookieKeyNames.PersonalisedCookies, "N");
                        CookieHelper.AddUpdateOptInCookie(CookieKeyNames.SocialCookies, "N");

                        //Delete Existing Personalisation Cookie
                        CookieHelper.DeleteCookie();
                    }
                }
            }

            //DEFAULT PREFERENCES IF NOT SET
            if (objUser.Preferences == null)
            {
                //Set preferences in User Session -default to Y
                Preferences preferences = new Preferences();

                preferences.MarketingCookies = true;
                preferences.MetricsCookies = true;
                preferences.PersonalisedCookies = true;
                preferences.SocialCookies = true;

                //Store to session
                objUser.Preferences = preferences;

                //Set Cookie Preferences Cookie -default to permission allowed
                CookieHelper.AddUpdateOptInCookie(CookieKeyNames.MarketingCookies, "Y");
                CookieHelper.AddUpdateOptInCookie(CookieKeyNames.MetricsCookies, "Y");
                CookieHelper.AddUpdateOptInCookie(CookieKeyNames.PersonalisedCookies, "Y");
                CookieHelper.AddUpdateOptInCookie(CookieKeyNames.SocialCookies, "Y");
            }

            //Save session
            Session["sess_User"] = objUser;

            CampaignItem cmp = new CampaignItem(Sitecore.Context.Item);

            if (!String.IsNullOrEmpty(cmp.CampaignBase.Termsandconditionslink.Raw))
            {
                privacy = new PageSummaryItem(cmp.CampaignBase.Termsandconditionslink.Item);
            }

            Item currentItem = Sitecore.Context.Item;
            PageSummaryItem item = new PageSummaryItem(currentItem);
            string canonicalTag = item.GetCanonicalTag();

            string metaDescription = item.GetMetaDescription();

            //Add page title //todo: add club name
            string title = Translate.Text("Virgin Active");
            string browserPageTitle = item.GetPageTitle();

            string section = Sitecore.Web.WebUtil.GetQueryString("section");

            if (!String.IsNullOrEmpty(section))
            {
                PageSummaryItem listing = null;
                if (currentItem.TemplateID.ToString() == ClassesListingItem.TemplateId)
                {
                    //Get classes listing browser page title
                    listing = Sitecore.Context.Database.GetItem(ItemPaths.SharedClasses + "/" + section);
                }
                else if (currentItem.TemplateID.ToString() == FacilitiesListingItem.TemplateId)
                {
                    //Get facility listing browser page title
                    listing = Sitecore.Context.Database.GetItem(ItemPaths.SharedFacilities + "/" + section);
                }

                if (listing != null)
                {
                    browserPageTitle = listing.GetPageTitle();
                    canonicalTag = String.IsNullOrEmpty(Request.QueryString["section"]) ? listing.GetCanonicalTag() : listing.GetCanonicalTag(Request.QueryString["section"]);
                    metaDescription = listing.GetMetaDescription();
                }
            }

            if (!String.IsNullOrEmpty(browserPageTitle))
            {
                title = String.Format("{0} | {1}", browserPageTitle, title);
            }

            Page.Title = title;
            //Add canonical
            Page.Header.Controls.Add(new Literal() { Text = canonicalTag });
            //Add meta description
            Page.Header.Controls.Add(new Literal() { Text = metaDescription });

            //Load OpenTag container -depending on cookie preferences

            if (!newSession)
            {
                //Add dynamic content to header
                HtmlHead head = (HtmlHead)Page.Header;

                if (objUser.Preferences != null)
                {
                    if (objUser.Preferences.MarketingCookies && objUser.Preferences.MetricsCookies)
                    {
                        //Have permission to load in OpenTag
                        head.Controls.Add(new LiteralControl(OpenTagHelper.OpenTagVirginActiveUK));
                    }
                }

                //LOAD IN SOCIAL OPEN GRAPH -if cookie preference allows

            }

            //Get club details
            if (!Page.IsPostBack)
            {
                Item landingItem =
                    Sitecore.Context.Item.Axes.SelectSingleItem(String.Format("ancestor-or-self::*[@@tid='{0}']",
                                                                              ClubMicrositeLandingItem.TemplateId));

                if (landingItem == null)
                {
                    return;
                }

                ClubMicrositeLandingItem club = new ClubMicrositeLandingItem(landingItem);

                ClubItem linkClub = new ClubItem(club.Club.Item);
            }
        }