public async Task <ActionResult <EnrolleeViewModel> > Submit(int enrolleeId, EnrolleeUpdateModel updatedProfile)
        {
            var record = await _enrolleeService.GetPermissionsRecordAsync(enrolleeId);

            if (record == null)
            {
                return(NotFound(ApiResponse.Message($"Enrollee not found with id {enrolleeId}")));
            }
            if (!record.EditableBy(User))
            {
                return(Forbid());
            }
            if (updatedProfile == null)
            {
                this.ModelState.AddModelError("EnrolleeUpdateModel", "New profile cannot be null.");
                return(BadRequest(ApiResponse.BadRequest(this.ModelState)));
            }

            if (!await _enrolleeService.IsEnrolleeInStatusAsync(enrolleeId, StatusType.Editable))
            {
                this.ModelState.AddModelError("Enrollee.CurrentStatus", "Application can not be submitted when the current status is not 'Active'.");
                return(BadRequest(ApiResponse.BadRequest(this.ModelState)));
            }

            updatedProfile.IdentityAssuranceLevel = User.GetIdentityAssuranceLevel();
            updatedProfile.IdentityProvider       = User.GetIdentityProvider();
            await _submissionService.SubmitApplicationAsync(enrolleeId, updatedProfile);

            var enrollee = await _enrolleeService.GetEnrolleeAsync(enrolleeId);

            return(Ok(ApiResponse.Result(enrollee)));
        }
Beispiel #2
0
        public async Task <IActionResult> UpdateEnrollee(int enrolleeId, EnrolleeUpdateModel enrollee, [FromQuery] bool beenThroughTheWizard)
        {
            var record = await _enrolleeService.GetPermissionsRecordAsync(enrolleeId);

            if (record == null)
            {
                return(NotFound(ApiResponse.Message($"Enrollee not found with id {enrolleeId}")));
            }
            if (!record.EditableBy(User))
            {
                return(Forbid());
            }

            // If the enrollee is not in the status of 'Editable', it cannot be updated
            if (!(await _enrolleeService.IsEnrolleeInStatusAsync(enrolleeId, StatusType.Editable)))
            {
                ModelState.AddModelError("Enrollee.CurrentStatus", "Enrollee can not be updated when the current status is not 'Editable'.");
                return(BadRequest(ApiResponse.BadRequest(ModelState)));
            }

            enrollee.SetTokenProperties(User);

            await _enrolleeService.UpdateEnrolleeAsync(enrolleeId, enrollee, beenThroughTheWizard);

            return(NoContent());
        }
        public async Task <ActionResult <IEnumerable <Agreement> > > GetEnrolleeAgreements(int enrolleeId, [FromQuery] AgreementFilters filters)
        {
            var record = await _enrolleeService.GetPermissionsRecordAsync(enrolleeId);

            if (record == null)
            {
                return(NotFound(ApiResponse.Message($"Enrollee not found with id {enrolleeId}")));
            }
            if (!record.ViewableBy(User))
            {
                return(Forbid());
            }

            var agreements = await _agreementService.GetEnrolleeAgreementsAsync(enrolleeId, filters);

            if (User.IsAdmin())
            {
                await _businessEventService.CreateAdminViewEventAsync(enrolleeId, "Admin viewing PRIME History");
            }

            return(Ok(ApiResponse.Result(agreements)));
        }
Beispiel #4
0
        public async Task <ActionResult <Feedback> > CreateFeedback(Feedback feedback)
        {
            var record = await _enrolleeService.GetPermissionsRecordAsync(feedback.EnrolleeId);

            if (record == null)
            {
                return(NotFound(ApiResponse.Message($"Enrollee not found with id {feedback.EnrolleeId}")));
            }
            if (!record.ViewableBy(User))
            {
                return(Forbid());
            }

            var createFeedback = await _feedbackService.CreateFeedbackAsync(feedback);

            return(Ok(ApiResponse.Result(createFeedback)));
        }