Example #1
0
        public IActionResult Post([FromBody] AssessmentPost assessment, string subject, string cohort, string name)
        {
            AssessmentValidator validator = new AssessmentValidator();
            List <Error>        errors    = new List <Error>();

            subject = Utils.CleanParam(subject);
            name    = Utils.CleanParam(name);

            dynamic examResult = _db.FetchExam(subject, name, cohort);

            if (examResult == null)
            {
                return(new HttpNotFoundResult());
            }

            if (!_db.IsModelStateValid(ModelState, assessment))
            {
                return(_db.ModelStateErrors);
            }

            errors.AddRange(validator.ValidatePost(assessment));
            if (errors.Any())
            {
                return(new UnprocessableEntityObjectResult(errors));
            }

            var    id       = _db.AddAssessment(assessment, subject, name, cohort, examResult);
            var    result   = _db.FetchAssessment(id);
            string location = Url.RouteUrl("assessment", new { id = id }, Request.Scheme);

            return(new CreatedResult(location, result));
        }
Example #2
0
        public IActionResult Patch([FromBody] IEnumerable <Patch> patches, int id)
        {
            AssessmentValidator validator = new AssessmentValidator();
            List <Error>        errors    = new List <Error>();

            if (!_db.AssessmentExists(id))
            {
                return(new HttpNotFoundResult());
            }

            if (!_db.IsModelStateValid(ModelState, patches))
            {
                return(_db.ModelStateErrors);
            }

            errors.AddRange(validator.ValidatePatches(id, patches));
            if (errors.Any())
            {
                return(new UnprocessableEntityObjectResult(errors));
            }

            _db.PatchAssessment(patches, id);

            var result = _db.FetchAssessment(id);

            return(new HttpOkObjectResult(result));
        }