Пример #1
0
        public static EnrollmentRepository GetEnrollmentRepository()
        {
            var repository = new EnrollmentRepository();

            repository.UnitOfWork = GetUnitOfWork();
            return(repository);
        }
Пример #2
0
 public EnrollmentsController()
 {
     _termRepository       = new TermRepository();
     _enrollmentRepository = new EnrollmentRepository();
     _evaluationRepository = new EvaluationRepository();
     _offeringRepository   = new OfferingRepository();
     _scheduleRepository   = new ScheduleRepository();
 }
Пример #3
0
 public OfferingEnrollmentsController()
 {
     _offeringRepository   = new OfferingRepository();
     _termRepository       = new TermRepository();
     _scheduleRepository   = new ScheduleRepository();
     _enrollmentRepository = new EnrollmentRepository();
     _studentRepository    = new StudentRepository();
 }
Пример #4
0
        public UnitOfWork()
        {
            context = new Context();

            Enrollments     = new EnrollmentRepository(context);
            Positions       = new PositionRepository(context);
            Workers         = new WorkerRepository(context);
            WorkerPositions = new WorkerPositionRepository(context);
        }
Пример #5
0
        public void UpdateEnrollment_AddsFundings()
        {
            Enrollment   enrollment;
            FundingSpace fundingSpace;

            using (var context = new TestHedwigContextProvider().Context)
            {
                enrollment   = EnrollmentHelper.CreateEnrollment(context);
                fundingSpace = FundingSpaceHelper.CreateFundingSpace(
                    context,
                    organizationId: enrollment.Site.OrganizationId,
                    source: FundingSource.CDC,
                    ageGroup: enrollment.AgeGroup.Value
                    );
            }

            Funding funding = new Funding
            {
                EnrollmentId   = enrollment.Id,
                Source         = FundingSource.CDC,
                FundingSpaceId = fundingSpace.Id
            };

            Assert.Null(enrollment.Fundings);

            enrollment.Fundings = new List <Funding> {
                funding
            };

            var mapper = new MapperConfiguration(opts =>
            {
                opts.AddProfile(new EnrollmentProfile());
                opts.AddProfile(new FundingProfile());
                opts.AddProfile(new ChildProfile());
                opts.AddProfile(new FamilyProfile());
                opts.AddProfile(new SiteProfile());
            }).CreateMapper();

            using (var context = new TestHedwigContextProvider().Context)
            {
                var enrollmentRepo = new EnrollmentRepository(context, mapper);

                var enrollmentDTO = mapper.Map <Enrollment, EnrollmentDTO>(enrollment);
                enrollmentRepo.UpdateEnrollment(enrollment, enrollmentDTO);
                context.SaveChanges();
            }

            using (var context = new TestHedwigContextProvider().Context)
            {
                var enrollmentRepo      = new EnrollmentRepository(context, mapper);
                var retrievedEnrollment = enrollmentRepo.GetEnrollmentById(enrollment.Id);
                Assert.NotEmpty(retrievedEnrollment.Fundings);

                var retrievedFunding = retrievedEnrollment.Fundings.FirstOrDefault();
                Assert.Equal(funding.Id, retrievedFunding.Id);
            }
        }
        public void AddEnrollment()
        {
            using (var context = new TestHedwigContextProvider().Context)
            {
                var enrollment = new Enrollment();

                var enrollmentRepo = new EnrollmentRepository(context);
                enrollmentRepo.AddEnrollment(enrollment);

                Assert.Equal(EntityState.Added, context.Entry(enrollment).State);
            }
        }
Пример #7
0
        public void UpdateEnrollment_UpdatesFundings()
        {
            Enrollment      enrollment;
            Funding         funding;
            ReportingPeriod reportingPeriod;

            using (var context = new TestHedwigContextProvider().Context)
            {
                enrollment      = EnrollmentHelper.CreateEnrollment(context);
                funding         = FundingHelper.CreateFunding(context, enrollment: enrollment);
                reportingPeriod = ReportingPeriodHelper.CreateReportingPeriod(context);
            }

            Assert.Null(funding.FirstReportingPeriodId);

            funding.FirstReportingPeriodId = reportingPeriod.Id;
            enrollment.Fundings            = new List <Funding> {
                funding
            };

            enrollment.Fundings.FirstOrDefault().Enrollment = null;

            using (var context = new TestHedwigContextProvider().Context)
            {
                var mapper = new MapperConfiguration(opts =>
                {
                    opts.AddProfile(new EnrollmentProfile());
                    opts.AddProfile(new FundingProfile());
                    opts.AddProfile(new FundingSpaceProfile());
                    opts.AddProfile(new ChildProfile());
                    opts.AddProfile(new FamilyProfile());
                    opts.AddProfile(new SiteProfile());
                }).CreateMapper();

                var enrollmentRepo = new EnrollmentRepository(context, mapper);
                var enrollmentDTO  = mapper.Map <Enrollment, EnrollmentDTO>(enrollment);
                enrollmentRepo.UpdateEnrollment(enrollment, enrollmentDTO);
                context.SaveChanges();
            }

            using (var context = new TestHedwigContextProvider().Context)
            {
                var retrievedEnrollment = context.Enrollments
                                          .Where(e => e.Id == enrollment.Id)
                                          .Include(e => e.Fundings)
                                          .FirstOrDefault();
                var retrievedFunding = retrievedEnrollment.Fundings.FirstOrDefault();

                Assert.NotNull(retrievedFunding.FirstReportingPeriodId);
                Assert.Equal(funding.FirstReportingPeriodId, retrievedFunding.FirstReportingPeriodId);
            }
        }
