예제 #1
0
        public RankRequirement(QualificationResponse qualification, IRankRequirementDefinition definition)
        {
            QualificationResponse = qualification;
            RequiredValue         = qualification.Required;
            ActualValue           = qualification.Actual;
            IsOverridden          = (qualification.QualifiesOverride != null) ? Convert.ToBoolean(qualification.QualifiesOverride) : false;
            QualifiedValue        = qualification.Qualifies;

            Label = definition.Label;
            RequirementDescription  = definition.RequirementDescription;
            QualifiedDescription    = definition.QualifiedDescription;
            NotQualifiedDescription = definition.NotQualifiedDescription;
            IsBoolean  = definition.Type == RankQualificationType.Boolean;
            Expression = definition.Expression;
        }
예제 #2
0
        public RankRequirement(QualificationResponse qualification)
        {
            QualificationResponse = qualification;
            RequiredValue         = qualification.Required;
            ActualValue           = qualification.Actual;
            IsOverridden          = (qualification.QualifiesOverride != null) ? Convert.ToBoolean(qualification.QualifiesOverride) : false;
            QualifiedValue        = qualification.Qualifies;

            Label = "Label Name";
            RequirementDescription  = qualification.QualificationDescription;
            QualifiedDescription    = qualification.QualificationDescription;
            NotQualifiedDescription = qualification.QualificationDescription;
            IsBoolean = qualification.Qualifies;
            //Expression = definition.Expression;
        }
예제 #3
0
        public async Task GetAllAsyncWhenNoQualificationsReturnsEmptyCollection()
        {
            //Arrange
            var mockQualificationRepository = GetDefaultIQualificationRepositoryInstance();
            var mockUnitOfWork  = GetDefaultIUnitOfWorkInstance();
            var qualificationId = 200;

            mockQualificationRepository.Setup(r => r.FindById(qualificationId))
            .Returns(Task.FromResult <Qualification>(null));

            var service = new QualificationService(mockQualificationRepository.Object, mockUnitOfWork.Object);
            //Act
            QualificationResponse result = await service.GetByIdAsync(qualificationId);

            var message = result.Message;

            //Assert
            message.Should().Be("Qualification not found");
        }
