private bool IsKeyValid(UpdateMarkModel model) { // check for student if (!_exist.StudentExists(model.StudentID)) { resp.code = 404; // Not found resp.messages.Add("Student not found"); } // check for subject if (!_exist.SubjectExists(model.SubjectID)) { resp.code = 404; // Not found resp.messages.Add("Subject not found"); } // check for semester if (!_exist.SemesterExists(model.SemesterID)) { resp.code = 404; // Not found resp.messages.Add("Semester not found"); } // check for result type if (!_exist.ResultTypeExists(model.ResultTypeID)) { resp.code = 404; // Not found resp.messages.Add("Result Type not found"); } return(true); }
public void UpdateMark(UpdateMarkModel work) { var entity = MapperService.Instance.Map <UpdateMarkModel, Mark>(work); uow.MarkRepository.Update(entity); uow.Commit(); }
public ActionResult UpdateMark(UpdateMarkModel model) { if (ModelState.IsValid) { if (!IsKeyValid(model)) { return(StatusCode(resp.code, resp)); } else { // get result filter with resultDetail.month var result = _resultService.GetResult(model.StudentID, model.SubjectID, model.SemesterID, model.Month); // Create new result if not exist if (result == null) { result = new Result { StudentID = model.StudentID, SemesterID = model.SemesterID, SubjectID = model.SubjectID }; _resultService.CreateResult(result); // get again for included entities result = _resultService.GetResults(model.StudentID, model.SemesterID, model.SubjectID, null) .AsQueryable() .FirstOrDefault(); } // details var detail = _resultService.GetResultDetail(result.ResultID, model.ResultTypeID, model.Month); // create detail if not exist if (detail == null) { // Check for valid month - semester if (result.Semester.Label == 1) { if (!(model.Month >= 9 && model.Month <= 12)) { resp.code = 400; // Bad Request resp.messages.Add(new { Month = "Month " + model.Month + " - Semester " + result.Semester.Label + " is invalid" }); return(BadRequest(resp)); } } else { if (!(model.Month >= 2 && model.Month <= 5)) { resp.code = 400; // Bad Request resp.messages.Add(new { Month = "Month " + model.Month + " - Semester " + result.Semester.Label + " is invalid" }); return(BadRequest(resp)); } } _resultService.CreateResultDetails(result, model.Month); detail = _resultService.GetResultDetail(result.ResultID, model.ResultTypeID, model.Month); } // update mark detail.Mark = model.Mark; _resultService.Update(); _resultService.CalculateSubjectMonthlyAverage(result); return(Ok(detail)); } } else // ModelState is invalid { var errors = new List <string>(); foreach (var state in ModelState) { foreach (var error in state.Value.Errors) { errors.Add(error.ErrorMessage); } } return(BadRequest(errors)); } }