Sindbad~EG File Manager

Current Path : /home/numerotech/www/livemt2023.aios-scientificcommittee.org/app/controllers/
Upload File :
Current File : //home/numerotech/www/livemt2023.aios-scientificcommittee.org/app/controllers/MemberController.php

<?php
class MemberController extends Controller {
    
    // Author : karthik karuna
    // Date   : 2016 - 03 - 14
    public function index()
    {
        try
        {

            $showFilter = 0;
            $temp = '';

            $name           =  Input::has('name')?Input::get('name'):Input::get('txtName');
            $email          =  Input::has('email')?Input::get('email'):Input::get('txtEmail');
            $mobile         =  Input::has('mobile')?Input::get('mobile'):Input::get('txtMobile');
            $city           =  Input::has('city')?Input::get('city'):Input::get('txtCity');
            $state          =  Input::has('state')?Input::get('state'):Input::get('ddlStates');
            $membershipNo   =  Input::has('membershipNo')?Input::get('membershipNo'):Input::get('txtMembershipNumber');
            $orderBy        =  Input::has('orderBy')?Input::get('orderBy'):Input::get('ddlOrderBy');


            $name           = Helper::trimAndTruncate($name);
            $email          = Helper::trimAndTruncate($email);
            $mobile         = Helper::trimAndTruncate($mobile);
            $city           = Helper::trimAndTruncate($city);
            $state          = Helper::trimAndTruncate($state);
            $membershipNo   = Helper::trimAndTruncate($membershipNo);
            $orderBy        = Helper::trimAndTruncate($orderBy);


            $query          =  DB::table("users as u")
                                ->leftJoin("users_memberships as um","um.user_id","=","u.user_id")
                                ->leftJoin("states as s","s.state_id","=","u.state_id")
                                ->where("um.society_id", "=", CustomClass::$SOCIETY_AIOS)
                                ->whereNull("u.deleted_at");

            if(Input::has('showFilter') && intval(Input::get('showFilter')) == 1 )
            {
                $showFilter = 1;

                //filter
                if(isset($name))
                    $query->where('u.name','LIKE',"%$name%");
                if(isset($email))
                    $query->where('u.email','LIKE',"%$email%");
                if(isset($mobile))
                    $query->where('u.mobile','LIKE',"%$mobile%");     
                if(isset($city))
                    $query->where('u.city','LIKE',"%$city%");
                if(isset($state))
                    $query->where('u.state_id','=',$state);  

                if(isset($membershipNo))
                    $query->where('um.membership_no','=',$membershipNo);
                if(isset($orderBy))
                {
                    if($orderBy == 'membership_no')
                        $query->orderBy('um.membership_no_only',"asc");
                    else if($orderBy == 'name')
                        $query->orderBy('u.name',"asc");                    
                    else if($orderBy == 'city')
                        $query->orderBy('u.city',"asc");                     
                }


            }

            //For serial number
            $page = Input::has('page') ? intval(Input::get('page')) : 0 ;
            $sno = 0 ;
            if($page >0 )
                $sno = (($page - 1) * AppMessage::$page_size );

            //->orderBy("u.name", "desc")
            $members = $query->paginate(AppMessage::$page_size,array("u.*","s.state_name","um.membership_no"));


            $states   = CustomClass::$ddldefault + State::lists("state_name","state_id");

            $orderByArray = CustomClass::$ddldefault +  array('membership_no' =>  'Membership Number', 'name' => 'Name', 'city' => 'City');;

            return View::make('backoffice/members/index')
                     ->with('members',$members)
                     ->with('sno',$sno)
                     ->with('name',$name)
                     ->with('email',$email)
                     ->with('mobile',$mobile)
                     ->with('city',$city)
                     ->with('states',$states)
                     ->with('state',$state)
                     ->with('orderByArray',$orderByArray)
                     ->with('orderBy',$orderBy)
                     ->with('membershipNo',$membershipNo)
                     ->with('showFilter',$showFilter)
                     ->with('searchValidationResult', $temp);

        } catch (Exception $e)
        {
            Log::error('MemberController=>index '.$e->getMessage());
        }
    }

    public function create()
    {
        try
        {   
            $states     = CustomClass::$ddldefault + State::lists("state_name","state_id");

            $members    = User::select('user_id', DB::raw('CONCAT(COALESCE(prefix," "),".",COALESCE(name," "),"-",COALESCE(aios_no," ")) AS name' ))
                              ->orderBy('aios_no')
                              ->lists('name', 'user_id');
            $members    = CustomClass::$ddldefault + $members ;

            return View::make('backoffice/members/create')
                        ->with("states", $states)
                        ->with("members", $members);

        } catch (Exception $e)
        {
            Log::error("MemberController=>create".$e->getMessage());
        }
    }    