Пример #8
0
 public UnitOfWork(ApplicationDbContext context, IMapper mapper)
 {
     Releases     = new ReleaseRepository(context);
     Sites        = new SiteRepository(context);
     Categories   = new CategoryRepository(context, mapper);
     Words        = new WordRepository(context, mapper);
     ComplexWords = new ComplexWordRepository(context, mapper);
     Packages     = new PackageRepository(context);
     Enrollments  = new EnrollmentRepository(context);
     PreDbs       = new PreDbRepository(context);
     _context     = context;
     Mapper       = mapper;
 }
Пример #9
0
        public async Task RemoveEnrollmentAsync_WithoutQuery_ShouldReturnAll()
        {
            var expectedEnrollment = this.enrollments.Single(e => e.StudentId == 1);
            var mockContext        = new Mock <StudentInfoSysDbContext>();

            mockContext.Setup(c => c.Set <Enrollment>())
            .Returns(this.mockSet.Object);
            var repository = new EnrollmentRepository(mockContext.Object);

            Task act = repository.RemoveEnrollmentAsync(expectedEnrollment);

            await act;
        }
Пример #10
0
        public async Task AddEnrollmentAsync_WithoutQuery_ShouldReturnAll()
        {
            var expectedEnrollment = this.enrollments.Single(e => e.StudentId == 1);
            var mockContext        = new Mock <StudentInfoSysDbContext>();

            mockContext.Setup(c => c.Set <Enrollment>())
            .Returns(this.mockSet.Object);
            var repository = new EnrollmentRepository(mockContext.Object);

            var result = await repository.AddEnrollmentAsync(expectedEnrollment);

            Assert.Equal(expectedEnrollment, result);
        }
Пример #11
0
        public string InsertEnrollment([FromBody] Enrollment enrollmentInfo)
        {
            var errors = new List <string>();
            IEnrollmentRepository enrollment = new EnrollmentRepository();

            new EnrollmentService(enrollment).InsertEnrollment(enrollmentInfo, ref errors);

            if (errors.Count == 0)
            {
                return("ok");
            }

            return("error");
        }
Пример #12
0
        public string DeleteEnrollment(string studentId, int scheduleId)
        {
            var errors = new List <string>();
            IEnrollmentRepository enrollment = new EnrollmentRepository();

            new EnrollmentService(enrollment).DeleteEnrollment(studentId, scheduleId, ref errors);

            if (errors.Count == 0)
            {
                return("ok");
            }

            return("error");
        }
Пример #13
0
        public StudentType(EnrollmentRepository enrollmentRepository, IDataLoaderContextAccessor dataLoader)
        {
            Field(t => t.Id);
            Field(t => t.DateOfBirth);
            Field(t => t.FirstName);
            Field(t => t.LastName);

            Field <ListGraphType <EnrollmentType> >("enrollments",
                                                    resolve: context =>
            {
                var loader = dataLoader.Context.GetOrAddCollectionBatchLoader <int, Enrollment>("enrollments", enrollmentRepository.GetEnrollmentsForStudents);
                return(loader.LoadAsync(context.Source.Id));
            }
                                                    );
        }
