public HealthPlanCallQueueCriteriaService(IHealthPlanCallQueueCriteriaRepository healthPlanCallQueueCriteriaRepository, ISettings settings,
                                                  ICorporateAccountRepository corporateAccountRepository, ICallQueueRepository callQueueRepository, IOrganizationRoleUserRepository organizationRoleUserRepository, ICallQueueListModelFactory callQueueListModelFactory,
                                                  IHealthPlanCriteriaAssignmentRepository healthPlanCriteriaAssignmentRepository, IHealthPlanCallQueueCriteriaEditModelFactory healthPlanCallQueueCriteriaEditModelFactory,
                                                  ICampaignRepository campaignRepository, IUniqueItemRepository <File> fileRepository, ISessionContext sessionContext, IMediaRepository mediaRepository,
                                                  IHealthPlanCriteriaAssignmentUploadRepository healthPlanCriteriaAssignmentUploadRepository, IHealthPlanCriteriaTeamAssignmentRepository healthPlanCriteriaTeamAssignmentRepository,
                                                  ICallCenterTeamRepository callCenterTeamRepository, ICustomerCallQueueCallAttemptService customerCallQueueCallAttemptService, IOrganizationRepository organizationRepository, ILanguageRepository languageRepository, IHealthPlanCriteriaDirectMailRepository healthPlanCriteriaDirectMailRepository, IHealthPlanCriteriaDirectMailService healthPlanCriteriaDirectMailService)
        {
            _healthPlanCallQueueCriteriaRepository = healthPlanCallQueueCriteriaRepository;
            _noPastAppointmentInDays = settings.NoPastAppointmentInDays;

            _corporateAccountRepository                  = corporateAccountRepository;
            _callQueueRepository                         = callQueueRepository;
            _organizationRoleUserRepository              = organizationRoleUserRepository;
            _callQueueListModelFactory                   = callQueueListModelFactory;
            _healthPlanCriteriaAssignmentRepository      = healthPlanCriteriaAssignmentRepository;
            _healthPlanCallQueueCriteriaEditModelFactory = healthPlanCallQueueCriteriaEditModelFactory;
            _campaignRepository = campaignRepository;
            _fileRepository     = fileRepository;
            _sessionContext     = sessionContext;
            _mediaRepository    = mediaRepository;
            _healthPlanCriteriaAssignmentUploadRepository = healthPlanCriteriaAssignmentUploadRepository;
            _healthPlanCriteriaTeamAssignmentRepository   = healthPlanCriteriaTeamAssignmentRepository;
            _callCenterTeamRepository            = callCenterTeamRepository;
            _customerCallQueueCallAttemptService = customerCallQueueCallAttemptService;
            _organizationRepository = organizationRepository;
            _languageRepository     = languageRepository;
            _healthPlanCriteriaDirectMailRepository = healthPlanCriteriaDirectMailRepository;
            _healthPlanCriteriaDirectMailService    = healthPlanCriteriaDirectMailService;
        }