    public function memberValidator($usr)
    {
        try 
        {
            $inputs     = array(
                                'prefix'                => $usr->prefix,
                                'name'                  => $usr->name,
                                'sur_name'              => $usr->sur_name,
                                'address1'              => $usr->address1,
                                'city'                  => $usr->city,
                                'state_id'              => $usr->state_id,
                                'pincode'               => $usr->pincode,
                                'mobile'                => $usr->mobile,
                                'mobile_no'             => $usr->mobile,
                                'email'                 => $usr->email,
                                'phone_home'            => $usr->phone_home,
                                'phone_office'          => $usr->phone_office,
                                'dob'                   => $usr->dob,
                                'registration_no'       => $usr->registration_no,
                                'registered_state_id'   => $usr->registered_state_id,
                                'is_member_already'     => $usr->is_member_already,
                                'proposed_by_id'        => $usr->proposed_by_id,
                                'seconded_by_id'        => $usr->seconded_by_id
                            );

            $rules      = array(
                                'name'                  => 'required',
                                'sur_name'              => 'required',
                                'address1'              => 'required',
                                'city'                  => 'required',
                                'state_id'              => 'required',
                                'pincode'               => 'required',
                                'mobile'                => 'required|min:10',
                                'mobile'                => 'required|max:10',                            
                                'mobile_no'             => 'required|numeric',
                                'email'                 => 'required|email|unique:users,email,NULL,user_id,deleted_at,NULL',
                                'phone_home'            => 'required',
                                'phone_office'          => 'required',
                                'dob'                   => 'required|date_format:d/m/Y',
                                'registration_no'       => 'required',
                                'registered_state_id'   => 'required'
                            );
            
            
            if( intval($inputs['is_member_already']) == 1 )
            {
                $rules['proposed_by_id'] = 'required';
                $rules['seconded_by_id'] = 'required';
            }

            $messages   = array(
                                'required'              => "Please enter all required fields.",
                                'mobile.min'            => "Mobile number should be 10 digits.",
                                'mobile.max'            => "Mobile number cannot be more than 10 digits.",
                                'mobile_no.numeric'     => "Please enter a valid Mobile number.",
                                'email.email'           => "Please enter a valid Email.",
                                'email.unique'          => "Email you have entered already exists. Please try with some other Email.",
                                'dob.date_format'       => "Please enter a valid Date of Birth."
                             );         

            return Validator::make($inputs,$rules,$messages);
        } 
        catch (Exception $e)
        {
            Log::error('MemberController=>memberValidator '.$e->getMessage());
        }
    }

    public function qualificationValidator($qua)
    {
        try 
        {
            $inputs     = array(
                                'degree'            => $qua->degree,
                                'university'        => $qua->university,
                                'year_of_passing'   => $qua->year_of_passing
                                );

            $rules      = array(
                                'degree'            => 'required',
                                'university'        => 'required',
                                'year_of_passing'   => 'required|numeric'
                                );


            $messages   = array(
                                'required'                  => "Please enter all required fields.",
                                'year_of_passing.numeric'   => "Please enter a valid Year of Passing."
                                );         
            return Validator::make($inputs,$rules,$messages);
        } 
        catch (Exception $e)
        {
            Log::error('MemberController=>memberValidator '.$e->getMessage());
        }
    }

    public function isValidQualificationsCombination($quas)
    {
        try 
        {
            $isValidQualification = true ;

            if(isset($quas) && count($quas) > 0)
            {
                foreach ($quas as $key => $qua)
                {
                 
                    $inputs     = array(
                                        'degree'            => $qua->degree,
                                        'university'        => $qua->university,
                                        'year_of_passing'   => $qua->year_of_passing
                                        );
                    $rules      = array();
                    if(trim($inputs['degree']) != '' || trim($inputs['university']) != '' || trim($inputs['year_of_passing']) != '')
                    {
                        $rules['degree']            = 'required';
                        $rules['university']        = 'required';
                        $rules['year_of_passing']   = 'required|numeric';
                    }

                    $validator = Validator::make($inputs,$rules);

                    if($validator->fails())
                        $isValidQualification = false ;

                }
            }
        } 
        catch (Exception $e)
        {
            Log::error('MemberController=>memberValidator '.$e->getMessage());
            $isValidQualification = false ;
        }
        
        return $isValidQualification ;
    }

