public async Task <UserResult> ConfirmBuyIntent(BuyIntentRequest request)
        {
            UserResult response = null;

            BuyIntentResult actualIntent = await AppRepository.Purchase.GetById(request.Id);

            if (actualIntent != null)
            {
                request = Mapper.Map <BuyIntentRequest>(actualIntent);

                await AppRepository.Purchase.ConfirmBuyIntent(request);

                response = await AppBusiness.User.GetById(actualIntent.UserId);

                if (response != null)
                {
                    AvailableTrapResult availableTrap = await AppBusiness.Purchase.GetAvailableTrapById(actualIntent.AvailableTrapId);

                    if (availableTrap != null)
                    {
                        TrapResult trap = await AppBusiness.Trap.GetByNameKey(availableTrap.NameKey);

                        UserTrapRequest userTrap = new UserTrapRequest();

                        userTrap.TrapId = trap.Id.ToString();
                        userTrap.Amount = availableTrap.Amount;

                        UserRequest userRequest = Mapper.Map <UserRequest>(response);

                        AppBusiness.User.AddTrap(userRequest, userTrap);

                        await AppRepository.User.UpdateTraps(userRequest.Id, userRequest.Traps);

                        response = await AppBusiness.User.GetById(userRequest.Id);
                    }
                }
            }

            return(response);
        }
        private AvailableTrapResult Parse(AvailableTrap availableTrap)
        {
            if (availableTrap != null)
            {
                AvailableTrapResult response = new AvailableTrapResult();

                response.Active     = availableTrap.Active;
                response.Id         = availableTrap.Id.ToString();
                response.KeyApple   = availableTrap.KeyApple;
                response.KeyGoogle  = availableTrap.KeyGoogle;
                response.KeyWindows = availableTrap.KeyWindows;
                response.NameKey    = availableTrap.NameKey;
                response.Amount     = availableTrap.Amount;
                response.Value      = availableTrap.Value;

                return(response);
            }
            else
            {
                return(null);
            }
        }