Created
May 19, 2020 06:57
-
-
Save cygeorgel/315472dc38258e53110fe7d878baa834 to your computer and use it in GitHub Desktop.
Axonaut
This file contains 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