204 lines
5.9 KiB
Dart
204 lines
5.9 KiB
Dart
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: '',
|
|
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: '',
|
|
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: '',
|
|
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: [],
|
|
);
|