Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/add session details on codetrek #3270

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions Modules/CodeTrek/Entities/CodeTrekApplicant.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use Illuminate\Database\Eloquent\SoftDeletes;
use Modules\Operations\Entities\OfficeLocation;
use Modules\User\Entities\User;
use App\Models\Session;

class CodeTrekApplicant extends Model
{
Expand All @@ -26,4 +27,9 @@ public function mentor()
{
return $this->belongsTo(User::class, 'mentor_id');
}

public function sessions()
{
return $this->morphToMany(Session::class, 'model', 'model_has_sessions');
}
}
141 changes: 141 additions & 0 deletions Modules/CodeTrek/Http/Controllers/SessionController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
<?php

namespace Modules\CodeTrek\Http\Controllers;

use App\Models\Session;
use Google\Service\CloudSearch\Id;
use Google\Service\CloudTrace\Module;
use Illuminate\Routing\Controller;
use Illuminate\Http\Request;
use Modules\CodeTrek\Http\Requests;
use Modules\CodeTrek\Entities\CodeTrekApplicant;
use Modules\CodeTrek\Http\Requests\SessionRequest;

class SessionController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(CodeTrekApplicant $codeTrekApplicant)

Check failure on line 21 in Modules/CodeTrek/Http/Controllers/SessionController.php

View workflow job for this annotation

GitHub Actions / Larastan

Method Modules\CodeTrek\Http\Controllers\SessionController::index() should return Illuminate\Http\Response but return statement is missing.
{
}

/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create(CodeTrekApplicant $codeTrekApplicant)

Check failure on line 30 in Modules/CodeTrek/Http/Controllers/SessionController.php

View workflow job for this annotation

GitHub Actions / Larastan

Method Modules\CodeTrek\Http\Controllers\SessionController::create() should return Illuminate\Http\Response but return statement is missing.
{
}

/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(SessionRequest $request, CodeTrekApplicant $codeTrekApplicant)

Check failure on line 40 in Modules/CodeTrek/Http/Controllers/SessionController.php

View workflow job for this annotation

GitHub Actions / Larastan

