public async Task <BuyIntentResult> GetById(string id)
        {
            BuyIntent buyIntent = await AppRepository.EntitiesContext.BuyIntents
                                  .Include(b => b.AvailableTrap)
                                  .Include(b => b.User)
                                  .FirstOrDefaultAsync(o => o.Id == new Guid(id));

            return(Parse(buyIntent));
        }
        public async Task <BuyIntentResult> InsertBuyIntent(BuyIntentRequest request)
        {
            BuyIntent intent = Parse(request);

            AppRepository.EntitiesContext.BuyIntents.Add(intent);

            await AppRepository.EntitiesContext.SaveChangesAsync();

            return(Parse(intent));
        }
        public async Task DenyBuyIntent(BuyIntentRequest request)
        {
            BuyIntent buyIntent = await AppRepository.EntitiesContext.BuyIntents.FindAsync(new Guid(request.Id));

            buyIntent.DateResult = DateTime.UtcNow;
            buyIntent.Processed  = true;
            buyIntent.Realized   = false;

            await AppRepository.EntitiesContext.SaveChangesAsync();
        }
        private BuyIntent Parse(BuyIntentRequest request)
        {
            if (request != null)
            {
                BuyIntent response = new BuyIntent();

                response.AvailableTrap = AppRepository.EntitiesContext.AvailableTraps.Find(new Guid(request.AvailableTrapId));
                response.DateIntent    = request.DateIntent;
                response.DateResult    = request.DateResult;
                response.Processed     = request.Processed;
                response.Realized      = request.Realized;
                response.StoreKey      = request.StoreKey;
                response.User          = AppRepository.EntitiesContext.Users.Find(new Guid(request.UserId));

                return(response);
            }
            else
            {
                return(null);
            }
        }
        private BuyIntentResult Parse(BuyIntent request)
        {
            if (request != null)
            {
                BuyIntentResult response = new BuyIntentResult();

                response.Id = request.Id.ToString();
                response.AvailableTrapId = request.AvailableTrap.Id.ToString();
                response.DateIntent      = request.DateIntent;
                response.DateResult      = request.DateResult;
                response.Processed       = request.Processed;
                response.Realized        = request.Realized;
                response.StoreKey        = request.StoreKey;
                response.UserId          = request.User.Id.ToString();

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