Пример #14
0
        public async Task <ActionResult> EditEnrollment(FormCollection form)
        {
            Enrollment enrollment   = null;
            var        enrollmentId = Int32.Parse(form["EnrollmentID"]);
            decimal?   grade        = decimal.Parse(form["Grade"].Replace('.', ','));

            using (_enrollmentRepository = new EnrollmentRepository())
            {
                enrollment = await _enrollmentRepository.GetAsync(enrollmentId);

                enrollment.Grade = grade;
                await _enrollmentRepository.UpdateAsync(enrollment);
            }
            return(RedirectToAction("EditJournal/" + enrollment.CourseID));
        }
        public async Task When_recruitment_form_is_submitted_repo_contains_its_readmodel()
        {
            // Arrange
            var repo     = new EnrollmentRepository();
            var campaign = new Impl.Entities.Campaign(now.Minus(aWeek), now.Plus(aWeek), editionId: 1);

            campaign.GetType().GetProperty(nameof(campaign.Id)).SetValue(campaign, 1);

            var training = new Impl.Entities.Training("Papieska 21/37", "Wadowice", now.Plus(2 * aWeek), now.Plus(2 * aWeek + anHour), Guid.NewGuid());

            training.GetType().GetProperty(nameof(training.ID)).SetValue(training, 1);
            campaign.ScheduleTraining(training);

            var campaignRepo = Mock.Of <ICampaignRepository>(mock => mock.GetById(1) == Task.FromResult(campaign), MockBehavior.Strict);
            var trainingRepo = Mock.Of <ITrainingRepository>(MockBehavior.Strict);

            var readStoreManager = new ReadStoreManager(repo, campaignRepo, trainingRepo);


            // Act
            var @event = new RecruitmentFormSubmitted(
                now.ToInstant(), "Andrzej", "Strzelba",
                EmailAddress.Parse("*****@*****.**"), PhoneNumber.Parse("505551888"),
                "no elo",
                campaignID: 1, region: "Wolne Miasto Gdańsk", preferredLecturingCities: new[] { "Rumia", "Reda", "Wejherowo" }, preferredTrainingIds: new[] { 1 },
                gdprConsentGiven: true);
            var domainEvent = new DomainEvent <EnrollmentAggregate, EnrollmentAggregate.EnrollmentId, RecruitmentFormSubmitted>(@event, new Metadata(), DateTimeOffset.Now, EnrollmentAggregate.EnrollmentId.New, 1);

            await readStoreManager.UpdateReadStoresAsync(new[] { domainEvent }, CancellationToken.None);

            // Assert
            var enrollment = Assert.Single(repo.Query());

            Assert.Equal("Andrzej Strzelba", enrollment.FullName);
            Assert.Equal(EmailAddress.Parse("*****@*****.**"), enrollment.Email);
            Assert.Equal(PhoneNumber.Parse("505551888"), enrollment.PhoneNumber);
            Assert.Equal("no elo", enrollment.AboutMe);
            Assert.Equal("Wolne Miasto Gdańsk", enrollment.Region);
            Assert.Equal(1, enrollment.Campaign.Id);
            Assert.Null(enrollment.ResumeDate);
            Assert.Collection(enrollment.PreferredLecturingCities,
                              first => Assert.Equal("Rumia", first),
                              second => Assert.Equal("Reda", second),
                              third => Assert.Equal("Wejherowo", third));
            var preferredTraining = Assert.Single(enrollment.PreferredTrainings);

            Assert.Equal("Wadowice", preferredTraining.City);
        }
        public async Task If_candidate_was_absent_on_training__he_is_contained_in_AbsentCandidates()
        {
            // Arrange
            var trainerId = Guid.NewGuid();

            (var campaignRepo, var trainingRepo, var trainerProvider) = BuildMocks(trainerId, 1, 1);
            var enrollmentId     = EnrollmentAggregate.EnrollmentId.New;
            var enrollmentRepo   = new EnrollmentRepository();
            var readStoreManager = new ReadStoreManager(enrollmentRepo, campaignRepo, trainingRepo);

            var events = new IDomainEvent[]
            {
                new DomainEvent <EnrollmentAggregate, EnrollmentAggregate.EnrollmentId, RecruitmentFormSubmitted>(
                    new RecruitmentFormSubmitted(clock.GetCurrentInstant().Minus(anHour), "Andrzej", "Strzelba", EmailAddress.Parse("*****@*****.**"), Consts.FakePhoneNumber, "jo", 1, "Wolne Miasto Gdańsk", new[] { "Gdańsk", "Wrzeszcz", "Oliwa" }, new[] { 1 }, true),
                    new Metadata(), clock.GetCurrentInstant().ToDateTimeOffset(), enrollmentId, 1),
                new DomainEvent <EnrollmentAggregate, EnrollmentAggregate.EnrollmentId, CandidateAcceptedTrainingInvitation>(
                    new CandidateAcceptedTrainingInvitation(trainerId, Recruitment.Enrollments.CommunicationChannel.OutgoingPhone, 1, string.Empty),
                    new Metadata(), clock.GetCurrentInstant().ToDateTimeOffset(), enrollmentId, 2),
                new DomainEvent <EnrollmentAggregate, EnrollmentAggregate.EnrollmentId, CandidateWasAbsentFromTraining>(
                    new CandidateWasAbsentFromTraining(trainerId, 1, string.Empty),
                    new Metadata(), clock.GetCurrentInstant().ToDateTimeOffset(), enrollmentId, 3),
            };
            await readStoreManager.UpdateReadStoresAsync(events, CancellationToken.None);

            // Act
            var handler = new DetailsHandler(clock, trainingRepo, trainerProvider, enrollmentRepo);
            var result  = await handler.Handle(new Details.Query()
            {
                TrainingId = 1
            }, CancellationToken.None);

            // Assert
            Assert.True(result.HasValue);
            Assert.Equal(TrainingTiming.Past, result.Value.Timing);
            var pastTraining = Assert.IsType <Details.PastTrainingDetails>(result.Value);
            var candidate    = Assert.Single(pastTraining.AbsentCandidates);

            Assert.Equal(enrollmentId.GetGuid(), candidate.Id);

            candidate.WasAbsent.Should().BeTrue();
            candidate.WasPresentAndAcceptedAsLecturer.Should().BeFalse();
            candidate.WasPresentButDidNotAcceptedAsLecturer.Should().BeFalse();
            candidate.WasAbsent.Should().BeTrue();
            candidate.HasRefusedTraining.Should().BeFalse();
            candidate.HasResignedPermanently.Should().BeFalse();
            candidate.HasResignedTemporarily.Should().BeFalse();
            candidate.ResignationEndDate.Should().BeNull();
        }
        public async Task When_training_invitation_is_refused__readmodel_does_not_contain_training_ID()
        {
            // Arrange
            var id   = EnrollmentAggregate.EnrollmentId.New;
            var repo = new EnrollmentRepository();

            var campaign = new Impl.Entities.Campaign(now.Minus(3 * aWeek), now.Minus(2 * aWeek), editionId: 1);

            campaign.GetType().GetProperty(nameof(campaign.Id)).SetValue(campaign, 1);
            var training = new Impl.Entities.Training("Papieska 21/37", "Wadowice", now.Minus(2 * aWeek + anHour), now.Minus(2 * aWeek), Guid.NewGuid());

            training.GetType().GetProperty(nameof(training.ID)).SetValue(training, 1);
            campaign.ScheduleTraining(training);
            var campaignRepo = Mock.Of <ICampaignRepository>(mock => mock.GetById(1) == Task.FromResult(campaign), MockBehavior.Strict);
            var trainingRepo = Mock.Of <ITrainingRepository>(mock => mock.GetById(1) == Task.FromResult(Maybe <Training> .From(training)), MockBehavior.Strict);

            await repo.Insert(new EnrollmentReadModel()
            {
                Id = id, SelectedTraining = new EnrollmentReadModel.TrainingSummary()
                {
                    ID = 1
                }
            });

            var readStoreManager = new ReadStoreManager(repo, campaignRepo, trainingRepo);

            // Act
            await readStoreManager.UpdateReadStoresAsync(new[] {
                new DomainEvent <EnrollmentAggregate, EnrollmentAggregate.EnrollmentId, CandidateRefusedTrainingInvitation>(
                    new CandidateRefusedTrainingInvitation(
                        Guid.NewGuid(),
                        Recruitment.Enrollments.CommunicationChannel.IncomingPhone,
                        string.Empty, string.Empty),
                    new Metadata(), DateTimeOffset.Now, id, 1),
            },
                                                         CancellationToken.None);

            // Assert
            var enrollment = Assert.Single(repo.Query());

            Assert.Equal(id, enrollment.Id);
            Assert.Null(enrollment.SelectedTraining);
        }
        public async Task When_queried_with_flag_HasResigned_set_to_false__results_contains_enrollments_with_temporary_resignations_with_past_ResumeDate()
        {
            // Arrange
            var newCampaign = new Impl.Entities.Campaign(now.Minus(aWeek), now.Plus(aWeek), editionId: 1);

            newCampaign.GetType().GetProperty(nameof(newCampaign.Id)).SetValue(newCampaign, 1);

            var training = new Impl.Entities.Training("Papieska 21/37", "Wadowice", now.Plus(2 * aWeek), now.Plus(2 * aWeek + anHour), Guid.NewGuid());

            training.GetType().GetProperty(nameof(training.ID)).SetValue(training, 1);
            newCampaign.ScheduleTraining(training);
            var campaignRepo = Mock.Of <ICampaignRepository>(mock =>
                                                             mock.GetById(1) == Task.FromResult(newCampaign) &&
                                                             mock.GetAll() == Task.FromResult(new[] { newCampaign } as IReadOnlyCollection <Impl.Entities.Campaign>), MockBehavior.Strict);

            var repo = new EnrollmentRepository();
            await repo.Insert(new EnrollmentReadModel()
            {
                Id       = EnrollmentAggregate.EnrollmentId.New,
                Campaign = new EnrollmentReadModel.CampaignSummary()
                {
                    Id = 1
                },
                PreferredTrainings       = Array.Empty <EnrollmentReadModel.TrainingSummary>(),
                PreferredLecturingCities = Array.Empty <string>(),
                HasResignedTemporarily   = true,
                ResumeDate = now.Minus(aDay).Date
            });

            var queryHandler = new GetSubmissionsQueryHandler(repo, campaignRepo, clock);

            // Act
            var results = await queryHandler.Handle(new Recruitment.Enrollments.GetSubmissions.Query()
            {
                HasResigned = false
            }, CancellationToken.None);

            // Assert
            var summary = Assert.Single(results);

            Assert.False(summary.HasResignedTemporarily);
            Assert.Null(summary.ResumeDate);
        }
        public async Task When_recruitment_form_from_past_recruitment_campaign_is_submitted__its_summary_has_flag_IsNewSubmission_set_to_true()
        {
            // Arrange
            var oldCampaign = new Impl.Entities.Campaign(now.Minus(Duration.FromDays(30)), now.Minus(Duration.FromDays(25)), editionId: 1);

            oldCampaign.GetType().GetProperty(nameof(oldCampaign.Id)).SetValue(oldCampaign, 1);

            var newCampaign = new Impl.Entities.Campaign(now.Minus(aWeek), now.Plus(aWeek), editionId: 1);

            newCampaign.GetType().GetProperty(nameof(newCampaign.Id)).SetValue(newCampaign, 2);

            var training = new Impl.Entities.Training("Papieska 21/37", "Wadowice", now.Plus(2 * aWeek), now.Plus(2 * aWeek + anHour), Guid.NewGuid());

            training.GetType().GetProperty(nameof(training.ID)).SetValue(training, 1);
            newCampaign.ScheduleTraining(training);
            var campaignRepo = Mock.Of <ICampaignRepository>(mock =>
                                                             mock.GetById(1) == Task.FromResult(oldCampaign) &&
                                                             mock.GetById(2) == Task.FromResult(newCampaign) &&
                                                             mock.GetAll() == Task.FromResult(new[] { oldCampaign, newCampaign } as IReadOnlyCollection <Impl.Entities.Campaign>), MockBehavior.Strict);

            var repo = new EnrollmentRepository();
            await repo.Insert(new EnrollmentReadModel()
            {
                Id       = EnrollmentAggregate.EnrollmentId.New,
                Campaign = new EnrollmentReadModel.CampaignSummary()
                {
                    Id = 1
                },
                PreferredTrainings       = Array.Empty <EnrollmentReadModel.TrainingSummary>(),
                PreferredLecturingCities = Array.Empty <string>()
            });

            var queryHandler = new GetSubmissionsQueryHandler(repo, campaignRepo, clock);

            // Act
            var result = await queryHandler.Handle(new Recruitment.Enrollments.GetSubmissions.Query(), CancellationToken.None);

            // Assert
            var summary = Assert.Single(result);

            Assert.True(summary.Campaign.ID == 1);
            Assert.True(summary.IsOldSubmission);
        }