Ejemplo n.º 2
0
 //ctor
 public CustomerCallQueueCallAttemptService(ICustomerCallQueueCallAttemptRepository customerCallQueueCallAttemptRepository,
                                            ICorporateAccountRepository corporateAccountRepository, ICallQueueRepository callQueueRepository,
                                            ICallQueueCriteriaRepository callQueueCriteriaRepository, ICampaignRepository campaignRepository,
                                            IHealthPlanCriteriaAssignmentRepository healthPlanCriteriaAssignmentRepository, ICallQueueCustomerRepository callQueueCustomerRepository,
                                            IHealthPlanOutboundCallQueueService healthPlanOutboundCallQueueService, IHealthPlanCriteriaTeamAssignmentRepository healthPlanCriteriaTeamAssignmentRepository, ISettings settings, IHealthPlanCriteriaDirectMailService healthPlanCriteriaDirectMailService)
 {
     _customerCallQueueCallAttemptRepository = customerCallQueueCallAttemptRepository;
     _corporateAccountRepository             = corporateAccountRepository;
     _callQueueCriteriaRepository            = callQueueCriteriaRepository;
     _campaignRepository = campaignRepository;
     _healthPlanCriteriaAssignmentRepository = healthPlanCriteriaAssignmentRepository;
     _callQueueCustomerRepository            = callQueueCustomerRepository;
     _healthPlanOutboundCallQueueService     = healthPlanOutboundCallQueueService;
     _callQueueRepository = callQueueRepository;
     _healthPlanCriteriaTeamAssignmentRepository = healthPlanCriteriaTeamAssignmentRepository;
     _settings = settings;
     _healthPlanCriteriaDirectMailService = healthPlanCriteriaDirectMailService;
 }
        public HealthPlanCallQueueCriteriaEditModelValidator(IZipCodeRepository zipCodeRepository, IHealthPlanCriteriaDirectMailService healthPlanCriteriaDirectMailService)
        {
            _zipCodeRepository = zipCodeRepository;

            RuleFor(x => x.HealthPlanId).GreaterThan(0).WithMessage("required");

            RuleFor(x => x.CallQueue).Must((x, y) => isValidCallQueue(y)).WithMessage("required").When(x => x.HealthPlanId > 0);

            //validation moved in controller
            //RuleFor(x => x.Assignments).NotNull().WithMessage("required").When(x => x.HealthPlanId > 0 && isValidCallQueue(x.CallQueue));

            RuleFor(x => x.Radius).GreaterThan(-1).WithMessage("required").When(x => x.CallQueue == HealthPlanCallQueueCategory.ZipRadius);

            RuleFor(x => x.Zipcode).NotNull().WithMessage("required").NotEmpty().WithMessage("required").Must((x, y) => IsValidZipCode(y)).WithMessage("invalid zip code").When(x => x.CallQueue == HealthPlanCallQueueCategory.ZipRadius);

            RuleFor(x => x.NoOfDaysOfEvents).NotNull().WithMessage("required").GreaterThan(0).WithMessage("required").When(x => x.CallQueue == HealthPlanCallQueueCategory.FillEventsHealthPlan);

            RuleFor(x => x.Percentage).GreaterThanOrEqualTo(0).WithMessage("required").Must((x, y) => y > 0 && y < 100).WithMessage("must be between 0 and 100").When(x => x.CallQueue == HealthPlanCallQueueCategory.FillEventsHealthPlan);;

            RuleFor(x => x.RoundOfCalls).GreaterThanOrEqualTo(0).WithMessage("required").When(x => x.CallQueue == HealthPlanCallQueueCategory.CallRound);

            RuleFor(x => x.NoOfDays).GreaterThanOrEqualTo(0).WithMessage("required").When(x => x.CallQueue == HealthPlanCallQueueCategory.CallRound);

            RuleFor(x => x.StartDate).NotNull().WithMessage("required").NotEmpty().WithMessage("required").When(x => x.CallQueue == HealthPlanCallQueueCategory.NoShows);

            RuleFor(x => x.EndDate).NotNull().WithMessage("required").NotEmpty().WithMessage("required").When(x => x.CallQueue == HealthPlanCallQueueCategory.NoShows);

            RuleFor(x => x.EndDate).Must((model, endDate) => endDate.HasValue && model.StartDate.HasValue && endDate.Value.Date >= model.StartDate.Value).WithMessage("end date must be greater than start date.").When(x => x.EndDate.HasValue);

            RuleFor(x => x.CampaignDirectMailDates).NotNull().WithMessage("required").NotEmpty().WithMessage("required").When(x => x.CallQueue == HealthPlanCallQueueCategory.MailRound);

            RuleForEach(x => x.CampaignDirectMailDates).Must((x, y) => healthPlanCriteriaDirectMailService.ValidateByCampaign(y, x.Id)).WithMessage("Dates overlapping with another criteria for same campaign.").When(x => x.CallQueue == HealthPlanCallQueueCategory.MailRound);

            RuleFor(x => x.CriteriaName).NotNull().WithMessage("required").NotEmpty().WithMessage("required").When(x => x.CallQueue == HealthPlanCallQueueCategory.FillEventsHealthPlan);

            RuleFor(x => x.LanguageId).NotNull().WithMessage("required").NotEmpty().WithMessage("required").GreaterThan(0).WithMessage("required").When(x => x.CallQueue == HealthPlanCallQueueCategory.AppointmentConfirmation);
        }