Skip to content

Commit cd6bd67

Browse files
committed
Merge remote-tracking branch 'origin/main' into MPDX-6970
2 parents 30414ee + 7cda47c commit cd6bd67

22 files changed

Lines changed: 1167 additions & 106 deletions

pages/api/graphql-rest.page.ts

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,26 @@ import { Resolvers } from './graphql-rest.page.generated';
1212
const typeDefs = gql`
1313
type Query {
1414
contactFilters(accountListId: ID!): [ContactFilter!]!
15+
taskAnalytics(accountListId: ID!): TaskAnalytics!
16+
}
17+
18+
type TaskAnalytics {
19+
id: ID!
20+
type: String!
21+
createdAt: ISO8601DateTime!
22+
lastElectronicNewsletterCompletedAt: ISO8601DateTime
23+
lastPhysicalNewsletterCompletedAt: ISO8601DateTime
24+
tasksOverdueOrDueTodayCounts: [OverdueOrDueTodayTaskAnalytic!]!
25+
totalTasksDueCount: Int!
26+
updatedAt: ISO8601DateTime!
27+
updatedInDbAt: ISO8601DateTime!
28+
}
29+
30+
scalar ISO8601DateTime
31+
32+
type OverdueOrDueTodayTaskAnalytic {
33+
label: String!
34+
count: Int!
1535
}
1636
1737
type ContactFilter {
@@ -39,6 +59,9 @@ const resolvers: Resolvers = {
3959
contactFilters: async (_source, { accountListId }, { dataSources }) => {
4060
return dataSources.mpdxRestApi.getContactFilters(accountListId);
4161
},
62+
taskAnalytics: async (_source, { accountListId }, { dataSources }) => {
63+
return dataSources.mpdxRestApi.getTaskAnalytics(accountListId);
64+
},
4265
},
4366
};
4467

@@ -95,6 +118,35 @@ class MpdxRestApi extends RESTDataSource {
95118
}),
96119
);
97120
}
121+
122+
async getTaskAnalytics(accountListId) {
123+
const { data } = await this.get(
124+
`tasks/analytics?filter[account_list_id]=${accountListId}`,
125+
);
126+
127+
const {
128+
attributes: {
129+
created_at,
130+
last_electronic_newsletter_completed_at,
131+
last_physical_newsletter_completed_at,
132+
tasks_overdue_or_due_today_counts,
133+
total_tasks_due_count,
134+
updated_at,
135+
updated_in_db_at,
136+
},
137+
} = data;
138+
139+
return {
140+
...data,
141+
createdAt: created_at,
142+
lastElectronicNewsletterCompletedAt: last_electronic_newsletter_completed_at,
143+
lastPhysicalNewsletterCompletedAt: last_physical_newsletter_completed_at,
144+
tasksOverdueOrDueTodayCounts: tasks_overdue_or_due_today_counts,
145+
totalTasksDueCount: total_tasks_due_count,
146+
updatedAt: updated_at,
147+
updatedInDbAt: updated_in_db_at,
148+
};
149+
}
98150
}
99151

100152
export interface Context {

src/components/Constants/LoadConstants.graphql

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,11 @@ query LoadConstants {
1010
}
1111
locations {
1212
id
13-
value
14-
}
15-
notifications {
16-
id
17-
value
1813
}
14+
# notifications {
15+
# id
16+
# value
17+
# }
1918
pledgeCurrencies {
2019
id
2120
value
@@ -48,9 +47,9 @@ query LoadConstants {
4847
key
4948
value
5049
}
51-
userNotificationTitles {
52-
id
53-
value
54-
}
50+
# userNotificationTitles {
51+
# id
52+
# value
53+
# }
5554
}
5655
}

src/components/Constants/UseApiConstants.test.tsx

Lines changed: 72 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -16,177 +16,160 @@ describe('LoadConstants', () => {
1616
"activities": Array [
1717
Object {
1818
"__typename": "IdValue",
19-
"id": "Sphere Box",
20-
"value": "Bridge",
21-
},
22-
Object {
23-
"__typename": "IdValue",
24-
"id": "Chisel",
25-
"value": "Shoes",
26-
},
27-
Object {
28-
"__typename": "IdValue",
29-
"id": "Man Spice Vulture",
30-
"value": "Roof Car-race Freeway",
19+
"id": "Signature Pepper Pants",
20+
"value": "Maze Box",
3121
},
3222
],
3323
"likelyToGiveOptions": Array [
3424
Object {
3525
"__typename": "IdValue",
36-
"id": "Rifle",
37-
"value": "Spice Apple",
26+
"id": "Cave Vacuum",
27+
"value": "Film",
3828
},
3929
],
4030
"locations": Array [
4131
Object {
4232
"__typename": "IdValue",
43-
"id": "Hammer",
44-
"value": "Swimming Pool",
33+
"id": "Computer Swimming Pool Chess Board",
4534
},
4635
Object {
4736
"__typename": "IdValue",
48-
"id": "Highway Onion",
49-
"value": "Boy Adult",
37+
"id": "Alphabet",
5038
},
5139
Object {
5240
"__typename": "IdValue",
53-
"id": "Needle Saddle",
54-
"value": "Jet fighter Cycle Pebble",
55-
},
56-
],
57-
"notifications": Array [
58-
Object {
59-
"__typename": "IdKeyValue",
60-
"id": "Eyes",
61-
"value": "Dung Shop",
41+
"id": "Aircraft Carrier",
6242
},
6343
],
6444
"pledgeCurrencies": Array [
6545
Object {
6646
"__typename": "IdKeyValue",
67-
"id": "Pocket Balloon",
68-
"value": "Family",
47+
"id": "Microscope Chocolates Snail",
48+
"value": "Film Vampire",
6949
},
50+
],
51+
"pledgeFrequencies": Array [
7052
Object {
7153
"__typename": "IdKeyValue",
72-
"id": "Bank",
73-
"value": "Aircraft Carrier Onion Crystal",
54+
"id": "Pyramid",
55+
"value": "Sun Kaleidoscope Ears",
7456
},
57+
],
58+
"pledgesReceived": Array [
7559
Object {
76-
"__typename": "IdKeyValue",
77-
"id": "Family",
78-
"value": "Salt",
60+
"__typename": "IdValue",
61+
"id": "Sphere Umbrella",
62+
"value": "Vacuum Pebble Spice",
7963
},
8064
Object {
81-
"__typename": "IdKeyValue",
82-
"id": "Flower Bathtub Mist",
83-
"value": "Compass",
65+
"__typename": "IdValue",
66+
"id": "Swimming Pool Ice",
67+
"value": "Festival Rocket",
8468
},
85-
],
86-
"pledgeFrequencies": Array [
8769
Object {
88-
"__typename": "IdKeyValue",
89-
"id": "Saddle Hat Prison",
90-
"value": "Game Hose Rope",
70+
"__typename": "IdValue",
71+
"id": "Plane Box Chief",
72+
"value": "Navy",
9173
},
92-
],
93-
"pledgesReceived": Array [
9474
Object {
9575
"__typename": "IdValue",
96-
"id": "Fungus Foot Chief",
97-
"value": "Drum Gloves",
76+
"id": "Festival Bathtub",
77+
"value": "Triangle",
9878
},
9979
],
10080
"preferredContactMethods": Array [
10181
Object {
10282
"__typename": "IdKeyValue",
103-
"id": "Bank Plane",
104-
"value": "Chisel Fan Meteor",
83+
"id": "Compass Carpet Explosive",
84+
"value": "Army Train PaintBrush",
10585
},
10686
Object {
10787
"__typename": "IdKeyValue",
108-
"id": "Horoscope",
109-
"value": "Vulture Jet fighter",
88+
"id": "Sports-car",
89+
"value": "Clown Game",
90+
},
91+
Object {
92+
"__typename": "IdKeyValue",
93+
"id": "Airforce",
94+
"value": "Potato Foot",
11095
},
11196
],
11297
"sendAppeals": Array [
11398
Object {
11499
"__typename": "IdValue",
115-
"id": "Swimming Pool",
116-
"value": "Army Carrot",
100+
"id": "Pillow",
101+
"value": "Arm",
102+
},
103+
Object {
104+
"__typename": "IdValue",
105+
"id": "Snail",
106+
"value": "Airport",
117107
},
118108
Object {
119109
"__typename": "IdValue",
120-
"id": "Rocket Computer Boy",
121-
"value": "Fire Typewriter Apple",
110+
"id": "Rock",
111+
"value": "Tapestry",
122112
},
123113
Object {
124114
"__typename": "IdValue",
125-
"id": "Hammer",
126-
"value": "Swimming Pool",
115+
"id": "Pepper Apple",
116+
"value": "Magnet Apple",
127117
},
128118
],
129119
"sendNewsletterOptions": Array [
130120
Object {
131121
"__typename": "IdValue",
132122
"id": "Mist",
133-
"value": "Dress Square",
123+
"value": "Comet Post-office Garden",
134124
},
135125
Object {
136126
"__typename": "IdValue",
137-
"id": "Mosquito Fan",
138-
"value": "Rifle Cappuccino Computer",
127+
"id": "Hose Fruit Highway",
128+
"value": "Money $$$$",
139129
},
140-
],
141-
"statuses": Array [
142130
Object {
143131
"__typename": "IdValue",
144-
"id": "Bottle Brain Sandpaper",
145-
"value": "Fan Girl",
132+
"id": "Child",
133+
"value": "Printer Magnet Dung",
146134
},
147135
Object {
148136
"__typename": "IdValue",
149-
"id": "Drum Slave",
150-
"value": "Knife",
137+
"id": "Sword",
138+
"value": "Staircase Pillow",
151139
},
140+
],
141+
"statuses": Array [
152142
Object {
153143
"__typename": "IdValue",
154-
"id": "Money $$$$ Liquid",
155-
"value": "Sun",
144+
"id": "Mouth Feather",
145+
"value": "Leather jacket Window",
156146
},
157147
Object {
158148
"__typename": "IdValue",
159-
"id": "Bridge Insect Woman",
160-
"value": "Horoscope Fruit",
149+
"id": "Shop Square",
150+
"value": "Album Bed",
161151
},
162-
],
163-
"times": Array [
164152
Object {
165-
"__typename": "Time",
166-
"key": 66,
167-
"value": "Surveyor Prison",
153+
"__typename": "IdValue",
154+
"id": "Pendulum Butterfly",
155+
"value": "Finger Rock Garden",
168156
},
169157
],
170-
"userNotificationTitles": Array [
171-
Object {
172-
"__typename": "IdKeyValue",
173-
"id": "Air Typewriter",
174-
"value": "Girl Toilet Circle",
175-
},
158+
"times": Array [
176159
Object {
177-
"__typename": "IdKeyValue",
178-
"id": "Meat Brain",
179-
"value": "Drill Baby Drill",
160+
"__typename": "Time",
161+
"key": 32,
162+
"value": "Snail Hose",
180163
},
181164
Object {
182-
"__typename": "IdKeyValue",
183-
"id": "Gas Spoon Bed",
184-
"value": "Feather Aircraft Carrier Bed",
165+
"__typename": "Time",
166+
"key": 53,
167+
"value": "Weapon",
185168
},
186169
Object {
187-
"__typename": "IdKeyValue",
188-
"id": "Sex Sunglasses Maze",
189-
"value": "Teeth",
170+
"__typename": "Time",
171+
"key": 15,
172+
"value": "Spice",
190173
},
191174
],
192175
}

src/components/Contacts/ContactDetails/ContactDetailsTab/ContactDetailsTab.graphql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,8 @@ query ContactDetailsTab($accountListId: ID!, $contactId: ID!) {
4040
lastName
4141
}
4242
website
43+
sendNewsletter
44+
greeting
45+
#TODO add Magazine
4346
}
4447
}

src/components/Contacts/ContactDetails/ContactDetailsTab/ContactDetailsTab.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ describe('ContactDetailTab', () => {
2222
}
2323
`);
2424
expect(result.current.data.contact.name).toMatchInlineSnapshot(
25-
`"Ship Star"`,
25+
`"Elephant Film Stomach"`,
2626
);
2727
});
2828
});
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { Box } from '@material-ui/core';
2+
import React, { ReactElement } from 'react';
3+
import { gqlMock } from '../../../../../../__tests__/util/graphqlMocking';
4+
import {
5+
ContactDetailsTabDocument,
6+
ContactDetailsTabQuery,
7+
ContactDetailsTabQueryVariables,
8+
} from '../ContactDetailsTab.generated';
9+
import { ContactDetailsTabMailing } from './ContactDetailsTabMailing';
10+
11+
export default {
12+
title: 'Contacts/Tab/ContactDetailsTab/Mailing',
13+
};
14+
15+
export const Default = (): ReactElement => {
16+
const mock = gqlMock<ContactDetailsTabQuery, ContactDetailsTabQueryVariables>(
17+
ContactDetailsTabDocument,
18+
{ variables: { accountListId: '111', contactId: '222' } },
19+
);
20+
return (
21+
<Box m={2}>
22+
<ContactDetailsTabMailing data={mock} />
23+
</Box>
24+
);
25+
};

0 commit comments

Comments
 (0)