Example #1
0
        public async void Returns_QualifiedTeacherRecords_WhenTrnMatchFound()
        {
            _qualifiedTeachersRepositoryMock
            .Setup(q => q.FindAsync(x => x.Trn == TRN))
            .ReturnsAsync(mockQualifiedTeachers);

            var results = await _qualifiedTeachersService.GetQualifiedTeacherRecords(TRN, NI);

            Assert.Equal(results, mockQualifiedTeachers);
        }
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", Route = "qualified-teachers/qualified-teaching-status")] HttpRequest req)
        {
            string requestReference = req.Headers["x-correlation-id"];

            if (string.IsNullOrWhiteSpace(requestReference))
            {
                requestReference = Guid.NewGuid().ToString();
            }

            _log.Info($"Received request. CorrelationId : {requestReference}");

            if (!_authorize.AuthorizeRequest(req))
            {
                _log.Warning($"Unauthorized request. CorrelationId : {requestReference}");
                return(new UnauthorizedResult());
            }

            try
            {
                var trn = req.Query["trn"];
                var ni  = req.Query["ni"];

                if (string.IsNullOrWhiteSpace(trn))
                {
                    var msg = $"TeacherReferenceNumber is mandatory.";
                    _log.Info($"{msg} CorrelationId : {requestReference}");
                    return(new BadRequestObjectResult(GetResultDto(null, msg)));
                }

                _log.Info($"Fetching records. CorrelationId : {requestReference}");

                var results = await _qtsService.GetQualifiedTeacherRecords(trn, ni);

                if (!results.Any())
                {
                    var msg = $"No records found.";
                    _log.Info($"{msg} CorrelationId : {requestReference}");
                    return(new NotFoundObjectResult(GetResultDto(null, msg)));
                }

                return(new OkObjectResult(GetResultDto(results.ToList())));
            }
            catch (JsonException jsonException)
            {
                var errorMsg = $"Error retrieving qualified teacher status data.";
                _log.Error(new JsonException($"{errorMsg} CorrelationId : {requestReference}", jsonException));
                return(new BadRequestObjectResult(GetResultDto(null, errorMsg)));
            }
            catch (Exception exception)
            {
                var errorMsg = $"Error retrieving qualified teacher status data. {exception.Message}";
                _log.Error(new Exception($"{errorMsg} CorrelationId : {requestReference}", exception));
                return(new ObjectResult(GetResultDto(null, errorMsg))
                {
                    StatusCode = 500
                });
            }