public IActionResult Post([FromBody] RegisteredAnimal rAnimal)
        {
            try
            {
                string userId      = User.FindFirst(ClaimTypes.PrimarySid).Value;
                var    addedAnimal = RegisteredAnimalMapper.StoA(_privateProfileService.Add(userId, RegisteredAnimalMapper.AtoS(rAnimal)));

                return(Ok(addedAnimal));
            }
            catch (System.Exception s)
            {
                return(BadRequest());
            }
        }
        public RegisteredAnimal Add(string userId, RegisteredAnimal animal)
        {
            animal.UploadDate = DateTimeOffset.Now;
            var databaseLayerAnimal = RegisteredAnimalMapper.StoD(animal);
            var addedAnimal         = _registeredAnimalProvider.Add(databaseLayerAnimal);

            QRCodeData qrCodeData  = _qrGenerator.CreateQrCode(addedAnimal.Id.ToString(), QRCodeGenerator.ECCLevel.Q);
            QRCode     qrCode      = new QRCode(qrCodeData);
            Bitmap     qrCodeImage = qrCode.GetGraphic(20);

            var qrId = _fileService.Upload(userId, _fileService.AsJpeg(qrCodeImage), "image/jpeg");

            addedAnimal.QR     = qrId.ToString();
            addedAnimal.UserId = userId;
            _registeredAnimalProvider.Update(addedAnimal);

            _unitOfWork.Commit();

            return(RegisteredAnimalMapper.DtoS(addedAnimal));
        }
        public IActionResult Put(string id, [FromBody] RegisteredAnimal rAnimal)
        {
            try
            {
                string userId        = User.FindFirst(ClaimTypes.PrimarySid).Value;
                var    updatedAnimal = RegisteredAnimalMapper.StoA(_privateProfileService.Edit(userId, new Guid(id), RegisteredAnimalMapper.AtoS(rAnimal)));

                return(Ok(updatedAnimal));
            }
            catch (ApiException exp)
            {
                return(StatusCode(
                           exp.GetStatusCode(),
                           Error.CreateBuilder().SetErrorMessage(exp.GetErrorMessage()).Build()
                           ));
            }
            catch
            {
                return(BadRequest());
            }
        }
        public RegisteredAnimal Edit(string userId, Guid animalId, RegisteredAnimal animal)
        {
            var rAnimal = _registeredAnimalProvider.Get(animalId);

            if (rAnimal == null)
            {
                throw new ApiException(HttpStatusCode.Forbidden, ApiError.NotFound);
            }
            if (!rAnimal.UserId.Equals(userId))
            {
                throw new ApiException(HttpStatusCode.Forbidden, ApiError.AccessForbidden);
            }

            rAnimal.Image = animal.Image;
            rAnimal.Name  = animal.Name;

            var updatedAnimal = _registeredAnimalProvider.Update(rAnimal);

            _unitOfWork.Commit();

            return(RegisteredAnimalMapper.DtoS(updatedAnimal));
        }