public async Task <long> AddAsync(TransactionCandidate transation)
 {
     using (var database = new TransactionDatabase())
     {
         return(await database.InsertTransactionAsync(transation));
     }
 }
        public async Task <long> InsertTransactionAsync(TransactionCandidate candidate)
        {
            MySqlCommand cmd = new MySqlCommand("sp_InsertTransaction", Connection)
            {
                CommandType = System.Data.CommandType.StoredProcedure
            };

            cmd.Parameters.Add(new MySqlParameter("@p_id", MySqlDbType.Int64));
            cmd.Parameters["@p_id"].Direction = ParameterDirection.Output;
            cmd.Parameters.AddWithValue("@p_from_account_id", candidate.FromAccountId);
            cmd.Parameters.AddWithValue("@p_to_account_id", candidate.ToAccountId);
            cmd.Parameters.AddWithValue("@p_user_id", candidate.UserId);
            cmd.Parameters.AddWithValue("@p_amount", candidate.Amount);
            cmd.Parameters.AddWithValue("@p_registration_date", candidate.RegistrationDate);
            cmd.Parameters.AddWithValue("@p_description", candidate.Description);
            cmd.Parameters.AddWithValue("@p_status", candidate.Status);

            await cmd.ExecuteNonQueryAsync();

            return(Convert.ToInt64(cmd.Parameters["@p_id"].Value));
        }