IMMREX7
<?php
namespace App\Http\Controllers\School;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use DB;
use Auth;
use Exception;
use Carbon\Carbon;
use Session;
use App\Http\SendSmsApi;
use Illuminate\Support\Facades\Redirect;
use PDF;
class EmpAttendanceController extends SchoolController {
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request) {
if ($request->has('date') && $request->date != null) {
$tdate = \Carbon\Carbon::parse($request->date)->format('Y-m-d');
} else {
$tdate = \Carbon\Carbon::parse(today_date())->format('Y-m-d');
}
$months = \App\Month::get()->pluck('monthName', 'idMonth')->toArray();
$school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
$departments = ['All' => 'All'] + \App\Department::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
->orderBy('departmentName')->get()->pluck('departmentName', 'idDepartment')->toArray();
$designation = \App\Designation::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
->orderBy('designationName')->get()->pluck('designationName', 'idDesignation')->toArray();
$now = \Carbon\Carbon::now();
$month_name = $now->format('M');
$current_month = \App\Month::where('monthName', 'like', '%' . $month_name . '%')->first();
if($request->idDepartment == "All"){
$employees = \App\Employee::with(['attandance' => function($query) use ($school, $tdate) {
$query->whereDate('date', '=', $tdate);
$query->where('Device_ID', '=', $school->Device_ID);
}])->where('idSchool', '=', $school->idSchool)
->get();
}else if ($request->has('employees') && count($request->employees) > 0) {
$employees = \App\Employee::with(['attandance' => function($query) use ($school, $tdate) {
$query->whereDate('date', '=', $tdate);
$query->where('Device_ID', '=', $school->Device_ID);
}])
->whereIn('idEmployee', $request->employees)
->where('idSchool', '=', $school->idSchool)
->get();
} elseif ($request->has('designations') && count($request->designations) > 0) {
$employees = \App\Employee::with(['attandance' => function($query) use ($school, $tdate) {
$query->whereDate('date', '=', $tdate);
$query->where('Device_ID', '=', $school->Device_ID);
}])
->whereIn('idDesignation', $request->designations)
->where('idSchool', '=', $school->idSchool)
->get();
} else if ($request->has('departments') && count($request->departments) > 0) {
$employees = \App\Employee::with(['attandance' => function($query) use ($school, $tdate) {
$query->whereDate('date', '=', $tdate);
$query->where('Device_ID', '=', $school->Device_ID);
}])
->whereIn('idDepartment', $request->departments)
->where('idSchool', '=', $school->idSchool)
->get();
} else {
$employees = [];
}
return view('schools.hrms.emp_attendance', compact('designation','departments', 'tdate', 'employees', 'current_month', 'school', 'months'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create(Request $request) {
$school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
$departments = ['All' => 'All'] + \App\Department::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
->orderBy('departmentName')->get()->pluck('departmentName', 'idDepartment')->toArray();
$designation = \App\Designation::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
->orderBy('designationName')->get()->pluck('designationName', 'idDesignation')->toArray();
$employees = [];
if($request->idDepartment == "All"){
$employees = \App\Employee::where('idSchool', '=', $school->idSchool)
->get();
}else if ($request->has('idDesignation') && $request->idDesignation != null) {
$employees = \App\Employee::where('idDesignation', '=', $request->idDesignation)
// ->where('isActive', '=', 'Y')
->get();
} else {
$employees = \App\Employee::where('idDepartment', '=', $request->idDepartment)
// ->where('isActive', '=', 'Y')
->get();
}
$month = \App\Month::where('idMonth', '=', $request->idMonth)->first();
$now = \Carbon\Carbon::now();
$month_name = $now->format('M');
$current_month = \App\Month::where('monthName', 'like', '%' . $month_name . '%')->first();
return view('schools.hrms.manual_attendance', compact('designation','departments', 'employees', 'month', 'current_month','school'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request) {
if ($request->has('employees')) {
$now = \Carbon\Carbon::now();
$school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
foreach ($request->employees as $key => $var) {
foreach ($var as $k1 => $v1) {
$jdate = Carbon::parse($k1)->format('Y-m-d');
foreach ($v1 as $k2 => $v2) {
if ($k2 == 'inTime' && isset($k1) && isset($v2)) {
$intimemarked = \App\EmpAttendance::where('idSchool','=',Auth::guard('school')->user()->idSchool)
->where('Enrollment_Number', '=', $key)
->whereDate('date', '=', $jdate)
->where('idType', '=', 'M')
->where('status', '=', 'IN')
->first();
if ((isset($intimemarked) && $intimemarked != null) && $v2 != null) {
$timestamp = \Carbon\Carbon::createFromTimestamp(strtotime($k1 . $v2 . ":00"))->toDateTimeString();
$intimemarked->TimeStamp = $timestamp;
$intimemarked->update();
} else if ($v2 != null) {
$attendance = new \App\EmpAttendance();
$attendance->fill($request->all());
$attendance->Enrollment_Number = $key;
$timestamp = \Carbon\Carbon::createFromTimestamp(strtotime($k1 . $v2 . ":00"))->toDateTimeString();
$attendance->TimeStamp = $timestamp;
$attendance->idSchool = Auth::guard('school')->user()->idSchool;
$attendance->date = $k1;
$attendance->status = 'IN';
$attendance->save();
}
$employee = \App\Employee::where('enrollmentNo',$key)->first();
if($employee != null){
$phone_number = $employee->mobile;
if($employee->firstName != null){
if($school->idSchool == 73 || $school->idSchool == 79){
$message = 'Dear Admin, ' . trim($employee->firstName) . ' has reached at ' . $now->format('d-M-Y H:i:s').' Regards '.$school->sms_regard_text.'.';
}else
$message = 'Dear Admin, ' . trim($employee->firstName) . ' has reached at ' . $now->format('d-M-Y H:i:s') . ' Regards, Regards JIJAU ENTP.';
$template = \App\SchoolSmsTemplate::where('idSchool', '=', $school->idSchool)->where('template_name', '=', 'emp_attendance')->first();
if (!empty($template)) {
$tempid = $template->template_id;
if($template->status == "Y")
\App\Http\SendSmsApi::getUserNumber($phone_number, $message, $school, $tempid);
}
}
}
} elseif ($k2 == 'outTime' && isset($k1) && isset($v2)) {
$outtimemarked = \App\EmpAttendance::where('idSchool','=',Auth::guard('school')->user()->idSchool)
->where('Enrollment_Number', '=', $key)
->whereDate('date', '=', $jdate)
->where('idType', '=', 'M')
->where('status', '=', 'OUT')
->first();
if ((isset($outtimemarked) && $outtimemarked != null) && $v2 != null) {
$timestamp = \Carbon\Carbon::createFromTimestamp(strtotime($k1 . $v2 . ":00"))->toDateTimeString();
$outtimemarked->TimeStamp = $timestamp;
$outtimemarked->update();
} else if ($v2 != null) {
$attendance = new \App\EmpAttendance();
$attendance->fill($request->all());
$attendance->Enrollment_Number = $key;
$timestamp = \Carbon\Carbon::createFromTimestamp(strtotime($k1 . $v2 . ":00"))->toDateTimeString();
$attendance->TimeStamp = $timestamp;
$attendance->idSchool = Auth::guard('school')->user()->idSchool;
$attendance->date = $k1;
$attendance->status = 'OUT';
$attendance->save();
}
$employee = \App\Employee::where('enrollmentNo',$key)->first();
if($employee != null){
$phone_number = $employee->mobile;
if($employee->firstName != null){
if($school->idSchool == 73 || $school->idSchool == 79){
$message = 'Dear Admin, ' . trim($employee->firstName) . ' left at ' . $now->format('d-M-Y H:i:s').' Regards '.$school->sms_regard_text.'.';
}else$message = 'Dear Admin, ' . trim($employee->firstName) . ' left at ' . $now->format('d-M-Y H:i:s') . ' Regards, Regards JIJAU ENTP.';
$template = \App\SchoolSmsTemplate::where('idSchool', '=', $school->idSchool)->where('template_name', '=', 'emp_attendance_left')->first();
if (!empty($template)) {
$tempid = $template->template_id;
if($template->status == "Y")
\App\Http\SendSmsApi::getUserNumber($phone_number, $message, $school, $tempid);
}
}
}
}
}
}
}
flash('Attendance saved successfully.');
return redirect()->back();
} else {
flash('No Employee has been selected for attendance');
return redirect()->back();
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id) {
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id) {
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id) {
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id) {
//
}
public function monthlyAttendance(Request $request) {
$todaydate = \Carbon\Carbon::parse(today_date())->format('Y-m-d');
$months = \App\Month::get()->pluck('monthName', 'idMonth')->toArray();
$school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
$departments = ['All' => 'All'] + \App\Department::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
->orderBy('departmentName')->get()->pluck('departmentName', 'idDepartment')->toArray();
$designation = \App\Designation::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
->orderBy('designationName')->get()->pluck('designationName', 'idDesignation')->toArray();
$now = \Carbon\Carbon::now();
$month_name = $now->format('M');
$current_month = \App\Month::where('monthName', 'like', '%' . $month_name . '%')->first();
//get selected month
if ($request->has('idMonth')) {
$month = \App\Month::where('idMonth', '=', $request->idMonth)->first();
$noOfdays = $month->noOfDays;
$m = $month->idMonth;
// $fy = \App\FinancialYear::where('idFinancialYear','=', Session::get('idFinancialYear'))->first();
// $startDate = $fy->startDate;
$y = $request->year;
$days = [];
if($request->idDepartment == "All"){
$employees = \App\Employee::where('idSchool', '=', $school->idSchool)
->get();
}else if ($request->has('employees') && count($request->employees) > 0) {
$employees = \App\Employee::whereIn('idEmployee', $request->employees)
->where('idSchool', '=', $school->idSchool)
->get();
} elseif ($request->has('designations') && count($request->designations) > 0) {
$employees = \App\Employee::whereIn('idDesignation', $request->designations)
->where('idSchool', '=', $school->idSchool)
->get();
} else if ($request->has('departments') && count($request->departments) > 0) {
$employees = \App\Employee::whereIn('idDepartment', $request->departments)
->where('idSchool', '=', $school->idSchool)
->get();
} else {
$employees = [];
}
$ln = 1;
if($school->idSchool == 172){
$ln = 26;
$et = '25-' . $m . '-' . $y;
$dt = $ln . '-' . $m . '-' . $y;
$tdate = \Carbon\Carbon::parse($dt);
$edate = \Carbon\Carbon::parse($et);
$tdate->subMonth();
$diff = $edate->diff($tdate)->days;
for ($i = 0; $i <= $diff; $i++) {
$jdate = $tdate->format('Y-m-d');
$hd = '';
if($school->idCountry == 1){
if ($tdate->dayOfWeek == '0' ) {
$hd = 'SUNDAY';
}else if($tdate->dayOfWeek == '6'){
$hd = 'SATURDAY';
}
}else{
if ($tdate->dayOfWeek == '5') {
$hd = 'FRIDAY';
}
}
$days[] = array($tdate->format('d-m-Y'), $hd);
$tdate->addDays(1);
}
}else{
for ($i = 1; $i <= $noOfdays; $i++) {
$dt = $ln . '-' . $m . '-' . $y;
$tdate = \Carbon\Carbon::parse($dt);
$jdate = $tdate->format('Y-m-d');
$hd = '';
/*$holiday = \App\HrmsHoliday::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
->whereDate('fromDate', '<=', $jdate)
->whereDate('toDate', '>=', $jdate)
->first();
if ($holiday != null) {
$hd = $holiday->holidayName;
} else */
if($school->idCountry == 1){
if ($tdate->dayOfWeek == '0' && $school->idSchool != 144 ) {
$hd = 'SUNDAY';
}
}else{
if ($tdate->dayOfWeek == '5') {
$hd = 'FRIDAY';
}
}
$days[] = array($dt, $hd);
$ln++;
}
}
}
if ($request->has('idMonth'))
return view('schools.hrms.empmonthly_attendance', compact('designation','todaydate', 'days', 'tdate', 'departments', 'month', 'employees', 'current_month', 'school', 'months'));
else return view('schools.hrms.empmonthly_attendance', compact('designation','departments', 'months','school','todaydate','current_month',));
}
public function fetchAttendance($jdate,$idEmployee){
$school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
$employees = \App\Employee::where('idEmployee', $idEmployee)
->where('idSchool', '=',Auth::guard('school')->user()->idSchool)
->first();
$response = array();
if($employees != null){
$aintime = \App\EmpAttendance::where('Enrollment_Number', '=', $employees->enrollmentNo)
->where('Device_ID', '=',$school->Device_ID)
->whereDate('date', '=', Carbon::parse($jdate)->format("Y-m-d"))
->where('status', '=', 'IN')
->where('idType', '=', 'A')
->first();
$aouttime = \App\EmpAttendance::where('Enrollment_Number', '=', $employees->enrollmentNo)
->where('Device_ID', '=',$school->Device_ID)
->whereDate('date', '=', Carbon::parse($jdate)->format("Y-m-d"))
->where('status', '=', 'OUT')
->where('idType', '=', 'A')
->first();
if($aintime != null){
$response["in_time"] = $aintime->TimeStamp->format('h:i');
}
if($aouttime != null){
$response["out_time"] = $aouttime->TimeStamp->format('h:i');
}
}
return json_encode($response);
}
public function reportAttendance(Request $request) {
$todaydate = \Carbon\Carbon::parse(today_date())->format('Y-m-d');
$months = \App\Month::get()->pluck('monthName', 'idMonth')->toArray();
$school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
$departments = ['All' => 'All'] + \App\Department::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
->orderBy('departmentName')->get()->pluck('departmentName', 'idDepartment')->toArray();
$designation = \App\Designation::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
->orderBy('designationName')->get()->pluck('designationName', 'idDesignation')->toArray();
$now = \Carbon\Carbon::now();
$month_name = $now->format('M');
$current_month = \App\Month::where('monthName', 'like', '%' . $month_name . '%')->first();
//get selected month
if ($request->has('idMonth')) {
$month = \App\Month::where('idMonth', '=', $request->idMonth)->first();
$noOfdays = $month->noOfDays;
$m = $month->idMonth;
// $fy = \App\FinancialYear::where('idFinancialYear','=', Session::get('idFinancialYear'))->first();
// $startDate = $fy->startDate;
$y = $request->year;
$days = [];
if($request->idDepartment == "All"){
$employees = \App\Employee::where('idSchool', '=', $school->idSchool)
->get();
}else if ($request->has('employees') && count($request->employees) > 0) {
$employees = \App\Employee::whereIn('idEmployee', $request->employees)
->where('idSchool', '=', $school->idSchool)
->get();
} elseif ($request->has('designations') && count($request->designations) > 0) {
$employees = \App\Employee::whereIn('idDesignation', $request->designations)
->where('idSchool', '=', $school->idSchool)
->get();
} else if ($request->has('departments') && count($request->departments) > 0) {
$employees = \App\Employee::whereIn('idDepartment', $request->departments)
->where('idSchool', '=', $school->idSchool)
->get();
} else {
$employees = [];
}
$holidayType = [];
if($school->idSchool == 172){
$ln = 26;
$et = '25-' . $m . '-' . $y;
$dt = $ln . '-' . $m . '-' . $y;
$tdate = \Carbon\Carbon::parse($dt);
$edate = \Carbon\Carbon::parse($et);
$tdate->subMonth();
$diff = $edate->diff($tdate)->days;
for ($i = 0; $i <= $diff; $i++) {
$jdate = $tdate->format('Y-m-d');
$hd = '';
if($school->idCountry == 1){
if ($tdate->dayOfWeek == '0' ) {
$hd = 'SUNDAY';
}else if($tdate->dayOfWeek == '6'){
$hd = 'SATURDAY';
}
}else{
if ($tdate->dayOfWeek == '5') {
$hd = 'FRIDAY';
}
}
$days[] = array($tdate->format('d-m-Y'), $hd);
$tdate->addDays(1);
}
}else{
for ($i = 1; $i <= $noOfdays; $i++) {
$dt = $i . '-' . $m . '-' . $y;
$tdate = \Carbon\Carbon::parse($dt);
$jdate = $tdate->format('Y-m-d');
$hd = '';
/*$holiday = \App\HrmsHoliday::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
->where()
->whereDate('fromDate', '<=', $jdate)
->whereDate('toDate', '>=', $jdate)
->first();
$holidayType[$dt] = "NA";
if ($holiday != null) {
$hd = $holiday->holidayName;
$holidayType[$dt] = $holiday->type;
} else */
if($school->idCountry == 1){
if ($tdate->dayOfWeek == '0' && $school->idSchool != 144 ) {
$hd = 'SUNDAY';
}
}else{
if ($tdate->dayOfWeek == '5') {
$hd = 'FRIDAY';
}
}
$days[] = array($dt, $hd);
}
}
}
$query = "";
foreach($request->query() as $key => $value){
if(is_array($value)){
$url = "";
foreach($value as $index => $data){
if($index < (count($value) - 1))
$url = $url.$data.',';
else $url = $url.$data;
}
$query = $query.$key.'[]='.$url.'&';
}else
$query = $query.$key.'='.$value.'&';
}
if ($request->has('idMonth'))
return view('schools.hrms.report_attendance', compact('designation','query','todaydate', 'days', 'tdate', 'departments', 'month', 'employees', 'current_month', 'school', 'months','holidayType'));
else
return view('schools.hrms.report_attendance', compact('designation','query','todaydate', 'departments', 'current_month', 'school', 'months'));
}
public function manageAttendance(){
$school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
$employees = \App\Employee::select(DB::raw('CONCAT(firstName," ",IFNULL(middleName,"")," ",IFNULL(lastName,""),"(",enrollmentNo,")")'),'idEmployee')->where('idSchool', '=', $school->idSchool)
->get()->pluck('CONCAT(firstName," ",IFNULL(middleName,"")," ",IFNULL(lastName,""),"(",enrollmentNo,")")','idEmployee')->toArray();
return view('schools.hrms.edit_attendance',compact('employees'));
}
public function addAutoAttendance(Request $request){
$rules = [
'idEmployee' => 'required',
'attendance_date' => 'required',
];
$messages = [
'idEmployee.required' => 'Employee details not available',
'attendance_date.required' => 'Date must be filled',
];
$this->validate($request, $rules, $messages);
try{
$employee = \App\Employee::where('idEmployee',$request->idEmployee)->where('idSchool',Auth::guard('school')->user()->idSchool)->first();
if($employee == null){
return response()->json(['message' => "Employee details not found",'success' => "FAILED"], 422, ['app-status' => 'success']);
}
$school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
if($request->status == "P"){
if($request->in_time == null || $request->out_time == null){
return response()->json(['message' => "IN time and OUT time are manditory",'success' => "FAILED"], 422, ['app-status' => 'success']);
}
if($request->in_time == $request->out_time){
return response()->json(['message' => "IN time and OUT time cannot be same",'success' => "FAILED"], 422, ['app-status' => 'success']);
}
$validateIn = \Carbon\Carbon::parse($request->in_time)->format('H:i');
if($validateIn == "00:00"){
return response()->json(['message' => "Invalid format of time (HH:mm)",'success' => "FAILED"], 422, ['app-status' => 'success']);
}
$validateOut = \Carbon\Carbon::parse($request->out_time)->format('H:i');
if($validateOut == "00:00"){
return response()->json(['message' => "Invalid format of time (HH:mm)",'success' => "FAILED"], 422, ['app-status' => 'success']);
}
$inTime = \Carbon\Carbon::parse($request->attendance_date.' '.$request->in_time.':00 '.$request->in_am);
$outTime = \Carbon\Carbon::parse($request->attendance_date.' '.$request->out_time.':00 '.$request->out_am);
if($inTime->gt($outTime)){
return response()->json(['message' => "IN time cannot be greate than OUT time",'success' => "FAILED"], 422, ['app-status' => 'success']);
}
\App\EmpAttendance::where('Enrollment_Number',$employee->enrollmentNo)
->where('idSchool',$school->idSchool)
->where('date',Carbon::parse($request->attendance_date)->format('d-m-Y'))
->delete();
$empAttendance = new \App\EmpAttendance();
$empAttendance->Enrollment_Number = $employee->enrollmentNo;
$empAttendance->idSchool = $school->idSchool;
$empAttendance->idMonth = Carbon::createFromFormat('Y-m-d', Carbon::parse($request->attendance_date)->format('Y-m-d'))->month;
$empAttendance->TimeStamp = \Carbon\Carbon::parse($request->attendance_date.' '.$request->in_time.':00 '.$request->in_am)->format('Y-m-d H:i:s');
$empAttendance->status = "IN";
$empAttendance->idType = "A";
$empAttendance->Device_ID = $school->Device_ID;
$empAttendance->date = Carbon::parse($request->attendance_date)->format('d-m-Y');
if(isset($request->remarks))
$empAttendance->remarks = $request->remarks;
$empAttendance->save();
DB::table('track_attendance')->insert(['idEmployee' => $request->idEmployee, 'idSchool' => Auth::guard('school')->user()->idSchool, 'attendance_date' => Carbon::parse($request->attendance_date)->format('Y-m-d'),
'attendance_status' => $empAttendance->status, 'created_by' => Auth::guard('school')->user()->idSchoolUser,'created_at' => Carbon::now()->format('Y-m-d H:i:s'),'updated_at' => Carbon::now()->format('Y-m-d H:i:s')]);
$outAttendance = new \App\EmpAttendance();
$outAttendance->Enrollment_Number = $employee->enrollmentNo;
$outAttendance->idSchool = $school->idSchool;
$outAttendance->idMonth = Carbon::createFromFormat('Y-m-d', Carbon::parse($request->attendance_date)->format('Y-m-d'))->month;
$outAttendance->TimeStamp = \Carbon\Carbon::parse($request->attendance_date.' '.$request->out_time.':00 '.$request->out_am)->format('Y-m-d H:i:s');
$outAttendance->status = "OUT";
$outAttendance->idType = "A";
$outAttendance->Device_ID = $school->Device_ID;
$outAttendance->date = Carbon::parse($request->attendance_date)->format('d-m-Y');
if(isset($request->remarks))
$outAttendance->remarks = $request->remarks;
$outAttendance->save();
DB::table('track_attendance')->insert(['idEmployee' => $request->idEmployee, 'idSchool' => Auth::guard('school')->user()->idSchool, 'attendance_date' => Carbon::parse($request->attendance_date)->format('Y-m-d'),
'attendance_status' => $outAttendance->status, 'created_by' => Auth::guard('school')->user()->idSchoolUser,'created_at' => Carbon::now()->format('Y-m-d H:i:s'),'updated_at' => Carbon::now()->format('Y-m-d H:i:s')]);
}else if($request->status == "OD"){
\App\EmpAttendance::where('Enrollment_Number',$employee->enrollmentNo)
->where('idSchool',$school->idSchool)
->where('idMonth',Carbon::createFromFormat('Y-m-d', Carbon::parse($request->attendance_date)->format('Y-m-d'))->month)
->where('Device_ID',$school->Device_ID)
->where('date',Carbon::parse($request->attendance_date)->format('d-m-Y'))
->delete();
$attendance = new \App\EmpAttendance();
$attendance->Enrollment_Number = $employee->enrollmentNo;
$attendance->idSchool = $school->idSchool;
$attendance->idMonth = Carbon::createFromFormat('Y-m-d', Carbon::parse($request->attendance_date)->format('Y-m-d'))->month;
$attendance->TimeStamp = \Carbon\Carbon::parse($request->attendance_date.' 01:00:00')->format('Y-m-d H:i:s');
$attendance->status = "P";
$attendance->idType = "M";
$attendance->Device_ID = $school->Device_ID;
$attendance->date = Carbon::parse($request->attendance_date)->format('d-m-Y');
if(isset($request->remarks))
$attendance->remarks = $request->remarks;
$attendance->save();
DB::table('track_attendance')->insert(['idEmployee' => $request->idEmployee, 'idSchool' => Auth::guard('school')->user()->idSchool, 'attendance_date' => Carbon::parse($request->attendance_date)->format('Y-m-d'),
'attendance_status' => $request->status, 'created_by' => Auth::guard('school')->user()->idSchoolUser,'created_at' => Carbon::now()->format('Y-m-d H:i:s'),'updated_at' => Carbon::now()->format('Y-m-d H:i:s')]);
}else{
\App\EmpAttendance::where('Enrollment_Number',$employee->enrollmentNo)
->where('idSchool',$school->idSchool)
->where('idMonth',Carbon::createFromFormat('Y-m-d', Carbon::parse($request->attendance_date)->format('Y-m-d'))->month)
->where('Device_ID',$school->Device_ID)
->where('date',Carbon::parse($request->attendance_date)->format('d-m-Y'))
->delete();
$attendance = new \App\EmpAttendance();
$attendance->Enrollment_Number = $employee->enrollmentNo;
$attendance->idSchool = $school->idSchool;
$attendance->idMonth = Carbon::createFromFormat('Y-m-d', Carbon::parse($request->attendance_date)->format('Y-m-d'))->month;
$attendance->TimeStamp = \Carbon\Carbon::parse($request->attendance_date.' 01:00:00')->format('Y-m-d H:i:s');
$attendance->status = $request->status;
$attendance->idType = "M";
$attendance->Device_ID = $school->Device_ID;
$attendance->date = Carbon::parse($request->attendance_date)->format('d-m-Y');
if(isset($request->remarks))
$attendance->remarks = $request->remarks;
$attendance->save();
DB::table('track_attendance')->insert(['idEmployee' => $request->idEmployee, 'idSchool' => Auth::guard('school')->user()->idSchool, 'attendance_date' => Carbon::parse($request->attendance_date)->format('Y-m-d'),
'attendance_status' => $request->status, 'created_by' => Auth::guard('school')->user()->idSchoolUser,'created_at' => Carbon::now()->format('Y-m-d H:i:s'),'updated_at' => Carbon::now()->format('Y-m-d H:i:s')]);
}
return response()->json(['success' => "SUCCESS"], 200, ['app-status' => 'success']);
}catch(\Exception $e){
return response()->json(['message' => "Attendance not updated","error" => $e->getMessage(),'success' => "FAILED"], 422, ['app-status' => 'success']);
}
}
public function attendanceSheet(Request $request){
ini_set('max_execution_time', '300');
ini_set("pcre.backtrack_limit", "5000000");
$todaydate = \Carbon\Carbon::parse(today_date())->format('Y-m-d');
$months = \App\Month::get()->pluck('monthName', 'idMonth')->toArray();
$school = \App\School::where('idSchool', '=', Auth::guard('school')->user()->idSchool)->first();
$departments = ['' => '--Select--'] + \App\Department::where('idSchool', '=', Auth::guard('school')->user()->idSchool)
->orderBy('departmentName')->get()->pluck('departmentName', 'idDepartment')->toArray();
$now = \Carbon\Carbon::now();
$month_name = $now->format('M');
$current_month = \App\Month::where('monthName', 'like', '%' . $month_name . '%')->first();
$fy = Session::get('idFinancialYear');
//get selected month
if ($request->has('idMonth')) {
$month = \App\Month::where('idMonth', '=', $request->idMonth)->first();
$noOfdays = $month->noOfDays;
$m = $month->idMonth;
$y = $request->year;
$days = [];
$emp = [];
$designations = [];
if(is_array($request->employees)){
if(count($request->employees) > 0)
$emp = explode(",",$request->employees[0]);
}
if(count($request->designations) > 0)
$designations = explode(",",$request->designations[0]);
if ($request->has('employees') && count($emp) > 0) {
$employees = \App\Employee::whereIn('idEmployee', $emp)
->where('idSchool', '=', $school->idSchool)
->get();
} elseif ($request->has('designations') && count($designations) > 0) {
$employees = \App\Employee::whereIn('idDesignation', $designations)
->where('idSchool', '=', $school->idSchool)
->get();
} else if ($request->has('departments') && count($request->departments) > 0) {
$employees = \App\Employee::whereIn('idDepartment', $request->departments)
->where('idSchool', '=', $school->idSchool)
->get();
} else {
$employees = [];
}
if($school->idSchool == 172){
$ln = 26;
$et = '25-' . $m . '-' . $y;
$dt = $ln . '-' . $m . '-' . $y;
$tdate = \Carbon\Carbon::parse($dt);
$edate = \Carbon\Carbon::parse($et);
$tdate->subMonth();
$diff = $edate->diff($tdate)->days;
for ($i = 0; $i <= $diff; $i++) {
$jdate = $tdate->format('Y-m-d');
$hd = '';
if($school->idCountry == 1){
if ($tdate->dayOfWeek == '0' ) {
$hd = 'SUNDAY';
}else if($tdate->dayOfWeek == '6'){
$hd = 'SATURDAY';
}
}else{
if ($tdate->dayOfWeek == '5') {
$hd = 'FRIDAY';
}
}
$days[] = array($tdate->format('d-m-Y'), $hd);
$tdate->addDays(1);
}
}else{
for ($i = 1; $i <= $noOfdays; $i++) {
$dt = $i . '-' . $m . '-' . $y;
$tdate = \Carbon\Carbon::parse($dt);
$hd = '';
if($school->idCountry == 1){
if ($tdate->dayOfWeek == '0' && $school->idSchool != 144 ) {
$hd = 'SUNDAY';
}
}else{
if ($tdate->dayOfWeek == '5') {
$hd = 'FRIDAY';
}
}
$days[] = array($dt, $hd);
}
}
}else{
return redirect('/school/empattendance-report');
}
if($school->idSchool == 172){
$pdf = PDF::loadView('schools.vishwajyot_attendance_print', ['margin_top' => 20, 'days' => $days ,'fy' => $fy
, 'noOfdays' => $noOfdays , 'm' => $m , 'y' => $y , 'employees' => $employees, 'month' => $month , 'school' => $school, 'todaydate' => $todaydate]);
}else
$pdf = PDF::loadView('schools.royal_attendance_print', ['margin_top' => 20, 'days' => $days ,'fy' => $fy
, 'noOfdays' => $noOfdays , 'm' => $m , 'y' => $y , 'employees' => $employees, 'month' => $month , 'school' => $school, 'todaydate' => $todaydate]);
return $pdf->stream('attendance_sheet.pdf');
}
}
Copyright © 2021 -