Skip to content

Commit

Permalink
Further normalize PeopleController. Notes are ordered desc (monicahq#319
Browse files Browse the repository at this point in the history
)

Further normalize PeopleController and fix monicahq#311
  • Loading branch information
Yamamoto Kadir authored and djaiss committed Jun 21, 2017
1 parent bd71fb0 commit e7e0446
Show file tree
Hide file tree
Showing 9 changed files with 86 additions and 225 deletions.
1 change: 1 addition & 0 deletions CONTRIBUTORS
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@ Regis Freyd @djaiss
Kirk Strauser @kstrauser
Taryn Hill @Phrohdoh <taryn@phrohdoh.com>
Andreas Zweili @Nebucatnetzer
Kadir Yamamoto @yamakadi
52 changes: 0 additions & 52 deletions app/Contact.php
Original file line number Diff line number Diff line change
Expand Up @@ -759,58 +759,6 @@ public function updateFoodPreferencies($foodPreferencies)
$this->save();
}

/**
* Create a note.
*
* @param string $body
* @return mixed
*/
public function addNote($body)
{
$note = $this->notes()->create([]);
$note->account_id = $this->account_id;
$note->body = $body;
$note->save();

$this->number_of_notes = $this->number_of_notes + 1;
$this->save();

$this->logEvent('note', $note->id, 'create');

return $note->id;
}

/**
* Delete the note.
*
* @param Note|int $note
*/
public function deleteNote($note)
{
if (!$note instanceof Note) {
$note = Note::findOrFail($note);
}

$note->delete();

// Decrease number of notes
$this->number_of_notes = $this->number_of_notes - 1;

if ($this->number_of_notes < 1) {
$this->number_of_notes = 0;
}

$this->save();

// Delete all events
$this->events()
->where('object_type', 'note')
->where('object_id', $note->id)
->get()
->each
->delete();
}

/**
* Get all the activities, if any.
*
Expand Down
175 changes: 54 additions & 121 deletions app/Http/Controllers/PeopleController.php
Original file line number Diff line number Diff line change
Expand Up @@ -85,59 +85,41 @@ public function store(Request $request)
/**
* Display the specified resource.
*
* @param int $id
* @param Contact $contact
* @return \Illuminate\Http\Response
*/
public function show($contactId)
public function show(Contact $contact)
{
$contact = Contact::findOrFail($contactId);
$contact->load(['notes' => function ($query) {
$query->orderBy('updated_at', 'desc');
}]);

if ($contact->account_id !== Auth::user()->account_id) {
return redirect()->route('people.index');
}

$data = [
'contact' => $contact,
];

return view('people.profile', $data);
return view('people.profile')
->withContact($contact);
}

/**
* Display the Edit people's view.
*
* @param int $id
* @param Contact $contact
* @return \Illuminate\Http\Response
*/
public function edit($contactId)
public function edit(Contact $contact)
{
$contact = Contact::findOrFail($contactId);

if ($contact->account_id !== Auth::user()->account_id) {
return redirect()->route('people.index');
}

$data = [
'contact' => $contact,
];

return view('people.edit', $data);
return view('people.edit')
->withContact($contact);
}

/**
* Update the identity and address of the People object.
*
* @param Request $request
* @param int $peopleId
* @return Response
* @param Contact $contact
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $contactId)
public function update(Request $request, Contact $contact)
{
$contact = Contact::findOrFail($contactId);

if ($contact->account_id !== Auth::user()->account_id) {
return redirect()->route('people.index');
}

$validator = Validator::make($request->all(), [
'firstname' => 'required|max:255',
'gender' => 'required',
Expand Down Expand Up @@ -271,27 +253,21 @@ public function update(Request $request, $contactId)

$contact->logEvent('contact', $contact->id, 'update');

$request->session()->flash('success', trans('people.information_edit_success'));

dispatch(new ResizeAvatars($contact));

return redirect('/people/' . $contact->id);
return redirect('/people/' . $contact->id)
->with('success', trans('people.information_edit_success'));
}

/**
* Delete the specified resource.
*
* @param int $id
* @param Request $request
* @param Contact $contact
* @return \Illuminate\Http\Response
*/
public function delete(Request $request, $contactId)
public function delete(Request $request, Contact $contact)
{
$contact = Contact::findOrFail($contactId);

if ($contact->account_id !== Auth::user()->account_id) {
return redirect()->route('people.index');
}

$contact->activities->each->delete();
$contact->debts->each->delete();
$contact->events->each->delete();
Expand All @@ -304,116 +280,73 @@ public function delete(Request $request, $contactId)

$contact->delete();

$request->session()->flash('success', trans('people.people_delete_success'));

return redirect()->route('people.index');
return redirect()->route('people.index')
->with('success', trans('people.people_delete_success'));
}

/**
* Show the Edit work view.
*
* @param Request $request
* @return View
* @param Contact $contact
* @return \Illuminate\Http\Response
*/
public function editWork(Request $request, $contactId)
public function editWork(Request $request, Contact $contact)
{
$contact = Contact::findOrFail($contactId);

if ($contact->account_id !== Auth::user()->account_id) {
return redirect()->route('people.index');
}

$data = [
'contact' => $contact,
];

return view('people.dashboard.work.edit', $data);
return view('people.dashboard.work.edit')
->withContact($contact);
}