PHPDoc tag @param for parameter $request with type Illuminate\Http\Request is not subtype of native type Modules\CodeTrek\Http\Requests\SessionRequest.
{
$hiddenValue = $request->input('applicant_id');
$codeTrekApplicant = CodeTrekApplicant::find($hiddenValue);

$topicName = $request->input('topic_name');
$date = $request->input('date');
$link = $request->input('link');
$level = $request->input('level');
$summary = $request->input('summary');

$session = $codeTrekApplicant->sessions()->create([
'topic_name' => $topicName,
'date' => $date,
'link' => $link,
'level' => $level,
'summary' => $summary,
]);

// $codeTrekApplicant->sessions()->save($session);

return redirect()->route('codetrek.session.show', $codeTrekApplicant->id)

Check failure on line 61 in Modules/CodeTrek/Http/Controllers/SessionController.php

View workflow job for this annotation

GitHub Actions / Larastan

Method Modules\CodeTrek\Http\Controllers\SessionController::store() should return Illuminate\Http\Response but returns Illuminate\Http\RedirectResponse.
->with('success', 'Session created successfully.');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show(CodeTrekApplicant $codeTrekApplicant, int $applicant)

Check failure on line 70 in Modules/CodeTrek/Http/Controllers/SessionController.php

View workflow job for this annotation

GitHub Actions / Larastan

PHPDoc tag @param references unknown parameter: $id
{
$codeTrekApplicant = CodeTrekApplicant::findOrFail($applicant);

$sessions= $codeTrekApplicant->sessions()
->orderBy('date', 'desc')
->get();

return view('codetrek::Sessions.index')->with(['codeTrekApplicant' => $codeTrekApplicant,'sessions' =>$sessions]);

Check failure on line 78 in Modules/CodeTrek/Http/Controllers/SessionController.php

View workflow job for this annotation

GitHub Actions / Larastan

Method Modules\CodeTrek\Http\Controllers\SessionController::show() should return Illuminate\Http\Response but returns Illuminate\View\View.
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit(CodeTrekApplicant $codeTrekApplicant)

Check failure on line 86 in Modules/CodeTrek/Http/Controllers/SessionController.php

View workflow job for this annotation

GitHub Actions / Larastan

PHPDoc tag @param references unknown parameter: $id
{
//

Check failure on line 88 in Modules/CodeTrek/Http/Controllers/SessionController.php

View workflow job for this annotation

GitHub Actions / Larastan

Method Modules\CodeTrek\Http\Controllers\SessionController::edit() should return Illuminate\Http\Response but return statement is missing.
}

/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/


public function update(SessionRequest $request, int $id)

Check failure on line 100 in Modules/CodeTrek/Http/Controllers/SessionController.php

View workflow job for this annotation

GitHub Actions / Larastan

PHPDoc tag @param for parameter $request with type Illuminate\Http\Request is not subtype of native type Modules\CodeTrek\Http\Requests\SessionRequest.
{
$hiddenValue = $request->input('applicant');

$topicName = $request->input('topic_name');
$date = $request->input('date');
$link = $request->input('link');
$level = $request->input('level');
$summary = $request->input('summary');

$session = Session::find($id);
$session->update([
'topic_name' => $topicName,
'date' => $date,
'link' => $link,
'level'=> $level,
'summary' => $summary
]);

$session->save();

return redirect()->route('codetrek.session.show',$hiddenValue)

Check failure on line 121 in Modules/CodeTrek/Http/Controllers/SessionController.php

View workflow job for this annotation

GitHub Actions / Larastan

Method Modules\CodeTrek\Http\Controllers\SessionController::update() should return Illuminate\Http\Response but returns Illuminate\Http\RedirectResponse.
->with('success', 'Session updated successfully.');
}

/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/


public function destroy($session_id, $applicant_id )
{

$session = Session::find($session_id);
$session->delete();

return redirect()->route('codetrek.session.show',$applicant_id)->with('success', 'Session deleted successfully.');
}
}
36 changes: 36 additions & 0 deletions Modules/CodeTrek/Http/Requests/SessionRequest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?php

namespace Modules\CodeTrek\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class SessionRequest extends FormRequest
{
public function rules()
{
return [
'topic_name' => 'required|string',
'link' => 'required|string',
'date' => 'required|date',
'level' => 'required',
'summary' => 'required|string|max:250',
];
}

public function authorize()
{
return true;
}

public function messages()
{
return [
'topic_name.required' => 'Please enter the topic name.',
'link.required' => 'Please enter the session link.',
'date.required' => 'Please enter the session date.',
'date.date' => 'Please enter a valid date.',
'level.required' => 'Please select level ',
'summary.required' => 'Please enter the summary.',
];
}
}
88 changes: 88 additions & 0 deletions Modules/CodeTrek/Resources/assets/js/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
$(document).ready(function() {
$("#createSessionModal, #editSessionModal").on("hidden.bs.modal", function() {
$(this)
.find("form")
.trigger("reset");
$(this)
.find(".text-danger")
.addClass("d-none")
.empty();
});

$("#sessionForm, #editSessionForm").on("submit", function(e) {
e.preventDefault();

let modalId = $(this)
.closest(".modal")
.attr("id");
let spinnerId = "#" + modalId + " .spinner-border";
let form = $(this);

$(spinnerId).removeClass("d-none");

$.ajax({
type: form.attr("method"),
url: form.attr("action"),
data: form.serialize(),
success: function(response) {
$(spinnerId).addClass("d-none");
$("#" + modalId).modal("hide");
$("#successMessage").toggleClass("d-none");
$("#successMessage").fadeToggle(3000);
location.reload(true);
},
error: function(response) {
$(spinnerId).addClass("d-none");

if (response.responseJSON && response.responseJSON.errors) {
let errors = response.responseJSON.errors;

form
.find(".text-danger")
.addClass("d-none")
.empty();

if (errors.topic_name) {
let text = errors.topic_name[0];
$("#" + modalId + " #sessionNameError")
.html(text)
.removeClass("d-none");
} else {
$("#" + modalId + " #sessionNameError").addClass("d-none");
}

if (errors.link) {
let text = errors.link[0];
$("#" + modalId + " #sessionLinkError")
.html(text)
.removeClass("d-none");
} else {
$("#" + modalId + " #sessionLinkError").addClass("d-none");
}

if (errors.date) {
let text = errors.date[0];
$("#" + modalId + " #sessionDateError")
.html(text)
.removeClass("d-none");
} else {
$("#" + modalId + " #sessionDateError").addClass("d-none");
}

if (errors.summary) {
let text = errors.summary[0];
$("#" + modalId + " #sessionSummaryError")
.html(text)
.removeClass("d-none");
} else {
$("#" + modalId + " #sessionSummaryError").addClass("d-none");
}

$("#" + modalId).modal("show");
} else {
$("#" + modalId).modal("hide");
}
},
});
});
});
Loading
Loading