<?php
namespace App\Http\Controllers\School;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Mail;
use App\Http\Controllers\Controller;
use App\Models\Vibhag;
use App\Models\Zila;
use App\Models\Sankul;
use App\Models\User;
use App\Models\Caste;
use App\Models\Religion;
use App\Models\Session;
use App\Models\Staff;
use App\Models\StaffGender;
use App\Models\Course;
use App\Models\ClassMaster;
use App\Models\Student;
use App\Models\StudentGender;
use App\Models\SocialConcerns;
class BasicInformationController extends Controller
{
public function __construct()
{
}
// SCHOOL INFORMATION
public static function school_information()
{
$cousre = Course::all();
$vibhagAll = Vibhag::all();
$adminSchool = User::with('vibhag.zilas.sankul')->find(auth()->user()->id);
$class = ClassMaster::join('course_masters','course_masters.course_id','=','class_masters.courseId')
->select('class_masters.*','course_masters.course_name')
->get();
return view('school.basic-info.school_information',
[
'title' => 'Sarvhitkari Punjab - School Information',
'keyword'=> '',
'description'=> '',
'courseList' => $cousre,
'classList' => $class,
'vibhagAll' => $vibhagAll,
'adminSchool'=>$adminSchool
]);
}
public function school_information_update($id, Request $request)
{
$data = $request->all();
$rules = [
'vibhag_name' => 'required',
'zila_name' => 'required',
'sankul_name' => 'required',
'school_name' => 'required',
'board' => 'required',
'level' => 'required',
'principal_name' => 'required',
'contact_number' => 'required|numeric',
];
$messages = [
'required' => 'The :attribute field is required.'
];
$validator = Validator::make($data, $rules, $messages);
if ($validator->fails()) {
$errors=$validator->errors();
$response_arr = array(
"status" => false,
"message" => "<div id='message'><div class='alert alert-danger'>Oops! Something went wrong. Please try again later!</div></div>",
"errors" => $errors,
"data" => []
);
}else{
$selectedValues = $request->level;
$implodedValues = implode(',', $selectedValues);
$data = [
'vibhag_id' => $request->vibhag_name,
'zila_id' => $request->zila_name,
'sankul_id' => $request->sankul_name,
'name' => $request->school_name,
'board' => $request->board,
'level' => $implodedValues,
'level_class' => $request->hidden_class_id,
'u_dise_code' => $request->u_dise_code,
'svm_code' => $request->svm_code,
'principal_name' => $request->principal_name,
'edu_qualification' => $request->educational_qualification,
'mobile' => $request->contact_number,
'facebook' => $request->facebook_link,
'youtube' => $request->youtube_link,
'instagram' => $request->instagram_link,
'twitter' => $request->twitter_link,
];
User::find($id)->update($data);
$response_arr = array(
"status" => true,
"message" => "<div id='message'><div class='alert alert-success'>School information updated successfully.</div></div>",
);
}
return response()->json($response_arr);
}
// STAFF INFORMATION
public static function staff_information()
{
// $session = Session::all();
$caste = Caste::all();
$religion = Religion::all();
$staff = Staff::where('school_id',auth()->user()->id)
->join('session_masters','session_masters.session_id','=','staff.staff_session')
->select('staff.*','session_masters.session_from','session_masters.session_to')
->orderBy('staff.staff_id','DESC')
->get();
return view('school.basic-info.staff_information',
[
'title' => 'Sarvhitkari Punjab - Staff Information',
'keyword'=> '',
'description'=> '',
// 'session'=> $session,
'caste'=> $caste,
'religion' => $religion,
'staff' => $staff,
]);
}
public function staff_information_save(Request $request)
{
$id= auth()->user()->id;
$user = User::find($id);
if($user['session_id'] == ''){
$response_arr = array(
"status" => false,
"message" => "<div id='message'><div class='alert alert-warning'>Choose session first from utility master.</div></div>",
"data" => []
);
}else{
$data = $request->all();
$rules = [
// 'session' => 'required',
'ratio' => 'required',
];
$messages = [
'required' => 'The :attribute field is required.'
];
$validator = Validator::make($data, $rules, $messages);
if ($validator->fails()) {
$errors=$validator->errors();
$response_arr = array(
"status" => false,
"message" => "<div id='message'><div class='alert alert-danger'>Oops! Something went wrong. Please try again later!</div></div>",
"errors" => $errors,
"data" => []
);
}else{
$maleData = $request->input('male');
$femaleData = $request->input('female');
$data = [
'staff_session' => $user['session_id'],
'staff_choose' => $request->staff,
'staff_ratio' => $request->ratio,
'school_id' => auth()->user()->id,
];
$staff = Staff::create($data);
// Save male data to the database
foreach ($maleData as $religionId => $maleRow) {
foreach ($maleRow as $casteId => $maleValue) {
$staffGender = StaffGender::updateOrCreate(
['staff_id' => $staff->staff_id, 'religion_id' => $religionId, 'caste_id' => $casteId],
['male_value' => $maleValue]
);
// Update the corresponding female_value
$staffGender->female_value = $femaleData[$religionId][$casteId] ?? null;
$staffGender->save();
}
}
$response_arr = array(
"status" => true,
"message" => "<div id='message'><div class='alert alert-success'>Staff information added successfully.</div></div>",
);
}
}
return response()->json($response_arr);
}
public static function staff_information_edit($id)
{
$staffShow = Staff::find($id);
$gender = StaffGender::where('staff_id',$id)->get();
$staff = Staff::where('school_id',auth()->user()->id)
->join('session_masters','session_masters.session_id','=','staff.staff_session')
->select('staff.*','session_masters.session_from','session_masters.session_to')
->orderBy('staff.staff_id','DESC')
->get();
$session = Session::all();
$caste = Caste::all();
$religion = Religion::all();
$staffD=
[
'session'=> $session,
'caste'=> $caste,
'religion' => $religion,
'staffShow' => $staffShow,
'staff' => $staff,
'gender' => $gender
];
return response()->json($staffD);
}
public function staff_information_update($id, Request $request)
{
$user_id= auth()->user()->id;
$user = User::find($user_id);
if($user['session_id'] == ''){
$response_arr = array(
"status" => false,
"message" => "<div id='message'><div class='alert alert-warning'>Choose session first from utility master.</div></div>",
"data" => []
);
}else{
$data = $request->all();
$rules = [
// 'session' => 'required',
'staff' => 'required',
'ratio' => 'required',
];
$messages = [
'required' => 'The :attribute field is required.'
];
$validator = Validator::make($data, $rules, $messages);
if ($validator->fails()) {
$errors=$validator->errors();
$response_arr = array(
"status" => false,
"message" => "<div id='message'><div class='alert alert-danger'>Oops! Something went wrong. Please try again later!</div></div>",
"errors" => $errors,
"data" => []
);
}else{
$maleData = $request->input('male');
$femaleData = $request->input('female');
$data = [
'staff_session' => $user['session_id'],
'staff_choose' => $request->staff,
'staff_ratio' => $request->ratio,
'school_id' => auth()->user()->id,
];
$staff = Staff::find($id)->update($data);
// Save male data to the database
foreach ($maleData as $religionId => $maleRow) {
foreach ($maleRow as $casteId => $maleValue) {
$staffGender = StaffGender::updateOrCreate(
['staff_id' => $id, 'religion_id' => $religionId, 'caste_id' => $casteId],
['male_value' => $maleValue]
);
// Update the corresponding female_value
$staffGender->female_value = $femaleData[$religionId][$casteId] ?? null;
$staffGender->save();
}
}
$response_arr = array(
"status" => true,
"message" => "<div id='message'><div class='alert alert-success'>Staff information updated successfully.</div></div>",
);
}
}
return response()->json($response_arr);
}
public function staff_information_delete($staff_id)
{
Staff::find($staff_id)->delete();
StaffGender::where('staff_id',$staff_id)->delete();
return redirect()->route('staff-information')->with('message','Staff information deleted successfully');
}
// STUDENT iNFORMATION
public function getClasses(Request $request)
{
$role = [
'user_role' =>'employee',
'user_status' => 'Approved',
'id' => auth()->user()->id
];
$fetch = User::where($role)->get();
$classIds = $fetch->pluck('level_class')->toArray();
$explode2 = [];
foreach ($classIds as $classId) {
$explode2 = array_merge($explode2, explode(',', $classId));
}
$courseId = $request->input('course_id');
$classes = ClassMaster::where('courseId', $courseId)->whereIn('class_id', $explode2)->pluck('class_name', 'class_id');
return response()->json(['classes' => $classes]);
}
public function getAcademicClasses(Request $request)
{
$role = [
'user_role' =>'employee',
'user_status' => 'Approved',
'id' => auth()->user()->id
];
$fetch = User::where($role)->get();
$classIds = $fetch->pluck('level_class')->toArray();
$explode2 = [];
foreach ($classIds as $classId) {
$explode2 = array_merge($explode2, explode(',', $classId));
}
$courseId = $request->input('course_id');
$currentYear = auth()->user()->session_id;
$classes = ClassMaster::where('courseId', $courseId)->whereIn('class_id', $explode2)->get(['class_id', 'class_name']);
$academic = ClassMaster::where('courseId', $courseId)
->whereIn('class_masters.class_id', $explode2)
->leftJoin('student_info', 'class_masters.class_id', '=', 'student_info.class_id')
->leftJoin('student_gender', 'student_info.student_id', '=', 'student_gender.student_id')
->select('class_masters.class_id', 'class_masters.class_name')
->selectRaw('SUM(IFNULL(student_gender.male_value, 0)) AS total_male')
->selectRaw('SUM(IFNULL(student_gender.female_value, 0)) AS total_female')
->where('student_info.session', $currentYear)
->where('student_info.course_id', $courseId)
->where('student_info.school_id', auth()->user()->id)
->groupBy('class_masters.class_id', 'class_masters.class_name')
->get();
return response()->json(['classes' => $classes, 'academic' => $academic]);
}
public static function student_information()
{
$session = Session::all();
$caste = Caste::all();
$religion = Religion::all();
$role = [
'user_role' =>'employee',
'user_status' => 'Approved',
'id' => auth()->user()->id
];
$fetch = User::where($role)->get();
$courseIds = $fetch->pluck('level')->toArray();
$explode = [];
foreach ($courseIds as $courseId) {
$explode = array_merge($explode, explode(',', $courseId));
}
$course = Course::whereIn('course_id', $explode)->get();
$classIds = $fetch->pluck('level_class')->toArray();
$explode2 = [];
foreach ($classIds as $classId) {
$explode2 = array_merge($explode2, explode(',', $classId));
}
$class = ClassMaster::whereIn('class_id', $explode2)->join('course_masters','course_masters.course_id','=','class_masters.courseId')->get();
$student = Student::where('school_id',auth()->user()->id)
->join('session_masters','session_masters.session_id','=','student_info.session')
->join('class_masters','class_masters.class_id','=','student_info.class_id')
->join('course_masters','course_masters.course_id','=','class_masters.courseId')
->select('student_info.*','session_masters.session_from','session_masters.session_to','class_masters.class_name','course_masters.course_name')
->orderBy('student_info.student_id','DESC')
->get();
return view('school.basic-info.student_information',
[
'title' => 'Sarvhitkari Punjab - Student Information',
'keyword'=> '',
'description'=> '',
'session'=> $session,
'course' => $course,
'class' => $class,
'fetch' => $fetch,
'caste' => $caste,
'religion' => $religion,
'student' => $student
]);
}
public function student_information_save(Request $request)
{
$user_id= auth()->user()->id;
$user = User::find($user_id);
if($user['session_id'] == ''){
$response_arr = array(
"status" => false,
"message" => "<div id='message'><div class='alert alert-warning'>Choose session first from utility master.</div></div>",
"data" => []
);
}else{
$data = $request->all();
$rules = [
// 'session' => 'required',
'course_id'=> 'required',
];
$messages = [
'required' => 'The :attribute field is required.',
'course_id.required' => 'The course name field is required.',
];
$validator = Validator::make($data, $rules, $messages);
if ($validator->fails()) {
$errors=$validator->errors();
$response_arr = array(
"status" => false,
"message" => "<div id='message'><div class='alert alert-danger'>Oops! Something went wrong. Please try again later!</div></div>",
"errors" => $errors,
"data" => []
);
}else{
$maleData = $request->input('male');
$femaleData = $request->input('female');
$data = [
'session' => $user['session_id'],
'school_id' => auth()->user()->id,
'course_id' => $request->course_id,
'class_id' => $request->class_id,
];
$student = Student::create($data);
// Save male data to the database
foreach ($maleData as $religionId => $maleRow) {
foreach ($maleRow as $casteId => $maleValue) {
$studentGender = StudentGender::updateOrCreate(
['student_id' => $student->student_id, 'religion_id' => $religionId, 'caste_id' => $casteId],
['male_value' => $maleValue]
);
// Update the corresponding female_value
$studentGender->female_value = $femaleData[$religionId][$casteId] ?? null;
$studentGender->save();
}
}
$response_arr = array(
"status" => true,
"message" => "<div id='message'><div class='alert alert-success'>Student information added successfully.</div></div>",
);
}
}
return response()->json($response_arr);
}
public static function student_information_edit($id)
{
$gender = StudentGender::where('student_id',$id)->get();
$student = Student::find($id);
$studentD=
[
'student' => $student,
'gender' => $gender
];
return response()->json($studentD);
}
public function student_information_update($id,Request $request)
{
$user_id= auth()->user()->id;
$user = User::find($user_id);
if($user['session_id'] == ''){
$response_arr = array(
"status" => false,
"message" => "<div id='message'><div class='alert alert-warning'>Choose session first from utility master.</div></div>",
"data" => []
);
}else{
$data = $request->all();
$rules = [
// 'session' => 'required',
'course_id'=> 'required',
];
$messages = [
'required' => 'The :attribute field is required.',
'course_id.required' => 'The course name field is required.',
];
$validator = Validator::make($data, $rules, $messages);
if ($validator->fails()) {
$errors=$validator->errors();
$response_arr = array(
"status" => false,
"message" => "<div id='message'><div class='alert alert-danger'>Oops! Something went wrong. Please try again later!</div></div>",
"errors" => $errors,
"data" => []
);
}else{
$maleData = $request->input('male');
$femaleData = $request->input('female');
$data = [
'session' => $user['session_id'],
'school_id' => auth()->user()->id,
'course_id' => $request->course_id,
'class_id' => $request->class_id,
];
$student = Student::find($id)->update($data);
// Save male data to the database
foreach ($maleData as $religionId => $maleRow) {
foreach ($maleRow as $casteId => $maleValue) {
$studentGender = StudentGender::updateOrCreate(
['student_id' => $id, 'religion_id' => $religionId, 'caste_id' => $casteId],
['male_value' => $maleValue]
);
// Update the corresponding female_value
$studentGender->female_value = $femaleData[$religionId][$casteId] ?? null;
$studentGender->save();
}
}
$response_arr = array(
"status" => true,
"message" => "<div id='message'><div class='alert alert-success'>Student information updated successfully.</div></div>",
);
}
}
return response()->json($response_arr);
}
public function student_information_delete($id)
{
Student::find($id)->delete();
StudentGender::where('student_id',$id)->delete();
return redirect()->route('student-information')->with('message','Student information deleted successfully.');
}
// SOCIAL CONCERNS
public static function social_concerns()
{
$session = Session::all();
$fetchAll = SocialConcerns::where('school_id',auth()->user()->id)
->join('session_masters','session_masters.session_id','=','social_concerns.session')
->select('social_concerns.*','session_masters.session_from','session_masters.session_to')
->orderBy('social_concerns.social_id','DESC')
->get();
return view('school.basic-info.social_concerns',
[
'title' => 'Sarvhitkari Punjab - Social Concerns',
'keyword'=> '',
'description'=> '',
'session' => $session,
'fetchAll' => $fetchAll
]);
}
public function social_concerns_save(Request $request)
{
$user_id= auth()->user()->id;
$user = User::find($user_id);
if($user['session_id'] == ''){
$response_arr = array(
"status" => false,
"message" => "<div id='message'><div class='alert alert-warning'>Choose session first from utility master.</div></div>",
"data" => []
);
}else{
$data = $request->all();
$rules = [
// 'session' => 'required',
'bal_sanskar_kendras'=> 'required',
];
$messages = [
'required' => 'The :attribute field is required.',
'course_id.required' => 'The course name field is required.',
];
$validator = Validator::make($data, $rules, $messages);
if ($validator->fails()) {
$errors=$validator->errors();
$response_arr = array(
"status" => false,
"message" => "<div id='message'><div class='alert alert-danger'>Oops! Something went wrong. Please try again later!</div></div>",
"errors" => $errors,
"data" => []
);
}else{
$data = [
'session' => $user['session_id'],
'school_id' => auth()->user()->id,
'bal_sanskar_kendras' => $request->bal_sanskar_kendras,
'samarpan_amount' => $request->samarpan_amount,
'social_camps' => $request->social_camps,
'environmental_activities' => $request->environmental_activities,
'community_service' => $request->community_service,
];
SocialConcerns::create($data);
$response_arr = array(
"status" => true,
"message" => "<div id='message'><div class='alert alert-success'>Social Concerns added successfully.</div></div>",
);
}
}
return response()->json($response_arr);
}
public static function social_concerns_edit($id)
{
$infoDetails = SocialConcerns::find($id);
return response()->json($infoDetails);
}
public function social_concerns_update($id, Request $request)
{
$user_id= auth()->user()->id;
$user = User::find($user_id);
if($user['session_id'] == ''){
$response_arr = array(
"status" => false,
"message" => "<div id='message'><div class='alert alert-warning'>Choose session first from utility master.</div></div>",
"data" => []
);
}else{
$data = $request->all();
$rules = [
// 'session' => 'required',
'bal_sanskar_kendras'=> 'required',
];
$messages = [
'required' => 'The :attribute field is required.',
'course_id.required' => 'The course name field is required.',
];
$validator = Validator::make($data, $rules, $messages);
if ($validator->fails()) {
$errors=$validator->errors();
$response_arr = array(
"status" => false,
"message" => "<div id='message'><div class='alert alert-danger'>Oops! Something went wrong. Please try again later!</div></div>",
"errors" => $errors,
"data" => []
);
}else{
$data = [
'session' => $user['session_id'],
'school_id' => auth()->user()->id,
'bal_sanskar_kendras' => $request->bal_sanskar_kendras,
'samarpan_amount' => $request->samarpan_amount,
'social_camps' => $request->social_camps,
'environmental_activities' => $request->environmental_activities,
'community_service' => $request->community_service,
];
SocialConcerns::find($id)->update($data);
$response_arr = array(
"status" => true,
"message" => "<div id='message'><div class='alert alert-success'>Social Concerns updated successfully.</div></div>",
);
}
}
return response()->json($response_arr);
}
public function social_concerns_delete($id)
{
SocialConcerns::find($id)->delete();
return redirect()->route('social-concerns')->with('message','Social Concerns deleted successfully.');
}
}
|