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));
        }