IMMREX7
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Session;
use DB;
use Auth;
class SchoolRegController extends Controller {
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index() {
$states = ['' => '-- Select State --'] + \App\State::orderBy('stateName')->get()->pluck('stateName', 'idState')->toArray();
$country = ['' => '-- Select Country --', '1' => 'India', '2' => 'Qatar', '3' => 'Sri Lanka'];
return view('superadmin.schools.index', compact('states','country'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create() {
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request) {
// dd($request->all());
$rules = [
'userName' => 'required|string|max:255',
'userEmail' => 'required|string|email|max:255|unique:schools',
'userMobile' => 'required|min:10|max:10',
'schoolName' => 'required',
'schoolCode' => 'required',
'schoolLogo' => 'required|mimes:jpg,jpeg,png|max:100',
'contactPerson' => 'required',
'idState' => 'required',
'idCountry' => 'required',
'city' => 'required',
'mobile' => 'required|min:10|max:10',
'email' => 'required|string|email|max:255|unique:schools',
'password' => 'required|string|min:6',
'smsUsername' => 'required',
'smsPassword' => 'required',
'smsSenderId' => 'required',
'Device_ID' => 'required|unique:schools',
];
$messages = [
'idState.required' => 'Select State.',
'smsUsername.required' => 'SMS API Username must be filled.',
'smsPassword.required' => 'SMS API Password must be filled',
'smsSenderId.required' => 'SMS Sender ID is mandatory.',
'Device_ID.required' => 'Attendance Device Id must not be empty.',
];
$this->validate($request, $rules, $messages);
$school = new \App\School();
$school->fill($request->all());
DB::beginTransaction();
//Save school data
$school->save();
// Save school login data
$school_user = new \App\SchoolUser();
$school_user->idSchool = $school->idSchool;
$school_user->email = $request->userEmail;
$school_user->name = $request->schoolName;
$password = $request->password;
$school_user->pwd = $password;
$school_user->password = bcrypt($password);
$school_user->isSchool = 'Y';
$school_user->save();
//save school logo
if ($request->hasFile('schoolLogo')) {
$logo = 'logo_' . $school->idSchool . '.' . $request->file('schoolLogo')->getClientOriginalExtension();
$request->file('schoolLogo')->storeAs('public/schools/' . $school->idSchool . '/', $logo);
$school->schoolLogo = $logo;
}
$school->update();
if ($request->smsUsername != null && $request->smsPassword != null && $request->smsSenderId != null) {
foreach ($request->templates as $key => $var) {
$smstemplate = new \App\SchoolSmsTemplate();
$smstemplate->idSchool = $school->idSchool;
$smstemplate->template_id = $var['template_id'];
$smstemplate->template_name = $var['template_name'];
if(isset($var['template_status']))
$smstemplate->status = $var['template_status'];
else $smstemplate->status = "N";
$smstemplate->save();
}
}
// Save School SMS Template
DB::commit();
return redirect('admin');
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id) {
$school = \App\School::where('idSchool', '=', $id)->first();
return view('superadmin.schools.profile', compact('school'));
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id) {
$states = ['' => '-- Select State --'] + \App\State::orderBy('stateName')->get()->pluck('stateName', 'idState')->toArray();
$school = \App\School::where('idSchool', '=', $id)->first();
$country = ['' => '-- Select Country --', '1' => 'India', '2' => 'Qatar', '3' => 'Sri Lanka'];
return view('superadmin.schools.index', compact('states','country','school'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id) {
$rules = [
'userName' => 'required|string|max:255',
'userEmail' => 'required|string|email|max:255',
'userMobile' => 'required|min:10|max:10',
'schoolName' => 'required',
'schoolCode' => 'required',
// 'schoolLogo' => 'required|mimes:jpg,jpeg,png|max:100',
'contactPerson' => 'required',
'idState' => 'required',
'city' => 'required',
'mobile' => 'required|min:10|max:10',
'email' => 'required|string|email|max:255',
'password' => 'required|string|min:6',
'smsUsername' => 'required',
'smsPassword' => 'required',
'smsSenderId' => 'required',
'Device_ID' => 'required',
];
$messages = [
'idState.required' => 'Select State.',
'smsUsername.required' => 'SMS API Username must be filled.',
'smsPassword.required' => 'SMS API Password must be filled',
'smsSenderId.required' => 'SMS Sender ID is mandatory.',
'Device_ID.required' => 'Attendance Device Id must not be empty.',
];
$this->validate($request, $rules, $messages);
$school = \App\School::where('idSchool', '=', $id)->first();
$school->fill($request->all());
DB::beginTransaction();
//Save school data
if ($request->hasFile('schoolLogo')) {
$logo = 'logo_' . $school->idSchool . '.' . $request->file('schoolLogo')->getClientOriginalExtension();
$request->file('schoolLogo')->storeAs('public/schools/' . $school->idSchool . '/', $logo);
$school->schoolLogo = $logo;
}
$school->update();
// Save school login data
$school_user = \App\SchoolUser::where('idSchool', '=', $school->idSchool)->first();
$school_user->idSchool = $school->idSchool;
$school_user->email = $request->userEmail;
$school_user->name = $request->schoolName;
$password = $request->password;
$school_user->pwd = $password;
$school_user->password = bcrypt($password);
$school_user->isSchool = 'Y';
$school_user->update();
// Save Template
if ($request->smsUsername != null && $request->smsPassword != null && $request->smsSenderId != null) {
foreach ($request->templates as $key => $var) {
if(isset($var['idSmsTemplate'])){
$smstemplate =\App\SchoolSmsTemplate::where('idSmsTemplate','=',$var['idSmsTemplate'])->first();
}else{
$smstemplate = new \App\SchoolSmsTemplate();
}
$smstemplate->idSchool = $school->idSchool;
$smstemplate->template_id = $var['template_id'];
$smstemplate->template_name = $var['template_name'];
if(isset($var['template_status']))
$smstemplate->status = $var['template_status'];
else $smstemplate->status = "N";
$smstemplate->save();
}
}
DB::commit();
return redirect('admin');
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id) {
$school = \App\School::where('idSchool', '=', $id)->first();
$school->delete();
return response()->json(['success' => "SUCCESS"], 200, ['app-status' => 'success']);
}
public function activateSchool($id) {
$school = \App\School::where('idSchool', '=', $id)->first();
$school_user = \App\SchoolUser::where('isSchool', '=', 'Y')->where('idSchool', '=', $id)->first();
$school->isActive = 'Y';
$school_user->isActive = 'Y';
DB::beginTransaction();
$school->update();
$school_user->update();
DB::commit();
return redirect('admin');
}
public function deactivateSchool($id) {
$school = \App\School::where('idSchool', '=', $id)->first();
$school_user = \App\SchoolUser::where('isSchool', '=', 'Y')->where('idSchool', '=', $id)->first();
$school->isActive = 'N';
$school_user->isActive = 'N';
DB::beginTransaction();
$school->update();
$school_user->update();
DB::commit();
return redirect('admin');
}
public function searchMenu(Request $request){
$school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
$school_user = Auth::guard('school')->user()->idSchoolUser;
$school_user_role = DB::table('schooluser_roles')
->where('idSchoolUser','=',$school_user)
->first();
if(!empty($school_user_role)){
$modules = DB::table('screenmapping')
->join('screen', 'screenmapping.idScreen', '=', 'screen.idScreen')
->where('screenmapping.idRole', '=', $school_user_role->idRole)
->where('screen.isActive','=','Y')
->where('screenName','LIKE','%'.$request->get('term').'%')
->orderBy('screen.displayOrder')
->select('screenName as label','screen.screenName as value', 'screen.screenUrl as id')
->groupBy('screenName')
->get();
}else{
$modules = DB::table('screenmapping')
->join('school_users', 'screenmapping.idSchoolUser', '=', 'school_users.idSchoolUser')
->join('screen', 'screenmapping.idScreen', '=', 'screen.idScreen')
->where('screenmapping.idSchoolUser', '=', $school_user)
->where('screen.isActive','=','Y')
->where('screenName','LIKE','%'.$request->get('term').'%')
->orderBy('screen.displayOrder')
->select('screenName as label','screen.screenName as value', 'screen.screenUrl as id')
->groupBy('screenName')
->get();
}
return $modules;
}
public function assignAccessForm($id) {
$school = \App\SchoolUser::where('idSchool', '=', $id)->first();
$module = \App\Module::where('isActive', '=', 'Y')->get();
return view('superadmin.schools.school_menupermission', compact('module', 'school'));
}
public function assignAccess(Request $request) {
$screenmapped = \App\ScreenMapping::where('idSchoolUser', '=', $request->idSchoolUser)->get()->pluck('idScreen')->toArray();
$newscr = $request->screens;
$detach = array_diff($screenmapped, $newscr);
\App\ScreenMapping::whereIn('idScreen', $detach)
->where('idSchoolUser', '=', $request->idSchoolUser)
->delete();
foreach ($request->screens as $key => $value) {
$screencheck = \App\ScreenMapping::where('idSchoolUser', '=', $request->idSchoolUser)
->where('idScreen', '=', $value)->first();
if (!$screencheck) {
$scrmap = new \App\ScreenMapping();
$scrmap->fill($request->all());
$scrmap->idScreen = $value;
$scrmap->save();
}
}
flash('Screen Access has been assigned Successfully');
return redirect('admin');
}
public function activateOnlineRegistrationForm($id) {
$school = \App\School::where('idSchool', '=', $id)->first();
return view('superadmin.schools.add-registration-details', compact('school'));
}
public function activateOnlineRegistration(Request $request) {
$school = \App\School::where('idSchool', '=', $request->idSchool)->first();
$school->onlineRegFormActive = 'Y';
$school->registrationFee = $request->registrationFee;
$school->regPaymentLink = $request->regPaymentLink;
$school->onlineRegUrl = 'http://online-login.online/registernow/' . $school->schoolName;
$school->update();
flash('Registration Link has been Added Successfully');
return redirect('admin');
}
public function manageMenu(Request $request){
$links = \App\Screen::select('screenUrl')->get()->pluck('screenUrl','screenUrl')->toArray();
$modules = \App\Module::select('idModule as id','moduleName as name')->where('isActive','Y')->orderBy('displayOrder','ASC')->get();
return view('superadmin.schools.menu',compact('modules','links'));
}
public function salarySlip($id){
$school = \App\School::where('idSchool', '=', $id)->first();
return view('superadmin.schools.salary_format',compact('school'));
}
public function activateSlip(Request $request){
$school = \App\School::where('idSchool', '=', $request->idSchool)->first();
if($school != null){
if ($request->hasFile('salaryLogo')) {
$logo = 'salary_logo_' . $school->idSchool . '.' . $request->file('salaryLogo')->getClientOriginalExtension();
$request->file('salaryLogo')->storeAs('public/schools/' . $school->idSchool . '/', $logo);
$school->salaryLogo = $logo;
}
if(isset($request->salary_name))
$school->salary_name = $request->salary_name;
if(isset($request->salary_address))
$school->salary_address = $request->salary_address;
if(isset($request->salary_phone))
$school->salary_phone = $request->salary_phone;
if(isset($request->salary_email))
$school->salary_email = $request->salary_email;
if(isset($request->isSalaryCustom))
$school->isSalaryCustom = $request->isSalaryCustom;
$school->update();
}
return redirect('admin/salary-slip-format/'.$request->idSchool);
}
public function performModule(Request $request){
if($request->type == "new"){
$module = new \App\Module();
$module->moduleName = $request->name;
$module->displayOrder = \App\Module::orderBy('displayOrder','DESC')->first()->displayOrder + 1;
$module->iconName = "layers";
$module->isActive = "Y";
$module->save();
return response()->json(['id' => $module->idModule], 200, ['app-status' => 'success']);
}else if($request->type == "subnew"){
$module = new \App\SubModule();
$module->subModuleName = $request->name;
$module->idModule = $request->id;
$order = \App\SubModule::where('idModule',$request->id)->orderBy('displayOrder','DESC')->first();
if($order != null)
$module->displayOrder = $order->displayOrder + 1;
else $module->displayOrder = 1;
$module->iconName = "grid";
$module->isActive = "Y";
$module->save();
return response()->json(['id' => $module->idSubModule], 200, ['app-status' => 'success']);
}else if($request->type == "screen-new"){
$module = new \App\Screen();
$module->screenName = $request->name;
$module->idModule = $request->id;
if(isset($request->refrence)){
$module->screenUrl = $request->refrence;
}
if(isset($request->submodule)){
$module->idSubModule = $request->submodule;
$order = \App\Screen::where('idModule',$request->id)->where('idSubModule',$request->submodule)->orderBy('displayOrder','DESC')->first();
if($order != null)
$module->displayOrder = $order->displayOrder + 1;
else $module->displayOrder = 1;
}else{
$order = \App\Screen::where('idModule',$request->id)->whereNull('idSubModule')->orderBy('displayOrder','DESC')->first();
if($order != null)
$module->displayOrder = $order->displayOrder + 1;
else $module->displayOrder = 1;
}
$module->isActive = "Y";
$module->save();
return response()->json(['id' => $module->idScreen], 200, ['app-status' => 'success']);
}else if($request->type == "submodules"){
$module = \App\SubModule::select('idSubModule as id','subModuleName as name')->where('idModule',$request->id)->where('isActive','Y')->orderBy('displayOrder','ASC')->get();
$screens = \App\Screen::select('idScreen as id','screenName as name')->whereNull('idSubModule')->where('idModule',$request->id)->where('isActive','Y')->orderBy('displayOrder','ASC')->get();
return response()->json(['module' => $module,'screens' => $screens], 200, ['app-status' => 'success']);
}else if($request->type == "screens"){
$module = \App\Screen::select('idScreen as id','screenName as name')->where('idSubModule',$request->submodule)->where('idModule',$request->id)->where('isActive','Y')->orderBy('displayOrder','ASC')->get();
return response()->json(['module' => $module], 200, ['app-status' => 'success']);
}else if($request->type == "edit"){
$module = \App\Module::where('idModule',$request->id)->first();
$module->moduleName = $request->name;
$module->update();
}else if($request->type == "edit-submodule"){
$module = \App\SubModule::where('idSubModule',$request->id)->first();
$module->subModuleName = $request->name;
$module->update();
}else if($request->type == "edit-screen"){
$module = \App\Screen::where('idScreen',$request->id)->first();
$module->screenName = $request->name;
$module->update();
}else if($request->type == "remove"){
$module = \App\Module::where('idModule',$request->id)->first();
$module->isActive = "N";
$module->update();
}else if($request->type == "sub-remove"){
$module = \App\SubModule::where('idSubModule',$request->id)->first();
$module->isActive = "N";
$module->update();
}else if($request->type == "screen-remove"){
$module = \App\Screen::where('idScreen',$request->id)->first();
$module->isActive = "N";
$module->update();
}else if($request->type == "order"){
$i = 1;
if(isset($request->data)){
$orders = json_decode($request->data,true);
foreach($orders as $order){
$module = \App\Module::where('idModule',$order['id'])->first();
$module->displayOrder = $i;
$module->update();
$i++;
}
}
$module = \App\Module::select('idModule as id','moduleName as name')->where('isActive','Y')->orderBy('displayOrder','ASC')->get();
return response()->json(['module' => $module], 200, ['app-status' => 'success']);
}else if($request->type == "order-submodule"){
$i = 1;
if(isset($request->data)){
$orders = json_decode($request->data,true);
foreach($orders as $order){
$module = \App\SubModule::where('idSubModule',$order['id'])->first();
$module->displayOrder = $i;
$module->update();
$i++;
}
}
$module = \App\SubModule::select('idSubModule as id','subModuleName as name')->where('idModule',$request->id)->where('isActive','Y')->orderBy('displayOrder','ASC')->get();
return response()->json(['module' => $module], 200, ['app-status' => 'success']);
}else if($request->type == "screen-order"){
$i = 1;
$idModule = "";
$submodule = "";
if(isset($request->data)){
$orders = json_decode($request->data,true);
foreach($orders as $order){
$module = \App\Screen::where('idScreen',$order['id'])->first();
$module->displayOrder = $i;
$module->update();
$idModule = $module->idModule;
$submodule = $module->idSubModule;
$i++;
}
}
if($submodule == null || $submodule == ""){
$screens = \App\Screen::select('idScreen as id','screenName as name')->whereNull('idSubModule')->where('idModule',$idModule)->where('isActive','Y')->orderBy('displayOrder','ASC')->get();
}else
$screens = \App\Screen::select('idScreen as id','screenName as name')->where('idSubModule',$submodule)->where('idModule',$idModule)->where('isActive','Y')->orderBy('displayOrder','ASC')->get();
return response()->json(['module' => $screens], 200, ['app-status' => 'success']);
}
return response()->json(['success' => "SUCCESS"], 200, ['app-status' => 'success']);
}
}
Copyright © 2021 -