@@ -55,11 +55,18 @@ public function model()
55
55
*/
56
56
public function create (array $ data )
57
57
{
58
- if (isset ($ data ['organization_name ' ])) {
58
+ $ data = $ this ->sanitizeRequestedPersonData ($ data );
59
+
60
+ if (
61
+ isset ($ data ['organization_name ' ])
62
+ && ! empty ($ data ['organization_name ' ])
63
+ ) {
59
64
$ organization = self ::createOrganization ($ data );
60
65
61
66
$ data ['organization_id ' ] = $ organization ->id ;
62
67
68
+ $ data ['user_id ' ] = $ organization ->user_id ;
69
+
63
70
unset($ data ['organization_name ' ]);
64
71
}
65
72
@@ -83,9 +90,14 @@ public function create(array $data)
83
90
*/
84
91
public function update (array $ data , $ id , $ attributes = [])
85
92
{
93
+ $ data = $ this ->sanitizeRequestedPersonData ($ data );
94
+
86
95
$ data ['user_id ' ] = empty ($ data ['user_id ' ]) ? null : $ data ['user_id ' ];
87
96
88
- if (isset ($ data ['organization_name ' ])) {
97
+ if (
98
+ isset ($ data ['organization_name ' ])
99
+ && ! empty ($ data ['organization_name ' ])
100
+ ) {
89
101
$ organization = self ::createOrganization ($ data );
90
102
91
103
$ data ['organization_id ' ] = $ organization ->id ;
@@ -136,20 +148,55 @@ public function getCustomerCount($startDate, $endDate)
136
148
->count ();
137
149
}
138
150
151
+ /**
152
+ * Sanitize requested person data and return the clean array.
153
+ */
154
+ private function sanitizeRequestedPersonData (array $ data ): array
155
+ {
156
+ if (
157
+ array_key_exists ('organization_id ' , $ data )
158
+ && empty ($ data ['organization_id ' ])
159
+ ) {
160
+ $ data ['organization_id ' ] = null ;
161
+ }
162
+
163
+ $ uniqueIdParts = array_filter ([
164
+ $ data ['user_id ' ] ?? null ,
165
+ $ data ['organization_id ' ] ?? null ,
166
+ $ data ['emails ' ][0 ]['value ' ] ?? null ,
167
+ ]);
168
+
169
+ $ data ['unique_id ' ] = implode ('| ' , $ uniqueIdParts );
170
+
171
+ if (isset ($ data ['contact_numbers ' ])) {
172
+ $ data ['contact_numbers ' ] = collect ($ data ['contact_numbers ' ])->filter (fn ($ number ) => ! is_null ($ number ['value ' ]))->toArray ();
173
+
174
+ $ data ['unique_id ' ] .= '| ' .$ data ['contact_numbers ' ][0 ]['value ' ];
175
+ }
176
+
177
+ return $ data ;
178
+ }
179
+
139
180
/**
140
181
* Create a organization.
141
182
*/
142
183
public function createOrganization (array $ data )
143
184
{
144
- $ userId = empty ($ data ['user_id ' ]) ? null : $ data ['user_id ' ];
145
-
146
- return $ this ->organizationRepository ->create (
147
- array_merge ($ data , [
148
- 'name ' => $ data ['organization_name ' ],
149
- 'entity_type ' => 'organization ' ,
150
- 'address ' => [],
151
- 'user_id ' => $ userId ,
152
- ])
153
- );
185
+ $ organization = $ this ->organizationRepository ->findOneWhere ([
186
+ 'name ' => $ data ['organization_name ' ],
187
+ ]);
188
+
189
+ return $ organization ?: $ this ->organizationRepository ->create ([
190
+ 'name ' => $ data ['organization_name ' ],
191
+ 'entity_type ' => 'organization ' ,
192
+ 'address ' => [
193
+ "address " => "" ,
194
+ "country " => "" ,
195
+ "state " => "" ,
196
+ "city " => "" ,
197
+ "postcode " => ""
198
+ ],
199
+ 'user_id ' => 1 ,
200
+ ]);
154
201
}
155
202
}
0 commit comments