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