CW-1399 Phone number import (#6815)

This commit is contained in:
Tejaswini Chile
2023-04-03 13:53:59 +05:30
committed by GitHub
parent 363ffdbde3
commit d2d6d271c3
3 changed files with 50 additions and 35 deletions

View File

@@ -20,24 +20,38 @@ class DataImportJob < ApplicationJob
contact = init_contact(params, account)
contact.name = params[:name] if params[:name].present?
contact.assign_attributes(custom_attributes: contact.custom_attributes.merge(params.except(:identifier, :email, :name)))
contact.assign_attributes(custom_attributes: contact.custom_attributes.merge(params.except(:identifier, :email, :name, :phone_number)))
contact
end
def get_identified_contacts(params, account)
identifier_contact = account.contacts.find_by(identifier: params[:identifier]) if params[:identifier]
email_contact = account.contacts.find_by(email: params[:email]) if params[:email]
[identifier_contact, email_contact]
phone_number_contact = account.contacts.find_by(phone_number: params[:phone_number]) if params[:phone_number]
contact = merge_identified_contact_attributes(params, [identifier_contact, email_contact, phone_number_contact])
# intiating the new contact / contact attributes only by ensuring the identifier, email or phone_number duplication errors won't occur
contact ||= merge_contact(email_contact, phone_number_contact)
contact
end
def merge_contact(email_contact, phone_number_contact)
contact ||= email_contact
contact ||= phone_number_contact
contact
end
def merge_identified_contact_attributes(params, available_contacts)
identifier_contact, email_contact, phone_number_contact = available_contacts
contact = identifier_contact
contact&.email = params[:email] if params[:email].present? && email_contact.blank?
contact&.phone_number = params[:phone_number] if params[:phone_number].present? && phone_number_contact.blank?
contact
end
def init_contact(params, account)
identifier_contact, email_contact = get_identified_contacts(params, account)
# intiating the new contact / contact attributes only by ensuring the identifier or email duplication errors won't occur
contact = identifier_contact
contact&.email = params[:email] if params[:email].present? && email_contact.blank?
contact ||= email_contact
contact ||= account.contacts.new(params.slice(:email, :identifier))
contact = get_identified_contacts(params, account)
contact ||= account.contacts.new(params.slice(:email, :identifier, :phone_number))
contact
end
end

View File

@@ -1,26 +1,26 @@
id,first_name,last_name,email,gender,ip_address,identifier
1,Clarice,Uzzell,cuzzell0@mozilla.org,Genderfluid,70.61.11.201,bb4e11cd-0f23-49da-a123-dcc1fec6852c
2,Marieann,Creegan,mcreegan1@cornell.edu,Genderfluid,168.186.4.241,e60bab4c-9fbb-47eb-8f75-42025b789c47
3,Nancey,Windibank,nwindibank2@bluehost.com,Agender,73.44.41.59,f793e813-4210-4bf3-a812-711418de25d2
4,Sibel,Stennine,sstennine3@yellowbook.com,Genderqueer,115.249.27.155,d6e35a2d-d093-4437-a577-7df76316b937
5,Tina,O'Lunney,tolunney4@si.edu,Bigender,219.181.212.8,3540d40a-5567-4f28-af98-5583a7ddbc56
6,Quinn,Neve,qneve5@army.mil,Genderfluid,231.210.115.166,ba0e1bf0-c74b-41ce-8a2d-0b08fa0e5aa5
7,Karylin,Gaunson,kgaunson6@tripod.com,Polygender,160.189.41.11,d24cac79-c81b-4b84-a33e-0441b7c6a981
8,Jamison,Shenton,jshenton7@upenn.edu,Agender,53.94.18.201,29a7a8c0-c7f7-4af9-852f-761b1a784a7a
9,Gavan,Threlfall,gthrelfall8@spotify.com,Genderfluid,18.87.247.249,847d4943-ddb5-47cc-8008-ed5092c675c5
10,Katina,Hemmingway,khemmingway9@ameblo.jp,Non-binary,25.191.96.124,8f0b5efd-b6a8-4f1e-a1e3-b0ea8c9e3048
11,Jillian,Deinhard,jdeinharda@canalblog.com,Female,11.211.174.93,bd952787-1b05-411f-9975-b916ec0950cc
12,Blake,Finden,bfindenb@wsj.com,Female,47.26.205.153,12c95613-e49d-4fa2-86fb-deabb6ebe600
13,Liane,Maxworthy,lmaxworthyc@un.org,Non-binary,157.196.34.166,36b68e4c-40d6-4e09-bf59-7db3b27b18f0
14,Martynne,Ledley,mledleyd@sourceforge.net,Polygender,109.231.152.148,1856bceb-cb36-415c-8ffc-0527f3f750d8
15,Katharina,Ruffli,krufflie@huffingtonpost.com,Genderfluid,20.43.146.179,604de5c9-b154-4279-8978-41fb71f0f773
16,Tucker,Simmance,tsimmancef@bbc.co.uk,Bigender,179.76.226.171,0a8fc3a7-4986-4a51-a503-6c7f974c90ad
17,Wenona,Martinson,wmartinsong@census.gov,Genderqueer,92.243.194.160,0e5ea6e3-6824-4e78-a6f5-672847eafa17
18,Gretna,Vedyasov,gvedyasovh@lycos.com,Female,25.22.86.101,6becf55b-a7b5-48f6-8788-b89cae85b066
19,Lurline,Abdon,labdoni@archive.org,Genderqueer,150.249.116.118,afa9429f-9034-4b06-9efa-980e01906ebf
20,Fiann,Norcliff,fnorcliffj@istockphoto.com,Female,237.167.197.197,59f72dec-14ba-4d6e-b17c-0d962e69ffac
21,Zed,Linn,zlinnk@phoca.cz,Genderqueer,88.102.64.113,95f7bc56-be92-4c9c-ad58-eff3e63c7bea
22,Averyl,Simyson,asimysonl@livejournal.com,Agender,141.248.89.29,bde1fe59-c9bd-440c-bb39-79fe61dac1d1
23,Camella,Blackadder,cblackadderm@nifty.com,Polygender,118.123.138.115,0c981752-5857-487c-b9b5-5d0253df740a
24,Aurie,Spatig,aspatign@printfriendly.com,Polygender,157.45.102.235,4cf22bfb-2c3f-41d1-9993-6e3758e457ba
25,Adrienne,Bellard,abellardo@cnn.com,Male,170.73.198.47,f10f9b8d-38ac-4e17-8a7d-d2e6a055f944
id,first_name,last_name,email,gender,ip_address,identifier,phone_number
1,Clarice,Uzzell,cuzzell0@mozilla.org,Genderfluid,70.61.11.201,bb4e11cd-0f23-49da-a123-dcc1fec6852c,+918080808080
2,Marieann,Creegan,mcreegan1@cornell.edu,Genderfluid,168.186.4.241,e60bab4c-9fbb-47eb-8f75-42025b789c47,+918080808081
3,Nancey,Windibank,nwindibank2@bluehost.com,Agender,73.44.41.59,f793e813-4210-4bf3-a812-711418de25d2,+918080808082
4,Sibel,Stennine,sstennine3@yellowbook.com,Genderqueer,115.249.27.155,d6e35a2d-d093-4437-a577-7df76316b937,+918080808083
5,Tina,O'Lunney,tolunney4@si.edu,Bigender,219.181.212.8,3540d40a-5567-4f28-af98-5583a7ddbc56,+918080808084
6,Quinn,Neve,qneve5@army.mil,Genderfluid,231.210.115.166,ba0e1bf0-c74b-41ce-8a2d-0b08fa0e5aa5,+918080808085
7,Karylin,Gaunson,kgaunson6@tripod.com,Polygender,160.189.41.11,d24cac79-c81b-4b84-a33e-0441b7c6a981,+918080808086
8,Jamison,Shenton,jshenton7@upenn.edu,Agender,53.94.18.201,29a7a8c0-c7f7-4af9-852f-761b1a784a7a,+918080808087
9,Gavan,Threlfall,gthrelfall8@spotify.com,Genderfluid,18.87.247.249,847d4943-ddb5-47cc-8008-ed5092c675c5,+918080808088
10,Katina,Hemmingway,khemmingway9@ameblo.jp,Non-binary,25.191.96.124,8f0b5efd-b6a8-4f1e-a1e3-b0ea8c9e3048,+918080808089
11,Jillian,Deinhard,jdeinharda@canalblog.com,Female,11.211.174.93,bd952787-1b05-411f-9975-b916ec0950cc,+918080808090
12,Blake,Finden,bfindenb@wsj.com,Female,47.26.205.153,12c95613-e49d-4fa2-86fb-deabb6ebe600,+918080808091
13,Liane,Maxworthy,lmaxworthyc@un.org,Non-binary,157.196.34.166,36b68e4c-40d6-4e09-bf59-7db3b27b18f0,+918080808092
14,Martynne,Ledley,mledleyd@sourceforge.net,Polygender,109.231.152.148,1856bceb-cb36-415c-8ffc-0527f3f750d8,+918080808093
15,Katharina,Ruffli,krufflie@huffingtonpost.com,Genderfluid,20.43.146.179,604de5c9-b154-4279-8978-41fb71f0f773,+918080808094
16,Tucker,Simmance,tsimmancef@bbc.co.uk,Bigender,179.76.226.171,0a8fc3a7-4986-4a51-a503-6c7f974c90ad,+918080808095
17,Wenona,Martinson,wmartinsong@census.gov,Genderqueer,92.243.194.160,0e5ea6e3-6824-4e78-a6f5-672847eafa17,+918080808096
18,Gretna,Vedyasov,gvedyasovh@lycos.com,Female,25.22.86.101,6becf55b-a7b5-48f6-8788-b89cae85b066,+918080808097
19,Lurline,Abdon,labdoni@archive.org,Genderqueer,150.249.116.118,afa9429f-9034-4b06-9efa-980e01906ebf,+918080808098
20,Fiann,Norcliff,fnorcliffj@istockphoto.com,Female,237.167.197.197,59f72dec-14ba-4d6e-b17c-0d962e69ffac,+918080808100
21,Zed,Linn,zlinnk@phoca.cz,Genderqueer,88.102.64.113,95f7bc56-be92-4c9c-ad58-eff3e63c7bea,+918080808101
22,Averyl,Simyson,asimysonl@livejournal.com,Agender,141.248.89.29,bde1fe59-c9bd-440c-bb39-79fe61dac1d1,+918080808102
23,Camella,Blackadder,cblackadderm@nifty.com,Polygender,118.123.138.115,0c981752-5857-487c-b9b5-5d0253df740a,+918080808103
24,Aurie,Spatig,aspatign@printfriendly.com,Polygender,157.45.102.235,4cf22bfb-2c3f-41d1-9993-6e3758e457ba,+918080808104
25,Adrienne,Bellard,abellardo@cnn.com,Male,170.73.198.47,f10f9b8d-38ac-4e17-8a7d-d2e6a055f944,+918080808105
1 id first_name last_name email gender ip_address identifier phone_number
2 1 Clarice Uzzell cuzzell0@mozilla.org Genderfluid 70.61.11.201 bb4e11cd-0f23-49da-a123-dcc1fec6852c +918080808080
3 2 Marieann Creegan mcreegan1@cornell.edu Genderfluid 168.186.4.241 e60bab4c-9fbb-47eb-8f75-42025b789c47 +918080808081
4 3 Nancey Windibank nwindibank2@bluehost.com Agender 73.44.41.59 f793e813-4210-4bf3-a812-711418de25d2 +918080808082
5 4 Sibel Stennine sstennine3@yellowbook.com Genderqueer 115.249.27.155 d6e35a2d-d093-4437-a577-7df76316b937 +918080808083
6 5 Tina O'Lunney tolunney4@si.edu Bigender 219.181.212.8 3540d40a-5567-4f28-af98-5583a7ddbc56 +918080808084
7 6 Quinn Neve qneve5@army.mil Genderfluid 231.210.115.166 ba0e1bf0-c74b-41ce-8a2d-0b08fa0e5aa5 +918080808085
8 7 Karylin Gaunson kgaunson6@tripod.com Polygender 160.189.41.11 d24cac79-c81b-4b84-a33e-0441b7c6a981 +918080808086
9 8 Jamison Shenton jshenton7@upenn.edu Agender 53.94.18.201 29a7a8c0-c7f7-4af9-852f-761b1a784a7a +918080808087
10 9 Gavan Threlfall gthrelfall8@spotify.com Genderfluid 18.87.247.249 847d4943-ddb5-47cc-8008-ed5092c675c5 +918080808088
11 10 Katina Hemmingway khemmingway9@ameblo.jp Non-binary 25.191.96.124 8f0b5efd-b6a8-4f1e-a1e3-b0ea8c9e3048 +918080808089
12 11 Jillian Deinhard jdeinharda@canalblog.com Female 11.211.174.93 bd952787-1b05-411f-9975-b916ec0950cc +918080808090
13 12 Blake Finden bfindenb@wsj.com Female 47.26.205.153 12c95613-e49d-4fa2-86fb-deabb6ebe600 +918080808091
14 13 Liane Maxworthy lmaxworthyc@un.org Non-binary 157.196.34.166 36b68e4c-40d6-4e09-bf59-7db3b27b18f0 +918080808092
15 14 Martynne Ledley mledleyd@sourceforge.net Polygender 109.231.152.148 1856bceb-cb36-415c-8ffc-0527f3f750d8 +918080808093
16 15 Katharina Ruffli krufflie@huffingtonpost.com Genderfluid 20.43.146.179 604de5c9-b154-4279-8978-41fb71f0f773 +918080808094
17 16 Tucker Simmance tsimmancef@bbc.co.uk Bigender 179.76.226.171 0a8fc3a7-4986-4a51-a503-6c7f974c90ad +918080808095
18 17 Wenona Martinson wmartinsong@census.gov Genderqueer 92.243.194.160 0e5ea6e3-6824-4e78-a6f5-672847eafa17 +918080808096
19 18 Gretna Vedyasov gvedyasovh@lycos.com Female 25.22.86.101 6becf55b-a7b5-48f6-8788-b89cae85b066 +918080808097
20 19 Lurline Abdon labdoni@archive.org Genderqueer 150.249.116.118 afa9429f-9034-4b06-9efa-980e01906ebf +918080808098
21 20 Fiann Norcliff fnorcliffj@istockphoto.com Female 237.167.197.197 59f72dec-14ba-4d6e-b17c-0d962e69ffac +918080808100
22 21 Zed Linn zlinnk@phoca.cz Genderqueer 88.102.64.113 95f7bc56-be92-4c9c-ad58-eff3e63c7bea +918080808101
23 22 Averyl Simyson asimysonl@livejournal.com Agender 141.248.89.29 bde1fe59-c9bd-440c-bb39-79fe61dac1d1 +918080808102
24 23 Camella Blackadder cblackadderm@nifty.com Polygender 118.123.138.115 0c981752-5857-487c-b9b5-5d0253df740a +918080808103
25 24 Aurie Spatig aspatign@printfriendly.com Polygender 157.45.102.235 4cf22bfb-2c3f-41d1-9993-6e3758e457ba +918080808104
26 25 Adrienne Bellard abellardo@cnn.com Male 170.73.198.47 f10f9b8d-38ac-4e17-8a7d-d2e6a055f944 +918080808105

View File

@@ -17,5 +17,6 @@ RSpec.describe DataImportJob, type: :job do
expect(data_import.account.contacts.count).to eq(csv_length)
expect(data_import.reload.total_records).to eq(csv_length)
expect(data_import.reload.processed_records).to eq(csv_length)
expect(Contact.find_by(phone_number: '+918080808080')).to be_truthy
end
end