Пример #20
0
        public void Execute_DoesNotAddEnrollmentToFunding(bool fundingHasEnrollmentReference)
        {
            Funding funding;

            using (var context = new TestHedwigContextProvider().Context)
            {
                funding = FundingHelper.CreateFunding(context);
            }

            if (!fundingHasEnrollmentReference)
            {
                funding.Enrollment = null;
            }

            using (var context = new TestHedwigContextProvider().Context)
            {
                // Only attach found entity to avoid attaching the entire object graph
                // (which would find & attach the enrollment navigation property)
                context.Attach(context.Find(funding.GetType(), funding.Id));

                var _serviceProvider = new Mock <IServiceProvider>();
                var _validator       = new NonBlockingValidator(_serviceProvider.Object);
                var _fundings        = new FundingRepository(context);
                var mapper           = new MapperConfiguration(opts =>
                {
                    opts.AddProfile(new EnrollmentProfile());
                    opts.AddProfile(new FundingProfile());
                    opts.AddProfile(new ChildProfile());
                    opts.AddProfile(new FamilyProfile());
                    opts.AddProfile(new SiteProfile());
                }).CreateMapper();
                var _enrollments      = new EnrollmentRepository(context, mapper);
                var _reportingPeriods = new ReportingPeriodRepository(context);

                // when
                var rule = new FundingTimelinesAreValid(_fundings, _enrollments, _reportingPeriods);
                rule.Execute(funding, new NonBlockingValidationContext());

                // then
                Assert.Equal(fundingHasEnrollmentReference, funding.Enrollment != null);
            }
        }
        public async Task When_temporary_resignation_is_recorded_without_providing_end_date__readmodel_has_no_suspension_end_date()
        {
            // Arrange
            var id   = EnrollmentAggregate.EnrollmentId.New;
            var repo = new EnrollmentRepository();

            var campaign = new Impl.Entities.Campaign(now.Minus(3 * aWeek), now.Minus(2 * aWeek), editionId: 1);

            campaign.GetType().GetProperty(nameof(campaign.Id)).SetValue(campaign, 1);
            var training = new Impl.Entities.Training("Papieska 21/37", "Wadowice", now.Minus(2 * aWeek + anHour), now.Minus(2 * aWeek), Guid.NewGuid());

            training.GetType().GetProperty(nameof(training.ID)).SetValue(training, 1);
            campaign.ScheduleTraining(training);
            var campaignRepo = Mock.Of <ICampaignRepository>(mock => mock.GetById(1) == Task.FromResult(campaign), MockBehavior.Strict);
            var trainingRepo = Mock.Of <ITrainingRepository>(MockBehavior.Strict);

            await repo.Insert(new EnrollmentReadModel()
            {
                Id = id
            });

            var readStoreManager = new ReadStoreManager(repo, campaignRepo, trainingRepo);

            // Act
            await readStoreManager.UpdateReadStoresAsync(new[] {
                new DomainEvent <EnrollmentAggregate, EnrollmentAggregate.EnrollmentId, CandidateResignedTemporarily>(
                    new CandidateResignedTemporarily(
                        Guid.NewGuid(),
                        Recruitment.Enrollments.CommunicationChannel.IncomingPhone,
                        string.Empty, string.Empty,
                        resumeDate: null),
                    new Metadata(), DateTimeOffset.Now, id, 1),
            },
                                                         CancellationToken.None);

            // Assert
            var enrollment = Assert.Single(repo.Query());

            Assert.Equal(id, enrollment.Id);
            Assert.True(enrollment.HasResignedTemporarily);
            Assert.Null(enrollment.ResumeDate);
        }
