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) } }); }