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));
        }
示例#2
0
        public Result <RewardPackage> CreateRewardPackage(CreateRewardPackageOptions options)
        {
            if (options == null)
            {
                return(Result <RewardPackage> .Failed(StatusCode.BadRequest, "Please fill in the form"));
            }

            options.Title       = options.Title?.Trim();
            options.Description = options.Description?.Trim();

            if (string.IsNullOrWhiteSpace(options.Title))
            {
                return(Result <RewardPackage> .Failed(StatusCode.BadRequest, "Please enter a Title"));
            }

            if (options.Quantity < 0)
            {
                return(Result <RewardPackage> .Failed(StatusCode.BadRequest, "Please enter a valid Quantity"));
            }

            if (options.MinAmount <= 0 || options.MinAmount == null)
            {
                return(Result <RewardPackage> .Failed(StatusCode.BadRequest, "Please enter a valid Amount"));
            }

            var reward = new RewardPackage
            {
                Title       = options.Title,
                Description = options.Description,
                MinAmount   = options.MinAmount,
                Quantity    = options.Quantity
            };

            return(Result <RewardPackage> .Succeed(reward));
        }
        public IActionResult Create([FromBody] CreateRewardPackageOptions options)
        {
            var result = rewardPackageService.CreateRewardPackage(options);

            if (!result.Success)
            {
                return(StatusCode((int)result.ErrorCode,
                                  result.ErrorText));
            }

            return(Json(result.Data));
        }
        public IActionResult CreateRewardPackage([FromBody] RewardFormOptions options)
        {
            var rewardPackageOptions = new CreateRewardPackageOptions
            {
                Title       = options.Title,
                Description = options.Description,
                MinAmount   = options.MinAmount,
                Quantity    = options.Quantity
            };

            var result = _projectService.AddRewardPackage(options.ProjectId, Globals.UserId, rewardPackageOptions);

            if (!result.Success)
            {
                return(StatusCode((int)result.ErrorCode,
                                  result.ErrorText));
            }

            return(Ok());
        }
示例#5
0
        public Result <RewardPackage> CreateRewardPackage(
            CreateRewardPackageOptions options)
        {
            if (options == null)
            {
                return(Result <RewardPackage> .ActionFailed(
                           StatusCode.BadRequest, "Null options"));
            }

            if (string.IsNullOrWhiteSpace(options.Description))
            {
                return(Result <RewardPackage> .ActionFailed(
                           StatusCode.BadRequest, "Null options"));
            }

            if (string.IsNullOrWhiteSpace(options.Name))
            {
                return(Result <RewardPackage> .ActionFailed(
                           StatusCode.BadRequest, "Null options"));
            }

            if (options.Amount == null || options.Amount <= 0)
            {
                return(Result <RewardPackage> .ActionFailed(
                           StatusCode.BadRequest, "Invalid Amount"));
            }

            var project = context_
                          .Set <Project>()
                          .Where(p => p.ProjectId == options.ProjectId)
                          .SingleOrDefault();

            if (project == null)
            {
                return(Result <RewardPackage> .ActionFailed(
                           StatusCode.BadRequest, "Invalid ProjectId"));
            }

            var rewardPackage = new RewardPackage()
            {
                Amount      = options.Amount,
                Description = options.Description,
                Name        = options.Name
            };

            foreach (var option in options.RewardOptions)
            {
                if (option == null)
                {
                    continue;
                }

                var createdReward = rewardService_.AddRewardToList(option);

                if (createdReward != null)
                {
                    rewardPackage.Rewards.Add(createdReward.Data);
                }
                else
                {
                    return(Result <RewardPackage> .ActionFailed(
                               StatusCode.BadRequest, "Invalid Rewards given"));
                }
            }

            project.RewardPackages.Add(rewardPackage);
            context_.Add(rewardPackage);

            var rows = 0;

            try
            {
                rows = context_.SaveChanges();
            }
            catch (Exception ex)
            {
                return(Result <RewardPackage> .ActionFailed(
                           StatusCode.InternalServerError, ex.ToString()));
            }

            if (rows <= 0)
            {
                return(Result <RewardPackage> .ActionFailed(
                           StatusCode.InternalServerError,
                           "Reward Package could not be created"));
            }

            return(Result <RewardPackage> .ActionSuccessful(rewardPackage));
        }