Пример #1
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();
        }