コード例 #1
0
        public IActionResult CreateOrUpdateRewardUser([FromBody] CreateRewardUserOptions options)
        {
            var rewardUser = rewardUserService_.CreateOrUpdateRewardUser(options);

            if (rewardUser.Success)
            {
                return(Json(rewardUser.Data));
            }
            return(StatusCode((int)rewardUser.ErrorCode, rewardUser.ErrorText));
        }
コード例 #2
0
        public Result <bool> CreateOrUpdateRewardUser(CreateRewardUserOptions options)
        {
            if (options == null)
            {
                return(Result <bool> .CreateFailed(StatusCode.BadRequest, "You have to login first"));
            }
            var rewardUserTest = GetRewardUserById(options.UserId, options.RewardId);

            if (rewardUserTest.Success) //update
            {
                var rewardUser = rewardUserTest.Data;
                var project    = projectService_.GetProjectByRewardId(options.RewardId).Data;

                if (rewardUser == null)
                {
                    return(Result <bool> .CreateFailed(StatusCode.BadRequest, $"Backer with {options.UserId} was not found"));
                }

                if (rewardUser.IsValidQuantity(options.Quantity))
                {
                    rewardUser.Quantity = options.Quantity + rewardUser.Quantity;
                }



                if (!projectService_.UpdateCurrentFund(project).Success)
                {
                    return(Result <bool> .CreateFailed(StatusCode.InternalServerError, "Reward could not be bought"));
                }

                return(Result <bool> .CreateSuccessful(true));
            }
            else //create
            {
                var user    = userService_.GetUserById(options.UserId).Data;
                var reward  = rewardService_.GetRewardById(options.RewardId).Data;
                var project = projectService_.GetProjectByRewardId(options.RewardId).Data;
                if (user == null || reward == null || project == null)
                {
                    return(Result <bool> .CreateFailed(StatusCode.BadRequest, "User, project or reward could not be found"));
                }


                var rewardUser = new RewardUser()
                {
                    User     = user,
                    Reward   = reward,
                    Quantity = options.Quantity
                };

                if (!rewardUser.IsValidQuantity(options.Quantity))
                {
                    return(Result <bool> .CreateFailed(StatusCode.BadRequest, "Please check the quantity is valid"));
                }


                project.RewardUsers.Add(rewardUser);

                if (!projectService_.UpdateCurrentFund(project).Success)
                {
                    return(Result <bool> .CreateFailed(StatusCode.InternalServerError, "Reward could not be bought"));
                }

                return(Result <bool> .CreateSuccessful(true));
            }
        }