Ejemplo n.º 1
0
        public bool ShouldView(string engagementType, string referenceId, string masterCustomerId)
        {
            var shouldView         = false;
            var engagementTypeEnum = Enumerations.GetEngagementTypeByCode(engagementType);

            using (var ctx = new DataClassesDataContext())
            {
                var viewedToday             = ctx.Engagement_NetPromoterScores.Any(r => r.MasterCustomerId == masterCustomerId && r.NPSSendDate >= DateTime.Today);
                var viewedMoreThan2In60Days = ctx.Engagement_NetPromoterScores.Count(r => r.MasterCustomerId == masterCustomerId && r.NPSSendDate >= DateTime.Today.AddDays(-60)) > 2;
                var respondedLast150Days    = ctx.Engagement_NetPromoterScores.Any(r => r.MasterCustomerId == masterCustomerId && r.NPSResultDate >= DateTime.Today.AddDays(-150) && r.NPSScore.HasValue);

                shouldView = !(viewedToday || viewedMoreThan2In60Days || respondedLast150Days);
                switch (engagementTypeEnum)
                {
                case Models.NpsEngagementType.CheckoutExperience:
                    // Already populated NPS for this order.
                    var ratedPurchaseAlready = ctx.Engagement_NetPromoterScores.Any(r => r.MasterCustomerId == masterCustomerId && r.ReferenceId == referenceId && r.EngagementType == engagementType && r.NPSScore.HasValue);
                    shouldView = shouldView && !ratedPurchaseAlready;
                    break;
                }
            }

            return(shouldView);
        }