Created
May 19, 2020 06:57
-
-
Save cygeorgel/315472dc38258e53110fe7d878baa834 to your computer and use it in GitHub Desktop.
Axonaut
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| class Import | |
| { | |
| public function prospects() | |
| { | |
| $file = 'axonaut/prospects.csv'; | |
| if (Storage::disk('ftp')->exists($file)) { | |
| $data = Storage::disk('ftp')->get($file); | |
| $lines = explode("\n", $data); | |
| foreach ($lines as $line) { | |
| $values = str_getcsv($line, ';', '"'); | |
| if (is_numeric($values[0])) { | |
| $count = Prospect::where('customerAccount', 'PR'.$values[0]) | |
| ->count(); | |
| if (! $count) { | |
| Prospect::create([ | |
| 'customerAccount' => 'PR'.$values[0], | |
| 'name' => utf8_encode($values[1]), | |
| 'mainAddressLine1' => isset($values[2]) ? utf8_encode($values[2]) : null, | |
| 'mainAddressPostalCode' => isset($values[3]) ? $values[3] : null, | |
| 'mainAddressCity' => isset($values[4]) ? utf8_encode($values[4]) : null, | |
| 'mainAddressCountry' => isset($values[5]) ? utf8_encode($values[5]) : null, | |
| 'mainContactFirstName' => isset($values[6]) ? utf8_encode($values[6]) : null, | |
| 'mainContactLastName' => isset($values[7]) ? utf8_encode($values[7]) : null, | |
| 'emailAddress' => isset($values[8]) ? utf8_encode($values[8]) : null, | |
| 'phone' => isset($values[10]) ? $values[10] : null, | |
| 'mobilePhone' => isset($values[9]) ? $values[9] : null, | |
| ]); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| public function customers() | |
| { | |
| $file = 'axonaut/customers.csv'; | |
| if (Storage::disk('ftp')->exists($file)) { | |
| $data = Storage::disk('ftp')->get($file); | |
| $lines = explode("\n", $data); | |
| foreach ($lines as $line) { | |
| $values = str_getcsv($line, ';', '"'); | |
| if (is_numeric($values[0])) { | |
| $count = Customer::where('customerAccount', 'CL'. $values[0]) | |
| ->count(); | |
| if (! $count) { | |
| Customer::create([ | |
| 'customerAccount' => 'CL'.$values[0], | |
| 'name' => utf8_encode($values[1]), | |
| 'mainAddressLine1' => isset($values[2]) ? utf8_encode($values[2]) : null, | |
| 'mainAddressPostalCode' => isset($values[3]) ? $values[3] : null, | |
| 'mainAddressCity' => isset($values[4]) ? utf8_encode($values[4]) : null, | |
| 'mainAddressCountry' => isset($values[5]) ? utf8_encode($values[5]) : null, | |
| 'mainContactFirstName' => isset($values[6]) ? utf8_encode($values[6]) : null, | |
| 'mainContactLastName' => isset($values[7]) ? utf8_encode($values[7]) : null, | |
| 'emailAddress' => isset($values[8]) ? utf8_encode($values[8]) : null, | |
| 'phone' => isset($values[10]) ? $values[10] : null, | |
| 'mobilePhone' => isset($values[9]) ? $values[9] : null, | |
| 'suppliers' => '[]', | |
| ]); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| public function contacts() | |
| { | |
| $file = 'axonaut/contacts.csv'; | |
| if (Storage::disk('ftp')->exists($file)) { | |
| $data = Storage::disk('ftp')->get($file); | |
| $lines = explode("\n", $data); | |
| foreach ($lines as $line) { | |
| $values = str_getcsv($line, ';', '"'); | |
| if (is_numeric($values[0])) { | |
| // attach to prospect or customer: | |
| $test = Prospect::where('customerAccount', 'PR'.$values[1])->first(); | |
| if (! $test) { | |
| $test = Customer::where('customerAccount', 'CL'.$values[1])->first(); | |
| $contactable_type = \App\Customer::class; | |
| } else { | |
| $contactable_type = \App\Prospect::class; | |
| } | |
| if ($test) { | |
| $civility = null; | |
| $civilities = [ | |
| '' => null, | |
| 'M' => 3, | |
| 'Mme' => 2, | |
| 'Mlle' => 1, | |
| ]; | |
| if (isset($values[12])) { | |
| if (array_key_exists($values[12], $civilities)) { | |
| $civility = $civilities[$values[12]]; | |
| } | |
| } | |
| $count = Contact::where('contactable_type', $contactable_type) | |
| ->where('contactable_id', $test->id) | |
| ->where('emailAddress', $values[15]) | |
| ->count(); | |
| if (! $count) { | |
| Contact::create([ | |
| 'contactable_type' => $contactable_type, | |
| 'contactable_id' => $test->id, | |
| 'civility' => $civility ?? null, | |
| 'firstName' => isset($values[14]) ? utf8_encode($values[14]) : null, | |
| 'lastName' => isset($values[15]) ? utf8_encode($values[15]) : 'Contact', | |
| 'emailAddress' => isset($values[15]) ? $values[15] : null, | |
| 'mobilePhone' => isset($values[17]) ? phoneNumberFormat($values[17]) : null, | |
| 'landlinePhone' => isset($values[16]) ? phoneNumberFormat($values[16]) : null, | |
| 'active' => true, | |
| 'legalRepresentative' => true, | |
| 'invoicesRecipient' => true, | |
| 'myClient' => true, | |
| 'technicalContact' => true, | |
| 'newslettersRecipient' => true, | |
| 'comment' => isset($values[19]) ? utf8_encode($values[19]) : null, | |
| ]); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| public function exchanges() | |
| { | |
| $file = 'axonaut/exchanges.csv'; | |
| if (Storage::disk('ftp')->exists($file)) { | |
| $data = Storage::disk('ftp')->get($file); | |
| $lines = explode("\n", $data); | |
| foreach ($lines as $line) { | |
| $values = str_getcsv($line, ';', '"'); | |
| if (isset($values[2]) && is_numeric($values[2])) { | |
| // attach to prospect or customer: | |
| $test = Prospect::where('customerAccount', 'PR'.$values[2])->first(); | |
| if (! $test) { | |
| $test = Customer::where('customerAccount', 'CL'.$values[2])->first(); | |
| $noteable_type = \App\Customer::class; | |
| } else { | |
| $noteable_type = \App\Prospect::class; | |
| } | |
| if ($test) { | |
| $count = Note::where('noteable_type', $noteable_type) | |
| ->where('noteable_id', $test->id) | |
| ->where('created_at', $values[1]) | |
| ->count(); | |
| if (! $count) { | |
| Note::create([ | |
| 'user_id' => 4, | |
| 'noteable_type' => $noteable_type, | |
| 'noteable_id' => $test->id, | |
| 'title' => isset($values[4]) ? utf8_encode($values[4]) : null, | |
| 'body' => isset($values[5]) ? utf8_encode($values[5]) : null, | |
| 'created_at' => $values[1], | |
| 'updated_at' => $values[1], | |
| ]); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| public function products() | |
| { | |
| $file = 'axonaut/products.csv'; | |
| if (Storage::disk('ftp')->exists($file)) { | |
| $data = Storage::disk('ftp')->get($file); | |
| $lines = explode("\n", $data); | |
| foreach ($lines as $line) { | |
| $values = str_getcsv($line, ';', '"'); | |
| if (isset($values[12]) && is_numeric($values[12])) { | |
| $count = Item::where('internalReference', $values[0]) | |
| ->count(); | |
| if (! $count) { | |
| Item::create([ | |
| 'active' => true, | |
| 'activeForInitialBilling' => true, | |
| 'activeForRecurringBilling' => true, | |
| 'internalReference' => isset($values[0]) ? $values[0] : null, | |
| 'legacy_id' => isset($values[12]) ? $values[12] : null, | |
| 'description' => isset($values[1]) ? utf8_encode($values[1]) : null, | |
| 'family_id' => 2, | |
| 'sellingPriceWithoutTax' => isset($values[9]) ? str_replace(',', '.', $values[9]) : null, | |
| 'tax_id' => 3, | |
| 'quantity' => ! empty($values[11]) ? $values[11] : null, | |
| ]); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment