// POST: api/UserRewardPoints
        public IHttpActionResult UserGetPointByCourseCompleted(UserGetPointByCourseCompleted model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var getUser = db.User.Find(model.UserId);

            if (getUser == null)
            {
                return(BadRequest("User not exist"));
            }

            var getActivityPoint = db.RewardActivityPoint.Where(a => a.CourseId == model.CourseId && a.Display == true).FirstOrDefault();

            if (getActivityPoint == null)
            {
                return(BadRequest("Course not exist"));
            }

            //check if already received
            var getUserReward = db.UserRewardPoints.Where(r => r.UserId == model.UserId && r.CourseId == model.CourseId).FirstOrDefault();

            if (getUserReward != null)
            {
                return(BadRequest("This user already received points for this course"));
            }

            var userRewardPoints = new UserRewardPoints
            {
                CourseId       = getActivityPoint.CourseId,
                PointsReceived = getActivityPoint.Value,
                UserId         = model.UserId,
                RewardType     = RewardType.ActivityReward,
                DateReceived   = DateTime.Now, //model.DateReceived,
                Display        = true
            };

            db.UserRewardPoints.Add(userRewardPoints);
            db.SaveChanges();

            var tempObj = new
            {
                Course_Name     = getActivityPoint.Course.Title,
                Course_Id       = model.CourseId,
                Points_Received = userRewardPoints.PointsReceived,
                Date_Received   = userRewardPoints.DateReceived,
                User_Name       = userRewardPoints.User.Name,
                User_Id         = model.UserId
            };

            return(Ok(tempObj));
        }
        // DELETE: api/UserRewardPoints/5
        public IHttpActionResult Delete(int id)
        {
            UserRewardPoints model = db.UserRewardPoints.Find(id);

            if (model == null)
            {
                return(BadRequest());
            }

            model.Display = false;
            db.UserRewardPoints.Attach(model);
            db.Entry(model).Property(x => x.Display).IsModified = true;
            db.Configuration.ValidateOnSaveEnabled = true;
            db.SaveChanges();

            return(Ok());
        }
        // POST: api/UserRewardPoints
        public IHttpActionResult Post(CreateUserRewardPointsModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var userRewardPoints = new UserRewardPoints
            {
                CourseId       = model.CourseId.Value,
                PointsReceived = model.PointsReceived,
                UserId         = model.UserId,
                RewardType     = RewardType.ActivityReward,
                DateReceived   = DateTime.Now, //model.DateReceived,
                Display        = true
            };

            db.UserRewardPoints.Add(userRewardPoints);
            db.SaveChanges();
            return(Ok(userRewardPoints));
        }
        public IHttpActionResult AwardPoints(CreateUserRewardPointsModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var userRewardPoints = new UserRewardPoints
            {
                PointsReceived = model.PointsReceived,
                UserId         = model.UserId,
                AwardReason    = model.AwardReason,
                RewardType     = RewardType.AdminReward,
                RewardedBy     = model.RewardedBy,
                DateReceived   = DateTime.Now, //model.DateReceived,
                Display        = true
            };

            db.UserRewardPoints.Add(userRewardPoints);
            db.SaveChanges();
            return(Ok(userRewardPoints));
        }