/// <summary>
 /// Initializes a new instance of the <see cref="SavePayorCoverageCacheRequestHandler"/> class.
 /// </summary>
 /// <param name="patientRepository">The patient repository.</param>
 /// <param name="mappingHelper">The mapping helper.</param>
 /// <param name="payorCoverageCacheRepository">The payor coverage cache repository.</param>
 /// <param name="payorCoverageCacheFactory">The payor coverage cache factory.</param>
 /// <param name="payorCacheRepository">The payor cache repository.</param>
 public SavePayorCoverageCacheRequestHandler(
     IPatientRepository patientRepository,
     IDtoToDomainMappingHelper mappingHelper,
     IPayorCoverageCacheRepository payorCoverageCacheRepository,
     IPayorCoverageCacheFactory payorCoverageCacheFactory,
     IPayorCacheRepository payorCacheRepository)
 {
     _patientRepository            = patientRepository;
     _mappingHelper                = mappingHelper;
     _payorCoverageCacheRepository = payorCoverageCacheRepository;
     _payorCoverageCacheFactory    = payorCoverageCacheFactory;
     _payorCacheRepository         = payorCacheRepository;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="PayorCoverageCacheRuleCollection"/> class.
        /// </summary>
        /// <param name="payorCoverageCacheRepository">The payor coverage cache repository.</param>
        public PayorCoverageCacheRuleCollection(IPayorCoverageCacheRepository payorCoverageCacheRepository)
        {
            NewRule(() => NoDuplicatePayorCoverageCacheTypesWithSameEffectiveDateRangeRule)
            .When(
                (s, ctx) =>
            {
                var coverageType       = ctx.WorkingMemory.GetContextObject <PayorCoverageCacheType> ();
                var effectiveDateRange = ctx.WorkingMemory.GetContextObject <DateRange> ();
                var conflicts          = payorCoverageCacheRepository.AnyPayorCoverageTypeInEffectiveDateRange(
                    s.Key, s.Patient.Key, coverageType, effectiveDateRange);
                return(conflicts);
            })
            .ThenReportRuleViolation("Cannot have two payor coverages with the same payor coverage type active at the same time.");

            NewRuleSet(() => CreatePayorCoverageCacheRuleSet, NoDuplicatePayorCoverageCacheTypesWithSameEffectiveDateRangeRule);
            NewRuleSet(() => RevisePayorCoverageCacheInfoRuleSet, NoDuplicatePayorCoverageCacheTypesWithSameEffectiveDateRangeRule);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="PayorCoverageCacheDtoFactory"/> class.
 /// </summary>
 /// <param name="payorCoverageCacheRepository">The payor coverage cache repository.</param>
 public PayorCoverageCacheDtoFactory(IPayorCoverageCacheRepository payorCoverageCacheRepository)
 {
     _payorCoverageCacheRepository = payorCoverageCacheRepository;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="PayorCoverageCacheFactory"/> class.
 /// </summary>
 /// <param name="payorCoverageCacheRepository">The payor coverage cache repository.</param>
 public PayorCoverageCacheFactory( IPayorCoverageCacheRepository payorCoverageCacheRepository )
 {
     _payorCoverageCacheRepository = payorCoverageCacheRepository;
 }