Skip to content

Commit 290d339

Browse files
authored
[MDS-6946] Adjustment to make general contact option determine if it shows in minespace (#3941)
* adjustment to make general contact option determine if it shows in minespace * adjustment to tests * removing unused variables
1 parent 5265448 commit 290d339

6 files changed

Lines changed: 255 additions & 12 deletions

File tree

services/core-api/app/api/ministry_contacts/models/ministry_contact.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def find_ministry_contacts_by_mine_region(cls, mine_region_code, is_major_mine=N
104104

105105
@classmethod
106106
def find_ministry_general_contacts(cls):
107-
return cls.query.filter_by(is_general_contact=True).filter_by(deleted_ind=False)
107+
return cls.query.filter_by(is_general_contact=True, mine_region_code=None).filter_by(deleted_ind=False)
108108

109109
@classmethod
110110
def find_major_mine_office(cls):

services/core-api/app/api/ministry_contacts/resources/ministry_contact_list.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,6 @@ def post(self):
6868
data = self.parser.parse_args()
6969

7070
contact_type = data.get('emli_contact_type_code', None)
71-
is_major_mine = data.get('is_major_mine', None)
72-
is_general_contact = data.get('is_general_contact', None)
7371
contact_desc = MinistryContactType.find_contact_type(contact_type)
7472

7573
mmo_contact = MinistryContact.find_ministry_contact('MMO')
@@ -91,9 +89,6 @@ def post(self):
9189
elif unique_global and contact_type in unique_global:
9290
raise BadRequest(f'Error: Restricted to one {contact_desc[0].description} contact.')
9391

94-
elif is_major_mine == False and is_general_contact == True:
95-
raise BadRequest(f'Error: General contacts must be a major mine contact.')
96-
9792
contact = MinistryContact.create(
9893
emli_contact_type_code=contact_type,
9994
mine_region_code=data.get('mine_region_code'),

services/core-api/tests/ministry_contacts/models/test_ministry_contact_model.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,20 +49,20 @@ def test_find_ministry_contacts_by_mine_region_includes_non_general_regional_con
4949

5050

5151
def test_find_ministry_contacts_by_mine_region_regional_mine_includes_general_contact_via_union(db_session):
52-
contact = MinistryContactFactory(is_major_mine=True, is_general_contact=True)
52+
contact = MinistryContactFactory(is_major_mine=True, is_general_contact=True, mine_region_code=None)
5353
results = MinistryContact.find_ministry_contacts_by_mine_region(contact.mine_region_code, False)
5454
assert contact.contact_guid in [c.contact_guid for c in results]
5555

5656

5757
def test_find_ministry_contacts_by_mine_region_excludes_non_general_no_region_major_mine_contact(db_session):
5858
contact = MinistryContactFactory(is_major_mine=True, is_general_contact=False, mine_region_code=None)
59-
results = MinistryContact.find_ministry_contacts_by_mine_region('NE', True)
59+
results = MinistryContact.find_ministry_contacts_by_mine_region(contact.mine_region_code, True)
6060
assert contact.contact_guid not in [c.contact_guid for c in results]
6161

6262

6363
def test_find_ministry_contacts_by_mine_region_includes_general_no_region_major_mine_contact(db_session):
6464
contact = MinistryContactFactory(is_major_mine=True, is_general_contact=True, mine_region_code=None)
65-
results = MinistryContact.find_ministry_contacts_by_mine_region('NE', True)
65+
results = MinistryContact.find_ministry_contacts_by_mine_region(contact.mine_region_code, True)
6666
assert contact.contact_guid in [c.contact_guid for c in results]
6767

6868

services/core-web/src/components/Forms/MinistryContacts/MinistryContactForm.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ export const MinistryContactForm: FC<MinistryContactFormProps> = (props) => {
104104
disabled={props.isEdit}
105105
/>
106106
</Col>
107-
{formValues.is_major_mine && (
107+
{formValues.is_major_mine !== undefined && (
108108
<Col span={12}>
109109
<Field
110110
id="is_general_contact"

services/core-web/src/tests/components/Forms/MinistryContacts/__snapshots__/MinistryContactForm.spec.tsx.snap

Lines changed: 244 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,128 @@ exports[`MinistryContactForm renders properly for creating contact 1`] = `
109109
</div>
110110
</div>
111111
</div>
112+
<div
113+
class="ant-col ant-col-12"
114+
style="padding-left: 8px; padding-right: 8px;"
115+
>
116+
<div
117+
class="ant-form-item ant-form-item-with-help"
118+
>
119+
<div
120+
class="ant-row ant-form-item-row"
121+
>
122+
<div
123+
class="ant-col ant-form-item-label"
124+
>
125+
<label
126+
class="ant-form-item-required"
127+
for="MINISTRY_CONTACT_FORM_is_general_contact"
128+
title=""
129+
>
130+
<div
131+
style="width: 100%;"
132+
>
133+
Is this a general contact?
134+
135+
<span
136+
aria-label="info-circle"
137+
class="anticon anticon-info-circle info-tooltip icon-sm"
138+
role="img"
139+
style="color: rgb(94, 70, 161);"
140+
>
141+
<svg
142+
aria-hidden="true"
143+
class=""
144+
data-icon="info-circle"
145+
fill="currentColor"
146+
focusable="false"
147+
height="1em"
148+
viewBox="64 64 896 896"
149+
width="1em"
150+
>
151+
<path
152+
d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"
153+
/>
154+
<path
155+
d="M464 336a48 48 0 1096 0 48 48 0 10-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z"
156+
/>
157+
</svg>
158+
</span>
159+
</div>
160+
</label>
161+
</div>
162+
<div
163+
class="ant-col ant-form-item-control"
164+
>
165+
<div
166+
class="ant-form-item-control-input"
167+
>
168+
<div
169+
class="ant-form-item-control-input-content"
170+
>
171+
<div
172+
class="ant-radio-group ant-radio-group-solid"
173+
>
174+
<label
175+
class="ant-radio-wrapper ant-radio-wrapper-in-form-item"
176+
>
177+
<span
178+
class="ant-radio"
179+
>
180+
<input
181+
class="ant-radio-input"
182+
name="is_general_contact"
183+
type="radio"
184+
value="true"
185+
/>
186+
<span
187+
class="ant-radio-inner"
188+
/>
189+
</span>
190+
<span>
191+
Yes
192+
</span>
193+
</label>
194+
<label
195+
class="ant-radio-wrapper ant-radio-wrapper-in-form-item"
196+
>
197+
<span
198+
class="ant-radio"
199+
>
200+
<input
201+
class="ant-radio-input"
202+
name="is_general_contact"
203+
type="radio"
204+
value="false"
205+
/>
206+
<span
207+
class="ant-radio-inner"
208+
/>
209+
</span>
210+
<span>
211+
No
212+
</span>
213+
</label>
214+
</div>
215+
</div>
216+
</div>
217+
<div
218+
style="display: flex; flex-wrap: nowrap;"
219+
>
220+
<div
221+
class="ant-form-item-explain ant-form-item-explain-connected"
222+
id="MINISTRY_CONTACT_FORM_is_general_contact_help"
223+
role="alert"
224+
>
225+
<div
226+
class=""
227+
/>
228+
</div>
229+
</div>
230+
</div>
231+
</div>
232+
</div>
233+
</div>
112234
</div>
113235
<div
114236
class="ant-row"
@@ -983,6 +1105,128 @@ exports[`MinistryContactForm renders properly for editing contact 1`] = `
9831105
</div>
9841106
</div>
9851107
</div>
1108+
<div
1109+
class="ant-col ant-col-12"
1110+
style="padding-left: 8px; padding-right: 8px;"
1111+
>
1112+
<div
1113+
class="ant-form-item ant-form-item-with-help"
1114+
>
1115+
<div
1116+
class="ant-row ant-form-item-row"
1117+
>
1118+
<div
1119+
class="ant-col ant-form-item-label"
1120+
>
1121+
<label
1122+
class="ant-form-item-required"
1123+
for="MINISTRY_CONTACT_FORM_is_general_contact"
1124+
title=""
1125+
>
1126+
<div
1127+
style="width: 100%;"
1128+
>
1129+
Is this a general contact?
1130+
1131+
<span
1132+
aria-label="info-circle"
1133+
class="anticon anticon-info-circle info-tooltip icon-sm"
1134+
role="img"
1135+
style="color: rgb(94, 70, 161);"
1136+
>
1137+
<svg
1138+
aria-hidden="true"
1139+
class=""
1140+
data-icon="info-circle"
1141+
fill="currentColor"
1142+
focusable="false"
1143+
height="1em"
1144+
viewBox="64 64 896 896"
1145+
width="1em"
1146+
>
1147+
<path
1148+
d="M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"
1149+
/>
1150+
<path
1151+
d="M464 336a48 48 0 1096 0 48 48 0 10-96 0zm72 112h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V456c0-4.4-3.6-8-8-8z"
1152+
/>
1153+
</svg>
1154+
</span>
1155+
</div>
1156+
</label>
1157+
</div>
1158+
<div
1159+
class="ant-col ant-form-item-control"
1160+
>
1161+
<div
1162+
class="ant-form-item-control-input"
1163+
>
1164+
<div
1165+
class="ant-form-item-control-input-content"
1166+
>
1167+
<div
1168+
class="ant-radio-group ant-radio-group-solid"
1169+
>
1170+
<label
1171+
class="ant-radio-wrapper ant-radio-wrapper-in-form-item"
1172+
>
1173+
<span
1174+
class="ant-radio"
1175+
>
1176+
<input
1177+
class="ant-radio-input"
1178+
name="is_general_contact"
1179+
type="radio"
1180+
value="true"
1181+
/>
1182+
<span
1183+
class="ant-radio-inner"
1184+
/>
1185+
</span>
1186+
<span>
1187+
Yes
1188+
</span>
1189+
</label>
1190+
<label
1191+
class="ant-radio-wrapper ant-radio-wrapper-in-form-item"
1192+
>
1193+
<span
1194+
class="ant-radio"
1195+
>
1196+
<input
1197+
class="ant-radio-input"
1198+
name="is_general_contact"
1199+
type="radio"
1200+
value="false"
1201+
/>
1202+
<span
1203+
class="ant-radio-inner"
1204+
/>
1205+
</span>
1206+
<span>
1207+
No
1208+
</span>
1209+
</label>
1210+
</div>
1211+
</div>
1212+
</div>
1213+
<div
1214+
style="display: flex; flex-wrap: nowrap;"
1215+
>
1216+
<div
1217+
class="ant-form-item-explain ant-form-item-explain-connected"
1218+
id="MINISTRY_CONTACT_FORM_is_general_contact_help"
1219+
role="alert"
1220+
>
1221+
<div
1222+
class=""
1223+
/>
1224+
</div>
1225+
</div>
1226+
</div>
1227+
</div>
1228+
</div>
1229+
</div>
9861230
</div>
9871231
<div
9881232
class="ant-row"

services/minespace-web/src/components/dashboard/mine/overview/Overview.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,8 @@ export const Overview = (props) => {
147147
<Col span={24} key="regional">
148148
<Card title="Regional Ministry Contacts">
149149
{props.MinistryContactInfo.filter(
150-
({ is_general_contact }) => !is_general_contact
150+
({ is_major_mine, is_general_contact, mine_region_code }) =>
151+
!is_major_mine && is_general_contact && mine_region_code === mine.mine_region
151152
).map((contact) => (
152153
<MinistryContactItem contact={contact} key={contact.id} />
153154
))}
@@ -156,7 +157,10 @@ export const Overview = (props) => {
156157
<Col span={24} key="general">
157158
<Card title="General Ministry Contacts">
158159
{props.MinistryContactInfo.filter(
159-
({ is_general_contact }) => is_general_contact
160+
({ is_major_mine, is_general_contact, mine_region_code }) =>
161+
is_major_mine &&
162+
is_general_contact &&
163+
(!mine_region_code || mine_region_code === mine.mine_region)
160164
).map((contact) => (
161165
<MinistryContactItem contact={contact} key={contact.id} />
162166
))}

0 commit comments

Comments
 (0)