diff --git a/app/Helpers/Attachments/AttachmentHelper.php b/app/Helpers/Attachments/AttachmentHelper.php index 7b98a98f4a..4af6557a13 100644 --- a/app/Helpers/Attachments/AttachmentHelper.php +++ b/app/Helpers/Attachments/AttachmentHelper.php @@ -54,6 +54,7 @@ class AttachmentHelper implements AttachmentHelperInterface public function saveAttachmentsForModel(Model $model) { $files = Input::file('attachments'); + foreach ($files as $entry) { if (!is_null($entry)) { $this->processFile($entry, $model); @@ -71,11 +72,19 @@ class AttachmentHelper implements AttachmentHelperInterface */ protected function hasFile(UploadedFile $file, Model $model) { - $md5 = md5_file($file->getPath()); + $md5 = md5_file($file->getRealPath()); + $name = $file->getClientOriginalName(); $class = get_class($model); $count = Auth::user()->attachments()->where('md5', $md5)->where('attachable_id', $model->id)->where('attachable_type', $class)->count(); - return ($count > 0); + if ($count > 0) { + $err = 'File ' . e($name) . ' already attached to this object.'; + $this->errors->add('attachments', $err); + + return true; + } + + return false; } /** @@ -97,7 +106,7 @@ class AttachmentHelper implements AttachmentHelperInterface $attachment = new Attachment; $attachment->user()->associate(Auth::user()); $attachment->attachable()->associate($model); - $attachment->md5 = md5_file($file->getPath()); + $attachment->md5 = md5_file($file->getRealPath()); $attachment->filename = $file->getClientOriginalName(); $attachment->mime = $file->getMimeType(); $attachment->size = $file->getSize(); @@ -128,6 +137,11 @@ class AttachmentHelper implements AttachmentHelperInterface } + /** + * @param UploadedFile $file + * + * @return bool + */ protected function validMime(UploadedFile $file) { $mime = $file->getMimeType(); @@ -143,6 +157,11 @@ class AttachmentHelper implements AttachmentHelperInterface return true; } + /** + * @param UploadedFile $file + * + * @return bool + */ protected function validSize(UploadedFile $file) { $size = $file->getSize(); diff --git a/app/Http/Controllers/TransactionController.php b/app/Http/Controllers/TransactionController.php index 2e2037ed34..de9996bf41 100644 --- a/app/Http/Controllers/TransactionController.php +++ b/app/Http/Controllers/TransactionController.php @@ -311,16 +311,29 @@ class TransactionController extends Controller /** * @param JournalFormRequest $request * @param JournalRepositoryInterface $repository + * @param AttachmentHelperInterface $att * @param TransactionJournal $journal * - * @return \Illuminate\Http\RedirectResponse + * @return $this|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector */ - public function update(JournalFormRequest $request, JournalRepositoryInterface $repository, TransactionJournal $journal) + public function update(JournalFormRequest $request, JournalRepositoryInterface $repository, AttachmentHelperInterface $att, TransactionJournal $journal) { $journalData = $request->getJournalData(); $repository->update($journal, $journalData); + // save attachments: + $att->saveAttachmentsForModel($journal); + + if ($att->getErrors()->count() > 0) { + // todo moet beter + Session::flash('error', '