예제 #4
0
        private static RankRequirement GetRequirement(QualificationResponse[] qualifications, IRankRequirementDefinition definition)
        {
            Regex regex = new Regex(definition.Expression);
            QualificationResponse qualification = null;

            qualification = (from q in qualifications
                             let description = q.QualificationDescription.ToUpper()
                                               let matches = regex.Matches(description)
                                                             where matches.Count > 0
                                                             select q).FirstOrDefault();

            if (qualification != null)
            {
                return(new RankRequirement(qualification, definition));
            }
            else
            {
                return(null);
            }
        }
        private QualificationResponse GetQualificationByDescription(QualificationResponse[] qualifications, string expression)
        {
            Regex regex = new Regex(expression);
            QualificationResponse qualification = null;

            qualification = (from q in qualifications
                                 let description = q.QualificationDescription.ToUpper()
                                 let matches = regex.Matches(description)
                                 where matches.Count > 0
                                 select q).FirstOrDefault();

            return qualification;
        }
        public RankQualification(QualificationResponse[] qualifications, string expression)
        {
            var response = GetQualificationByDescription(qualifications, expression);
            Expression = expression;

            if(response != null)
            {
                QualificationResponse = response;
                RequiredValue = response.Required;
                ActualValue = response.Actual;
                IsOverridden = (response.QualifiesOverride != null) ? Convert.ToBoolean(response.QualifiesOverride) : false;
                QualifiedValue = response.Qualifies;
            }
        }
        public GetRankGoalificationGoalsResponse GetRankQualificationGoals(int customerID, int rankID)
        {
            // Get the rank qualifications from the API
            var apiResponse = new GetRankQualificationsResponse();
            var qualificationResponses = new QualificationResponse[0];
            var result = new GetRankGoalificationGoalsResponse();

            try
            {
                apiResponse = ExigoApiContext.CreateWebServiceContext().GetRankQualifications(new GetRankQualificationsRequest
                {
                    CustomerID = customerID,
                    PeriodType = (int)PeriodTypes.Default,
                    RankID = rankID
                });
                qualificationResponses = apiResponse.PayeeQualificationLegs[0];
            }
            catch
            {
                qualificationResponses = new QualificationResponse[0];
            }


            result.TotalPercentComplete = qualificationResponses.GetPercentComplete();
            result.RankID = apiResponse.RankID;
            result.RankDescription = apiResponse.RankDescription;
            result.PreviousRankID = apiResponse.BackRankID;
            result.PreviousRankDescription = apiResponse.BackRankDescription;
            result.NextRankID = apiResponse.NextRankID;
            result.NextRankDescription = apiResponse.NextRankDescription;


            // Assemble the rank qualifications
            var expression          = string.Empty;
            var qualification       = new RankQualification();
            var results             = new List<RankQualification>();


            // Customer Type
            expression                                          = @"^MUST BE A VALID DISTRIBUTOR TYPE";
            qualification                                       = new RankQualification(qualificationResponses, expression);
            qualification.Label                                 = "Customer type";
            qualification.IsBoolean                             = true;
            qualification.QualifiedDescription                  = "";
            qualification.NotQualifiedDescription               = "You must be a distributor in order to qualify for the next rank.";
            results.Add(qualification);


            // Customer Status
            expression                                          = @"CUSTOMER STATUS IS ACTIVE";
            qualification                                       = new RankQualification(qualificationResponses, expression);
            qualification.Label                                 = "Active status";
            qualification.IsBoolean                             = true;                
            qualification.QualifiedDescription                  = "";
            qualification.NotQualifiedDescription               = "You must have an Active status in order to qualify for the next rank.";
            results.Add(qualification);


            // Active
            expression                                          = @"^ACTIVE$";
            qualification                                       = new RankQualification(qualificationResponses, expression);
            qualification.Label                                 = "Active";
            qualification.IsBoolean                             = true;                
            qualification.QualifiedDescription                  = "";
            qualification.NotQualifiedDescription               = "You must be Active in order to qualify for the next rank.";
            results.Add(qualification);


            // Qualified
            expression                                          = @"^MUST BE QUALIFIED$";
            qualification                                       = new RankQualification(qualificationResponses, expression);
            qualification.Label                                 = "Qualified";
            qualification.IsBoolean                             = true;                
            qualification.QualifiedDescription                  = "";
            qualification.NotQualifiedDescription               = "You must be qualified for commissions in order to advance to the next rank.";
            results.Add(qualification);


            // Enroller Tree
            expression                                          = @"^DISTRIBUTOR MUST BE IN ENROLLER TREE$";
            qualification                                       = new RankQualification(qualificationResponses, expression);
            qualification.Label                                 = "Enroller Tree";
            qualification.IsBoolean                             = true;  
            qualification.QualifiedDescription                  = "";
            qualification.NotQualifiedDescription               = "You must have a current position in the enroller tree in order to advance to the next rank.";
            results.Add(qualification);


            // Lesser Leg Volume
            expression                                          = @"^\d+ LESSER LEG VOLUME$";
            qualification                                       = new RankQualification(qualificationResponses, expression);
            qualification.Label                                 = "Lesser Leg Volume";
            qualification.IsBoolean                             = false;
            qualification.QualifiedDescription                  = "";
            qualification.NotQualifiedDescription               = string.Format("You need at least <strong>{0:N0}</strong> more volume in your lesser leg.", qualification.AmountNeededToQualify);
            results.Add(qualification);
            

            // C500 Legs
            expression                                          = @"^\d+ C500 LEGS ENROLLER TREE$";
            qualification                                       = new RankQualification(qualificationResponses, expression);
            qualification.Label                                 = "C500 Legs in Enroller Tree";
            qualification.IsBoolean                             = false;
            qualification.QualifiedDescription                  = "";
            qualification.NotQualifiedDescription               = string.Format("You need <strong>{0:N0} more C500 distributor(s) in your enroller tree</strong> to advance to the next rank.", qualification.AmountNeededToQualify);
            results.Add(qualification);


            // PV
            expression                                          = @"^\d+ PV$";
            qualification                                       = new RankQualification(qualificationResponses, expression);
            qualification.Label                                 = "PV";
            qualification.IsBoolean                             = false;
            qualification.QualifiedDescription                  = "";
            qualification.NotQualifiedDescription               = string.Format("You need <strong>{0:0} more PV</strong> to advance.", qualification.AmountNeededToQualify);
            results.Add(qualification);


            // PV 1 Period Ago
            expression                                          = @"^\d+ PV 1 PERIOD";
            qualification                                       = new RankQualification(qualificationResponses, expression);
            qualification.Label                                 = "PV Last Period";
            qualification.IsBoolean                             = false;
            qualification.QualifiedDescription                  = "";
            qualification.NotQualifiedDescription               = string.Format("Your last period didn't have enough PV to advance you.", qualification.AmountNeededToQualify);
            results.Add(qualification);


            // PV 2 Period Ago
            expression                                          = @"^\d+ PV 2 PERIOD";
            qualification                                       = new RankQualification(qualificationResponses, expression);
            qualification.Label                                 = "PV 2 Periods Ago";
            qualification.IsBoolean                             = false;
            qualification.QualifiedDescription                  = "";
            qualification.NotQualifiedDescription               = string.Format("Your PV from two periods ago didn't have enough PV to advance you.", qualification.AmountNeededToQualify);
            results.Add(qualification);


            // PV 3 Period Ago
            expression                                          = @"^\d+ PV 3 PERIOD";
            qualification                                       = new RankQualification(qualificationResponses, expression);
            qualification.Label                                 = "PV 3 Periods Ago";
            qualification.IsBoolean                             = false;
            qualification.QualifiedDescription                  = "";
            qualification.NotQualifiedDescription               = string.Format("Your PV from three periods ago didn't have enough PV to advance you.", qualification.AmountNeededToQualify);
            results.Add(qualification);


            // Capped Enrollment Group PV at 50% Per Leg
            expression                                          = @"^\d+ CAPPED ENROLLMENT GROUP PV AT 50% PER LEG$";
            qualification                                       = new RankQualification(qualificationResponses, expression);
            qualification.Label                                 = "Capped Enrollment GPV at 50% per leg";
            qualification.IsBoolean                             = false;
            qualification.QualifiedDescription                  = "";
            qualification.NotQualifiedDescription               = string.Format("Your current capped enrollment GPV at 50% per leg is insufficient. You need <strong>{0:N0} more</strong> to advance.", qualification.AmountNeededToQualify);
            results.Add(qualification);


            // Capped Enrollment Group PV at 50% Per Leg 1 Period Ago
            expression                                          = @"^\d+ CAPPED ENROLLMENT GROUP PV AT 50% PER LEG 1 PERIOD";
            qualification                                       = new RankQualification(qualificationResponses, expression);
            qualification.Label                                 = "Capped Enrollment GPV at 50% per leg last period";
            qualification.IsBoolean                             = false;
            qualification.QualifiedDescription                  = "";
            qualification.NotQualifiedDescription               = string.Format("Your current capped enrollment GPV at 50% per leg last period was insufficient. You needed <strong>{0:N0} more</strong> to advance.", qualification.AmountNeededToQualify);
            results.Add(qualification);


            // Capped Enrollment Group PV at 50% Per Leg 2 Periods Ago
            expression                                          = @"^\d+ CAPPED ENROLLMENT GROUP PV AT 50% PER LEG 2 PERIOD";
            qualification                                       = new RankQualification(qualificationResponses, expression);
            qualification.Label                                 = "Capped Enrollment GPV at 50% per leg two periods ago";
            qualification.IsBoolean                             = false;
            qualification.QualifiedDescription                  = "";
            qualification.NotQualifiedDescription               = string.Format("Your current capped enrollment GPV at 50% per leg two periods ago was insufficient. You needed <strong>{0:N0} more</strong> to advance.", qualification.AmountNeededToQualify);
            results.Add(qualification);


            // Capped Enrollment Group PV at 50% Per Leg 3 Periods Ago
            expression                                          = @"^\d+ CAPPED ENROLLMENT GROUP PV AT 50% PER LEG 3 PERIOD";
            qualification                                       = new RankQualification(qualificationResponses, expression);
            qualification.Label                                 = "Capped Enrollment GPV at 50% per leg three periods ago";
            qualification.IsBoolean                             = false;
            qualification.QualifiedDescription                  = "";
            qualification.NotQualifiedDescription               = string.Format("Your current capped enrollment GPV at 50% per leg three periods ago was insufficient. You needed <strong>{0:N0} more</strong> to advance.", qualification.AmountNeededToQualify);
            results.Add(qualification);

           


            // Clean up nulls
            results.RemoveAll(c => string.IsNullOrEmpty(c.RequiredValue));
            result.RankQualifications = results;


            return result;
        }