Пример #22
0
        public async Task <ActionResult> EditJournal(int id)
        {
            Course         viewResult     = null;
            List <Student> courseStudents = new List <Student>();

            using (_enrollmentRepository = new EnrollmentRepository())
            {
                viewResult = await _enrollmentRepository.GetListEnrollment(id);
            }
            using (_studentRepository = new StudentRepository())
            {
                foreach (var enrollment in viewResult.Enrollments)
                {
                    courseStudents.Add(await _studentRepository.GetAsync(enrollment.StudentID));
                }
            }
            ViewBag.Students = courseStudents;
            ViewBag.Course   = viewResult;
            return(View(viewResult));
        }
Пример #23
0
        public async Task GetEnrollmentForSite_ReturnsEnrollmentWithIdAndSiteId_IncludesEntities(
            bool includeFundings,
            bool includeChild,
            bool includeFamily,
            bool includeDeterminations,
            bool includePastEnrollments
            )
        {
            int id;
            int siteId;

            using (var context = new TestHedwigContextProvider().Context)
            {
                var enrollment = EnrollmentHelper.CreateEnrollment(context);
                EnrollmentHelper.CreateEnrollment(context, child: enrollment.Child);
                id     = enrollment.Id;
                siteId = enrollment.SiteId;
            }

            var mapper = new MapperConfiguration(opts =>
            {
                opts.AddProfile(new EnrollmentProfile());
                opts.AddProfile(new FundingProfile());
                opts.AddProfile(new ChildProfile());
                opts.AddProfile(new FamilyProfile());
                opts.AddProfile(new SiteProfile());
            }).CreateMapper();

            using (var context = new TestHedwigContextProvider().Context)
            {
                var enrollmentRepo = new EnrollmentRepository(context, mapper);
                var res            = await enrollmentRepo.GetEnrollmentForSiteAsync(id, siteId);

                Assert.Equal(id, res.Id);
                Assert.Equal(includeFundings, res.Fundings != null);
                Assert.Equal(includeChild, res.Child != null);
                Assert.Equal(includeFamily, res.Child != null && res.Child.Family != null);
                Assert.Equal(includeDeterminations, res.Child != null && res.Child.Family != null && res.Child.Family.Determinations != null);
                Assert.Equal(includePastEnrollments, res.PastEnrollments != null);
            }
        }
        public async Task <ActionResult <dynamic> > Post(
            [FromServices] EnrollmentRepository enrollmentRepository,
            [FromBody] EnrollmentRequest model
            )
        {
            if (ModelState.IsValid)
            {
                var enrollment = await enrollmentRepository.Add(model);

                if (enrollment == null)
                {
                    return(BadRequest(new { message = "Usuário ou curso estão incorretos" }));
                }

                return(enrollment);
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }
Пример #25
0
        public void AddEnrollment()
        {
            var mapper = new MapperConfiguration(opts =>
            {
                opts.AddProfile(new EnrollmentProfile());
                opts.AddProfile(new FundingProfile());
                opts.AddProfile(new ChildProfile());
                opts.AddProfile(new FamilyProfile());
                opts.AddProfile(new SiteProfile());
            }).CreateMapper();

            using (var context = new TestHedwigContextProvider().Context)
            {
                var enrollment = new Enrollment();

                var enrollmentRepo = new EnrollmentRepository(context, mapper);
                enrollmentRepo.AddEnrollment(enrollment);

                Assert.Equal(EntityState.Added, context.Entry(enrollment).State);
            }
        }
Пример #26
0
        public async Task GetEnrollmentsForSite_ReturnsEnrollmentsWithSiteId_IncludesEntities(
            bool includeFundings,
            bool includeChildren,
            bool includeFamilies,
            bool includeDeterminations
            )
        {
            int[] ids;
            int   siteId;

            using (var context = new TestHedwigContextProvider().Context)
            {
                var site        = SiteHelper.CreateSite(context);
                var enrollments = EnrollmentHelper.CreateEnrollments(context, 3, site: site);
                ids    = enrollments.Select(e => e.Id).ToArray();
                siteId = site.Id;
            }

            var mapper = new MapperConfiguration(opts =>
            {
                opts.AddProfile(new EnrollmentProfile());
                opts.AddProfile(new FundingProfile());
                opts.AddProfile(new ChildProfile());
                opts.AddProfile(new FamilyProfile());
                opts.AddProfile(new SiteProfile());
            }).CreateMapper();

            using (var context = new TestHedwigContextProvider().Context)
            {
                var enrollmentRepo = new EnrollmentRepository(context, mapper);
                var res            = await enrollmentRepo.GetEnrollmentsForSiteAsync(siteId);

                Assert.Equal(ids.OrderBy(id => id), res.Select(e => e.Id).OrderBy(id => id));
                Assert.Equal(includeFundings, res.TrueForAll(e => e.Fundings != null));
                Assert.Equal(includeChildren, res.TrueForAll(e => e.Child != null));
                Assert.Equal(includeFamilies, res.TrueForAll(e => e.Child != null && e.Child.Family != null));
                Assert.Equal(includeDeterminations, res.TrueForAll(e => e.Child != null && e.Child.Family != null && e.Child.Family.Determinations != null));
            }
        }
        public async Task If_candidate_was_invited_and_resigned_temporarily_without_resume_date__AvailableCandidates_contain_that_candidate()
        {
            // Arrange
            var trainerId = Guid.NewGuid();

            (var campaignRepo, var trainingRepo, var trainerProvider) = BuildMocks(trainerId, 1, 1);
            var enrollmentId     = EnrollmentAggregate.EnrollmentId.New;
            var enrollmentRepo   = new EnrollmentRepository();
            var readStoreManager = new ReadStoreManager(enrollmentRepo, campaignRepo, trainingRepo);

            var events = new IDomainEvent[]
            {
                new DomainEvent <EnrollmentAggregate, EnrollmentAggregate.EnrollmentId, RecruitmentFormSubmitted>(
                    new RecruitmentFormSubmitted(clock.GetCurrentInstant().Minus(anHour), "Andrzej", "Strzelba", EmailAddress.Parse("*****@*****.**"), Consts.FakePhoneNumber, "jo", 1, "Wolne Miasto Gdańsk", new[] { "Gdańsk", "Wrzeszcz", "Oliwa" }, new[] { 1 }, true),
                    new Metadata(), clock.GetCurrentInstant().ToDateTimeOffset(), enrollmentId, 1),
                new DomainEvent <EnrollmentAggregate, EnrollmentAggregate.EnrollmentId, CandidateAcceptedTrainingInvitation>(
                    new CandidateAcceptedTrainingInvitation(trainerId, Recruitment.Enrollments.CommunicationChannel.OutgoingPhone, 1, string.Empty),
                    new Metadata(), clock.GetCurrentInstant().ToDateTimeOffset(), enrollmentId, 2),
                new DomainEvent <EnrollmentAggregate, EnrollmentAggregate.EnrollmentId, CandidateResignedTemporarily>(
                    new CandidateResignedTemporarily(trainerId, Recruitment.Enrollments.CommunicationChannel.OutgoingPhone, string.Empty, string.Empty, resumeDate: null),
                    new Metadata(), clock.GetCurrentInstant().ToDateTimeOffset(), enrollmentId, 3)
            };
            await readStoreManager.UpdateReadStoresAsync(events, CancellationToken.None);

            // Act
            var handler = new DetailsHandler(clock, trainingRepo, trainerProvider, enrollmentRepo);
            var result  = await handler.Handle(new Details.Query()
            {
                TrainingId = 1
            }, CancellationToken.None);

            // Assert
            Assert.True(result.HasValue);
            Assert.Equal(TrainingTiming.Future, result.Value.Timing);
            var futureTraining = Assert.IsType <Details.FutureTrainingDetails>(result.Value);
            var candidate      = Assert.Single(futureTraining.AvailableCandidates);

            Assert.Equal(enrollmentId.GetGuid(), candidate.Id);
        }
Пример #28
0
        public void UpdateEnrollment_RemovesFundings()
        {
            Enrollment enrollment;

            using (var context = new TestHedwigContextProvider().Context)
            {
                enrollment = EnrollmentHelper.CreateEnrollment(context);
                FundingHelper.CreateFunding(context, enrollment: enrollment);
            }

            Assert.NotEmpty(enrollment.Fundings);
            enrollment.Fundings = new List <Funding>();

            var mapper = new MapperConfiguration(opts =>
            {
                opts.AddProfile(new EnrollmentProfile());
                opts.AddProfile(new FundingProfile());
                opts.AddProfile(new ChildProfile());
                opts.AddProfile(new FamilyProfile());
                opts.AddProfile(new SiteProfile());
            }).CreateMapper();

            using (var context = new TestHedwigContextProvider().Context)
            {
                var enrollmentRepo = new EnrollmentRepository(context, mapper);
                var enrollmentDTO  = mapper.Map <Enrollment, EnrollmentDTO>(enrollment);
                enrollmentRepo.UpdateEnrollment(enrollment, enrollmentDTO);
                context.SaveChanges();
            }

            using (var context = new TestHedwigContextProvider().Context)
            {
                var enrollmentRepo      = new EnrollmentRepository(context, mapper);
                var retrievedEnrollment = enrollmentRepo.GetEnrollmentById(enrollment.Id);
                Assert.Empty(retrievedEnrollment.Fundings);
            }
        }
        public async Task When_candidate_obtains_lecturer_rights_Readmodel_has_flag_HasLecturerRigths_set_to_true()
        {
            // Arrange
            var id   = EnrollmentAggregate.EnrollmentId.New;
            var repo = new EnrollmentRepository();

            var campaign = new Impl.Entities.Campaign(now.Minus(3 * aWeek), now.Minus(2 * aWeek), editionId: 1);

            campaign.GetType().GetProperty(nameof(campaign.Id)).SetValue(campaign, 1);
            var training = new Impl.Entities.Training("Papieska 21/37", "Wadowice", now.Minus(2 * aWeek + anHour), now.Minus(2 * aWeek), Guid.NewGuid());

            training.GetType().GetProperty(nameof(training.ID)).SetValue(training, 1);
            campaign.ScheduleTraining(training);
            var campaignRepo = Mock.Of <ICampaignRepository>(mock => mock.GetById(1) == Task.FromResult(campaign), MockBehavior.Strict);
            var trainingRepo = Mock.Of <ITrainingRepository>(MockBehavior.Strict);

            await repo.Insert(new EnrollmentReadModel()
            {
                Id = id
            });

            var readStoreManager = new ReadStoreManager(repo, campaignRepo, trainingRepo);

            // Act
            await readStoreManager.UpdateReadStoresAsync(new[] {
                new DomainEvent <EnrollmentAggregate, EnrollmentAggregate.EnrollmentId, CandidateObtainedLecturerRights>(
                    new CandidateObtainedLecturerRights(Guid.NewGuid(), "zdobył uprawnienia"),
                    new Metadata(), DateTimeOffset.Now, id, 1),
            },
                                                         CancellationToken.None);

            // Assert
            var enrollment = Assert.Single(repo.Query());

            Assert.Equal(id, enrollment.Id);
            Assert.True(enrollment.HasLecturerRights);
        }
Пример #30
0
        public async Task GetEnrollmentsForSite_FiltersByDates(
            string entry,
            string exit,
            string from,
            string to,
            bool included
            )
        {
            var mapper = new MapperConfiguration(opts =>
            {
                opts.AddProfile(new EnrollmentProfile());
                opts.AddProfile(new FundingProfile());
                opts.AddProfile(new ChildProfile());
                opts.AddProfile(new FamilyProfile());
                opts.AddProfile(new SiteProfile());
            }).CreateMapper();

            using (var context = new TestHedwigContextProvider().Context)
            {
                // if enrollment exists with entry and exit
                var enrollment = EnrollmentHelper.CreateEnrollment(context, entry, exit);

                // when repo is queried with to and from
                var enrollmentRepo = new EnrollmentRepository(context, mapper);
                var result         = await enrollmentRepo.GetEnrollmentsForSiteAsync(
                    enrollment.SiteId,
                    DateTime.Parse(from),
                    DateTime.Parse(to)
                    );

                var resultIds = result.Select(e => e.Id);

                // then
                Assert.Equal(included, resultIds.Contains(enrollment.Id));
            }
        }