public void RegistreUser(IUser user)
        {
            var isUserChecked = this.IsUserInformationValidate(user);

            CheckAndCreatTableInBase();
            var userHashedPassword = HashingSystem.Hash(user.Password);

            if (isUserChecked)
            {
                try
                {
                    var insertUserQuery = "INSERT INTO users(FirstName, LastName, Resident, " +
                                          "PrivateId, RegistrationIp, Language_, " +
                                          "Email, Password_, Mobile, DateOfBirth," +
                                          "RegistrationDate, Country, Region," +
                                          "City, Address1, Address2)" +
                                          "VALUES" +
                                          $"('{user.FirstName}','{user.LastName}','{user.Resident}'," +
                                          $"'{user.PrivateID}','{user.RegistrarionIP}','{user.Language}'," +
                                          $"'{user.Email}','{userHashedPassword}','{user.Mobile}','{user.DateOfBirth}'," +
                                          $"'{user.RegistrationDate}','{user.UserAddress.Country}','{user.UserAddress.Region}'," +
                                          $"'{user.UserAddress.City}','{user.UserAddress.Addres1}','{user.UserAddress.Address2}');";

                    var connection = new MySqlConnection(_connectionString);

                    var myCommand = new MySqlCommand(insertUserQuery, connection);
                    connection.Open();
                    var reader = myCommand.ExecuteReaderAsync();

                    connection.Close();
                }
                catch (Exception e)
                {
                    var exeption = e.Message;
                }
            }
            else
            {
                throw new ArgumentNullException("User is null or user's some parameter is null or empty");
            }
        }
        public async Task <IUser> LoginUserAsync(string email, string password) //informaciis gamomtani esaa ubralod daloginebasac ase gavaketebdi
                                                                                //mibrundeba konkretuli obiekti tavisi monacemebit..
                                                                                //am obiekts shemdeg UI shi gamoikeneb
        {
            var isParametersNullOrEmpty =
                this.IsStringsNullOrEmpty(email, password);

            if (isParametersNullOrEmpty)
            {
                throw new ArgumentNullException("Email or password is null or empty");
            }

            var findUserInBaseByEmailQuery = "SELECT * FROM users " +
                                             "WHERE " +
                                             $"Email = '{email}'";

            try
            {
                using (MySqlConnection connection = new MySqlConnection(_connectionString))
                {
                    var createfindInformationCommand = new MySqlCommand(findUserInBaseByEmailQuery, connection);
                    connection.Open();
                    var result = await createfindInformationCommand.ExecuteReaderAsync();

                    while (result.Read())
                    {
                        var userPassword = result.ElementAt(8).ToString();

                        var isVerified = HashingSystem.Verify(password, userPassword);

                        if (isVerified)
                        {
                            var userAddress = new Address
                            {
                                Country  = result.ElementAt(12).ToString(),
                                Region   = result.ElementAt(13).ToString(),
                                City     = result.ElementAt(14).ToString(),
                                Addres1  = result.ElementAt(15).ToString(),
                                Address2 = result.ElementAt(16).ToString(),
                            };

                            var currentUser = new User
                            {
                                FirstName        = result.ElementAt(1).ToString(),
                                LastName         = result.ElementAt(2).ToString(),
                                Resident         = result.ElementAt(3).ToString(),
                                PrivateID        = result.ElementAt(4).ToString(),
                                RegistrarionIP   = result.ElementAt(5).ToString(),
                                Language         = result.ElementAt(6).ToString(),
                                Email            = result.ElementAt(7).ToString(),
                                Mobile           = result.ElementAt(9).ToString(),
                                DateOfBirth      = Convert.ToDateTime(result.ElementAt(10).ToString()),
                                RegistrationDate = Convert.ToDateTime(result.ElementAt(11).ToString()),
                                UserAddress      = userAddress
                            };
                            return(currentUser);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                var exep = ex.Message;
            }

            return(null);
        }