2019-02-12 11:21:35 +00:00
|
|
|
<?php
|
2019-04-03 16:06:10 +00:00
|
|
|
namespace App\Http\Controllers\Publish;
|
2019-02-12 11:21:35 +00:00
|
|
|
|
2019-04-08 16:31:40 +00:00
|
|
|
use App\Exceptions\GeneralException;
|
|
|
|
use App\Http\Controllers\Controller;
|
2019-02-12 11:21:35 +00:00
|
|
|
use App\Models\Dataset;
|
2019-04-08 16:31:40 +00:00
|
|
|
use App\Models\User;
|
|
|
|
use Illuminate\Http\RedirectResponse;
|
|
|
|
use Illuminate\Http\Request;
|
2019-02-21 13:07:00 +00:00
|
|
|
use Illuminate\Support\Facades\Auth;
|
2019-04-08 16:31:40 +00:00
|
|
|
use Illuminate\Support\Facades\Storage;
|
|
|
|
use Illuminate\View\View;
|
2019-02-12 11:21:35 +00:00
|
|
|
|
2019-04-11 16:52:10 +00:00
|
|
|
class SubmitController extends Controller
|
2019-02-12 11:21:35 +00:00
|
|
|
{
|
|
|
|
public function __construct()
|
|
|
|
{
|
|
|
|
//$this->middleware('auth');
|
|
|
|
}
|
|
|
|
|
2019-04-08 16:31:40 +00:00
|
|
|
public function index(): View
|
|
|
|
{
|
|
|
|
$user = Auth::user();
|
|
|
|
$user_id = $user->id;
|
|
|
|
|
|
|
|
$builder = Dataset::query();
|
|
|
|
$myDatasets = $builder
|
2019-04-17 17:02:00 +00:00
|
|
|
->orderBy('server_state')
|
2019-05-21 16:28:18 +00:00
|
|
|
->whereIn('server_state', ['inprogress', 'released', 'editor_accepted', 'approved', 'reviewed', 'rejected_editor', 'rejected_reviewer'])
|
2019-04-10 08:54:15 +00:00
|
|
|
->where('account_id', $user_id)
|
2019-04-08 16:31:40 +00:00
|
|
|
->with('user:id,login')
|
2019-05-21 16:28:18 +00:00
|
|
|
->orderBy('server_date_modified', 'desc')
|
2019-04-08 16:31:40 +00:00
|
|
|
->get();
|
2019-04-11 16:52:10 +00:00
|
|
|
return view('workflow.submitter.index', [
|
2019-04-08 16:31:40 +00:00
|
|
|
'datasets' => $myDatasets,
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Display the specified resource.
|
|
|
|
*
|
|
|
|
* @param int $id
|
|
|
|
* @return \Illuminate\View\View
|
|
|
|
*/
|
|
|
|
public function release($id): View
|
|
|
|
{
|
|
|
|
$dataset = Dataset::with('user:id,login')->findOrFail($id);
|
2019-04-11 16:52:10 +00:00
|
|
|
|
|
|
|
$editors = User::whereHas('roles', function ($q) {
|
|
|
|
$q->where('name', 'editor');
|
|
|
|
})->pluck('login', 'id');
|
|
|
|
//$editors = Role::where('name', 'editor')->first()->users()->get();
|
2019-04-08 16:31:40 +00:00
|
|
|
|
2019-04-11 16:52:10 +00:00
|
|
|
return view('workflow.submitter.release', [
|
2019-04-08 16:31:40 +00:00
|
|
|
'dataset' => $dataset,
|
|
|
|
'editors' => $editors,
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function releaseUpdate(Request $request, $id)
|
|
|
|
{
|
|
|
|
$dataset = Dataset::findOrFail($id);
|
2019-05-22 12:02:16 +00:00
|
|
|
if ($dataset->files->count() == 0) {
|
|
|
|
return back()
|
|
|
|
->withErrors(['datasets_count' => ['At least one dataset is required.']]);
|
|
|
|
}
|
2019-04-08 16:31:40 +00:00
|
|
|
|
|
|
|
$input = $request->all();
|
2019-05-22 12:02:16 +00:00
|
|
|
//immer released setzen
|
2019-04-08 16:31:40 +00:00
|
|
|
$input['server_state'] = 'released';
|
2019-05-22 12:02:16 +00:00
|
|
|
//editor wieder löschen falls rejected
|
|
|
|
if ($dataset->editor_id !== null) {
|
|
|
|
$input['editor_id'] = null;
|
|
|
|
}
|
2019-04-08 16:31:40 +00:00
|
|
|
|
2019-05-22 12:02:16 +00:00
|
|
|
if ($dataset->reject_editor_note != null) {
|
|
|
|
$input['reject_editor_note'] = null;
|
|
|
|
}
|
2019-05-28 17:02:21 +00:00
|
|
|
if ($dataset->reject_reviewer_note != null) {
|
|
|
|
$input['reject_reviewer_note'] = null;
|
|
|
|
}
|
2019-05-22 12:02:16 +00:00
|
|
|
|
2019-04-08 16:31:40 +00:00
|
|
|
if ($dataset->update($input)) {
|
|
|
|
// event(new PageUpdated($page));
|
|
|
|
return redirect()
|
2019-05-21 16:28:18 +00:00
|
|
|
->route('publish.workflow.submit.index')
|
2019-04-08 16:31:40 +00:00
|
|
|
->with('flash_message', 'You have released your dataset!');
|
|
|
|
}
|
|
|
|
throw new GeneralException(trans('exceptions.publish.release.update_error'));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Remove the specified resource from storage.
|
|
|
|
*
|
|
|
|
* @param int $id
|
|
|
|
* @return \Illuminate\Http\Response
|
|
|
|
*/
|
|
|
|
public function delete($id): RedirectResponse
|
|
|
|
{
|
|
|
|
$dataset = Dataset::with('files')->findOrFail($id);
|
2019-07-03 16:32:41 +00:00
|
|
|
if ($dataset->server_state == "inprogress" || $dataset->server_state == "rejected_editor") {
|
2019-04-08 16:31:40 +00:00
|
|
|
if ($dataset->files->count() > 0) {
|
|
|
|
foreach ($dataset->files as $file) {
|
|
|
|
if (isset($file->path_name)) {
|
|
|
|
Storage::delete($file->path_name);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$dataset->delete();
|
2019-04-09 17:05:03 +00:00
|
|
|
session()->flash('flash_message', 'You have deleted 1 dataset!');
|
2019-07-03 16:32:41 +00:00
|
|
|
return redirect()->route('publish.workflow.submit.index');
|
|
|
|
} else {
|
|
|
|
session()->flash(
|
|
|
|
'flash_message',
|
|
|
|
'You cannot delete this datastet!'
|
|
|
|
. ' There status of this dataset is '
|
|
|
|
. $dataset->server_state
|
|
|
|
. ' !'
|
|
|
|
);
|
|
|
|
return redirect()->route('publish.workflow.submit.index');
|
2019-04-08 16:31:40 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-02-12 11:21:35 +00:00
|
|
|
public function changestate($id, $targetState)
|
|
|
|
{
|
|
|
|
// $docId = $this->getRequest()->getParam('docId');
|
|
|
|
// $targetState = $this->getRequest()->getParam('targetState');
|
|
|
|
|
|
|
|
//$document = $this->_documentsHelper->getDocumentForId($docId);
|
|
|
|
$dataset = Dataset::findOrFail($id);
|
|
|
|
|
|
|
|
// Check if valid target state
|
|
|
|
// if (!$this->_workflowHelper->isValidState($targetState)) {
|
|
|
|
|
|
|
|
// }
|
|
|
|
try {
|
|
|
|
//$this->_workflowHelper->changeState($document, $targetState);
|
|
|
|
$dataset->setServerState($targetState);
|
|
|
|
|
2019-02-15 12:55:14 +00:00
|
|
|
if ($targetState == 'published') {
|
|
|
|
//$this->_sendNotification($document, $form);
|
|
|
|
$time = new \Illuminate\Support\Carbon();
|
2019-04-08 16:31:40 +00:00
|
|
|
$dataset->server_date_published = $time;
|
2019-02-21 13:07:00 +00:00
|
|
|
session()->flash('flash_message', 'You have puplished 1 dataset!');
|
2019-02-15 12:55:14 +00:00
|
|
|
}
|
2019-02-12 11:21:35 +00:00
|
|
|
$dataset->save();
|
2019-04-10 08:54:15 +00:00
|
|
|
//return redirect()->back();
|
2019-02-21 13:07:00 +00:00
|
|
|
//return redirect()->route('settings.review.index');
|
2019-02-12 11:21:35 +00:00
|
|
|
} catch (Exception $e) {
|
|
|
|
//return $this->_redirectTo('index', array('failure' => $e->getMessage()), 'documents', 'admin');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|