Example #1
0
        public Dog GetDogDetails([FromBody] BaseAnimalRequest request)
        {
            Console.WriteLine(_operationId.GetOperationId());

            var dog = _animalStorage.GetAnimalDetails(request.AnimalId) as Dog;

            return(dog);
        }
Example #2
0
        public Cat GetCatDetails([FromBody] BaseAnimalRequest request)
        {
            Console.WriteLine(_operationId.GetOperationId());

            var cat = _animalStorage.GetAnimalDetails(request.AnimalId) as Cat;

            return(cat);
        }
Example #3
0
        public string TalkWithAnAnimal([FromBody] BaseAnimalRequest request)
        {
            Console.WriteLine(_operationId.GetOperationId());

            var animal = _animalStorage.GetAnimalDetails(request.AnimalId);

            return(animal?.Speak());
        }
Example #4
0
        public System.Web.Mvc.HttpStatusCodeResult Adopt([FromBody] BaseAnimalRequest request)
        {
            Console.WriteLine(_operationId.GetOperationId());

            var animal = _animalStorage.Remove(request.AnimalId);

            if (animal == null)
            {
                return(new System.Web.Mvc.HttpStatusCodeResult(HttpStatusCode.NoContent, "Animal with such ID does not stay in the shelter"));
            }

            return(new System.Web.Mvc.HttpStatusCodeResult(HttpStatusCode.OK, "Congratulations! You have just adopted " + animal.Name));
        }
Example #5
0
        public System.Web.Mvc.HttpStatusCodeResult FeedASpoiledFish([FromBody] BaseAnimalRequest request)
        {
            Console.WriteLine(_operationId.GetOperationId());

            var animal = _animalStorage.GetAnimalDetails(request.AnimalId);

            if (animal == null)
            {
                return(new System.Web.Mvc.HttpStatusCodeResult(HttpStatusCode.NoContent, "Animal with such ID does not stay in the shelter"));
            }

            var isAlive = animal.FeedASpoiledFish();

            if (!isAlive)
            {
                _animalStorage.Remove(request.AnimalId);
            }

            return(new System.Web.Mvc.HttpStatusCodeResult(HttpStatusCode.OK, "You have just fed " + animal.Name + " a spoiled fish! " + (isAlive ? "But he is alive." : "Now he is dead")));
        }
Example #6
0
        public System.Web.Mvc.HttpStatusCodeResult FeedATreat([FromBody] BaseAnimalRequest request)
        {
            Console.WriteLine(_operationId.GetOperationId());

            var animal = _animalStorage.GetAnimalDetails(request.AnimalId);

            if (animal == null)
            {
                return(new System.Web.Mvc.HttpStatusCodeResult(HttpStatusCode.NoContent, "Animal with such ID does not stay in the shelter"));
            }

            //Animal should not be adopted or talked with while he's eating.
            //Lock block added to avoid race condition.
            lock (animal)
            {
                animal.FeedATreat();

                _animalStorage.UpdateAnimal(request.AnimalId, animal);
            }

            return(new System.Web.Mvc.HttpStatusCodeResult(HttpStatusCode.OK, "You have just fed " + animal.Name + " a treat! Now his weight is " + animal.Weight));
        }