Exemplo n.º 1
0
        /// <summary>
        /// Creates the program enrollment.
        /// </summary>
        /// <param name="programOffering">The program offering.</param>
        /// <param name="clinicalCase">The clinical case.</param>
        /// <param name="enrollmentDate">The enrollment date.</param>
        /// <param name="enrollingStaff">The enrolling staff.</param>
        /// <returns>
        /// A ProgramEnrollment.
        /// </returns>
        public ProgramEnrollment CreateProgramEnrollment(ProgramOffering programOffering, ClinicalCase clinicalCase, DateTime enrollmentDate, Staff enrollingStaff)
        {
            Check.IsNotNull(programOffering, "Program Offering is required.");
            Check.IsNotNull(clinicalCase, "Clinical Case is required.");
            Check.IsNotNull(enrollmentDate, "Enrollment Date is required.");
            Check.IsNotNull(enrollingStaff, "Enrolling Staff is required.");

            var newProgramEnrollment = new ProgramEnrollment(programOffering, clinicalCase, enrollmentDate, enrollingStaff);
            ProgramEnrollment createdProgramEnrollment = null;

            DomainRuleEngine.CreateRuleEngine(newProgramEnrollment, "CreateProgramEnrollmentRuleSet")
            .WithContext(enrollmentDate)
            .WithContext(enrollingStaff)
            .Execute(() =>
            {
                _programEnrollmentRepository.MakePersistent(newProgramEnrollment);
                createdProgramEnrollment = newProgramEnrollment;
            });

            return(createdProgramEnrollment);
        }