Skip to content

Instantly share code, notes, and snippets.

@cygeorgel
Created May 19, 2020 06:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cygeorgel/315472dc38258e53110fe7d878baa834 to your computer and use it in GitHub Desktop.
Save cygeorgel/315472dc38258e53110fe7d878baa834 to your computer and use it in GitHub Desktop.
Axonaut
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