示例#1
0
        public ActionResult Claim(RewardClaimDTO dto)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            var rao = new RewardClaimRAO {
                GroupId = dto.GroupId, RewardId = dto.RewardId, ClaimedCount = dto.ClaimedCount, RewardCost = dto.RewardCost
            };

            var svc = CreateRewardService();

            if (svc.ClaimReward(rao))
            {
                return(RedirectToAction("Index", "Group", new { id = dto.GroupId }));
            }
            return(RedirectToAction("Index", "Group", new { id = dto.GroupId }));
        }
示例#2
0
        public bool ClaimReward(RewardClaimRAO rao)
        {
            using (var ctx = new ApplicationDbContext())
            {
                var groupMember = ctx.GroupMembers.Single(gm => gm.MemberId == _userId && gm.GroupId == rao.GroupId);
                var reward      = ctx.Rewards.Single(r => r.RewardId == rao.RewardId);

                if (groupMember.EarnedPoints < (reward.Cost * rao.ClaimedCount))
                {
                    return(false);
                }

                var entity = new ClaimedRewardEntity
                {
                    OwnerId      = groupMember.MemberId,
                    RewardId     = reward.RewardId,
                    ClaimedCount = rao.ClaimedCount
                };

                ctx.ClaimedRewards.Add(entity);
                return(ctx.SaveChanges() == 1);
            }
        }