dbfdg
can('manage employee'))
{
if(Auth::user()->type == 'Employee')
{
$employees = Employee::where('user_id', '=', Auth::user()->id)->with(['designation','branch','department'])->get();
}
else
{
$employees = Employee::where('created_by', \Auth::user()->creatorId())->with(['designation','branch','department'])->get();
}
return view('employee.index', compact('employees'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function create()
{
if(\Auth::user()->can('create employee'))
{
$company_settings = Utility::settings();
$documents = Document::where('created_by', \Auth::user()->creatorId())->get();
$branches = Branch::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$departments = Department::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$designations = Designation::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$employees = User::where('created_by', \Auth::user()->creatorId())->get();
$employeesId = \Auth::user()->employeeIdFormat($this->employeeNumber());
return view('employee.create', compact('employees', 'employeesId', 'departments', 'designations', 'documents', 'branches', 'company_settings'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function store(Request $request)
{
if(\Auth::user()->can('create employee'))
{
$validator = \Validator::make(
$request->all(), [
'name' => 'required',
'dob' => 'required',
'phone' => 'required',
'address' => 'required',
'email' => 'required|unique:users',
'password' => 'required',
'branch_id' => 'required',
'department_id' => 'required',
'designation_id' => 'required',
'biometric_emp_id' => 'required',
]
);
if($validator->fails())
{
$messages = $validator->getMessageBag();
return redirect()->back()->withInput()->with('error', $messages->first());
}
$objUser = User::find(\Auth::user()->creatorId());
$total_employee = $objUser->countEmployees();
$plan = Plan::find($objUser->plan);
if($total_employee < $plan->max_users || $plan->max_users == -1)
{
$user = User::create(
[
'name' => $request['name'],
'email' => $request['email'],
// 'gender'=>$request['gender'],
'password' => Hash::make($request['password']),
'type' => 'employee',
'lang' => 'en',
'created_by' => \Auth::user()->creatorId(),
]
);
$user->save();
$user->assignRole('Employee');
}
else
{
return redirect()->back()->with('error', __('Your employee limit is over, Please upgrade plan.'));
}
if(!empty($request->document) && !is_null($request->document))
{
$document_implode = implode(',', array_keys($request->document));
}
else
{
$document_implode = null;
}
$employee = Employee::create(
[
'user_id' => $user->id,
'name' => $request['name'],
'dob' => $request['dob'],
'gender' => $request['gender'],
'phone' => $request['phone'],
'address' => $request['address'],
'email' => $request['email'],
'password' => Hash::make($request['password']),
'employee_id' => $this->employeeNumber(),
'biometric_emp_id' => !empty($request['biometric_emp_id']) ? $request['biometric_emp_id'] : '',
'branch_id' => $request['branch_id'],
'department_id' => $request['department_id'],
'designation_id' => $request['designation_id'],
'company_doj' => $request['company_doj'],
'documents' => $document_implode,
'account_holder_name' => $request['account_holder_name'],
'account_number' => $request['account_number'],
'bank_name' => $request['bank_name'],
'bank_identifier_code' => $request['bank_identifier_code'],
'branch_location' => $request['branch_location'],
'tax_payer_id' => $request['tax_payer_id'],
'created_by' => \Auth::user()->creatorId(),
]
);
if($request->hasFile('document'))
{
foreach($request->document as $key => $document)
{
$filenameWithExt = $request->file('document')[$key]->getClientOriginalName();
$filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
$extension = $request->file('document')[$key]->getClientOriginalExtension();
$fileNameToStore = $filename . '_' . time() . '.' . $extension;
$dir = storage_path('uploads/document/');
$image_path = $dir . $filenameWithExt;
if(File::exists($image_path))
{
File::delete($image_path);
}
if(!file_exists($dir))
{
mkdir($dir, 0777, true);
}
$path = $request->file('document')[$key]->storeAs('uploads/document/', $fileNameToStore);
$employee_document = EmployeeDocument::create(
[
'employee_id' => $employee['employee_id'],
'document_id' => $key,
'document_value' => $fileNameToStore,
'created_by' => \Auth::user()->creatorId(),
]
);
$employee_document->save();
}
}
$setings = Utility::settings();
if($setings['new_user'] == 1)
{
$userArr = [
'email' => $user->email,
'password' => $user->password,
];
$resp = Utility::sendEmailTemplate('new_user', [$user->id => $user->email], $userArr);
return redirect()->route('employee.index')->with('success', __('Employee successfully created.') . ((!empty($resp) && $resp['is_success'] == false && !empty($resp['error'])) ? '
' . $resp['error'] . '' : ''));
}
return redirect()->route('employee.index')->with('success', __('Employee successfully created.'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function edit($id)
{
$id = Crypt::decrypt($id);
if(\Auth::user()->can('edit employee'))
{
$documents = Document::where('created_by', \Auth::user()->creatorId())->get();
$branches = Branch::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$branches->prepend('Select Branch','');
$departments = Department::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$designations = Designation::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$employee = Employee::find($id);
// $employeesId = \Auth::user()->employeeIdFormat($employee->employee_id);
$employeesId = \Auth::user()->employeeIdFormat(!empty($employee) ? $employee->employee_id : '');
$departmentData = Department::where('created_by', \Auth::user()->creatorId())->where('branch_id',$employee->branch_id)->get()->pluck('name', 'id');
return view('employee.edit', compact('employee', 'employeesId', 'branches', 'departments', 'designations', 'documents','departmentData'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function update(Request $request, $id)
{
if(\Auth::user()->can('edit employee'))
{
$validator = \Validator::make(
$request->all(), [
'name' => 'required',
'dob' => 'required',
'gender' => 'required',
'phone' => 'required|numeric',
'address' => 'required',
// 'document.*' => 'mimes:jpeg,png,jpg,gif,svg,pdf,doc,zip|max:20480',
]
);
if($validator->fails())
{
$messages = $validator->getMessageBag();
return redirect()->back()->with('error', $messages->first());
}
$employee = Employee::findOrFail($id);
if($request->document)
{
foreach($request->document as $key => $document)
{
if(!empty($document))
{
$filenameWithExt = $request->file('document')[$key]->getClientOriginalName();
$filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
$extension = $request->file('document')[$key]->getClientOriginalExtension();
$fileNameToStore = $filename . '_' . time() . '.' . $extension;
// $dir = storage_path('uploads/document/');
$dir = 'uploads/document/';
$image_path = $dir . $filenameWithExt;
if(File::exists($image_path))
{
File::delete($image_path);
}
// if(!file_exists($dir))
// {
// mkdir($dir, 0777, true);
// }
// $path = $request->file('document')[$key]->storeAs('uploads/document/', $fileNameToStore);
$path = \Utility::upload_coustom_file($request,'document',$fileNameToStore,$dir,$key,[]);
if($path['flag'] == 1){
$url = $path['url'];
}else{
return redirect()->back()->with('error', __($path['msg']));
}
$employee_document = EmployeeDocument::where('employee_id', $employee->employee_id)->where('document_id', $key)->first();
if(!empty($employee_document))
{
$employee_document->document_value = $fileNameToStore;
$employee_document->save();
}
else
{
$employee_document = new EmployeeDocument();
$employee_document->employee_id = $employee->employee_id;
$employee_document->document_id = $key;
$employee_document->document_value = $fileNameToStore;
$employee_document->save();
}
}
}
}
$employee = Employee::findOrFail($id);
$input = $request->all();
$employee->fill($input)->save();
$employee = Employee::find($id);
$user = User::where('id',$employee->user_id)->first();
if(!empty($user)){
$user->name = $employee->name;
$user->email = $employee->email;
$user->save();
}
if($request->salary)
{
return redirect()->route('setsalary.index')->with('success', 'Employee successfully updated.');
}
if(\Auth::user()->type != 'employee')
{
return redirect()->route('employee.index')->with('success', 'Employee successfully updated.');
}
else
{
return redirect()->route('employee.show', \Illuminate\Support\Facades\Crypt::encrypt($employee->id))->with('success', 'Employee successfully updated.');
}
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function destroy($id)
{
if(Auth::user()->can('delete employee'))
{
$employee = Employee::findOrFail($id);
$user = User::where('id', '=', $employee->user_id)->first();
$emp_documents = EmployeeDocument::where('employee_id', $employee->employee_id)->get();
$employee->delete();
$user->delete();
$dir = storage_path('uploads/document/');
foreach($emp_documents as $emp_document)
{
$emp_document->delete();
if(!empty($emp_document->document_value))
{
unlink($dir . $emp_document->document_value);
}
}
return redirect()->route('employee.index')->with('success', 'Employee successfully deleted.');
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function show($id)
{
if(\Auth::user()->can('view employee'))
{
try {
$empId = Crypt::decrypt($id);
} catch (\Throwable $th) {
return redirect()->back()->with('error', __('Employee Not Found.'));
}
$empId = Crypt::decrypt($id);
$documents = Document::where('created_by', \Auth::user()->creatorId())->get();
$branches = Branch::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$departments = Department::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$designations = Designation::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$employee = Employee::where('id',$empId)->first();
$employeesId = \Auth::user()->employeeIdFormat(!empty($employee) ? $employee->employee_id : '');
return view('employee.show', compact('employee', 'employeesId', 'branches', 'departments', 'designations', 'documents'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function json(Request $request)
{
$designations = Designation::where('department_id', $request->department_id)->get()->pluck('name', 'id')->toArray();
return response()->json($designations);
}
function employeeNumber()
{
$latest = Employee::where('created_by', '=', \Auth::user()->creatorId())->latest()->first();
if(!$latest)
{
return 1;
}
return $latest->employee_id + 1;
}
public function profile(Request $request)
{
if(\Auth::user()->can('manage employee profile'))
{
$employees = Employee::where('created_by', \Auth::user()->creatorId());
if(!empty($request->branch))
{
$employees->where('branch_id', $request->branch);
}
if(!empty($request->department))
{
$employees->where('department_id', $request->department);
}
if(!empty($request->designation))
{
$employees->where('designation_id', $request->designation);
}
$employees = $employees->get();
$brances = Branch::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$brances->prepend('All', '');
$departments = Department::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$departments->prepend('All', '');
$designations = Designation::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$designations->prepend('All', '');
return view('employee.profile', compact('employees', 'departments', 'designations', 'brances'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function profileShow($id)
{
if(\Auth::user()->can('show employee profile'))
{
$empId = Crypt::decrypt($id);
$documents = Document::where('created_by', \Auth::user()->creatorId())->get();
$branches = Branch::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$departments = Department::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$designations = Designation::where('created_by', \Auth::user()->creatorId())->get()->pluck('name', 'id');
$employee = Employee::find($empId);
$employeesId = \Auth::user()->employeeIdFormat($employee->employee_id);
return view('employee.show', compact('employee', 'employeesId', 'branches', 'departments', 'designations', 'documents'));
}
else
{
return redirect()->back()->with('error', __('Permission denied.'));
}
}
public function lastLogin()
{
$users = User::where('created_by', \Auth::user()->creatorId())->get();
return view('employee.lastLogin', compact('users'));
}
public function employeeJson(Request $request)
{
$employees = Employee::where('branch_id', $request->branch)->get()->pluck('name', 'id')->toArray();
return response()->json($employees);
}
public function getdepartment(Request $request)
{
if($request->branch_id == 0)
{
$departments = Department::where('created_by', '=', \Auth::user()->creatorId())->get()->pluck('name', 'id')->toArray();
}
else
{
$departments = Department::where('created_by', '=', \Auth::user()->creatorId())->where('branch_id', $request->branch_id)->get()->pluck('name', 'id')->toArray();
}
return response()->json($departments);
}
public function joiningletterPdf($id)
{
$users = \Auth::user();
$currantLang = $users->currentLanguage();
$joiningletter=JoiningLetter::where(['lang' => $currantLang,'created_by' => \Auth::user()->creatorId()])->first();
$date=date('Y-m-d');
$employees = Employee::find($id);
$settings = Utility::settings();
$secs = strtotime($settings['company_start_time'])-strtotime("00:00");
$result = date("H:i",strtotime($settings['company_end_time'])-$secs);
$obj = [
'date' => \Auth::user()->dateFormat($date),
'app_name' => env('APP_NAME'),
'employee_name' => $employees->name,
'address' =>!empty($employees->address)?$employees->address:'' ,
'designation' => !empty($employees->designation->name)?$employees->designation->name:'',
'start_date' => !empty($employees->company_doj)?$employees->company_doj:'',
'branch' => !empty($employees->Branch->name)?$employees->Branch->name:'',
'start_time' => !empty($settings['company_start_time'])?$settings['company_start_time']:'',
'end_time' => !empty($settings['company_end_time'])?$settings['company_end_time']:'',
'total_hours' => $result,
];
$joiningletter->content = JoiningLetter::replaceVariable($joiningletter->content, $obj);
return view('employee.template.joiningletterpdf', compact('joiningletter','employees'));
}
public function joiningletterDoc($id)
{
$users = \Auth::user();
$currantLang = $users->currentLanguage();
$joiningletter=JoiningLetter::where(['lang' => $currantLang,'created_by' => \Auth::user()->creatorId()])->first();
$date=date('Y-m-d');
$employees = Employee::find($id);
$settings = Utility::settings();
$secs = strtotime($settings['company_start_time'])-strtotime("00:00");
$result = date("H:i",strtotime($settings['company_end_time'])-$secs);
$obj = [
'date' => \Auth::user()->dateFormat($date) ,
'app_name' => env('APP_NAME'),
'employee_name' => $employees->name,
'address' =>!empty($employees->address)?$employees->address:'' ,
'designation' => !empty($employees->designation->name)?$employees->designation->name:'',
'start_date' => !empty($employees->company_doj)?$employees->company_doj:'',
'branch' => !empty($employees->Branch->name)?$employees->Branch->name:'',
'start_time' => !empty($settings['company_start_time'])?$settings['company_start_time']:'',
'end_time' => !empty($settings['company_end_time'])?$settings['company_end_time']:'',
'total_hours' => $result,
//
];
// dd($obj);
$joiningletter->content = JoiningLetter::replaceVariable($joiningletter->content, $obj);
return view('employee.template.joiningletterdocx', compact('joiningletter','employees'));
}
public function ExpCertificatePdf($id)
{
$currantLang = \Cookie::get('LANGUAGE');
if (!isset($currantLang)) {
$currantLang = 'en';
}
$termination = Termination::where('employee_id',$id)->first();
$experience_certificate=ExperienceCertificate::where(['lang' => $currantLang,'created_by' => \Auth::user()->creatorId()])->first();
$date=date('Y-m-d');
$employees = Employee::find($id);
// dd($employees->salaryType->name);
$settings = Utility::settings();
$secs = strtotime($settings['company_start_time'])-strtotime("00:00");
$result = date("H:i",strtotime($settings['company_end_time'])-$secs);
$date1 = date_create($employees->company_doj);
$date2 = date_create($employees->termination_date);
$diff =date_diff($date1,$date2);
$duration = $diff->format("%a days");
if(!empty($termination->termination_date)){
$obj = [
'date' => \Auth::user()->dateFormat($date),
'app_name' => env('APP_NAME'),
'employee_name' => $employees->name,
'payroll'=>!empty($employees->salaryType->name)?$employees->salaryType->name:'',
'duration'=> $duration,
'designation' => !empty($employees->designation->name)?$employees->designation->name:'',
];
}else{
return redirect()->back()->with('error', __('Termination date is required.'));
}
$experience_certificate->content = ExperienceCertificate::replaceVariable($experience_certificate->content, $obj);
return view('employee.template.ExpCertificatepdf', compact('experience_certificate','employees'));
}
public function ExpCertificateDoc($id)
{
$currantLang = \Cookie::get('LANGUAGE');
if (!isset($currantLang)) {
$currantLang = 'en';
}
$termination = Termination::where('employee_id',$id)->first();
$experience_certificate=ExperienceCertificate::where(['lang' => $currantLang,'created_by' => \Auth::user()->creatorId()])->first();
$date=date('Y-m-d');
$employees = Employee::find($id);
$settings = Utility::settings();
$secs = strtotime($settings['company_start_time'])-strtotime("00:00");
$result = date("H:i",strtotime($settings['company_end_time'])-$secs);
$date1 = date_create($employees->company_doj);
$date2 = date_create($employees->termination_date);
$diff =date_diff($date1,$date2);
$duration = $diff->format("%a days");
if(!empty($termination->termination_date)){
$obj = [
'date' => \Auth::user()->dateFormat($date),
'app_name' => env('APP_NAME'),
'employee_name' => $employees->name,
'payroll'=>!empty($employees->salaryType->name)?$employees->salaryType->name:'',
'duration'=> $duration,
'designation' => !empty($employees->designation->name)?$employees->designation->name:'',
];
}else{
return redirect()->back()->with('error', __('Termination date is required.'));
}
$experience_certificate->content = ExperienceCertificate::replaceVariable($experience_certificate->content, $obj);
return view('employee.template.ExpCertificatedocx', compact('experience_certificate','employees'));
}
public function NocPdf($id)
{
$users = \Auth::user();
$currantLang = $users->currentLanguage();
$noc_certificate=NOC::where(['lang' => $currantLang,'created_by' => \Auth::user()->creatorId()])->first();
$date=date('Y-m-d');
$employees = Employee::find($id);
$settings = Utility::settings();
$secs = strtotime($settings['company_start_time'])-strtotime("00:00");
$result = date("H:i",strtotime($settings['company_end_time'])-$secs);
$obj = [
'date' => \Auth::user()->dateFormat($date),
'employee_name' => !empty($employees)?$employees->name:'',
'designation' => !empty($employees->designation->name)?$employees->designation->name:'',
'app_name' => env('APP_NAME'),
];
$noc_certificate->content=NOC::replaceVariable($noc_certificate->content, $obj);
return view('employee.template.Nocpdf', compact('noc_certificate','employees'));
}
public function NocDoc($id)
{
$users = \Auth::user();
$currantLang = $users->currentLanguage();
$noc_certificate=NOC::where(['lang' => $currantLang,'created_by' => \Auth::user()->creatorId()])->first();
$date=date('Y-m-d');
$employees = Employee::find($id);
$settings = Utility::settings();
$secs = strtotime($settings['company_start_time'])-strtotime("00:00");
$result = date("H:i",strtotime($settings['company_end_time'])-$secs);
$obj = [
'date' => \Auth::user()->dateFormat($date),
'employee_name' => $employees->name,
'designation' => !empty($employees->designation->name)?$employees->designation->name:'',
'app_name' => env('APP_NAME'),
];
$noc_certificate->content=NOC::replaceVariable($noc_certificate->content, $obj);
return view('employee.template.Nocdocx', compact('noc_certificate','employees'));
}
//Export
public function export()
{
$name = 'employee_' . date('Y-m-d i:h:s');
$data = Excel::download(new EmployeeExport(), $name . '.xlsx'); ob_end_clean();
return $data;
}
//import
public function importFile()
{
return view('employee.import');
}
public function import(Request $request)
{
$rules = [
'file' => 'required|mimes:csv,txt',
];
$validator = \Validator::make($request->all(), $rules);
if ($validator->fails()) {
$messages = $validator->getMessageBag();
return redirect()->back()->with('error', $messages->first());
}
$employees = (new EmployeesImport())->toArray(request()->file('file'))[0];
$totalCustomer = count($employees) - 1;
$errorArray = [];
for ($i = 1; $i <= count($employees) - 1; $i++) {
$employee = $employees[$i];
if (count($employee) >= 18) {
if ($employee[5] == null) {
return redirect()->back()->with('error', __('Email Filed is Required'));
}
$employeeByEmail = Employee::where('email', $employee[5])->first();
$userByEmail = User::where('email', $employee[5])->first();
// dd($userByEmail);
if (!empty($employeeByEmail) && !empty($userByEmail)) {
$employeeData = $employeeByEmail;
} else {
$user = new User();
$user->name = $employee[0];
$user->email = $employee[5];
$user->password = Hash::make($employee[6]);
$user->type = 'employee';
$user->lang = 'en';
$user->created_by = \Auth::user()->creatorId();
$user->save();
$user->assignRole('Employee');
$employeeData = new Employee();
$employeeData->employee_id = $this->employeeNumber();
$employeeData->user_id = $user->id;
}
$employeeData->name = $employee[0];
$employeeData->dob = $employee[1];
$employeeData->gender = $employee[2];
$employeeData->phone = $employee[3];
$employeeData->address = $employee[4];
$employeeData->email = $employee[5];
$employeeData->password = Hash::make($employee[6]);
$employeeData->employee_id = $this->employeeNumber();
$employeeData->branch_id = $employee[8];
$employeeData->department_id = $employee[9];
$employeeData->designation_id = $employee[10];
$employeeData->company_doj = $employee[11];
$employeeData->account_holder_name = $employee[12];
$employeeData->account_number = $employee[13];
$employeeData->bank_name = $employee[14];
$employeeData->bank_identifier_code = $employee[15];
$employeeData->branch_location = $employee[16];
$employeeData->tax_payer_id = $employee[17];
$employeeData->created_by = \Auth::user()->creatorId();
if (empty($employeeData)) {
$errorArray[] = $employeeData;
} else {
$employeeData->save();
}
$errorRecord = [];
if (empty($errorArray)) {
$data['status'] = 'success';
$data['msg'] = __('Record successfully imported');
} else {
$data['status'] = 'error';
$data['msg'] = count($errorArray) . ' ' . __('Record imported fail out of' . ' ' . $totalCustomer . ' ' . 'record');
foreach ($errorArray as $errorData) {
$errorRecord[] = implode(',', $errorData);
}
\Session::put('errorArray', $errorRecord);
}
return redirect()->back()->with($data['status'], $data['msg']);
}
else
{
return redirect()->back()->with('error',__('Something went wrong'));
}
}
}
}