kuni il y a 3 semaines
Parent
révision
22575404f9
2 fichiers modifiés avec 41 ajouts et 18 suppressions
  1. 31
    18
      src/app/pages/event/event.ts
  2. 10
    0
      src/app/services/family-service.ts

+ 31
- 18
src/app/pages/event/event.ts Voir le fichier

@@ -43,33 +43,45 @@ export class EventPage {
43 43
     private dankaService: DankaService,
44 44
     private familyService: FamilyService,
45 45
     private eventService: EventService,
46
-  ) {
47
-    this.createEventTargetList();
46
+  ) { }
47
+
48
+  ngOnInit(): void {
49
+    this.init();
50
+  }
51
+
52
+  async init(): Promise<void> {
53
+    await this.createEventTargetList();
48 54
   }
49 55
 
50
-  createEventTargetList(): void {
56
+  async createEventTargetList(): Promise<void> {
51 57
     this.eventTargets = [];
52 58
 
53
-    this.familyService.getFamilyList().forEach((family) => {
59
+    const families = await this.familyService.getFamilyList();
60
+
61
+    for (const family of families) {
54 62
       const birthDate = this.parseDate(family.birthDate);
55
-      if (!birthDate) {
56
-        return;
57
-      }
63
+      if (!birthDate) continue;
58 64
 
59 65
       const age = this.targetYear - birthDate.getFullYear();
60 66
       const eventTypes = this.getEventTypes(age);
61
-      if (eventTypes.length === 0) {
62
-        return;
63
-      }
67
+      if (eventTypes.length === 0) continue;
64 68
 
65
-      const danka = this.dankaService.getDankaById(family.dankaId);
66
-      eventTypes.forEach((eventType) => {
67
-        if (this.selectedEventType !== 'all' && this.selectedEventType !== eventType) {
68
-          return;
69
+      // ★ここが修正ポイント(await)
70
+      const danka = await this.dankaService.getDankaById(family.dankaId);
71
+
72
+      for (const eventType of eventTypes) {
73
+        if (
74
+          this.selectedEventType !== 'all' &&
75
+          this.selectedEventType !== eventType
76
+        ) {
77
+          continue;
69 78
         }
70 79
 
71 80
         const id = `${family.id}-${eventType}`;
72
-        const defaultStatus: EventStatus = Number(family.id) % 2 === 0 ? '案内済' : '未案内';
81
+
82
+        const defaultStatus: EventStatus =
83
+          Number(family.id) % 2 === 0 ? '案内済' : '未案内';
84
+
73 85
         this.eventTargets.push({
74 86
           id,
75 87
           dankaId: family.dankaId,
@@ -83,12 +95,13 @@ export class EventPage {
83 95
           note: family.note,
84 96
           status: this.eventService.getEventStatus(id, defaultStatus),
85 97
         });
86
-      });
87
-    });
98
+      }
99
+    }
88 100
 
89 101
     this.eventTargets.sort(
90 102
       (a, b) =>
91
-        this.getEventSortOrder(a.eventType) - this.getEventSortOrder(b.eventType) ||
103
+        this.getEventSortOrder(a.eventType) -
104
+        this.getEventSortOrder(b.eventType) ||
92 105
         a.age - b.age ||
93 106
         a.name.localeCompare(b.name, 'ja'),
94 107
     );

+ 10
- 0
src/app/services/family-service.ts Voir le fichier

@@ -58,4 +58,14 @@ export class FamilyService {
58 58
     const ref = doc(db, this.path, id);
59 59
     await deleteDoc(ref);
60 60
   }
61
+
62
+  //家族情報を全件取得する処理
63
+  async getFamilyList(): Promise<Family[]> {
64
+    const snap = await getDocs(collection(db, this.path));
65
+
66
+    return snap.docs.map(d => ({
67
+      id: d.id,
68
+      ...(d.data() as Omit<Family, 'id'>),
69
+    }));
70
+  }
61 71
 }

Chargement…
Annuler
Enregistrer