public Result <bool> AddRewardPackage(int?projectId, int?userId,
                                              CreateRewardPackageOptions createRewardOptions)
        {
            if (createRewardOptions == null)
            {
                return(Result <bool> .Failed(StatusCode.BadRequest,
                                             "Please fill in the form"));
            }

            if (projectId == null || userId == null)
            {
                return(Result <bool> .Failed(StatusCode.BadRequest,
                                             "Project or User Not Specified"));
            }

            var project = GetProjectById(projectId);

            if (!project.Success)
            {
                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.Title.ToLower().Equals(createRewardOptions.Title.ToLower())))
            {
                return(Result <bool> .Failed(StatusCode.BadRequest,
                                             "A Reward Package with the same title already exists"));
            }

            var rewardResult = _rewardService.CreateRewardPackage(createRewardOptions);

            if (rewardResult.Success)
            {
                project.Data.RewardPackages.Add(rewardResult.Data);
            }
            else
            {
                return(Result <bool> .Failed(rewardResult.ErrorCode,
                                             rewardResult.ErrorText));
            }

            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 Created ")
                : Result <bool> .Succeed(true));
        }