    public function userValidator($pmember, $pqualification, $pqualifications)
    {
        try
        {
            $result = array('validationStatus' => true, 'message' => '');

            $mValidator             = $this->memberValidator($pmember);
            $qValidator             = $this->qualificationValidator($pqualification);
            $isValidQuasCombination = $this->isValidQualificationsCombination($pqualifications);

            $messages = [];
            $temp     = '';

            if(isset($mValidator) && $mValidator->fails())
            {
               $result['validationStatus']  = false;
               $msgs = $mValidator->messages();
               $messages = array_merge($messages, $msgs->all());
            }
            if(isset($qValidator) && $qValidator->fails())
            {
               $result['validationStatus']  = false;
               $msgs = $qValidator->messages();
               $messages = array_merge($messages, $msgs->all());
            }
            if($isValidQuasCombination == false)
            {
               $result['validationStatus']  = false;
               $messages = array_merge($messages, array('You have missed or gave wrong input for some combinations of entries in qualifications.'));
            }

            $requiredCount = 0;
            if(isset($messages) && count($messages) > 0)
            {
                foreach ($messages as $message)
                {
                    if(preg_match('[required]', $message))
                    {
                        if($requiredCount == 0)
                        {
                            $temp = $temp .''. $message .'<br />';
                            $requiredCount++;
                        }
                    }
                    else
                    {
                        $temp =$temp .''. $message .'<br />';
                    }
                }

                $result['message']  = $temp;
            }

        }catch (Exception $e)
        {
            Log::error('MemberController=>mValidator '.$e->getMessage());
            $result['validationStatus']  = false;
        }

        
        return $result ;
    }

