Skip to content

Commit

Permalink
Merge pull request #1034 from NFDI4Chem/development
Browse files Browse the repository at this point in the history
Development
  • Loading branch information
CS76 committed Jan 16, 2024
2 parents e0f341c + 45d0acd commit 19b8a6d
Show file tree
Hide file tree
Showing 9 changed files with 733 additions and 165 deletions.
6 changes: 3 additions & 3 deletions app/Actions/Project/UpdateProject.php
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,9 @@ public function update(Project $project, array $input)

$project
->forceFill([
'name' => $input['name'],
'slug' => Str::slug($input['name'], '-'),
'description' => $input['description'] ? $input['description'] : $project->description,
'name' => array_key_exists('name', $input) ? $input['name'] : $project->name,
'slug' => array_key_exists('name', $input) ? Str::slug($input['name'], '-') : $project->slug,
'description' => array_key_exists('description', $input) ? $input['description'] : $project->description,
'color' => array_key_exists('color', $input)
? $input['color']
: $project->color,
Expand Down
157 changes: 101 additions & 56 deletions app/Http/Controllers/ProjectController.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use App\Actions\Project\ArchiveProject;
use App\Actions\Project\CreateNewProject;
use App\Actions\Project\DeleteProject;
use App\Actions\Project\PublishProject;
use App\Actions\Project\RestoreProject;
use App\Actions\Project\UpdateProject;
use App\Http\Resources\ProjectResource;
Expand All @@ -16,6 +17,7 @@
use App\Models\User;
use App\Models\Validation;
use Auth;
use Carbon\Carbon;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Contracts\Auth\StatefulGuard;
use Illuminate\Http\JsonResponse;
Expand Down Expand Up @@ -277,75 +279,90 @@ public function validationReport(Request $request, Project $project)
return $validation->fresh();
}

public function publish(Request $request, Project $project)
public function publish(Request $request, Project $project, PublishProject $publisher, UpdateProject $updater)
{
if ($project) {
$enableProjectMode = $request->get('enableProjectMode');
if ($enableProjectMode) {
$validation = $project->validation;
$validation->process();
$validation = $validation->fresh();
if ($validation['report']['project']['status']) {
$input = $request->all();
$release_date = $input['release_date'];
if (! $project->is_public && ! is_null($project->doi) && ! is_null($release_date)) {
$release_date = Carbon::parse($release_date);
if ($release_date->isToday()) {
$updater->update($project, $request->all());
$publisher->publish($project);
$project->sendNotification('publish', $this->prepareSendList($project));
}
} else {

$enableProjectMode = $request->get('enableProjectMode');
if ($enableProjectMode) {
$validation = $project->validation;
$validation->process();
$validation = $validation->fresh();
if ($validation['report']['project']['status']) {
$project->release_date = $request->get('release_date');
$project->status = 'queued';
$project->save();

ProcessSubmission::dispatch($project);

return response()->json([
'project' => $project,
'validation' => $validation,
]);
} else {
return response()->json([
'errors' => 'Validation failing. Please provide all the required data and try again. If the problem persists, please contact us.',
'validation' => $validation,
], 422);
}
} else {
$draft = $project->draft;
$draft->project_enabled = false;
$draft->save();

$project->release_date = $request->get('release_date');
$project->status = 'queued';
$project->save();

ProcessSubmission::dispatch($project);

return response()->json([
'project' => $project,
'validation' => $validation,
]);
} else {
return response()->json([
'errors' => 'Validation failing. Please provide all the required data and try again. If the problem persists, please contact us.',
'validation' => $validation,
], 422);
}
} else {
$draft = $project->draft;
$draft->project_enabled = false;
$draft->save();

$project->release_date = $request->get('release_date');
$project->status = 'queued';
$project->save();

$validation = $project->validation;
$validation->process();
$validation = $validation->fresh();

foreach ($project->studies as $study) {
$study->license_id = $project->license_id;
$study->save();
foreach ($study->datasets as $dataset) {
$dataset->license_id = $project->license_id;
$dataset->save();
$validation = $project->validation;
$validation->process();
$validation = $validation->fresh();

foreach ($project->studies as $study) {
$study->license_id = $project->license_id;
$study->save();
foreach ($study->datasets as $dataset) {
$dataset->license_id = $project->license_id;
$dataset->save();
}
}
}

$status = true;
$status = true;

foreach ($validation['report']['project']['studies'] as $study) {
if (! $study['status']) {
$status = false;
foreach ($validation['report']['project']['studies'] as $study) {
if (! $study['status']) {
$status = false;
}
}
// add license check
if ($status) {
ProcessSubmission::dispatch($project);

return response()->json([
'project' => $project,
'validation' => $validation,
]);
} else {
return response()->json([
'errors' => 'Validation failing. Please provide all the required data and try again. If the problem persists, please contact us.',
], 422);
}
}
// add license check
if ($status) {
ProcessSubmission::dispatch($project);

return response()->json([
'project' => $project,
'validation' => $validation,
]);
} else {
return response()->json([
'errors' => 'Validation failing. Please provide all the required data and try again. If the problem persists, please contact us.',
], 422);
}

}

}

}

public function store(Request $request, CreateNewProject $creator)
Expand All @@ -370,6 +387,14 @@ public function update(Request $request, UpdateProject $updater, Project $projec
return $request->wantsJson() ? new JsonResponse('', 200) : back()->with('success', 'Project updated successfully');
}

public function updateReleaseDate(Request $request, UpdateProject $updater, Project $project)
{
//dd($request->all());
$updater->update($project, $request->all());

return $request->wantsJson() ? new JsonResponse('', 200) : back()->with('success', "Project's release date updated successfully");
}

public function destroy(Request $request, StatefulGuard $guard, Project $project, DeleteProject $creator)
{
if (! Gate::forUser($request->user())->check('deleteProject', $project)) {
Expand All @@ -394,4 +419,24 @@ public function destroy(Request $request, StatefulGuard $guard, Project $project
return redirect()->route('dashboard')->with('success', 'Project deleted successfully');
}
}

/**
* Prepare Sent to list.
*
* @param App\Models\Project $project
* @return void
*/
public function prepareSendList($project)
{
$sendTo = [];
foreach ($project->allUsers() as $member) {
if ($member->projectMembership->role == 'creator' || $member->projectMembership->role == 'owner') {
array_push($sendTo, $member);
} else {
array_push($sendTo, $project->owner);
}
}

return $sendTo;
}
}
2 changes: 1 addition & 1 deletion resources/js/Mixins/Global.js
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ export default {
},
copyToClipboard(text, element) {
if (typeof element == "string") {
document.getElementById(id).select();
document.getElementById(element).select();
} else {
element.select();
}
Expand Down
Loading

0 comments on commit 19b8a6d

Please sign in to comment.