public async Task <IActionResult> GetAnimalByAnimalId(long animalId)
        {
            var query = new GetAnimalByAnimalIdQuery {
                AnimalId = animalId
            };

            var createAnimalResponse = await _mediator.Send(query);

            var restResult = createAnimalResponse.ToRestResult(HttpStatusCode.NotFound);

            return(ObjectResultExtension.CreateResponse(restResult));
        }
        public async Task <IActionResult> Post([FromBody] AnimalPayload payload)
        {
            // todo : enable async-preferred for animal-post queue
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var createAnimalResponse = await _mediator.Send(CreateAnimalCommand.Create(payload, Request));

            var result = createAnimalResponse.ToRestResult(HttpStatusCode.Created);

            return(ObjectResultExtension.CreateResponse(result));
        }
        public async Task <IActionResult> Get(string deviceCompositeKey)
        {
            var query = new GetAnimalByDeviceIdentifierQuery {
                RequestId = Request.GetRequestId1()
            };

            var deviceIdentifier = deviceCompositeKey.GetDeviceIdentifier();

            if (deviceIdentifier.IsNlisId())
            {
                query.NlisId = deviceIdentifier;
            }
            else
            {
                query.RfId = deviceIdentifier;
            }

            var createAnimalResponse = await _mediator.Send(query);

            var restResult = createAnimalResponse.ToRestResult(HttpStatusCode.NotFound);

            return(ObjectResultExtension.CreateResponse(restResult));
        }