public DTOResponse <DTOPet> Create(DTOPet createPetInfo)
 {
     return(_petDomain.Create(createPetInfo));
 }
        public DTOResponse <DTOUser> Create(DTOCreateUser createUserInfo)
        {
            if (string.IsNullOrWhiteSpace(createUserInfo.Email) || string.IsNullOrWhiteSpace(createUserInfo.Password) || string.IsNullOrWhiteSpace(createUserInfo.ConfirmPassword))
            {
                return(new DTOResponse <DTOUser>()
                {
                    Code = 400,
                    Message = "Email, Password and Confirm Password are required!"
                });
            }

            var getUserResponse = GetUserByEmail(createUserInfo.Email);

            if (getUserResponse.Code == 200)
            {
                return(new DTOResponse <DTOUser>()
                {
                    Code = 400,
                    Message = "This user email is already registered!"
                });
            }

            if (createUserInfo.Password != createUserInfo.ConfirmPassword)
            {
                return(new DTOResponse <DTOUser>()
                {
                    Code = 400,
                    Message = "The password and confirm password dont match!"
                });
            }

            if (!createUserInfo.HasAcceptedTermsAndPrivacyPolice)
            {
                return(new DTOResponse <DTOUser>()
                {
                    Code = 400,
                    Message = "The user must accept Terms and Privacy police!"
                });
            }

            createUserInfo.User.Email       = createUserInfo.Email;
            createUserInfo.User.AccessLevel = UserAccessLevel.Normal;

            var userModel = createUserInfo.User.ToModel();

            var passwordHash = SecurePasswordHasher.Hash(createUserInfo.Password);

            userModel.PasswordHash = passwordHash;

            _userCollection.InsertOne(userModel);

            getUserResponse = GetUserByEmail(createUserInfo.Email);
            var existingUser = getUserResponse.Data;

            createUserInfo.Pet.UserId = existingUser.Id;

            if (createUserInfo.Pet != null)
            {
                _petDomain.Create(createUserInfo.Pet);
            }

            LoadUserInfo(existingUser);

            return(new DTOResponse <DTOUser>()
            {
                Code = 200,
                Data = existingUser
            });
        }