public override Account Get(Int64 id)
        {
            try
            {
                using (var cmd = DbConnection().CreateCommand())
                {
                    cmd.CommandText = $"SELECT * FROM {tableName} WHERE Id=@Id ";
                    cmd.Parameters.AddWithValue("@Id", id);

                    var reader = cmd.ExecuteReader();

                    if (reader.Read())
                    {
                        var statementEntryRepository = new StatementEntryRepository();

                        return(new Account
                        {
                            Id = reader.GetFieldValue <Int64>("Id"),
                            BranchNumber = reader.GetFieldValue <string>("BranchNumber"),
                            AccountNumber = reader.GetFieldValue <string>("AccountNumber"),
                            ClientTaxId = reader.GetFieldValue <string>("ClientTaxId"),
                            Balance = reader.GetFieldValue <double>("Balance"),
                            LastBalanceUpdate = DateTimeExtension.FromUnixTimeStamp(reader.GetFieldValue <Int64>("LastBalanceUpdate")),
                            StatementEntries = statementEntryRepository.GetByAccountId(id)
                        });
                    }

                    return(null);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public Account GetByBranchNumberAndAccountNumber(string branchNumber, string accountNumber)
        {
            try
            {
                using (var cmd = DbConnection().CreateCommand())
                {
                    cmd.CommandText = $"SELECT * FROM {tableName} WHERE BranchNumber=@BranchNumber AND AccountNumber=@AccountNumber ";
                    cmd.Parameters.AddWithValue("@BranchNumber", branchNumber);
                    cmd.Parameters.AddWithValue("@AccountNumber", accountNumber);

                    var reader = cmd.ExecuteReader();

                    if (reader.Read())
                    {
                        return(new Account
                        {
                            Id = reader.GetFieldValue <int>("Id"),
                            BranchNumber = reader.GetFieldValue <string>("BranchNumber"),
                            AccountNumber = reader.GetFieldValue <string>("AccountNumber"),
                            ClientTaxId = reader.GetFieldValue <string>("ClientTaxId"),
                            Balance = reader.GetFieldValue <double>("Balance"),
                            LastBalanceUpdate = DateTimeExtension.FromUnixTimeStamp(reader.GetFieldValue <int>("LastBalanceUpdate"))
                        });
                    }

                    return(null);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
 private static StatementEntry ToEntity(DbDataReader reader)
 {
     return(new StatementEntry
     {
         Id = reader.GetFieldValue <Int64>("Id"),
         AccountId = reader.GetFieldValue <Int64>("AccountId"),
         Date = DateTimeExtension.FromUnixTimeStamp(reader.GetFieldValue <Int64>("EntryDate")),
         MovementType = (MovementType)reader.GetFieldValue <int>("MovementType"),
         Value = reader.GetFieldValue <double>("Value"),
     });
 }