public async Task <Guid> CreateUserAsync(string name) { var user = _virtualPetsDbContext.Users.Add(new User(name)); await _virtualPetsDbContext.SaveChangesAsync().ConfigureAwait(false); return(user.Entity.Id); }
public async Task RaiseHunger(Guid animalId) { var animal = await _virtualPetsDbContext.Animals.FindAsync(animalId).ConfigureAwait(false); animal.RaiseHunger(); await _virtualPetsDbContext.SaveChangesAsync(); }
public async Task FeedAnimalAsync(Guid userId, Guid animalId) { var animal = await _virtualPetsDbContext.Animals.FindAsync(animalId).ConfigureAwait(false); ValidationHelper.ValidateNullAndOwnerOrThrow(userId, animal); animal.Feed(); await _virtualPetsDbContext.SaveChangesAsync(); }
public async Task <Guid> AdoptAnimalAsync(Guid userId, string animalName, AnimalType animalType) { if (await _virtualPetsDbContext.Users.FirstOrDefaultAsync(x => x.Id == userId).ConfigureAwait(false) == null) { throw new ArgumentException("The provided user does not exist"); } Animal newAnimal; switch (animalType) { case AnimalType.Dog: newAnimal = new Dog(userId, animalName); break; case AnimalType.Cat: newAnimal = new Cat(userId, animalName); break; case AnimalType.Bear: newAnimal = new Bear(userId, animalName); break; case AnimalType.Parrot: newAnimal = new Parrot(userId, animalName); break; default: throw new ArgumentException("We don't sell that kind of animal"); } await _virtualPetsDbContext.Animals.AddAsync(newAnimal).ConfigureAwait(false); await _virtualPetsDbContext.SaveChangesAsync().ConfigureAwait(false); return(newAnimal.Id); }