From 773f1144040ace45defe9d83bb1263c8ace8af3c Mon Sep 17 00:00:00 2001 From: wahyuun Date: Wed, 6 Mar 2024 16:42:44 +0700 Subject: [PATCH 1/7] update use --- .../Controllers/AssignMaterialController.php | 8 +- .../Controllers/AssignToolsController.php | 319 +++++++++--------- app/Http/Controllers/HolidayController.php | 280 +++++++-------- .../Controllers/ReportActivityController.php | 2 +- .../ReportActivityMaterialController.php | 6 +- .../Controllers/UserToActivityController.php | 2 +- 6 files changed, 310 insertions(+), 307 deletions(-) diff --git a/app/Http/Controllers/AssignMaterialController.php b/app/Http/Controllers/AssignMaterialController.php index e385a95..7a5e9d8 100644 --- a/app/Http/Controllers/AssignMaterialController.php +++ b/app/Http/Controllers/AssignMaterialController.php @@ -8,7 +8,7 @@ use App\Models\RequestMaterial; use App\Models\Activity; use App\Models\ReportActivityMaterial; use Illuminate\Support\Facades\DB; -use Datatables; +use Yajra\Datatables\Datatables; class AssignMaterialController extends Controller { @@ -47,7 +47,11 @@ class AssignMaterialController extends Controller if ($planDate >= $startDate) { $result = AssignMaterial::create($data); - return response()->json(['status' => 'success', 'message' => 'Data added!', 'code' => 200], 200); + if($result) { + return response()->json(['status' => 'success', 'message' => 'Data added!', 'code' => 200], 200); + } else { + return response()->json(['status' => 'failed', 'message' => 'Failed to add data!', 'code' => 400], 400); + } } else { return response()->json(['status' => 'failed', 'message' => 'Failed to add data!', 'code' => 400], 400); } diff --git a/app/Http/Controllers/AssignToolsController.php b/app/Http/Controllers/AssignToolsController.php index 4e2b2c6..4185991 100644 --- a/app/Http/Controllers/AssignToolsController.php +++ b/app/Http/Controllers/AssignToolsController.php @@ -1,160 +1,159 @@ -validate($request, [ - 'activity_id' => 'required', - 'tools_id' => 'required', - 'qty_planning' => 'required', - ]); - - $checkStock = ToolsResource::where("id", $request->tools_id)->first(); - $currentStock = $checkStock->qty; - if((int)$currentStock < (int)$request->qty_planning){ - return response()->json(['status'=>'failed','message'=>'Not enough stock in warehouse!','code'=>400]); - die(); - } - - - $data = $request->all(); - - $data['created_by'] = $this->currentName; - - $result = AssignTools::create($data); - if($result){ - $checkStock = ToolsResource::find($request->tools_id); - $newStock = (int)$checkStock->qty - (int)$request->qty_planning; - $dataUpdate = array( - "qty"=>$newStock, - "updated_by"=>$this->currentName - ); - $checkStock->update($dataUpdate); - return response()->json(['status'=>'success','message'=>'Assign tools success!','code'=>200]); - }else{ - return response()->json(['status'=>'failed','message'=>'Assign tools failed','code'=>400]); - } - } - - private function updateFromAdd($data){ - $assignTools = AssignTools::where("activity_id", $data->activity_id)->where("tools_id", $data->tools_id)->first(); - - $newQty = (int)$assignTools->qty_planning + (int)$data->qty_planning; - $dataUpdate = array( - "qty_planning"=>$newQty, - "updated_by"=>$this->currentName - ); - - $dataWillUpdate = AssignMaterial::where("activity_id", $data->activity_id)->where("tools_id", $data->tools_id); - - return $dataWillUpdate->update($dataUpdate); - } - - public function update(Request $request, $id){ - - if(!$id || (int) $id < 0 || $id==""){ - return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400); - } - $data = AssignTools::find($id); - if($data){ - $result = $data->update($request->all()); - }else{ - return response()->json(['status'=>'failed','message'=>'Data Assign tools not found!','code'=>400], 400); - die(); - } - - if($result){ - return response()->json(['status'=>'success','message'=>'Assign tools successfully updated!','code'=>200], 200); - }else{ - return response()->json(['status'=>'failed','message'=>'Assign tools failed updated!','code'=>400], 400); - } - } - - public function delete($id) - { - $data = AssignTools::find($id); - - if($data){ - $id = $data->tools_id; - $stock = $data->qty_planning; - $toolsResource = ToolsResource::find($id); - if($toolsResource){ - $oldStock = $toolsResource->qty; - $newStock = $oldStock + $stock; - $dataUpdate = array( - "qty"=>$newStock, - "updated_by"=>$this->currentName - ); - $toolsResource->update($dataUpdate); - } - - $delete = $data->delete(); - }else{ - return response()->json(['status'=>'failed','message'=>'Data Assign tools not found!','code'=>400], 400); - die(); - } - - - if($delete){ - return response()->json(['status'=>'success','message'=>'Assign tools successfully deleted!','code'=>200], 200); - }else{ - return response()->json(['status'=>'failed','message'=>'Assign tools failed deleted!','code'=>400], 400); - } - } - - public function edit($id){ - if(!$id || (int) $id < 0 || $id==""){ - return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400); - die(); - } - - $result = AssignTools::find($id); - - if($result){ - return response()->json(['status'=>'success','code'=>200,'data'=>$result], 200); - }else{ - return response()->json(['status'=>'failed','message'=>'failed get data Assign tools, please try again later!','code'=>400], 400); - } - } - - public function search(Request $request) - { - $payload = $request->all(); - $dataBuilder = $this->setUpPayload($payload, 'assign_tools_to_activity'); - $builder = $dataBuilder['builder']; - $countBuilder = $dataBuilder['count']; - $dataGet = $builder->get(); - $totalRecord = $countBuilder->count(); - return response()->json(['status'=>'success','code'=>200,'data'=>$dataGet, 'totalRecord'=>$totalRecord], 200); - } - - public function list() - { - $data = AssignTools::all(); - $countData = $data->count(); - - if($data){ - return response()->json(['status'=>'success','code'=>200,'data'=>$data, 'totalRecord'=>$countData], 200); - }else{ - return response()->json(['status'=>'failed','message'=>'failed get Assign tools, please try again later!','code'=>400], 400); - } - } - - public function datatables(Request $request){ - $id_activity = $request->query('idact'); - $data = AssignTools::select("assign_tools_to_activity.*","m.name as tools_name","m.uom as uom")->join("m_tools_resource as m", "m.id", "=", "assign_tools_to_activity.tools_id")->where('assign_tools_to_activity.activity_id', $id_activity)->get(); - return Datatables::of($data) - ->addIndexColumn() - ->addColumn('action', function($row){ - $actionBtn = ''; - return $actionBtn; - }) - ->rawColumns(['action'])->make(true); - } -} +validate($request, [ + 'activity_id' => 'required', + 'tools_id' => 'required', + 'qty_planning' => 'required', + ]); + + $checkStock = ToolsResource::where("id", $request->tools_id)->first(); + $currentStock = $checkStock->qty; + if((int)$currentStock < (int)$request->qty_planning){ + return response()->json(['status'=>'failed','message'=>'Not enough stock in warehouse!','code'=>400]); + die(); + } + + + $data = $request->all(); + + $data['created_by'] = $this->currentName; + + $result = AssignTools::create($data); + if($result){ + $checkStock = ToolsResource::find($request->tools_id); + $newStock = (int)$checkStock->qty - (int)$request->qty_planning; + $dataUpdate = array( + "qty"=>$newStock, + "updated_by"=>$this->currentName + ); + $checkStock->update($dataUpdate); + return response()->json(['status'=>'success','message'=>'Assign tools success!','code'=>200]); + }else{ + return response()->json(['status'=>'failed','message'=>'Assign tools failed','code'=>400]); + } + } + + private function updateFromAdd($data){ + $assignTools = AssignTools::where("activity_id", $data->activity_id)->where("tools_id", $data->tools_id)->first(); + + $newQty = (int)$assignTools->qty_planning + (int)$data->qty_planning; + $dataUpdate = array( + "qty_planning"=>$newQty, + "updated_by"=>$this->currentName + ); + + $dataWillUpdate = AssignMaterial::where("activity_id", $data->activity_id)->where("tools_id", $data->tools_id); + + return $dataWillUpdate->update($dataUpdate); + } + + public function update(Request $request, $id){ + + if(!$id || (int) $id < 0 || $id==""){ + return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400); + } + $data = AssignTools::find($id); + if($data){ + $result = $data->update($request->all()); + }else{ + return response()->json(['status'=>'failed','message'=>'Data Assign tools not found!','code'=>400], 400); + die(); + } + + if($result){ + return response()->json(['status'=>'success','message'=>'Assign tools successfully updated!','code'=>200], 200); + }else{ + return response()->json(['status'=>'failed','message'=>'Assign tools failed updated!','code'=>400], 400); + } + } + + public function delete($id) + { + $data = AssignTools::find($id); + + if($data){ + $id = $data->tools_id; + $stock = $data->qty_planning; + $toolsResource = ToolsResource::find($id); + if($toolsResource){ + $oldStock = $toolsResource->qty; + $newStock = $oldStock + $stock; + $dataUpdate = array( + "qty"=>$newStock, + "updated_by"=>$this->currentName + ); + $toolsResource->update($dataUpdate); + } + + $delete = $data->delete(); + }else{ + return response()->json(['status'=>'failed','message'=>'Data Assign tools not found!','code'=>400], 400); + die(); + } + + + if($delete){ + return response()->json(['status'=>'success','message'=>'Assign tools successfully deleted!','code'=>200], 200); + }else{ + return response()->json(['status'=>'failed','message'=>'Assign tools failed deleted!','code'=>400], 400); + } + } + + public function edit($id){ + if(!$id || (int) $id < 0 || $id==""){ + return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400); + die(); + } + + $result = AssignTools::find($id); + + if($result){ + return response()->json(['status'=>'success','code'=>200,'data'=>$result], 200); + }else{ + return response()->json(['status'=>'failed','message'=>'failed get data Assign tools, please try again later!','code'=>400], 400); + } + } + + public function search(Request $request) + { + $payload = $request->all(); + $dataBuilder = $this->setUpPayload($payload, 'assign_tools_to_activity'); + $builder = $dataBuilder['builder']; + $countBuilder = $dataBuilder['count']; + $dataGet = $builder->get(); + $totalRecord = $countBuilder->count(); + return response()->json(['status'=>'success','code'=>200,'data'=>$dataGet, 'totalRecord'=>$totalRecord], 200); + } + + public function list() + { + $data = AssignTools::all(); + $countData = $data->count(); + + if($data){ + return response()->json(['status'=>'success','code'=>200,'data'=>$data, 'totalRecord'=>$countData], 200); + }else{ + return response()->json(['status'=>'failed','message'=>'failed get Assign tools, please try again later!','code'=>400], 400); + } + } + + public function datatables(Request $request){ + $id_activity = $request->query('idact'); + $data = AssignTools::select("assign_tools_to_activity.*","m.name as tools_name","m.uom as uom")->join("m_tools_resource as m", "m.id", "=", "assign_tools_to_activity.tools_id")->where('assign_tools_to_activity.activity_id', $id_activity)->get(); + return Datatables::of($data) + ->addIndexColumn() + ->addColumn('action', function($row){ + $actionBtn = ''; + return $actionBtn; + }) + ->rawColumns(['action'])->make(true); + } +} diff --git a/app/Http/Controllers/HolidayController.php b/app/Http/Controllers/HolidayController.php index c64fee8..000a925 100644 --- a/app/Http/Controllers/HolidayController.php +++ b/app/Http/Controllers/HolidayController.php @@ -1,140 +1,140 @@ -validate($request, [ - 'proyek_id' => 'required', - 'version_gantt_id' => 'required', - 'date' => 'required' - ]); - - $data = $request->all(); - $duration = $request->duration; - if(!$duration){ - $data['duration'] = 1; - } - $data['created_by'] = $this->currentName; - - $result = Holiday::create($data); - - if($result){ - return response()->json(['status'=>'success','message'=>'add holiday successfully!','code'=>200], 200); - }else{ - return response()->json(['status'=>'failed','message'=>'add holiday failed!','code'=>400], 400); - } - } - - public function edit($id){ - if(!$id || (int) $id < 0 || $id==""){ - return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400); - die(); - } - - $result = Holiday::find($id); - - if($result){ - return response()->json(['status'=>'success','code'=>200,'data'=>$result], 200); - }else{ - return response()->json(['status'=>'failed','message'=>'failed get data holiday, please try again later!','code'=>400], 400); - } - } - - public function update(Request $request, $id) - { - if(!$id || (int) $id < 0 || $id==""){ - return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400); - } - - $data = Holiday::find($id); - - if($data){ - $result = $data->update($request->all()); - }else{ - return response()->json(['status'=>'failed','message'=>'data holiday not found!','code'=>400], 400); - die(); - } - - - if($result){ - return response()->json(['status'=>'success','message'=>'data holiday successfully updated!','code'=>200], 200); - }else{ - return response()->json(['status'=>'failed','message'=>'data holiday failed updated!','code'=>400], 400); - } - } - - public function delete($id) - { - $data = Holiday::find($id); - - if($data){ - $deletedData = $data; - $delete = $data->delete(); - }else{ - return response()->json(['status'=>'failed','message'=>'data holiday not found!','code'=>400], 400); - die(); - } - - - if($delete){ - return response()->json(['status'=>'success', 'data'=>$deletedData,'message'=>'data holiday successfully deleted!','code'=>200], 200); - }else{ - return response()->json(['status'=>'failed','message'=>'data holiday failed deleted!','code'=>400], 400); - } - } - - public function search(Request $request) - { - $payload = $request->all(); - $dataBuilder = $this->setUpPayload($payload, 'm_holidays'); - $builder = $dataBuilder['builder']; - $countBuilder = $dataBuilder['count']; - $dataGet = $builder->get(); - $totalRecord = $countBuilder->count(); - return response()->json(['status'=>'success','code'=>200,'data'=>$dataGet, 'totalRecord'=>$totalRecord], 200); - } - - public function list() - { - $data = Holiday::all(); - $countData = $data->count(); - - if($data){ - return response()->json(['status'=>'success','code'=>200,'data'=>$data, 'totalRecord'=>$countData], 200); - }else{ - return response()->json(['status'=>'failed','message'=>'failed get list holiday, please try again later!','code'=>400], 400); - } - } - - public function datatables(Request $request){ - $proyek_id = $request->query('proyek_id'); - $gantt_id = $request->query('gantt_id'); - - $data = Holiday::where('proyek_id', $proyek_id)->where('version_gantt_id', $gantt_id)->get(); - - return Datatables::of($data) - ->editColumn('date', function($row) { - $date = date_create($row->date); - $dateFormat = date_format($date,"d-m-Y"); - return $dateFormat; - }) - ->editColumn('duration', function($row) { - $day = (int)$row->duration > 1 ? "days" : "day"; - return $row->duration." ".$day; - }) - ->addIndexColumn() - ->addColumn('action', function($row){ - $actionBtn = ''; - return $actionBtn; - }) - - ->rawColumns(['action'])->make(true); - } -} +validate($request, [ + 'proyek_id' => 'required', + 'version_gantt_id' => 'required', + 'date' => 'required' + ]); + + $data = $request->all(); + $duration = $request->duration; + if(!$duration){ + $data['duration'] = 1; + } + $data['created_by'] = $this->currentName; + + $result = Holiday::create($data); + + if($result){ + return response()->json(['status'=>'success','message'=>'add holiday successfully!','code'=>200], 200); + }else{ + return response()->json(['status'=>'failed','message'=>'add holiday failed!','code'=>400], 400); + } + } + + public function edit($id){ + if(!$id || (int) $id < 0 || $id==""){ + return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400); + die(); + } + + $result = Holiday::find($id); + + if($result){ + return response()->json(['status'=>'success','code'=>200,'data'=>$result], 200); + }else{ + return response()->json(['status'=>'failed','message'=>'failed get data holiday, please try again later!','code'=>400], 400); + } + } + + public function update(Request $request, $id) + { + if(!$id || (int) $id < 0 || $id==""){ + return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400); + } + + $data = Holiday::find($id); + + if($data){ + $result = $data->update($request->all()); + }else{ + return response()->json(['status'=>'failed','message'=>'data holiday not found!','code'=>400], 400); + die(); + } + + + if($result){ + return response()->json(['status'=>'success','message'=>'data holiday successfully updated!','code'=>200], 200); + }else{ + return response()->json(['status'=>'failed','message'=>'data holiday failed updated!','code'=>400], 400); + } + } + + public function delete($id) + { + $data = Holiday::find($id); + + if($data){ + $deletedData = $data; + $delete = $data->delete(); + }else{ + return response()->json(['status'=>'failed','message'=>'data holiday not found!','code'=>400], 400); + die(); + } + + + if($delete){ + return response()->json(['status'=>'success', 'data'=>$deletedData,'message'=>'data holiday successfully deleted!','code'=>200], 200); + }else{ + return response()->json(['status'=>'failed','message'=>'data holiday failed deleted!','code'=>400], 400); + } + } + + public function search(Request $request) + { + $payload = $request->all(); + $dataBuilder = $this->setUpPayload($payload, 'm_holidays'); + $builder = $dataBuilder['builder']; + $countBuilder = $dataBuilder['count']; + $dataGet = $builder->get(); + $totalRecord = $countBuilder->count(); + return response()->json(['status'=>'success','code'=>200,'data'=>$dataGet, 'totalRecord'=>$totalRecord], 200); + } + + public function list() + { + $data = Holiday::all(); + $countData = $data->count(); + + if($data){ + return response()->json(['status'=>'success','code'=>200,'data'=>$data, 'totalRecord'=>$countData], 200); + }else{ + return response()->json(['status'=>'failed','message'=>'failed get list holiday, please try again later!','code'=>400], 400); + } + } + + public function datatables(Request $request){ + $proyek_id = $request->query('proyek_id'); + $gantt_id = $request->query('gantt_id'); + + $data = Holiday::where('proyek_id', $proyek_id)->where('version_gantt_id', $gantt_id)->get(); + + return Datatables::of($data) + ->editColumn('date', function($row) { + $date = date_create($row->date); + $dateFormat = date_format($date,"d-m-Y"); + return $dateFormat; + }) + ->editColumn('duration', function($row) { + $day = (int)$row->duration > 1 ? "days" : "day"; + return $row->duration." ".$day; + }) + ->addIndexColumn() + ->addColumn('action', function($row){ + $actionBtn = ''; + return $actionBtn; + }) + + ->rawColumns(['action'])->make(true); + } +} diff --git a/app/Http/Controllers/ReportActivityController.php b/app/Http/Controllers/ReportActivityController.php index 94a8d89..4607f5c 100644 --- a/app/Http/Controllers/ReportActivityController.php +++ b/app/Http/Controllers/ReportActivityController.php @@ -6,7 +6,7 @@ use Illuminate\Http\Request; use App\Models\ReportActivity; use App\Models\Activity; use App\Models\Image; -use Datatables; +use Yajra\Datatables\Datatables; class ReportActivityController extends Controller { diff --git a/app/Http/Controllers/ReportActivityMaterialController.php b/app/Http/Controllers/ReportActivityMaterialController.php index a55e15f..62e08f3 100644 --- a/app/Http/Controllers/ReportActivityMaterialController.php +++ b/app/Http/Controllers/ReportActivityMaterialController.php @@ -8,7 +8,7 @@ use Illuminate\Support\Facades\DB; use App\Models\ReportActivityMaterial; use App\Models\Activity; use App\Models\AssignMaterial; -use Datatables; +use Yajra\Datatables\Datatables; use DateTime; class ReportActivityMaterialController extends Controller @@ -72,10 +72,10 @@ class ReportActivityMaterialController extends Controller // actual < plan $persentaseProgress = $sumReportActivityMaterial/$sumAssignMaterial*100; } - + $dataUpdate = array( "actual_start" => null, - "actual_end" => null, + "actual_end" => null, "persentase_progress" => $persentaseProgress, "updated_by" => $this->currentName ); diff --git a/app/Http/Controllers/UserToActivityController.php b/app/Http/Controllers/UserToActivityController.php index b6f9926..5313b5d 100644 --- a/app/Http/Controllers/UserToActivityController.php +++ b/app/Http/Controllers/UserToActivityController.php @@ -7,7 +7,7 @@ use App\Models\UserToActivity; use App\Models\Activity; use App\Models\AssignMaterial; use Illuminate\Support\Facades\DB; -use Datatables; +use Yajra\Datatables\Datatables; class UserToActivityController extends Controller { From 352c9fc74abb4351619c0ea9ebcc53db871c3be8 Mon Sep 17 00:00:00 2001 From: wahyuun Date: Wed, 6 Mar 2024 16:43:12 +0700 Subject: [PATCH 2/7] update unique username --- app/Http/Controllers/HumanResourceController.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/HumanResourceController.php b/app/Http/Controllers/HumanResourceController.php index a29c92f..1cbee8b 100644 --- a/app/Http/Controllers/HumanResourceController.php +++ b/app/Http/Controllers/HumanResourceController.php @@ -22,7 +22,8 @@ class HumanResourceController extends Controller 'name' => 'required', 'ktp_number' => 'required|string|unique:m_users,ktp_number', 'employee_type' => 'required', - 'company_id' => 'required' + 'company_id' => 'required', + 'username' => 'unique:m_users,username' ]); $data = $request->all(); From 493ebb1cda05c91679b7e50f48dde3988f74f96a Mon Sep 17 00:00:00 2001 From: wahyuun Date: Wed, 6 Mar 2024 16:45:13 +0700 Subject: [PATCH 3/7] update company_id fillable --- app/Models/ProjectRole.php | 34 ++-- app/Models/User.php | 396 ++++++++++++++++++------------------- 2 files changed, 215 insertions(+), 215 deletions(-) diff --git a/app/Models/ProjectRole.php b/app/Models/ProjectRole.php index 52a7b46..f47824c 100644 --- a/app/Models/ProjectRole.php +++ b/app/Models/ProjectRole.php @@ -1,17 +1,17 @@ -getKey(); - } - - /** - * Return a key value array, containing any custom claims to be added to the JWT. - * - * @return array - */ - public function getJWTCustomClaims() - { - return []; - } - - - /** - * Get working hours for given timestamp - * - * @return array of carbon or NULL in case HOLIDAY - */ - - public function getWorkingTime(Carbon $ts, $f = "08:00", $t = "17:00", $tz = self::DEFAULT_TZ) - { - $workingTime = array( - "from" => Carbon::createFromTimeString($f, $tz), - "to" => Carbon::createFromTimeString($t, $tz) - ); - - $userShift = UserShift::where('user_id',) - ->orderByDesc('from_date') - ->first(); - - $shift = null; - if ($userShift !== null) { - $shiftId = null; - switch ($ts->shortEnglishDayOfWeek) { - case "Mon": - $shiftId = $userShift->mon_shift_id; - break; - case "Tue": - $shiftId = $userShift->tue_shift_id; - break; - case "Wed": - $shiftId = $userShift->wed_shift_id; - break; - case "Thu": - $shiftId = $userShift->thu_shift_id; - break; - case "Fri": - $shiftId = $userShift->fri_shift_id; - break; - case "Sat": - $shiftId = $userShift->sat_shift_id; - break; - case "Sun": - $shiftId = $userShift->sun_shift_id; - break; - } - - if ($shiftId === null) { - return null; - } - - $shift = Shift::where('id', $shiftId)->first(); - } else { - $shift = Shift::where('is_non_shift', true) - ->orderByDesc('created_at') - ->first(); - } - - - if ($shift !== null) { - $from = Carbon::createFromTimeString($shift->start_time, $tz) - ->subMinutes($shift->flex_time_minute); - $to = Carbon::createFromTimeString($shift->end_time, $tz) - ->addMinutes($shift->flex_time_minute); - - /* - if ($to->lessThan($from)) - { - $to->addDay(); - } - */ - $workingTime['from'] = $from; - $workingTime['to'] = $to; - } - - return $workingTime; - } - - /** - * Get presence status - */ - public function presenceStatus(Carbon $at = null, $tz = self::DEFAULT_TZ) - { - - $ts = $at; - if ($at !== null) { - $ts = Carbon::now($tz); - } - $tsSec = $ts->secondsSinceMidnight(); - - $status = ""; - $wt = $this->getWorkingTime($ts, $tz); - if ($wt === null) { - $status = self::HOLIDAY; - } else { - $from = $wt->from; - $to = $wt->to; - $tsFrom = $from->secondsSinceMidnight(); - $tsTo = $to->secondsSinceMidnight(); - - if ($from->greaterThan($to)) { - $tsMid = 24 * 60 * 60 - $tsFrom; - if ($tsSec >= $tsFrom || $tsSec < $tsTo) { - $status = self::INSIDE; - } else { - $status = self::OUTSIDE; - } - } else { - if ($tsSec < $tsFrom || $tsSec > $tsTo) { - $status = self::OUTSIDE; - } else { - $status = self::INSIDE; - } - } - } - - $clockIn = null; - $clockOut = null; - $inout = Presence::where('user_id', $this->id) - ->orderByDesc('clock_in') - ->first(); - if ($inout !== null) { - $clockIn = Carbon::parse($inout->clock_in, $tz); - $clockOut = Carbon::parse($inout->clock_out, $tz); - } - - return array( - "status" => $status, - "ts" => $ts, - "clock_in" => $clockIn, - "clock_out" => $clockOut - ); - } -} +getKey(); + } + + /** + * Return a key value array, containing any custom claims to be added to the JWT. + * + * @return array + */ + public function getJWTCustomClaims() + { + return []; + } + + + /** + * Get working hours for given timestamp + * + * @return array of carbon or NULL in case HOLIDAY + */ + + public function getWorkingTime(Carbon $ts, $f = "08:00", $t = "17:00", $tz = self::DEFAULT_TZ) + { + $workingTime = array( + "from" => Carbon::createFromTimeString($f, $tz), + "to" => Carbon::createFromTimeString($t, $tz) + ); + + $userShift = UserShift::where('user_id',) + ->orderByDesc('from_date') + ->first(); + + $shift = null; + if ($userShift !== null) { + $shiftId = null; + switch ($ts->shortEnglishDayOfWeek) { + case "Mon": + $shiftId = $userShift->mon_shift_id; + break; + case "Tue": + $shiftId = $userShift->tue_shift_id; + break; + case "Wed": + $shiftId = $userShift->wed_shift_id; + break; + case "Thu": + $shiftId = $userShift->thu_shift_id; + break; + case "Fri": + $shiftId = $userShift->fri_shift_id; + break; + case "Sat": + $shiftId = $userShift->sat_shift_id; + break; + case "Sun": + $shiftId = $userShift->sun_shift_id; + break; + } + + if ($shiftId === null) { + return null; + } + + $shift = Shift::where('id', $shiftId)->first(); + } else { + $shift = Shift::where('is_non_shift', true) + ->orderByDesc('created_at') + ->first(); + } + + + if ($shift !== null) { + $from = Carbon::createFromTimeString($shift->start_time, $tz) + ->subMinutes($shift->flex_time_minute); + $to = Carbon::createFromTimeString($shift->end_time, $tz) + ->addMinutes($shift->flex_time_minute); + + /* + if ($to->lessThan($from)) + { + $to->addDay(); + } + */ + $workingTime['from'] = $from; + $workingTime['to'] = $to; + } + + return $workingTime; + } + + /** + * Get presence status + */ + public function presenceStatus(Carbon $at = null, $tz = self::DEFAULT_TZ) + { + + $ts = $at; + if ($at !== null) { + $ts = Carbon::now($tz); + } + $tsSec = $ts->secondsSinceMidnight(); + + $status = ""; + $wt = $this->getWorkingTime($ts, $tz); + if ($wt === null) { + $status = self::HOLIDAY; + } else { + $from = $wt->from; + $to = $wt->to; + $tsFrom = $from->secondsSinceMidnight(); + $tsTo = $to->secondsSinceMidnight(); + + if ($from->greaterThan($to)) { + $tsMid = 24 * 60 * 60 - $tsFrom; + if ($tsSec >= $tsFrom || $tsSec < $tsTo) { + $status = self::INSIDE; + } else { + $status = self::OUTSIDE; + } + } else { + if ($tsSec < $tsFrom || $tsSec > $tsTo) { + $status = self::OUTSIDE; + } else { + $status = self::INSIDE; + } + } + } + + $clockIn = null; + $clockOut = null; + $inout = Presence::where('user_id', $this->id) + ->orderByDesc('clock_in') + ->first(); + if ($inout !== null) { + $clockIn = Carbon::parse($inout->clock_in, $tz); + $clockOut = Carbon::parse($inout->clock_out, $tz); + } + + return array( + "status" => $status, + "ts" => $ts, + "clock_in" => $clockIn, + "clock_out" => $clockOut + ); + } +} From 7e74b4434af3304706c3929f197e6d73c69cf583 Mon Sep 17 00:00:00 2001 From: wahyuun Date: Wed, 6 Mar 2024 16:45:50 +0700 Subject: [PATCH 4/7] update type data and boot function --- app/Models/Activity.php | 89 ++++++++++++++++++++++------------------- 1 file changed, 47 insertions(+), 42 deletions(-) diff --git a/app/Models/Activity.php b/app/Models/Activity.php index 5d9c1e7..b0c04fa 100644 --- a/app/Models/Activity.php +++ b/app/Models/Activity.php @@ -33,6 +33,9 @@ class Activity extends Model 'jobs_done', 'assign_hr', 'assign_material', 'assign_tools', 'assign_expense' ]; + protected $casts = [ + 'rencana_biaya' => 'double' + ]; public function getStartDateAttribute($value) { @@ -61,58 +64,60 @@ class Activity extends Model public static function boot() { parent::boot(); - - static::updating(function($data) { - $data->logPersentaseProgress(); - }); - - static::updated(function($data) { - $data->updateBobot(); - $data->updateCostPlanning(); - if($data->bobot_planning){ - $data->updatePersentaseProgress(); - } - $data->updateCostActual(); - // if($data->start_date != request()->start_date || $data->end_date != request()->end_date) { - // $data->updateStartEndDateHeader(); - // } - }); - - static::deleted(function($data) { - if (isset($data->parent_id)) { - if(Activity::where("parent_id", $data->parent_id)->count() == 0) { - $activity = Activity::find($data->parent_id); - if ($activity) { - $activity->update(["type_activity"=>"task"]); - } - } - } - - $data->updateBobot(true); - $data->updateCostPlanning(); - if($data->bobot_planning){ - $data->updatePersentaseProgress(); - } - $data->updateCostActual(); - $data->updateStartEndDateHeader(); - }); - + DB::transaction(function() { + static::updating(function($data) { + $data->logPersentaseProgress(); + }); + + static::updated(function($data) { + $data->updateBobot(); + $data->updateCostPlanning(); + if($data->bobot_planning){ + $data->updatePersentaseProgress(); + } + $data->updateCostActual(); + // if($data->start_date != request()->start_date || $data->end_date != request()->end_date) { + // $data->updateStartEndDateHeader(); + // } + }); + + static::deleted(function($data) { + if (isset($data->parent_id)) { + if(Activity::where("parent_id", $data->parent_id)->count() == 0) { + $activity = Activity::find($data->parent_id); + if ($activity) { + $activity->update(["type_activity"=>"task"]); + } + } + } + + $data->updateBobot(true); + $data->updateCostPlanning(); + if($data->bobot_planning){ + $data->updatePersentaseProgress(); + } + $data->updateCostActual(); + $data->updateStartEndDateHeader(); + }); + },5); } private function updateBobot($isDelete = false) { - $root = Activity::where('version_gantt_id', $this->version_gantt_id) - ->where("proyek_id", $this->proyek_id) - ->whereNull('parent_id') + $root = Activity::where([ + ['version_gantt_id', $this->version_gantt_id], + ['proyek_id', $this->proyek_id] + ]) + ->whereNull('parent_id') ->first(); - if(isset($root) && $root->rencana_biaya > 0){ - $activities = Activity::where("proyek_id", $this->proyek_id)->where("version_gantt_id", $this->version_gantt_id)->get(); + if(isset($root) && doubleval($root->rencana_biaya) > 0){ + $activities = Activity::where([['proyek_id', $this->proyek_id],['version_gantt_id', $this->version_gantt_id]])->get(); foreach ($activities as $activity) { if($isDelete && $activity->id == $this->id) continue; - $activity->bobot_planning = ( (int)$activity->rencana_biaya / $root->rencana_biaya) * 100; + $activity->bobot_planning = ( doubleval($activity->rencana_biaya) / doubleval($root->rencana_biaya)) * 100; $activity->updated_by = auth()->user() ? auth()->user()->name : "system"; $activity->saveQuietly(); From 485b9466af78bb5ec2532d6c62781cd5d4514310 Mon Sep 17 00:00:00 2001 From: wahyuun Date: Wed, 6 Mar 2024 16:46:29 +0700 Subject: [PATCH 5/7] update type data and boot function --- app/Models/AssignMaterial.php | 37 +++++++++++++++++------------------ 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/app/Models/AssignMaterial.php b/app/Models/AssignMaterial.php index 09620ee..34fb24d 100644 --- a/app/Models/AssignMaterial.php +++ b/app/Models/AssignMaterial.php @@ -3,10 +3,8 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; -use App\Models\RequestMaterial; -use App\Models\Activity; -use App\Models\ReportActivityMaterial; - +use App\Models\{Activity,RequestMaterial,ReportActivityMaterial}; +use Illuminate\Support\Facades\DB; class AssignMaterial extends Model { protected $table = 'assign_material_to_activity'; @@ -23,24 +21,25 @@ class AssignMaterial extends Model protected $casts = [ 'id' => 'integer', 'budget' => 'string', + 'qty_planning' => 'float' ]; public static function boot() { parent::boot(); - - static::created(function($data) { - $activity = Activity::find($data->activity_id); - $material = RequestMaterial::where("id", $data->material_id)->first(); - $activity->rencana_biaya += floatval($material->price) * floatval($data->qty_planning); - $activity->save(); - }); - - static::deleted(function($data) { - $reportActivities = ReportActivityMaterial::where('assign_material_id', $data->id)->delete(); - $activity = Activity::where('id', $data->activity_id)->first(); - $activity->rencana_biaya -= floatval($data->budget) * floatval($data->qty_planning); - $activity->save(); - }); - + DB::transaction(function () { + static::created(function($data) { + $activity = Activity::find((int)$data->activity_id); + $material = RequestMaterial::find((int)$data->material_id); + $activity->rencana_biaya += (doubleval($material->price) * doubleval($data->qty_planning)); + $activity->save(); + }); + + static::deleted(function($data) { + ReportActivityMaterial::where('assign_material_id', $data->id)->delete(); + $activity = Activity::find($data->activity_id); + $activity->rencana_biaya -= (doubleval($data->budget) * doubleval($data->qty_planning)); + $activity->save(); + }); + }, 5); } } From 074bf105a1042473381a30d70f6e296cb04c2794 Mon Sep 17 00:00:00 2001 From: wahyuun Date: Wed, 6 Mar 2024 16:52:00 +0700 Subject: [PATCH 6/7] update type data and boot function --- app/Models/UserToActivity.php | 57 ++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/app/Models/UserToActivity.php b/app/Models/UserToActivity.php index 1b795b1..c460df2 100644 --- a/app/Models/UserToActivity.php +++ b/app/Models/UserToActivity.php @@ -4,6 +4,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; use App\Models\Activity; +use Illuminate\Support\Facades\DB; class UserToActivity extends Model { @@ -29,35 +30,37 @@ class UserToActivity extends Model public static function boot() { parent::boot(); - static::created(function($data) { - $activity = Activity::find($data->activity_id); - $getWorkingHours = UserToProyek::where('user_id', $data->user_id)->where('proyek_id', $activity->proyek_id)->first(); + DB::transaction(function(){ + static::created(function($data) { + $activity = Activity::find($data->activity_id); + $getWorkingHours = UserToProyek::where([['user_id', $data->user_id],['proyek_id', $activity->proyek_id]])->first(); + $salary = 0; + if($getWorkingHours->uom_standart_rate == "Hour") { + $salary = (doubleval($getWorkingHours->standart_rate) * 8) * (int)$activity->duration * ($getWorkingHours->max_used / 100); + } else { + $salary = (doubleval($getWorkingHours->standart_rate) * (int)$activity->duration) * ($getWorkingHours->max_used / 100); + } + $activity->rencana_biaya += doubleval($salary); + $activity->save(); + }); - $salary = ($getWorkingHours->standart_rate * $activity->duration) * ($getWorkingHours->max_used / 100); - - if($getWorkingHours->uom_standart_rate == "Hour") - $salary = ($getWorkingHours->standart_rate * 8) * $activity->duration * ($getWorkingHours->max_used / 100); - - $activity->rencana_biaya += $salary; - $activity->save(); - }); - - static::deleted(function($data) { - $activity = Activity::find($data->activity_id); - - $getWorkingHours = UserToProyek::where('user_id', $data->user_id)->where('proyek_id', $activity->proyek_id)->first(); - $salary = ($getWorkingHours->standart_rate * $activity->duration) * ($getWorkingHours->max_used / 100); - if($getWorkingHours->uom_standart_rate == "Hour"){ - $salary = ($getWorkingHours->standart_rate * 8) * $activity->duration * ($getWorkingHours->max_used / 100); - } - - $activity->rencana_biaya -= $salary; - if ($activity->rencana_biaya < 0) { - $activity->rencana_biaya = 0; - } - $activity->save(); - }); + static::deleted(function($data) { + $activity = Activity::find($data->activity_id); + $getWorkingHours = UserToProyek::where([['user_id', $data->user_id],['proyek_id', $activity->proyek_id]])->first(); + $salary = 0; + if($getWorkingHours->uom_standart_rate == "Hour"){ + $salary = (doubleval($getWorkingHours->standart_rate) * 8) * (int)$activity->duration * ($getWorkingHours->max_used / 100); + } else { + $salary = (doubleval($getWorkingHours->standart_rate) * (int)$activity->duration) * ($getWorkingHours->max_used / 100); + } + $activity->rencana_biaya -= doubleval($salary); + if ($activity->rencana_biaya < 0) { + $activity->rencana_biaya = 0; + } + $activity->save(); + }); + }, 5); } } From 3e9ec7976a661e4dbf53e16d58716f32d5a34bd8 Mon Sep 17 00:00:00 2001 From: wahyuun Date: Wed, 6 Mar 2024 16:52:25 +0700 Subject: [PATCH 7/7] add route --- routes/web.php | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/routes/web.php b/routes/web.php index ed2e751..146a9a7 100644 --- a/routes/web.php +++ b/routes/web.php @@ -141,16 +141,6 @@ $router->group(['prefix' => 'api', 'middleware' => 'cors'], function () use ($ro $router->post('/human-resource/check-old-password/{id}', 'HumanResourceController@checkOldPassword'); $router->get('/human-resource/sync', 'HumanResourceController@sync'); - $router->post('/refferal-code/search', 'RefferalCodeController@search'); - $router->post('/refferal-code/add', 'RefferalCodeController@add'); - $router->get('/refferal-code/edit/{id}', 'RefferalCodeController@edit'); - $router->put('/refferal-code/update/{id}', 'RefferalCodeController@update'); - - $router->post('/product-transaction/search', 'ProductTransactionController@search'); - $router->post('/product-transaction/add', 'ProductTransactionController@add'); - $router->get('/product-transaction/edit/{id}', 'ProductTransactionController@edit'); - $router->put('/product-transaction/update/{id}', 'ProductTransactionController@update'); - $router->post('/project-role/search', 'ProjectRoleController@search'); $router->post('/project-role/add', 'ProjectRoleController@add'); $router->get('/project-role/edit/{id}', 'ProjectRoleController@edit'); @@ -599,7 +589,15 @@ $router->group(['prefix' => 'api', 'middleware' => 'cors'], function () use ($ro $router->delete('/demo-management/delete/{id}', 'DemoController@delete'); $router->get('/demo-management/list', 'DemoController@list'); - $router->get('information-storage/{company_name}', 'Controller@storage'); + $router->get('/information-storage/{company_name}', 'Controller@storage'); + + $router->post('/register-user','UserRegisterController@add'); + + $router->post('/refferal-code/search', 'RefferalCodeController@search'); + $router->post('/refferal-code/add', 'RefferalCodeController@add'); + $router->get('/refferal-code/edit/{id}', 'RefferalCodeController@edit'); + $router->put('/refferal-code/update/{id}', 'RefferalCodeController@update'); + $router->post('/product-transaction/edit/{id}', 'ProductTransactionController@add'); $router->put('/product-transaction/update/{id}', 'ProductTransactionController@update'); $router->post('/product-transaction/search', 'ProductTransactionController@search');