in database/migrations/2017_12_04_165421_move_ages_data.php [14:122]
public function up()
{
$contacts = DB::table('contacts')->select('account_id', 'id', 'first_name', 'is_birthdate_approximate', 'birthdate', 'birthday_reminder_id', 'first_met', 'deceased_date')->get();
foreach ($contacts as $contact) {
$specialDateDeceasedDateId = null;
$specialDateBirthdateId = null;
$specialDateFirstMetDateId = null;
if ($contact->deceased_date) {
$specialDateDeceasedDateId = DB::table('special_dates')->insertGetId([
'account_id' => $contact->account_id,
'contact_id' => $contact->id,
'is_age_based' => false,
'date' => $contact->deceased_date,
'reminder_id' => null,
'created_at' => now(),
]);
}
$isBirthdayApproximate = $contact->is_birthdate_approximate;
if ($contact->birthdate) {
switch ($isBirthdayApproximate) {
case 'unknown':
break;
case 'approximate':
$specialDateBirthdateId = DB::table('special_dates')->insertGetId([
'account_id' => $contact->account_id,
'contact_id' => $contact->id,
'is_age_based' => true,
'date' => $contact->birthdate,
'reminder_id' => $contact->birthday_reminder_id,
'created_at' => now(),
]);
break;
case 'exact':
$specialDateBirthdateId = DB::table('special_dates')->insertGetId([
'account_id' => $contact->account_id,
'contact_id' => $contact->id,
'is_age_based' => false,
'date' => $contact->birthdate,
'reminder_id' => $contact->birthday_reminder_id,
'created_at' => now(),
]);
break;
}
}
if ($contact->first_met) {
$specialDateFirstMetDateId = DB::table('special_dates')->insertGetId([
'account_id' => $contact->account_id,
'contact_id' => $contact->id,
'is_age_based' => false,
'date' => $contact->first_met,
'reminder_id' => null,
'created_at' => now(),
]);
}
if ($contact->birthdate && $specialDateBirthdateId) {
// is title field null? If so, that means it's a birthdate and we need to populate the title field with a title
$reminder = DB::table('reminders')->where('id', $contact->birthday_reminder_id)
->select('title')
->get();
if ($reminder->isEmpty()) {
DB::table('reminders')
->where('id', $contact->birthday_reminder_id)
->update([
'special_date_id' => $specialDateBirthdateId,
]);
} else {
DB::table('reminders')
->where('id', $contact->birthday_reminder_id)
->update([
'special_date_id' => $specialDateBirthdateId,
'title' => 'Wish happy birthday to '.$contact->first_name,
]);
}
}
DB::table('contacts')
->where('id', $contact->id)
->update([
'deceased_special_date_id' => $specialDateDeceasedDateId,
'birthday_special_date_id' => $specialDateBirthdateId,
'first_met_special_date_id' => $specialDateFirstMetDateId,
]);
}
Schema::table('contacts', function ($table) {
$table->dropColumn([
'deceased_date',
'first_met',
'birthdate',
'is_birthdate_approximate',
'birthday_reminder_id',
]);
});
Schema::table('reminders', function ($table) {
$table->dropColumn([
'is_birthday',
]);
});
}