middleware('auth'); $this->admin_user = $admin_user; } public function auth() { $this->user = Auth::user(); return $this->user; } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $admin_users = User::get(); return view('admin.adminuser.index', ["admin_users" => $admin_users]); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { return $this->admin_user->store($request); } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { $data = $this->admin_user->edit($id); return view('admin.adminuser.edit', ["user_details" => $data['user'], "menu" => $data['sec'], "menu_tab" => $data['menus'], "pdata" => $data['prof_data'],"agencies" => $data['agency'],"login" => $data['login_stamps'], "userlevel" => $data['userlevel']]); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { $update_act = $this->admin_user->update($request, $id); $userdet = $request->user; $delete = (isset($userdet['delete'])) ? $userdet['delete'] : ''; if($delete=='on') return redirect('admin/user'); else { if($update_act) $request->session()->flash('aalert-success', 'Username / Email already exists'); return redirect('admin/user/' . $id . '/edit'); } } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $user = User::find($id); $user->delete(); return '1'; } /** * Send email to users. * * @param int $id * @return \Illuminate\Http\Response */ public function send_user_email(Request $request) { $this->admin_user->send_email($request); $request->session()->flash('aealert-success', 'Email Sent Successfully'); return redirect('admin/user'); } /** * List Unapproved Users * * @param int $id * @return \Illuminate\Http\Response */ public function unapprove_user() { $admin_users = $this->admin_user->unapprove_user(); return view('admin.adminuser.approve', ["admin_user" => $admin_users]); } /** * List Unapproved Users * * @param int $id * @return \Illuminate\Http\Response */ public function update_approve(Request $request) { $admin_users = $this->admin_user->update_user($request); return $admin_users; } /** * Delete Users * * @param int $id * @return \Illuminate\Http\Response */ public function destroy_users(Request $request) { $user_list = $request->userlist; foreach ($user_list as $id) { $user = User::find($id); $user->delete(); } return '1'; } public function decline_user(Request $request) { $user_list = $request->userlist; foreach ($user_list as $id) { $user = User::where('id', $id) ->update(["approved"=>""]); $users = User::where('id', $id)->get(); $data = array(); foreach($users as $ls) { $data['firstname'] = $ls->first_name; $data['lastname'] = $ls->last_name; $data['username'] = $ls->username; $data['email'] = $ls->email; } Mail::send('mail.user_decline', $data, function ($m) use ($data) { $m->to($data['email']); $m->subject('Your account has been Declined in ECCO'); }); } return '1'; } /** * List User Levels * * @param int $id * @return \Illuminate\Http\Response */ public function user_levels() { $admin_level = $this->admin_user->login_levels(); return view('admin.adminuser.user_level', ["admin_level" => $admin_level['levels'], "users" => $admin_level['user']]); } public function get_eligibility_rate($year,$term,$type) { $rate = Eligibility_rate::with('user')->where('ELGIBLY_TYPE',$type) ->where('ACADEMIC_YEAR',$year) ->where('SEMESTER',$term) ->first(); return $rate; } /** * Admin Settings * * @param int $id * @return \Illuminate\Http\Response */ public function admin_settings() { $proposals = Eligibility_rate::where('ELGIBLY_TYPE','PROPOSAL')->get(); //$cworkbook = Eligibility_rate::with('user')->where('ELGIBLY_TYPE','COSTWB')->first(); $coworkbook = Eligibility_rate::with('user')->where('ELGIBLY_TYPE','COSTWBONLY')->get(); $prop_eligs = array(); if(count($proposals)) { foreach($proposals as $prop_elig) { $a_year = $prop_elig->ACADEMIC_YEAR; $a_sem = $prop_elig->SEMESTER; $prop_eligs[$a_year.$a_sem] = $this->get_eligibility_rate($a_year,$a_sem,'PROPOSAL'); } } $cost_eligs = array(); if(count($coworkbook)) { foreach($coworkbook as $cost_elig) { $ac_year = $cost_elig->ACADEMIC_YEAR; $ac_sem = $cost_elig->SEMESTER; $cost_eligs[$ac_year.$ac_sem] = $this->get_eligibility_rate($ac_year,$ac_sem,'COSTWBONLY'); } } //echo '
'; print_r($prop_eligs); exit;
        return view('admin.adminuser.admin_settings', ["proposal" => $prop_eligs,
            "coworkbook" => $cost_eligs]);
    }

    /**
     * Save Process Settings values
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function save_process_settings(Request $request){
        $type = $request->type;
        $rate = $request->rate;
        $user_id = Auth::user()->id;
        $cdate = date('Y-m-d h:i:s');

        if($type=='PROPOSAL') {
            $year = $request->year;
            $sem = $request->sem;

            $check = Eligibility_rate::select('ELGIBLY_ID')
                                    ->where('ACADEMIC_YEAR',$year)
                                    ->where('SEMESTER',$sem)
                                    ->where('ELGIBLY_TYPE','PROPOSAL')
                                    ->first();

            $checkid = isset($check->ELGIBLY_ID)?$check->ELGIBLY_ID:'';
            if(!$checkid) {
                $prop_elig = new Eligibility_rate;
                $prop_elig->ELGIBLY_TYPE = "PROPOSAL";
                $prop_elig->ACADEMIC_YEAR = $year;
                $prop_elig->SEMESTER = $sem;
                $prop_elig->ELIGIBLY_RATE = $rate;
                $prop_elig->CREATE_USER_ID = $user_id;
                $prop_elig->CREATE_DT = $cdate;
                $prop_elig->MODIFY_USER_ID = $user_id;
                $prop_elig->MODIFY_DT = $cdate;
                $prop_elig->save();
            } 
            else {
                $upd = ['ELIGIBLY_RATE' => $rate,"MODIFY_USER_ID"=>$user_id,"MODIFY_DT"=>$cdate];

                Eligibility_rate::where('ACADEMIC_YEAR',$year)
                                ->where('SEMESTER',$sem)
                                ->where('ELGIBLY_TYPE',"PROPOSAL")
                                ->update($upd);
            }
        }
        else if($type=='COSTWBONLY') { 
            $year = $request->year;
            $sem = $request->sem;
            $check = Eligibility_rate::select('ELGIBLY_ID')
                                    ->where('ELGIBLY_TYPE','COSTWBONLY') 
                                    ->where('SEMESTER',$sem) 
                                    ->where('ACADEMIC_YEAR',$year) 
                                    ->first();

            $checkid = isset($check->ELGIBLY_ID)?$check->ELGIBLY_ID:'';
            if(!$checkid) {
                $prop_elig = new Eligibility_rate;
                $prop_elig->ELGIBLY_TYPE = "COSTWBONLY"; 
                $prop_elig->ACADEMIC_YEAR = $year;
                $prop_elig->SEMESTER = $sem;
                $prop_elig->ELIGIBLY_RATE = $rate;
                $prop_elig->CREATE_USER_ID = $user_id;
                $prop_elig->CREATE_DT = $cdate;
                $prop_elig->MODIFY_USER_ID = $user_id;
                $prop_elig->MODIFY_DT = $cdate;
                $prop_elig->save();
            } 
            else {
                $upd = ['ELIGIBLY_RATE' => $rate,"MODIFY_USER_ID"=>$user_id,"MODIFY_DT"=>$cdate];

                Eligibility_rate::where('ACADEMIC_YEAR',$year)
                                ->where('SEMESTER',$sem)
                                ->where('ELGIBLY_TYPE',"COSTWBONLY")
                                ->update($upd);
            }
        }
        else { 
            $check = Eligibility_rate::select('ELGIBLY_ID')
                                    ->where('ELGIBLY_TYPE','COSTWB') 
                                    ->first();

            $checkid = isset($check->ELGIBLY_ID)?$check->ELGIBLY_ID:'';
            if(!$checkid) {
                $prop_elig = new Eligibility_rate;
                $prop_elig->ELGIBLY_TYPE = "COSTWB"; 
                $prop_elig->ELIGIBLY_RATE = $rate;
                $prop_elig->CREATE_USER_ID = $user_id;
                $prop_elig->CREATE_DT = $cdate;
                $prop_elig->MODIFY_USER_ID = $user_id;
                $prop_elig->MODIFY_DT = $cdate;
                $prop_elig->save();
            } 
            else {
                $upd = ['ELIGIBLY_RATE' => $rate,"MODIFY_USER_ID"=>$user_id,"MODIFY_DT"=>$cdate];

                Eligibility_rate::where('ELGIBLY_TYPE',"COSTWB")
                                ->update($upd);
            }
        }

        return 1;
    }

    /**
     * Create New User Levels
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function store_levels(Request $request)   {
        $level_name = $request->name;
        $redirect = $request->redirect;
        $level = Login_levels::max('level_level');
        $level = $level + 1;

        $insert = Login_levels::insert(['level_name' => $level_name, 'level_level' => $level,
            'redirect' => $redirect]);

        $request->session()->flash('level-success', 'Level Created Successfully');
        return redirect('admin/user/user_level');
    }

    /**
     * Edit User Levels
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit_levels($id)    {
        $user = $this->admin_user->edit_levels($id);

        return view('admin.adminuser.edit_level', ["user_level" => $user]);
    }


    /**
     * Update User Levels
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update_level(Request $request, $id)  {
        $user = $this->admin_user->update_level($request);
        $request->session()->flash('lev_update_success', 'Level updated Successfully');
        return redirect('admin/user/user_level');
    }

    public function user_download(Request $request)   {
        $data = User::get();
        $rows = array(); 
        $headers = array(
            "Content-type" => "text/csv",
            "Content-Disposition" => "attachment; filename=users.csv",
            "Pragma" => "no-cache",
            "Cache-Control" => "must-revalidate, post-check=0, pre-check=0",
            "Expires" => "0"
        );

        $columns = array('Username', 'Name', 'Email', 'Restricted', 'Assoications', 'Created on', ' Universities Associated with');

        $callback = function() use ($data, $columns)    {
            $i=0;
            $file = fopen('php://output', 'w');
            fputcsv($file, $columns);
            foreach($data as $datas)    {
                $username = $datas->username;
                $name = $datas->first_name;
                $email = $datas->email;
                $created = date('d m Y', strtotime($datas->created_at));
                $agency =  $this->admin_user->user_download($datas);
                $associated = $agency; 
                $restrict = $datas->restricted;
                $restrict = ($restrict)?'Yes':'No';
                $assoc = $this->admin_user->get_agencyfromid($datas->assoc_univ);
                fputcsv($file, array($username, $name, $email, $restrict, $assoc, $created, $associated));
            }
            fclose($file);
        };
        return Response::stream($callback, 200, $headers);         
    }

    public function admin_settings_upload(Request $request) {
        if ($request->file('eligibility_doc') != '')
        {
            $image = $request->file('eligibility_doc');
            $imgtype = $image->getClientOriginalExtension();
            $upfile = $image->getClientOriginalName(); 
            $temp_name = $upfile; 
            $year = $request->year;
            $sem = $request->sem; 
            $ysem = $year.'_'.$sem;
            $destinationPath = public_path('/images/eligibility/'.$ysem); 

            if(!File::exists($destinationPath)) {
                File::makeDirectory($destinationPath, $mode = 0777, true, true);
            }

            $user_id = Auth::user()->id;
            $cdate = date("Y-m-d");

            if ($imgtype == 'bmp' || $imgtype == 'gif' || $imgtype == 'jpg' || $imgtype ==
                'png' || $imgtype == 'jpeg' || $imgtype == 'pdf' || $imgtype == 'xls' || $imgtype == 'csv' || $imgtype == 'docx' || $imgtype == 'xlsx' || $imgtype == 'txt' || $imgtype == 'rtf' || $imgtype == 'ppt' || $imgtype == 'pptx')
            {
                $image->move($destinationPath, $temp_name); 

                $proc_rec = Eligibility_rate::select("UPD_DOCS")
                                    ->where('ACADEMIC_YEAR',$year)
                                    ->where('SEMESTER',$sem) 
                                    ->first();  
                
                if(isset($proc_rec->UPD_DOCS) && $proc_rec->UPD_DOCS!='') {
                    $documents=unserialize($proc_rec->UPD_DOCS);
                    $arrcnt = count($documents);
                    if($arrcnt) { 
                        array_push($documents, $upfile);
                    } else { 
                        $documents=array($upfile);
                    }
                }
                else $documents=array($upfile);

                $doc_array = serialize($documents);

                $upd = ['UPD_DOCS' => $doc_array,"MODIFY_USER_ID"=>$user_id,"MODIFY_DT"=>$cdate];

                Eligibility_rate::where('ACADEMIC_YEAR',$year)
                                ->where('SEMESTER',$sem)
                                ->update($upd);

                $request->session()->flash('aalert-success', 'Image uploded Successfully'); 
                return redirect('admin/user/admin_settings');
            } 
            else
            {
                $request->session()->flash('aalert-error', 'Invalid file type '.$imgtype); 
                return redirect('admin/user/admin_settings'); 
            }
        }
        else {
            $request->session()->flash('aalert-error', 'No files selected'); 
            return redirect('admin/user/admin_settings'); 
        }
    } 
     
    /*
        Remove Uploaded Documents
    */
    public function remove_eligibility_doc(Request $request) {
        $propid = $request->pid;
        $item_no = $request->item_no; 

        $first = array(); $second= array(); 
        $proc_rec = Eligibility_rate::select("UPD_DOCS")
                            ->where("ELGIBLY_ID", $propid)
                            ->first();
        
        $arraysocial1=unserialize($proc_rec->UPD_DOCS);      
         
        unset($arraysocial1[$request->item_no]); 
        $first[] = array_values($arraysocial1); 
        $arraysocial = $first;   
        
        $arrcnt = count($arraysocial1);
        if($arrcnt) {
            $folder=serialize($arraysocial); 
        } else {
            $folder=''; 
        }

        $upd = ["UPD_DOCS"=>$folder];
        Eligibility_rate::where("ELGIBLY_ID", $propid)
                    ->update($upd); 

        echo 1; 
    } 

    public function approval_process(Request $request) {
        $sort = $request->sort;
        $sort = ($sort!='all')?$sort:''; 

        $user_id = $this->auth()->id;
        $user_level = auth::user()->user_level; 
        if($user_level!='1') {
            $mapped_agency = array();
            $mapped_agencies = University_map::where('user_id', $user_id)->get();
            foreach ($mapped_agencies as $map_agency) {
                $mapped_agency[] = $map_agency->university_id;
            }
        }

        $process = $this->admin_user->approval_process($sort);
        $ucity = Approval_process::with('university');
        if($user_level!='1') {
            $ucity = $ucity->whereIn('UNIV_ID', $mapped_agency);
        }
        if($sort!='') {
            $ucity = $ucity->where('PROC_STATUS', $sort);
        }

            $ucity = $ucity->groupBy('UNIV_ID')
                           ->orderBy('PROC_ON', 'desc')
                           ->get(); 

        return view('admin.adminuser.approval_process', ["process" => $process,"ucity"=>$ucity]);
    }

}