public async Task <VendingMachineStateDTO> GetUserStateAsync(User customer)
        {
            var deposit = await _userDepositRepository.GetAll()
                          .Where(x => x.UserId == customer.Id)
                          .SingleOrDefaultAsync();

            var creators = await _vMCreatorRepository.GetAll().ToListAsync();

            var creatorsDTO   = _mapper.Map <List <VMCreator>, List <CreatorProductDTO> >(creators);
            var purseCustomer = await _purseRepository.GetPurseAndCoinsAsync(customer.Id);

            var customerProducts = await _customerProductRepository.GetAll()
                                   .Where(x => x.CustomerId == customer.Id)
                                   .ToListAsync();

            var vmUser = await _userManager.FindByNameAsync(VMUSERNAME);

            var purseVM = await _purseRepository.GetPurseAndCoinsAsync(vmUser.Id);

            return(new VendingMachineStateDTO
            {
                Customer = new CustomerDTO
                {
                    AmountDeposited = deposit?.AmountOfDeposit ?? 0,
                    Purse = _mapper.Map <Purse, PurseDTO>(purseCustomer),
                    Products = _mapper.Map <List <CustomerProduct>, List <CustomerProductDTO> >(customerProducts)
                },
                VendingMachine = new VendingMachineDTO
                {
                    CreatorProducts = creatorsDTO,
                    Purse = _mapper.Map <Purse, PurseDTO>(purseVM)
                }
            });
        }