Sindbad~EG File Manager
<?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