@ -5,9 +5,9 @@ namespace App\Http\Controllers;
use Log;
use Log;
use Illuminate\Http\Request;
use Illuminate\Http\Request;
use App\Models\Presence;
use App\Models\Presence;
use App\Models\Activity;
// use App\Models\Activity;
use GuzzleHttp\Client;
// use GuzzleHttp\Client;
use Illuminate\Support\Facades\Http;
// use Illuminate\Support\Facades\Http;
use Carbon\Carbon;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\DB;
@ -24,86 +24,102 @@ class PresenceController extends Controller
$date = date_create($request->clock_time);
$date = date_create($request->clock_time);
// $ActivityId = null;
// $ActivityId = null;
if(count($checkLocation) > 0){
if(count($checkLocation) > 0){
$statusBoundary = true;
$checkLocation[0]['status_assign'] ? $statusBoundary = true
: $statusBoundary = false;
}
}
if($request->type=="out"){
if(!$checkLocation[0]['status_assign'] & & $checkLocation[0]['boundary'] == null){
$data=array(
$clock_out_loc = $this->getLoc($request->clock_out_lat, $request->clock_out_lng)->display_name;
'id' => null,
$dataUpdate = array(
'boundary' => $statusBoundary
"clock_out"=>$request->clock_time,
"clock_out_lat" => $request->clock_out_lat,
"clock_out_lng" => $request->clock_out_lng,
"updated_by"=>$this->currentName,
"clock_out_loc" => $clock_out_loc,
"clock_out_boundary" => $statusBoundary
);
);
return response()->json(['status'=>'failed', 'data'=>$data, 'message'=>'Tidak dapat melakukan presensi. Anda belum di assign ke area kerja.','code'=>200], 200);
$resultUpdate = $this->updateFormAdd($dataUpdate, $request->user_id);
if($resultUpdate & & $resultUpdate > 0){
if($statusBoundary){
for ($i=0; $i < count ( $ checkLocation ) ; $ i + + ) {
# code...
DB::table('clock_in_out_boundary')->insert([
"clock_in_out_id" => $resultUpdate,
"user_id" => $request->user_id,
"activity_id" => $checkLocation[$i]['activity_id'],
"type" => $request->type,
"created_at" => $date,
"created_by" => $this->currentName
]);
};
};
$data=array(
'id' => $resultUpdate,
'boundary' => $statusBoundary
);
return response()->json(['status'=>'success', 'data'=>$data,'message'=>'clock out success!','code'=>200], 200);
}
else{
return response()->json(['status'=>'failed','message'=>'clock out failed please try again!','code'=>400], 400);
}
die();
}
}
$onlyDate = date_format($date,"Y-m-d");
if($checkLocation[0]['status_assign'] & & $checkLocation[0]['boundary'] == null){
$clock_in_loc = $this->getLoc($request->clock_in_lat, $request->clock_in_lng)->display_name;
$data=array(
'id' => null,
$dataAdd = array(
'boundary' => $statusBoundary
'user_id'=> $request->user_id,
);
'clock_in'=> $request->clock_time,
return response()->json(['status'=>'failed', 'data'=>$data, 'message'=>'Tidak dapat melakukan presensi. Anda berada di luar area kerja.','code'=>200], 200);
'date_presence'=> $onlyDate,
'created_by' => $this->currentName,
'clock_in_lat' => $request->clock_in_lat,
'clock_in_lng' => $request->clock_in_lng,
'clock_in_loc' => $clock_in_loc,
'clock_in_boundary' => $statusBoundary
);
$result = Presence::create($dataAdd);
$data=array(
'id' => $result->id,
'boundary' => $statusBoundary
);
if($result){
if($statusBoundary){
for ($i=0; $i < count ( $ checkLocation ) ; $ i + + ) {
# code...
DB::table('clock_in_out_boundary')->insert([
"clock_in_out_id" => $result->id,
"user_id" => $request->user_id,
"activity_id" => $checkLocation[$i]['activity_id'],
"type" => $request->type,
"created_at" => $date,
"created_by" => $this->currentName
]);
};
};
return response()->json(['status'=>'success', 'data' => $data,'message'=>'clock in successfully!','code'=>200], 200);
}else{
return response()->json(['status'=>'failed','message'=>'clock in failed!','code'=>400], 400);
}
}
// if($request->type=="out"){
// $clock_out_loc = $this->getLoc($request->clock_out_lat, $request->clock_out_lng)->display_name;
// $dataUpdate = array(
// "clock_out"=>$request->clock_time,
// "clock_out_lat" => $request->clock_out_lat,
// "clock_out_lng" => $request->clock_out_lng,
// "updated_by"=>$this->currentName,
// "clock_out_loc" => $clock_out_loc,
// "clock_out_boundary" => $statusBoundary
// );
// $resultUpdate = $this->updateFormAdd($dataUpdate, $request->user_id);
// if($resultUpdate & & $resultUpdate > 0){
// if($statusBoundary){
// for ($i=0; $i < count ( $ checkLocation ) ; $ i + + ) {
// # code...
// DB::table('clock_in_out_boundary')->insert([
// "clock_in_out_id" => $resultUpdate,
// "user_id" => $request->user_id,
// "activity_id" => $checkLocation[$i]['activity_id'],
// "type" => $request->type,
// "created_at" => $date,
// "created_by" => $this->currentName
// ]);
// };
// };
// $data=array(
// 'id' => $resultUpdate,
// 'boundary' => $statusBoundary
// );
// return response()->json(['status'=>'success', 'data'=>$data,'message'=>'clock out success!','code'=>200], 200);
// }
// else{
// return response()->json(['status'=>'failed','message'=>'clock out failed please try again!','code'=>400], 400);
// }
// die();
// }
// $onlyDate = date_format($date,"Y-m-d");
// $clock_in_loc = $this->getLoc($request->clock_in_lat, $request->clock_in_lng)->display_name;
// $dataAdd = array(
// 'user_id'=> $request->user_id,
// 'clock_in'=> $request->clock_time,
// 'date_presence'=> $onlyDate,
// 'created_by' => $this->currentName,
// 'clock_in_lat' => $request->clock_in_lat,
// 'clock_in_lng' => $request->clock_in_lng,
// 'clock_in_loc' => $clock_in_loc,
// 'clock_in_boundary' => $statusBoundary
// );
// $result = Presence::create($dataAdd);
// $data=array(
// 'id' => $result->id,
// 'boundary' => $statusBoundary
// );
// if($result){
// if($statusBoundary){
// for ($i=0; $i < count ( $ checkLocation ) ; $ i + + ) {
// # code...
// DB::table('clock_in_out_boundary')->insert([
// "clock_in_out_id" => $result->id,
// "user_id" => $request->user_id,
// "activity_id" => $checkLocation[$i]['activity_id'],
// "type" => $request->type,
// "created_at" => $date,
// "created_by" => $this->currentName
// ]);
// };
// };
// return response()->json(['status'=>'success', 'data' => $data,'message'=>'clock in successfully!','code'=>200], 200);
// }else{
// return response()->json(['status'=>'failed','message'=>'clock in failed!','code'=>400], 400);
// }
}
}
private function checkLocation($params){
private function checkLocation($params){
@ -128,11 +144,25 @@ class PresenceController extends Controller
if($key->boundary){
if($key->boundary){
$temp[]=array(
$temp[]=array(
"activity_id" => $dataGeom->id,
"activity_id" => $dataGeom->id,
"boundary" => $key->boundary
"boundary" => $key->boundary,
"status_assign" => true
);
);
}
}
}
if(count($temp) < 1 ) {
$temp[]=array(
"activity_id" => null,
"boundary" => null,
"status_assign" => true
);
}
}
}
}
}else{
$temp[]=array(
"activity_id" => null,
"boundary" => null,
"status_assign" => false
);
}
}
return $temp;
return $temp;
}
}
@ -152,14 +182,10 @@ class PresenceController extends Controller
}
}
}
}
public function clockinout($id) {
public function clockinout($id) {
$dateTimeNow = Carbon::now()->addHour(7);
$dateTimeNow = Carbon::now()->addHour(7);
$dataPresence = Presence::where('user_id', $id)->orderBy('id', 'DESC')->first();
$dataPresence = Presence::where('user_id', $id)->orderBy('id', 'DESC')->first();
if($dataPresence){
if($dataPresence){
$dateNow = date("Y-m-d");
$dateNow = date("Y-m-d");
@ -199,10 +225,8 @@ class PresenceController extends Controller
private function updateFormAdd($data, $id){
private function updateFormAdd($data, $id){
$date = date_create($data['clock_out']);
$date = date_create($data['clock_out']);
$onlyDate = date_format($date,"Y-m-d");
$onlyDate = date_format($date,"Y-m-d");
$dataPresence = Presence::where('user_id',$id)
$dataPresence = Presence::where('user_id',$id)
->where("clock_in", "< =", $data["clock_out"])
->where("clock_in", "< =", $data["clock_out"])
->orderByDesc("id")
->orderByDesc("id")
@ -237,7 +261,6 @@ class PresenceController extends Controller
die();
die();
}
}
if($result){
if($result){
return response()->json(['status'=>'success','message'=>'data presence successfully updated!','code'=>200], 200);
return response()->json(['status'=>'success','message'=>'data presence successfully updated!','code'=>200], 200);
}else{
}else{
@ -256,7 +279,6 @@ class PresenceController extends Controller
die();
die();
}
}
if($delete){
if($delete){
return response()->json(['status'=>'success','message'=>'data presence successfully deleted!','code'=>200], 200);
return response()->json(['status'=>'success','message'=>'data presence successfully deleted!','code'=>200], 200);
}else{
}else{