/**
* Save the work information
* @param int $id
* @return
*
* @param Request $request
* @param Contact $contact
* @return \Illuminate\Http\Response
*/
public function updateWork(Request $request, $contactId)
public function updateWork(Request $request, Contact $contact)
{
$contact = Contact::findOrFail($contactId);

if ($contact->account_id !== Auth::user()->account_id) {
return redirect()->route('people.index');
}

$job = $request->input('job');
$company = $request->input('company');
$linkedin = $request->input('linkedin');

if ($job != '') {
$contact->job = $job;
} else {
$contact->job = null;
}

if ($company != '') {
$contact->company = $company;
} else {
$contact->company = null;
}

if ($request->input('linkedin') != '') {
$contact->linkedin_profile_url = $request->input('linkedin');
} else {
$contact->linkedin_profile_url = null;
}
$contact->job = ! empty($job) ? $job : null;
$contact->company = ! empty($company) ? $company : null;
$contact->linkedin_profile_url = ! empty($linkedin) ? $linkedin : null;

$contact->save();

$request->session()->flash('success', trans('people.work_edit_success'));

return redirect('/people/' . $contact->id);
return redirect('/people/' . $contact->id)
->with('success', trans('people.work_edit_success'));
}

/**
* Show the Edit food preferencies view.
*
* @param Request $request
* @param [type] $peopleId integer
* @return View
* @param Contact $contact
* @return \Illuminate\Http\Response
*/
public function editFoodPreferencies(Request $request, $contactId)
public function editFoodPreferencies(Request $request, Contact $contact)
{
$contact = Contact::findOrFail($contactId);

if ($contact->account_id !== Auth::user()->account_id) {
return redirect()->route('people.index');
}

$data = [
'contact' => $contact,
];

return view('people.dashboard.food-preferencies.edit', $data);
return view('people.dashboard.food-preferencies.edit')
->withContact($contact);
}

/**
* Save the food preferencies.
* @param int $id
* @return
*
* @param Request $request
* @param Contact $contact
* @return \Illuminate\Http\Response
*/
public function updateFoodPreferencies(Request $request, $contactId)
public function updateFoodPreferencies(Request $request, Contact $contact)
{
$contact = Contact::findOrFail($contactId);

if ($contact->account_id !== Auth::user()->account_id) {
return redirect()->route('people.index');
}

$food = $request->input('food');

if ($food != '') {
$contact->updateFoodPreferencies($food);
} else {
$contact->updateFoodPreferencies(null);
}
$food = ! empty($request->get('food')) ? $request->get('food') : null;

$request->session()->flash('success', trans('people.food_preferencies_add_success'));
$contact->updateFoodPreferencies($food);

return redirect('/people/' . $contact->id);
return redirect('/people/' . $contact->id)
->with('success', trans('people.food_preferencies_add_success'));
}
}
22 changes: 11 additions & 11 deletions app/Http/routes.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,19 +21,19 @@
Route::get('/dashboard/', ['as' => 'dashboard', 'uses' => 'DashboardController@index']);

Route::group(['as' => 'people'], function () {
Route::get('/people/', ['as' => '.index', 'uses' => 'PeopleController@index']);
Route::get('/people/add', ['as' => '.create', 'uses' => 'PeopleController@create']);
Route::post('/people/', 'PeopleController@store');
Route::get('/people/', 'PeopleController@index')->name('.index');
Route::get('/people/add', 'PeopleController@create')->name('.create');
Route::post('/people/', 'PeopleController@store')->name('.store');

// Dashboard
Route::get('/people/{people}', ['as' => '.show', 'uses' => 'PeopleController@show']);
Route::get('/people/{people}/edit', ['as' => '.edit', 'uses' => 'PeopleController@edit']);
Route::post('/people/{people}/update', 'PeopleController@update');
Route::get('/people/{people}/delete', ['as' => '.delete', 'uses' => 'PeopleController@delete']);
Route::get('/people/{contact}', 'PeopleController@show')->name('.show');
Route::get('/people/{contact}/edit', 'PeopleController@edit')->name('.edit');
Route::post('/people/{contact}/update', 'PeopleController@update')->name('.update');
Route::get('/people/{contact}/delete', 'PeopleController@delete')->name('.delete');

// Work information
Route::get('/people/{people}/work/edit', ['as' => '.edit', 'uses' => 'PeopleController@editWork']);
Route::post('/people/{people}/work/update', 'PeopleController@updateWork');
Route::get('/people/{contact}/work/edit', ['as' => '.edit', 'uses' => 'PeopleController@editWork'])->name('.work.edit');
Route::post('/people/{contact}/work/update', 'PeopleController@updateWork')->name('.work.update');

// Notes
Route::get('/people/{contact}/notes/add', 'People\\NotesController@create')->name('.notes.add');
Expand All @@ -43,8 +43,8 @@
Route::get('/people/{contact}/notes/{note}/delete', 'People\\NotesController@destroy')->name('.notes.delete');

// Food preferencies
Route::get('/people/{people}/food', ['as' => '.food', 'uses' => 'PeopleController@editFoodPreferencies']);
Route::post('/people/{people}/food/save', 'PeopleController@updateFoodPreferencies');
Route::get('/people/{contact}/food', 'PeopleController@editFoodPreferencies')->name('.food');
Route::post('/people/{contact}/food/save', 'PeopleController@updateFoodPreferencies')->name('.food.update');

// Kid
Route::get('/people/{contact}/kids/add', 'People\\KidsController@create')->name('.kids.add');
Expand Down
8 changes: 6 additions & 2 deletions database/seeds/FakeContentTableSeeder.php
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,12 @@ public function run()
// // notes
if (rand(1, 2) == 1) {
for ($j = 0; $j < rand(1, 13); $j++) {
$body = $faker->realText(rand(40, 500));
$noteId = $contact->addNote($body);
$note = $contact->notes->create([
'body' => $faker->realText(rand(40, 500)),
'account_id' => $contact->account_id
]);

$this->logEvent('note', $note->id, 'create');
}
}
}
Expand Down
Loading

0 comments on commit e7e0446

Please sign in to comment.