in app/Http/Controllers/ContactsController.php [369:447]
public function update(Request $request, Contact $contact)
{
// process birthday dates
// TODO: remove this part entirely when we redo this whole SpecialDate
// thing
if ($request->input('birthdate') == 'exact') {
$birthdate = $request->input('birthdayDate');
$birthdate = DateHelper::parseDate($birthdate);
$day = $birthdate->day;
$month = $birthdate->month;
$year = $birthdate->year;
} else {
$day = $request->input('day');
$month = $request->input('month');
$year = $request->input('year');
}
$is_deceased_date_known = false;
if ($request->input('is_deceased_date_known') === 'true' && $request->input('deceased_date')) {
$is_deceased_date_known = true;
$deceased_date = $request->input('deceased_date');
$deceased_date = DateHelper::parseDate($deceased_date);
$deceased_date_day = $deceased_date->day;
$deceased_date_month = $deceased_date->month;
$deceased_date_year = $deceased_date->year;
} else {
$deceased_date_day = $deceased_date_month = $deceased_date_year = null;
}
if (! empty($request->input('is_deceased'))) {
//if the contact has died, disable StayInTouch
$contact->updateStayInTouchFrequency(0);
$contact->setStayInTouchTriggerDate(0);
}
$data = [
'account_id' => auth()->user()->account_id,
'contact_id' => $contact->id,
'first_name' => $request->input('firstname'),
'middle_name' => $request->input('middlename', null),
'last_name' => $request->input('lastname', null),
'nickname' => $request->input('nickname', null),
'gender_id' => $request->input('gender'),
'description' => $request->input('description', null),
'is_birthdate_known' => ! empty($request->input('birthdate')) && $request->input('birthdate') !== 'unknown',
'birthdate_day' => $day,
'birthdate_month' => $month,
'birthdate_year' => $year,
'birthdate_is_age_based' => $request->input('birthdate') === 'approximate',
'birthdate_age' => $request->input('age'),
'birthdate_add_reminder' => ! empty($request->input('addReminder')),
'is_deceased' => ! empty($request->input('is_deceased')),
'is_deceased_date_known' => $is_deceased_date_known,
'deceased_date_day' => $deceased_date_day,
'deceased_date_month' => $deceased_date_month,
'deceased_date_year' => $deceased_date_year,
'deceased_date_add_reminder' => ! empty($request->input('add_reminder_deceased')),
];
$contact = app(UpdateContact::class)->execute($data);
if ($request->file('avatar') != '') {
if ($contact->has_avatar) {
try {
$contact->deleteAvatars();
} catch (\Exception $e) {
Log::warning(__CLASS__.' update: Failed to delete avatars', [
'contact' => $contact,
'exception' => $e,
]);
}
}
$contact->has_avatar = true;
$contact->avatar_location = config('filesystems.default');
$contact->avatar_file_name = $request->avatar->storePublicly('avatars', $contact->avatar_location);
$contact->save();
}
return redirect()->route('people.show', $contact)
->with('success', trans('people.information_edit_success'));
}