2026-03-18 11:47:06 +00:00
import ' ../../models/member.dart ' ;
import ' ../member_repository.dart ' ;
class MockMemberService implements MemberRepository {
static final _members = [ _member7 , _member42 , _member85 ] ;
int _indexOf ( int id ) {
final i = _members . indexWhere ( ( m ) = > m . id = = id ) ;
return i = = - 1 ? 0 : i ;
}
@ override Future < Member > first ( ) async = > _members . first ;
@ override Future < Member > last ( ) async = > _members . last ;
@ override Future < Member > show ( int id ) async = >
_members . firstWhere ( ( m ) = > m . id = = id , orElse: ( ) = > _members . first ) ;
@ override
Future < Member > prev ( int id ) async {
final i = _indexOf ( id ) ;
return _members [ i = = 0 ? _members . length - 1 : i - 1 ] ;
}
@ override
Future < Member > next ( int id ) async {
final i = _indexOf ( id ) ;
return _members [ ( i + 1 ) % _members . length ] ;
}
@ override
Future < Map < String , String > > search ( String term ) async {
final t = term . toLowerCase ( ) ;
final results = < String , String > { } ;
for ( final m in _members ) {
for ( final p in m . people ) {
if ( p . fullName . toLowerCase ( ) . contains ( t ) | | m . formattedId . contains ( t ) ) {
final key = ' ${ m . formattedId } ${ p . family . toString ( ) . padLeft ( 2 , ' 0 ' ) } ' ;
results [ key ] =
' ( ${ m . formattedId } - ${ p . family . toString ( ) . padLeft ( 2 , ' 0 ' ) } ) ${ p . lastName } , ${ p . firstName } ' ;
}
}
}
return results ;
}
}
// ── Datos mock ────────────────────────────────────────────────────────────────
final _member7 = Member (
id: 7 ,
regDate: ' 1993-01-01 ' ,
address: ' CALLE SALVADOR ESCUDERO, Nº3-2ºA ' ,
city: ' CARTAGENA ' ,
zip: ' 30205 ' ,
email: ' RICARDO.LEGAZ@GMAIL.COM ' ,
phone: ' 648101900 ' ,
bank: ' 0182 ' ,
bankOffice: ' 6855 ' ,
bankSecCode: ' 87 ' ,
bankAccount: ' 0201674767 ' ,
bankName: ' CAIXABANK ' ,
mandate: ' MNDT-00007 ' ,
type: ' FAMILIAR ' ,
fee: 33.80 ,
comment: ' ' ,
comment2: ' ' ,
paid: false ,
remSpecial: false ,
retenido: false ,
unregDate: null ,
unregReason: ' ' ,
2026-03-18 22:20:31 +00:00
monthlyFees: {
2025 : [ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 ] ,
2026 : [ 1 , 1 , 0 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ] ,
2027 : [ - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ] ,
2028 : [ - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ] ,
} ,
2026-03-18 11:47:06 +00:00
people: [
Person (
memberId: 7 , family: 1 ,
firstName: ' ANTONIO ' , lastName: ' PUENTE CARBALLES ' ,
dni: ' ' , birthDate: ' 1953-01-02 ' ,
phone: ' 633313501 ' , email: ' apcarballes@gmail.com ' ,
lopd: true , newsletter: true , bHealth: true , authorized: true , authorized2: false ,
) ,
Person (
memberId: 7 , family: 2 ,
firstName: ' POLONIA ' , lastName: ' COLMENAR SÁNCHEZ ' ,
dni: ' ' , birthDate: ' 1952-08-09 ' ,
phone: ' 670243473 ' , email: ' ' ,
lopd: true , newsletter: true , authorized: true , authorized2: false ,
) ,
Person (
memberId: 7 , family: 3 ,
firstName: ' RICARDO ' , lastName: ' LEGAZ RÍOS ' ,
dni: ' 23032266C ' , birthDate: ' 1961-04-21 ' ,
phone: ' 648101900 ' , email: ' RICARDO.LEGAZ@GMAIL.COM ' ,
lopd: true , newsletter: true , authorized: true , authorized2: true ,
) ,
Person (
memberId: 7 , family: 4 ,
firstName: ' CRISTINA ' , lastName: ' PUENTE COLMENAR ' ,
dni: ' 23019853TX ' , birthDate: ' 1978-10-15 ' ,
phone: ' 690728311 ' , email: ' CPUENTE.SPANIA@GMAIL.COM ' ,
lopd: true , newsletter: true , authorized: true , authorized2: true ,
) ,
Person (
memberId: 7 , family: 5 ,
firstName: ' MATILDA ' , lastName: ' LEGAZ PUENTE ' ,
dni: ' ' , birthDate: ' 2013-04-28 ' ,
phone: ' ' , email: ' ' ,
lopd: false , newsletter: false , authorized: false , authorized2: false ,
) ,
] ,
comments: [
MemberComment (
id: 1 ,
comment:
' 11.03.23 chema: viene a darse de baja pero va a intentar traspasar el abono a su hija. 12.03.23. Cristina: Su hija está interesada, en el caso de traspaso, toma nota. 13.03.25: LOS TITULARES 3 Y 4 HARÁN USO ACTIVO DE CLUB. ' ,
createdAt: ' 2023-03-11 ' ,
) ,
] ,
) ;
final _member42 = Member (
id: 42 ,
regDate: ' 2018-03-15 ' ,
address: ' Calle Mayor 12 ' ,
city: ' Madrid ' ,
zip: ' 28001 ' ,
email: ' socio@example.com ' ,
phone: ' 612345678 ' ,
bank: ' 0049 ' ,
bankOffice: ' 1500 ' ,
bankSecCode: ' 42 ' ,
bankAccount: ' 0123456789 ' ,
bankName: ' Santander ' ,
mandate: ' MNDT-00042 ' ,
type: ' INDIVIDUAL ' ,
fee: 25.50 ,
comment: ' Nota antigua importada del sistema anterior. ' ,
comment2: ' Revisado en auditoría 2024. ' ,
paid: false ,
remSpecial: false ,
retenido: false ,
unregDate: null ,
unregReason: ' ' ,
2026-03-18 22:20:31 +00:00
monthlyFees: {
2025 : [ 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 ] ,
2026 : [ 1 , 1 , 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ] ,
2027 : [ - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ] ,
2028 : [ - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ] ,
} ,
2026-03-18 11:47:06 +00:00
people: [
Person (
memberId: 42 , family: 1 ,
firstName: ' María ' , lastName: ' García López ' ,
dni: ' 12345678A ' , birthDate: ' 1985-03-15 ' ,
phone: ' 612345678 ' , email: ' maria@example.com ' ,
lopd: true , newsletter: true , authorized: true , authorized2: false ,
) ,
Person (
memberId: 42 , family: 2 ,
firstName: ' Carlos ' , lastName: ' García López ' ,
dni: ' 87654321B ' , birthDate: ' 1988-07-22 ' ,
phone: ' 699887766 ' , email: ' carlos@example.com ' ,
lopd: true , newsletter: false , authorized: true , authorized2: true ,
) ,
] ,
comments: [
MemberComment (
id: 10 ,
comment: ' Solicitó cambio de domiciliación bancaria el 05/01/2024. ' ,
createdAt: ' 2024-01-05 ' ,
) ,
MemberComment (
id: 11 ,
comment: ' Renovó cuota anual sin incidencias. ' ,
createdAt: ' 2024-09-01 ' ,
) ,
] ,
) ;
final _member85 = Member (
id: 85 ,
regDate: ' 2010-06-20 ' ,
address: ' Av. de la Constitución 45, 3B ' ,
city: ' Murcia ' ,
zip: ' 30008 ' ,
email: ' jlopez@correo.es ' ,
phone: ' 968112233 ' ,
bank: ' 2100 ' ,
bankOffice: ' 0001 ' ,
bankSecCode: ' 12 ' ,
bankAccount: ' 9876543210 ' ,
bankName: ' CaixaBank ' ,
mandate: ' MNDT-00085 ' ,
type: ' JUVENIL ' ,
fee: 18.00 ,
comment: ' ' ,
comment2: ' ' ,
paid: false ,
remSpecial: true ,
retenido: true ,
unregDate: null ,
unregReason: ' ' ,
2026-03-18 22:20:31 +00:00
monthlyFees: {
2025 : [ 1 , 1 , 1 , 1 , 1 , 0 , 4 , 0 , 0 , 0 , 0 , 0 ] ,
2026 : [ 0 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ] ,
2027 : [ - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ] ,
2028 : [ - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 , - 1 ] ,
} ,
2026-03-18 11:47:06 +00:00
people: [
Person (
memberId: 85 , family: 1 ,
firstName: ' Jorge ' , lastName: ' López Martínez ' ,
dni: ' 22334455C ' , birthDate: ' 2005-11-30 ' ,
phone: ' 968112233 ' , email: ' jlopez@correo.es ' ,
lopd: true , newsletter: true , authorized: true , authorized2: false ,
) ,
] ,
comments: [ ] ,
) ;