public Result <bool> UpdateRewardPackage(int?projectId, int?userId, int?rewardPackageId,
                                                 UpdateRewardPackageOptions updateRewardOptions)
        {
            if (projectId == null ||
                userId == null ||
                rewardPackageId == null ||
                updateRewardOptions.Quantity < 0 ||
                updateRewardOptions.MinAmount <= 0)
            {
                return(Result <bool> .Failed(StatusCode.BadRequest,
                                             "Project Or User Not Specified Or Update Options Not Valid"));
            }

            var project = GetProjectById(projectId);

            if (project == null)
            {
                return(Result <bool> .Failed(StatusCode.NotFound, "Project Not Found"));
            }

            if (Helpers.UserOwnsProject(_context, userId, projectId) == false)
            {
                return(Result <bool> .Failed(StatusCode.BadRequest, "Can Not Access A Project You Don't Own"));
            }

            if (project.Data.RewardPackages.Any(r => r.MinAmount == updateRewardOptions.MinAmount))
            {
                return(Result <bool> .Failed(StatusCode.BadRequest,
                                             "Can Not Update A Reward Package With The Same Value"));
            }


            var rewardPackageToUpdate = project.Data.RewardPackages
                                        .FirstOrDefault(rp => rp.RewardPackageId == rewardPackageId);

            var reward = _rewardService.UpdateRewardPackage(rewardPackageToUpdate, updateRewardOptions);

            if (reward == null)
            {
                return(Result <bool> .Failed(StatusCode.NotFound, "Reward Package Not Found"));
            }

            var rows = 0;

            try
            {
                rows = _context.SaveChanges();
            }
            catch (Exception ex)
            {
                return(Result <bool> .Failed(StatusCode.InternalServerError, ex.Message));
            }

            return(rows <= 0
                ? Result <bool> .Failed(StatusCode.InternalServerError, "Reward Package Could Not Be Updated")
                : Result <bool> .Succeed(true));
        }