IMMREX7

aku nok ndi : /home/spdtg/www/schoolmis/app/Http/Controllers/
File Up :
aku nok ndi : /home/spdtg/www/schoolmis/app/Http/Controllers/SchoolRegController.php

<?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 - 2025 IMMREX7