    public function store()
    {
        try
        {   
            $operationStatus = false;
            $msg = '';
            $userID = 0;

            $u = new User();
            $u->user_id = null;
            $u->prefix              = Helper::trimAndTruncate(Input::get('txtNamePrefix'),10);
            $u->name                = Helper::trimAndTruncate(Input::get('txtFirstName'),255);
            $u->sur_name            = Helper::trimAndTruncate(Input::get('txtSecondName'),255);
            $u->dob                 = Helper::trimAndTruncate(Input::get('txtDOB'));
            $u->address1            = Helper::trimAndTruncate(Input::get('txtAddress1'),255);
            $u->address2            = Helper::trimAndTruncate(Input::get('txtAddress2'),255);
            $u->address3            = Helper::trimAndTruncate(Input::get('txtAddress3'),255);
            $u->city                = Helper::trimAndTruncate(Input::get('txtCity'),255);
            $u->state_id            = Helper::trimAndTruncate(Input::get('ddlState'));
            $u->pincode             = Helper::trimAndTruncate(Input::get('txtPincode'),10);
            $u->mobile_isd_code     = Helper::trimAndTruncate(Input::get('txtISDCode'),5);
            $u->mobile              = Helper::trimAndTruncate(Input::get('txtMobile'),15);
            $u->email               = Helper::trimAndTruncate(Input::get('txtEmail'),255);
            $u->phone_home          = Helper::trimAndTruncate(Input::get('txtPhoneHome'),100);
            $u->phone_office        = Helper::trimAndTruncate(Input::get('txtPhoneOffice'),100);
            $u->registration_no     = Helper::trimAndTruncate(Input::get('txtRegistrationNo'),50);
            $u->registered_state_id = Helper::trimAndTruncate(Input::get('ddlRState'));
            $u->is_member_already   = intval(Helper::trimAndTruncate(Input::get('chkMemberAlready')));
            $u->proposed_by_id      = Helper::trimAndTruncate(Input::get('ddlProposedBy'));
            $u->seconded_by_id      = Helper::trimAndTruncate(Input::get('ddlSecondedBy'));

            $u->mobile =  ltrim($u->mobile, '0');

           /* var_dump($u);
            exit();*/

            /*First qualification entries are mandatory. so validated all the fields. but remaining are not mandatory although either user can fill all the field for qualification or leave all the column for qualification empty*/
            $q = new Qualification();
            $qualifications = [];

            for ($i=1; $i < 6; $i++)
            { 
                $qu = new Qualification();
                $qu->degree              = Helper::trimAndTruncate(Input::get('txtDegree'.$i),50);
                $qu->university          = Helper::trimAndTruncate(Input::get('txtUniversity'.$i),250);
                $qu->year_of_passing     = Helper::trimAndTruncate(Input::get('txtYearOfPassing'.$i),5);

                if($i == 1)
                    $q = $qu ;
                else
                    array_push($qualifications, $qu);
            }

            
            $validationRes = $this->userValidator($u, $q, $qualifications);

            if(isset($validationRes) && $validationRes['validationStatus'] == true)
            {   

/*                if($u->is_member_already != 1)
                {
                    $u->proposed_by_id = null;
                    $u->seconded_by_id = null;
                }*/
                $u->dob = Helper::toDBDate($u->dob);
                $u->save();
                $userID  = $u->user_id;

                if($userID > 0)
                {
                    //To maintain qualification in the order how user filled. so first qualification should be placed as first record
                    $qsToInsert = [];
                    array_unshift($qualifications, $q);
                    foreach ($qualifications as $key => $qn)
                    {
                        if(!is_null($qn->degree))
                            array_push($qsToInsert, array("user_id" => $userID,"degree" => $qn->degree, "university" => $qn->university, "year_of_passing" => $qn->year_of_passing, "created_at" => new DateTime(), "updated_at" => new DateTime()));
                    }

                    if(count($qsToInsert) > 0)
                        $operationStatus = Qualification::insert($qsToInsert);
                    else
                        $operationStatus = true;

                }
            }else
            {
                $msg = $validationRes['message'] ;
            }

            //File uploads
            if($operationStatus)
            {   
                
                $assets = [];

                //Create directory for the users to hold their documents/attachments 
                $directoryPath = public_path().'/uploads/'.$userID ;
                if(!File::exists($directoryPath))
                    File::makeDirectory($directoryPath, 0777, true);


                //Attachment profile picture
                $file = Input::file('fileProfile');
                if(isset($file) && $file->isValid())
                {
                    $extension =  $file->getClientOriginalExtension();
                    $fileName  =  CustomClass::$ASSET_USAGE_MEMBER_PROFILE_FILENAME;
                    $fileNameWithExtension = $fileName.'.'.$extension;
                    $destinationPath = $directoryPath."/".$fileNameWithExtension ;
                    $path = 'uploads/'.$userID."/".$fileNameWithExtension ;
                    $file->move($directoryPath, $fileNameWithExtension);
                    array_push($assets,array("user_id" => $userID, "file_name" => $fileName, "extension" => $extension, "path" => $path, "created_at" => new DateTime(),"updated_at" =>  new DateTime() ));
                }  

                //Attachments documents
                $destinationPath = public_path().'/uploads';
                $files       = Input::file('fileDocuments');

                $maxFile = intval(Asset::where("user_id", "=", $userID)
                                       ->where("asset_type", "=", CustomClass::$ASSET_TYPE_MEMBER_REG)
                                       ->count());
                if(isset($files) && count($files) > 0)
                {
                    if(File::exists($directoryPath))
                    {                        
                        foreach ($files as $key => $file)
                        {
                            if(isset($file) && $file->isValid())
                            {
                                $extension =  $file->getClientOriginalExtension();

                                $maxFile += 1 ;
                                $fileName  =  $maxFile;

                                $fileNameWithExtension = $fileName.'.'.$extension;
                                
                                $destinationPath = $directoryPath."/".$fileNameWithExtension ;
                                $path = 'uploads/'.$userID."/".$fileNameWithExtension ;
                                $file->move($directoryPath, $fileNameWithExtension);
                                array_push($assets,array("user_id" => $userID, "file_name" => $fileName, "extension" => $extension, "path" => $path, "created_at" => new DateTime(),"updated_at" =>  new DateTime() ));
                            }                                
                        }
                    }
                }

                if(isset($assets) && count($assets) > 0)
                    $operationStatus = Asset::insert($assets);                
            }


        } catch (Exception $e)
        {
            Log::error("MemberController=>store".$e->getMessage());
            return Redirect::back()->with("msgError", AppMessage::$GENERAL_ERROR);
        }


        if($operationStatus)
            return Redirect::back()->withInput()->with("msgSuccess", AppMessage::$MEMBER_SAVE_SUCCESS);
        else
            return Redirect::back()->withInput()->with("msgError", $msg);
    }    

    public function edit($memberID)
    {
        try
        {
            $memberID = !is_null($memberID) ? intval(Helper::decrypt(urldecode($memberID))) : 0;
            if( !($memberID > 0) )
                return Redirect::to("bo/members");

            $operationStatus = false;

            $member = User::find($memberID);
            if(isset($member) && intval($member->user_id) > 0)
            {   
                    
            }
            

        } catch (Exception $e)
        {
            Log::error("MemberController=>edit".$e->getMessage());
        }
    }  

}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists