public async Task <ActionResult> DropRegisteredClass(int studentEnrolledClassId, int classId) { var currentUser = CurrentLoginUser; if (currentUser == null) { return(Ok(new { IsSuccess = false, Message = "There was an error while trying to register the class" })); } var dropStudentEnrolledClass = new StudentEnrolledClass { ClassId = classId, UserId = currentUser.Id, Id = studentEnrolledClassId }; //let's drop this registered class var isDropedRegisteredClass = await _classService.DropRegisteredClass(dropStudentEnrolledClass); if (isDropedRegisteredClass) { return(Ok(new { IsSuccess = false, Message = "There was an error while trying to drop the class!" })); } return(Ok(new { IsSuccess = true, Message = "You have drop your registered class successfully" })); }
public Task <bool> RegisterClass(StudentEnrolledClass newStudentEnrolledClassModel) { var currentDate = DateTime.UtcNow; bool isOperationSuccess = true; using (var ts = new TransactionScope()) { try { var updateCasss = db.Class .FirstOrDefault(f => f.Status == StatusConstants.Active && f.Id == newStudentEnrolledClassModel.ClassId); if (updateCasss == null) { isOperationSuccess = false; } if (updateCasss.Capacity <= 0) { isOperationSuccess = false; } if (isOperationSuccess) { //let's add into student enroll class newStudentEnrolledClassModel.EnrolledDate = currentDate; db.StudentEnrolledClass.Add(newStudentEnrolledClassModel); db.SaveChanges(); //let's update student class seat Capacity updateCasss.Capacity = updateCasss.Capacity - 1; updateCasss.ChangedDateUtc = currentDate; db.SaveChanges(); } } catch { isOperationSuccess = false; } //to complete this transaction if (isOperationSuccess) { ts.Complete(); } ts.Dispose(); } return(Task.Run(() => isOperationSuccess)); }