Check for double files and some code clean up.

This commit is contained in:
James Cole
2015-07-18 21:46:16 +02:00
parent 73e526645e
commit ed12ea7cfb
4 changed files with 120 additions and 81 deletions

View File

@@ -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();

View File

@@ -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', '<ul>' . join('', $att->getErrors()->get('attachments', '<li>:message</li>')) . '</ul>');
}
if ($att->getMessages()->count() > 0) {
// todo moet beter
Session::flash('info', '<ul>' . join('', $att->getMessages()->get('attachments', '<li>:message</li>')) . '</ul>');
}
event(new JournalSaved($journal));
// update, get events by date and sort DESC

View File

@@ -5,8 +5,10 @@
{% endblock %}
{% block content %}
{{ Form.open({'class' : 'form-horizontal','id' : 'update','url' : route('transactions.update',journal.id)}) }}
<form method="POST" action="{{ route('transactions.update',journal.id) }}" accept-charset="UTF-8" class="form-horizontal" id="update"
enctype="multipart/form-data">
<input name="_token" type="hidden" value="{{ csrf_token() }}">
<input type="hidden" name="id" value="{{ journal.id }}"/>
<input type="hidden" name="what" value="{{ what }}"/>
@@ -73,6 +75,9 @@
{{ ExpandedForm.select('piggy_bank_id',piggies,data['piggy_bank_id']) }}
{% endif %}
<!-- ATTACHMENTS -->
{{ ExpandedForm.file('attachments[]', {'multiple': 'multiple'}) }}
</div>
</div>
<!-- end of panel for options-->
@@ -92,7 +97,7 @@
</div>
</div>
{{ Form.close|raw }}
</form>
{% endblock %}

View File

@@ -76,6 +76,7 @@
</div>
<!-- attachments -->
{% if journal.attachments|length > 0 %}
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">{{ 'attachments'|_ }}</h3>
@@ -97,6 +98,7 @@
</table>
</div>
</div>
{% endif %}
<!-- events, if present -->
{% if journal.piggyBankEvents|length > 0 %}