Exemple #1
0
        private async Task <LimitsConditionsClause> GetAccessTermLimitsConditionsClause(Enrollee enrollee)
        {
            var lastNote = await _context.AccessAgreementNotes
                           .Where(n => n.EnrolleeId == enrollee.Id)
                           .OrderByDescending(n => n.CreatedTimeStamp)
                           .FirstOrDefaultAsync();

            var newClause = new LimitsConditionsClause
            {
                EnrolleeId    = enrollee.Id,
                Clause        = null,
                EffectiveDate = new DateTimeOffset()
            };

            if (lastNote != null)
            {
                newClause = new LimitsConditionsClause
                {
                    EnrolleeId    = lastNote.EnrolleeId,
                    Clause        = lastNote.Note,
                    EffectiveDate = new DateTimeOffset()
                };

                _context.LimitsConditionsClauses.Add(newClause);
                await _context.SaveChangesAsync();
            }

            return(newClause);
        }
Exemple #2
0
        public async Task CreateEnrolleeAgreementAsync(int enrolleeId)
        {
            var dto = await _context.Enrollees
                      .AsNoTracking()
                      .Where(e => e.Id == enrolleeId)
                      .Select(e => new
            {
                NewestAssignedAgreement = e.Submissions
                                          .OrderByDescending(s => s.CreatedDate)
                                          .Select(s => s.AgreementType)
                                          .FirstOrDefault(),
                e.AccessAgreementNote
            })
                      .SingleAsync();

            if (dto.NewestAssignedAgreement == null)
            {
                throw new InvalidOperationException("Agreement type is required to approve an enrollee");
            }

            var agreement = new Agreement
            {
                EnrolleeId             = enrolleeId,
                AgreementVersionId     = await FetchNewestAgreementVersionIdOfType(dto.NewestAssignedAgreement.Value),
                LimitsConditionsClause = LimitsConditionsClause.FromAgreementNote(dto.AccessAgreementNote),
                CreatedDate            = DateTimeOffset.Now
            };

            _context.Add(agreement);
            await _context.SaveChangesAsync();
        }