///<summary>
        ///Implements IUserManagemetService.AddDog
        ///</summary>
        public void AddDog(DogToBeAdded dogToBeAdded, Guid ownerId)
        {
            if (dogToBeAdded.Equals(null))
            {
                throw new ArgumentNullException();
            }

            using (var connection = new SqlConnection(_connectionString))
            {
                connection.Open();

                var query = @"INSERT INTO [Dog] (Id, Name, Age, Gender, Breed, Owner, Specifics, ProfilePicturePath, City) 
                              VALUES (newid(), @Name, @Age, @Gender, @Breed, @Owner, @Specifics, @ProfilePicturePath, @City)";

                var cityId = GetOwnersCityId(connection, ownerId);

                if (dogToBeAdded.ProfilePicturePath == "")
                {
                    dogToBeAdded.ProfilePicturePath = _defaultProfilePicture;
                }

                var rowsAffected = connection.Execute(query, new
                {
                    Name               = dogToBeAdded.Name,
                    Age                = dogToBeAdded.Age,
                    Gender             = dogToBeAdded.Gender,
                    Breed              = GetBreedId(connection, dogToBeAdded.Breed),
                    Owner              = ownerId,
                    Specifics          = dogToBeAdded.Specifics,
                    ProfilePicturePath = dogToBeAdded.ProfilePicturePath,
                    City               = cityId
                });
            }
        }
        public IActionResult Add([FromBody] DogToBeAdded dogToBeAdded)
        {
            try
            {
                var userId = User.Identity.GetUserId();
                _userManagementService.AddDog(dogToBeAdded, Guid.Parse(userId));

                return(Ok(new { Success = true }));
            }
            catch (Exception exception)
            {
                return(new ObjectResult(new
                {
                    Error = exception.Message
                })
                {
                    StatusCode = StatusCodes.Status500InternalServerError
                });
            }
        }
        public void AddDog_PostQuerySuccessfullyExecuted_ReturnsOkObjectresult()
        {
            var id  = Guid.NewGuid();
            var dog = new DogToBeAdded();

            var userManagementServiceMock = new Mock <IUserManagementService>();

            userManagementServiceMock.Setup(x => x.AddDog(dog, id));

            var userManagementController = new UserManagementController(userManagementServiceMock.Object);

            var claims = new List <Claim>()
            {
                new Claim(ClaimTypes.NameIdentifier, id.ToString())
            };
            var identity        = new ClaimsIdentity(claims);
            var claimsPrincipal = new ClaimsPrincipal(identity);

            var httpContextMock = new Mock <Microsoft.AspNetCore.Http.HttpContext>();

            httpContextMock.Setup(c => c.User).Returns(claimsPrincipal);

            var actionContext = new ActionContext()
            {
                ActionDescriptor = new Microsoft.AspNetCore.Mvc.Controllers.ControllerActionDescriptor(),
                RouteData        = new Microsoft.AspNetCore.Routing.RouteData()
            };

            actionContext.HttpContext = httpContextMock.Object;

            var controllerContext = new ControllerContext(actionContext);

            userManagementController.ControllerContext = controllerContext;

            var result = userManagementController.Add(dog);

            Assert.IsTrue(result.GetType() == typeof(OkObjectResult));
        }