Enforce unique contact email for group hierarchy
What does this MR do and why?
Related to #349686 (closed)
At the moment, the primary technique for adding/removing contacts from issues is via quick actions.
The quick actions use e-mail address as the parameter/key. So if we have multiple contacts with the same e-mail address, the system will randomly select which to associate.
This MR prevents creation of new contacts within a group hierarchy if a contact already exists with the same e-mail.
It is likely we will remove this validation at a later stage when we improve the quick action to use auto-complete etc
Screenshots or screen recordings
How to set up and validate locally
0. Enable :customer_relations feature flag for a group via the rails console
1. Visit a group settings page (e.g. http://gdk.test:3000/groups/flightjs/-/edit
2. Expand "Permissions and group features"
3. At the very bottom, select "Enable customer relations"
4. Select "Save changes"
5. Visit the customer relations > contacts page for the group (e.g. http://gdk.test:3000/groups/flightjs/-/crm/contacts
8. Create a new contact
9. Visit a child group settings page (e.g. http://gdk.test:3000/groups/flightjs/-/edit
10. Expand "Permissions and group features"
11. At the very bottom, select "Enable customer relations"
12. Select "Save changes"
13. Visit the customer relations > contacts page for the subgroup (e.g. http://gdk.test:3000/groups/flightjs/-/crm/contacts
14. Try and create a contact using the same e-mail address as step 8 (you should get an error)
Bonus points for testing using GraphQL :)
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Edited by Lee Tickett