Beispiel #1
0
 static Pet ToPet(PetDataModel petDataModel, PersonDataModel personDataModel)
 {
     return(new Pet()
     {
         name = petDataModel.name,
         type = petDataModel.type,
         ownerGender = personDataModel.gender
     });
 }
Beispiel #2
0
        public async Task Handle(AdoptPetCommand command)
        {
            Access.CheckRole("Admin");

            var item = new PetDataModel()
            {
                ID      = command.PetID,
                BreedID = command.BreedID,
                Name    = command.Name
            };
            await Repo.PersistAsync(new Create <PetDataModel>(item));
        }
Beispiel #3
0
        public async Task Handle(LetPetOutToPoopCommand command)
        {
            Access.CheckRole("Admin");

            var testStream = await Bus.Call <IWeatherQueryProvider>().TestStreams();

            using (var ms = new MemoryStream())
            {
                await testStream.CopyToAsync(ms);

                var result = Encoding.UTF8.GetString(ms.ToArray());
            }

            var weather = await Bus.Call <IWeatherQueryProvider>().GetWeather();

            if (
                (weather.WeatherType & WeatherType.Rain) == WeatherType.Rain ||
                (weather.WeatherType & WeatherType.Hail) == WeatherType.Hail ||
                (weather.WeatherType & WeatherType.Tornado) == WeatherType.Tornado ||
                (weather.WeatherType & WeatherType.Hurricane) == WeatherType.Hurricane ||
                (weather.WeatherType & WeatherType.Asteroid) == WeatherType.Asteroid ||
                (weather.WeatherType & WeatherType.Sharks) == WeatherType.Sharks
                )
            {
                var name = Repo.Query(new QuerySingle <PetDataModel>(x => x.ID == command.PetID, new Graph <PetDataModel>(
                                                                         x => x.Name
                                                                         ))).Name;
                throw new Exception($"{name} will not go out to poop in {weather.WeatherType.EnumName()} weather.");
            }

            var item = new PetDataModel()
            {
                ID         = command.PetID,
                LastPooped = DateTime.UtcNow
            };

            await Repo.PersistAsync(new Update <PetDataModel>(item, new Graph <PetDataModel>(
                                                                  x => x.LastPooped
                                                                  )));
        }