Skip to content

Commit

Permalink
Merge pull request #42 from shahghasiadil/attendances
Browse files Browse the repository at this point in the history
Attendances
  • Loading branch information
shahghasiadil committed Feb 16, 2022
2 parents c2cd8a5 + 03737b2 commit fc02e95
Show file tree
Hide file tree
Showing 9 changed files with 169 additions and 111 deletions.
45 changes: 26 additions & 19 deletions App/laravel/app/Http/Controllers/AttendanceController.php
Expand Up @@ -4,6 +4,9 @@

use Illuminate\Http\Request;
use App\Models\Attendance;
use App\Models\Subject;
use App\Models\Semester;
use App\Models\Student;

class AttendanceController extends Controller
{
Expand All @@ -25,23 +28,23 @@ public function index()
*/
public function store(Request $request)
{
$this->validate($request, [
'state' => 'required|in:PRESENT,ABSENT',
'date' => 'required|date',
'start_time' => 'required|regex:/(\d+\:\d+)/',
'end_time' => 'required|regex:/(\d+\:\d+)/',
'student_id' => 'required|integer',
'subject_id' => 'required|integer',
]);
Attendance::create([
'state' => $request->state,
'date' => $request->date,
'start_time' => $request->start_time,
'end_time' => $request->end_time,
'student_id' => $request->student_id,
'subject_id' => $request->subject_id
]);
$this->validate($request, [
'state' => 'required|in:PRESENT,ABSENT',
'date' => 'required|date',
'start_time' => 'required|regex:/(\d+\:\d+)/',
'end_time' => 'required|regex:/(\d+\:\d+)/',
'student_id' => 'required|integer',
'subject_id' => 'required|integer',
]);

Attendance::create([
'state' => $request->state,
'date' => $request->date,
'start_time' => $request->start_time,
'end_time' => $request->end_time,
'student_id' => $request->student_id,
'subject_id' => $request->subject_id
]);
}

/**
Expand Down Expand Up @@ -110,10 +113,14 @@ public function permanentDelete($id)
public function restore($id)
{
$attendance = Attendance::withTrashed()->find($id);
if ($attendance) {
if ($attendance)
{
$attendance->restore();
}
else return response()->json(['message' => 'Resource not found', 'status' => 204]);
}


public function getStudentsBySubjectPeriod(Request $request){
return Subject::findOrFail($request->subject_id)->students->where('period', $request->period)->all();
}
}
12 changes: 7 additions & 5 deletions App/laravel/app/Http/Controllers/SemesterController.php
Expand Up @@ -112,11 +112,13 @@ public function restore($id)
}
}

public function findByNumber(Request $request)
// ** find a semester by name
public function findByName(Request $request)
{
$semester = Semester::where('name', '=', $request->name)->get();
if (sizeof($semester) > 0) {
return response()->json(["semester already exists", "status" => 200]);
} else return response()->json(['status' => 203]);
$semester = Semester::where('name', $request->name)->get();
if ($semester) {
return $semester;
}
else return response()->json(['message' => 'Resource Not Found', 'status' => 204]);
}
}
21 changes: 11 additions & 10 deletions App/laravel/app/Http/Controllers/StudentController.php
Expand Up @@ -64,7 +64,7 @@ public function store(Request $request)
'address_id' => 'required|integer',
'native_tongue' => 'string',
'tazkira_page' => 'int',
'tazkira_volume' => 'int',
'tazkira_volume' => 'required',
'tazkira_registration_number' => 'int',
'birth_year' => 'int',
'marital_status' => 'string',
Expand Down Expand Up @@ -109,9 +109,10 @@ public function store(Request $request)
]);

} catch (QueryException $e) {
if ($e->errorInfo[1] === 1062) {
return ("Duplicate Entry");
}
// if ($e->errorInfo[1] === 1062) {
// return ("Duplicate Entry");
// }
echo($e);
}
}

Expand Down Expand Up @@ -162,7 +163,7 @@ public function update(Request $request, $id)
'address_id' => 'required|integer',
'native_tongue' => 'string',
'tazkira_page' => 'int',
'tazkira_volume' => 'int',
'tazkira_volume' => 'required',
'tazkira_registration_number' => 'int',
'birth_year' => 'int',
'marital_status' => 'string',
Expand Down Expand Up @@ -268,16 +269,16 @@ public function studentRollNo($fname)
*/
public function getStudentsBySubject($id)
{
return Subject::find($id)->students;
return Subject::findOrFail($id)->students;
}

/** @param int id (semester id)
* this function returns all students related to a particular semester
*/
public function getStudentsBySemester($id)
{
return Semester::findOrFail($id)->students;
}
public function getStudentsBySemester($id)
{
return Semester::findOrFail($id)->students;
}

public function getStudentRelatives($id)
{
Expand Down
20 changes: 10 additions & 10 deletions App/laravel/app/Http/Controllers/SubjectController.php
Expand Up @@ -19,28 +19,29 @@ public function index()
{
return Subject::with('semester')->latest()->paginate(10);
}
public function getSemesters()
{
return Semester::get(['id', 'name']);
}

public function show($id)
{
return Subject::with('semester')->findOrFail($id);
}

public function store(Request $request)
{
$this->validate($request, [
'name' => 'required|string|max:80',
'credit' => 'required|integer',
'semester_id' => 'required',
'code' => 'required'
]);

Subject::create([
'name' => $request->name,
'credit' => $request->credit,
'semester_id' => $request->semester_id
'semester_id' => $request->semester_id,
'code' => $request->code
]);
}

// This method updates Subject
public function update(Request $request, $id)
{
Expand All @@ -49,30 +50,29 @@ public function update(Request $request, $id)
'name' => 'required|string|max:80',
'credit' => 'required|integer',
'semester_id' => 'required',
'code' => 'required'
]);
$subject->update($request->all());
}

// softDeletes the students
public function destroy($id)
{
$subject = Subject::findOrFail($id);
$subject->delete();
}

public function permanentDelete($id)
{
$subject = Subject::findOrFail($id);
$subject->forceDelete();
}

public function restore($id)
{
$subject = Subject::withTrashed()->find($id);
if ($subject && $subject->trashed()) {
$subject->restore();
}
}
public function getSubject()
{
$subjects = Subject::select('id', 'name')->get();
return response()->json($subjects);
}
}
5 changes: 5 additions & 0 deletions App/laravel/app/Models/Student.php
Expand Up @@ -32,6 +32,11 @@ public function semesters()
return $this->belongsToMany(Semester::class);
}

public function subjects()
{
return $this->belongsToMany(Semester::class);
}

public function finalMarks()
{
return $this->hasMany(FinalMark::class);
Expand Down
2 changes: 1 addition & 1 deletion App/laravel/app/Models/Subject.php
Expand Up @@ -11,7 +11,7 @@ class Subject extends Model
use HasFactory, SoftDeletes;

// Mass Assignment
protected $fillable = ['name', 'credit', 'semester_id'];
protected $fillable = ['name', 'credit', 'semester_id', 'code'];

public function registrations()
{
Expand Down
14 changes: 9 additions & 5 deletions App/laravel/composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

@@ -0,0 +1,32 @@
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('attendances', function (Blueprint $table) {
$table->string('code')->unique();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('attendances', function (Blueprint $table) {
//
});
}
};

0 comments on commit fc02e95

Please sign in to comment.