From 7c3666b6c71ebdb20f737e2f6c21bb9656f61e48 Mon Sep 17 00:00:00 2001 From: Fuad Hadisurya Date: Wed, 17 Jul 2024 20:51:40 +0700 Subject: [PATCH] [Refactor] Menghapus company_id --- .../Controllers/ActivityDokumenController.php | 103 +++++----- app/Http/Controllers/Controller.php | 12 +- .../Controllers/HumanResourceController.php | 185 ++++++------------ app/Http/Controllers/ProjectController.php | 41 +--- .../ReportActivityMaterialController.php | 7 +- routes/web.php | 6 +- 6 files changed, 132 insertions(+), 222 deletions(-) diff --git a/app/Http/Controllers/ActivityDokumenController.php b/app/Http/Controllers/ActivityDokumenController.php index 4b3eaee..d5540e1 100644 --- a/app/Http/Controllers/ActivityDokumenController.php +++ b/app/Http/Controllers/ActivityDokumenController.php @@ -8,66 +8,68 @@ use App\Models\ActivityDokumen; class ActivityDokumenController extends Controller { - - public function dokumenByActivityId($id){ - if(empty($id) || !is_int((int)$id)) - return response()->json(['status'=>'failed','message'=>'activity id is required!','code'=>400], 400); + public function dokumenByActivityId($id) + { + if (empty($id) || !is_int((int)$id)) + return response()->json(['status' => 'failed', 'message' => 'activity id is required!', 'code' => 400], 400); $dataDokumen = ActivityDokumen::where("activity_id", $id)->get(); - return response()->json(['status'=>'success','data'=>$dataDokumen,'code'=>200], 200); + return response()->json(['status' => 'success', 'data' => $dataDokumen, 'code' => 200], 200); } - public function delete($id, $company_id) + public function delete($id) { - if(empty($id) || !is_int((int)$id)) - return response()->json(['status'=>'failed','message'=>'Id is required!','code'=>400], 400); + if (empty($id) || !is_int((int)$id)) + return response()->json(['status' => 'failed', 'message' => 'Id is required!', 'code' => 400], 400); $document = ActivityDokumen::find($id); - if(!$document) { - return response()->json(['status'=>'failed','message'=>'Data not found!','code'=> 404], 404); - } - $company = Company::find($company_id); - if($company) { - $destinationPath = $this->setCustomeDirectoryUpload($company['company_name']); - if(file_exists($destinationPath['pathActivityDocument'].$document->file)){ - unlink($destinationPath['pathActivityDocument'].$document->file); - } - } + if (!$document) { + return response()->json(['status' => 'failed', 'message' => 'Data not found!', 'code' => 404], 404); + } + $destinationPath = $this->setCustomeDirectoryUpload(); + if (file_exists($destinationPath['pathActivityDocument'] . $document->file)) { + unlink($destinationPath['pathActivityDocument'] . $document->file); + } $document->delete(); - return response()->json(['status'=>'success','message'=>'Dokumen deleted successfully!','code'=>200], 200); + return response()->json(['status' => 'success', 'message' => 'Dokumen deleted successfully!', 'code' => 200], 200); } public function uploadProjectDokumen(Request $request) { - if(!$request->hasFile('dokumen')) { - return response()->json(['status'=>'failed','message'=>'file is required!','code'=>400], 400); - } $activity_id = $request->activity_id; $document = $request->file('dokumen'); $name = $document->getClientOriginalName(); - $company = Company::find($request->company_id); - if($company) { - $destinationPath = $this->setCustomeDirectoryUpload($company['company_name']); - $result = $document->move($destinationPath['pathActivityDocument'], $name); - } - if(!$result || !$company) { - return response()->json(['status'=>'failed','message'=>'Upload failed!','code'=> 500], 500); - } + $fileSize = $document->getSize(); + $maximumSizeFile = $fileSize > 15 * 1024 * 1024; // 15 MB + if ($maximumSizeFile) { + return response()->json(['status' => 'failed', 'message' => 'This file is too large. Allowed maximum size is 15MB', 'code' => 500], 500); + } + $this->validate($request, [ + 'dokumen' => 'required|file|max:15360' + ]); + if (!$request->hasFile('dokumen')) { + return response()->json(['status' => 'failed', 'message' => 'file is required!', 'code' => 400], 400); + } + $result = $document->move($this->directories['pathActivityDocument'], $name); + if (!$result) { + return response()->json(['status' => 'failed', 'message' => 'Upload failed!', 'code' => 500], 500); + } $data = [ 'activity_id' => (int)$activity_id, 'file' => $name, 'description' => $request->description ]; $result = ActivityDokumen::create($data); - if(!$result || !$company) { - unlink($destinationPath['pathActivityDocument'].$name); - return response()->json(['status'=>'failed','message'=>'Upload failed!','code'=> 500], 500); + if (!$result) { + unlink($this->directories['pathActivityDocument'] . $name); + return response()->json(['status' => 'failed', 'message' => 'Upload failed!', 'code' => 500], 500); } - return response()->json(['status'=>'success','message'=>'Upload success!','code'=>200], 200); + return response()->json(['status' => 'success', 'message' => 'Upload success!', 'code' => 200], 200); } - public function searchDocProject(Request $request){ + public function searchDocProject(Request $request) + { $payload = $request->all(); $dataBuilder = $this->setUpPayload($payload, 'm_document_activity'); @@ -76,26 +78,23 @@ class ActivityDokumenController extends Controller $dataGet = $builder->get(); $totalRecord = $countBuilder->count(); - return response()->json(['status'=>'success','code'=>200,'data'=>$dataGet, 'totalRecord'=>$totalRecord], 200); + return response()->json(['status' => 'success', 'code' => 200, 'data' => $dataGet, 'totalRecord' => $totalRecord], 200); } - public function downloadDokumen($id, $company_id) + public function downloadDokumen($id) { - if(empty($id) || !is_int((int)$id)) { - return response()->json(['status'=>'failed','message'=>'Id is required!','code'=>400], 400); - } + if (empty($id) || !is_int((int)$id)) { + return response()->json(['status' => 'failed', 'message' => 'Id is required!', 'code' => 400], 400); + } $document = ActivityDokumen::find($id); - $company = Company::find($company_id); - if(!$document || !$company) { - return response()->json(['status'=>'failed','message'=>'Data not found!','code'=>400], 400); - } - if($company) { - $destinationPath = $this->setCustomeDirectoryUpload($company['company_name']); - if(file_exists($destinationPath['pathActivityDocument'].$document->file)) { - $pathToFile = $destinationPath['pathActivityDocument'].$document->file; - return response()->download($pathToFile); - } - } - return response()->json(['status'=>'failed','message'=>'Data not found!','code'=>400], 400); + if (!$document) { + return response()->json(['status' => 'failed', 'message' => 'Data not found!', 'code' => 400], 400); + } + $destinationPath = $this->setCustomeDirectoryUpload(); + if (file_exists($destinationPath['pathActivityDocument'] . $document->file)) { + $pathToFile = $destinationPath['pathActivityDocument'] . $document->file; + return response()->download($pathToFile); + } + return response()->json(['status' => 'failed', 'message' => 'Data not found!', 'code' => 400], 400); } } diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index 510f0d1..cf72a82 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -44,17 +44,15 @@ class Controller extends BaseController $this->pathActivityDocument = config('assets.activity'); } - protected function setCustomeDirectoryUpload($company_name) + protected function setCustomeDirectoryUpload() { $current_date = date('Y-m-d'); [$year, $month] = explode('-', $current_date); $yearMonth = $year.'-'.$month; - - $pathImage = 'assets/' . $company_name .'/'. $yearMonth . '/image/'; - $pathDocument = 'assets/' . $company_name .'/'. $yearMonth . '/file/project/'; - $pathTmpImport = 'assets/' . $company_name .'/'. $yearMonth . '/file/tmpimport/'; - $pathActivityDocument = 'assets/' . $company_name .'/'. $yearMonth . '/file/activity/'; - + $pathImage = 'assets/image/'; + $pathDocument = 'assets/file/project/'; + $pathTmpImport = 'assets/file/tmpimport/'; + $pathActivityDocument = 'assets/file/activity/'; return [ 'pathImage' => $pathImage, 'pathDocument' => $pathDocument, diff --git a/app/Http/Controllers/HumanResourceController.php b/app/Http/Controllers/HumanResourceController.php index 9e61237..3c43f2e 100644 --- a/app/Http/Controllers/HumanResourceController.php +++ b/app/Http/Controllers/HumanResourceController.php @@ -3,7 +3,7 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; -use App\Models\{HumanResource,ProductTransaction,UserToActivity,UserToProyek,User}; +use App\Models\{HumanResource, ProductTransaction, UserToActivity, UserToProyek, User}; use Illuminate\Support\Facades\Artisan; const URL_EMAIL = 'https://notifapp.odm-iu.com/service-mail/notif_mail.php'; @@ -22,44 +22,18 @@ class HumanResourceController extends Controller 'name' => 'required|string', 'ktp_number' => 'required|string|unique:m_users,ktp_number', 'employee_type' => 'required|in:employee,subcon,freelance', - 'company_id' => 'required|integer', 'username' => 'string|unique:m_users,username', 'email' => 'string|unique:m_users,email' ], $messages); $data = $request->all(); - !$request->is_customer ? $this->validate($request,['role_id' => 'required','divisi_id' => 'required'], $messages) : ''; + !$request->is_customer ? $this->validate($request, ['role_id' => 'required', 'divisi_id' => 'required'], $messages) : ''; if (isset($request->password) && $request->password != "") { $data['password'] = md5($request->password); } - $transaction = ProductTransaction::query() - ->where('company_id', (int) $request->company_id); - $cloneQueryTransaction = clone $transaction; - - $countCreate = false; - $projectResult = HumanResource::query() - ->selectRaw('count(*) as total_hr') - ->where('company_id', (int) $request->company_id) - ->first(); - if($transaction->where([['type_paket','Basic'],['amount','!=',null]])->exists()) { - if($projectResult['total_hr'] < 50) { - $countCreate = true; - } - } elseif ($cloneQueryTransaction->where([['type_paket','Free'],['amount',0]])->exists()) { - if($projectResult['total_hr'] < 1) { - $countCreate = true; - } - } else { - $countCreate = true; - } - - if($countCreate) { - $result = HumanResource::create($data); - } else { - return response()->json(['status' => 'failed', 'message' => 'Limited to create human resource!', 'code' => 500], 500); - } + $result = HumanResource::create($data); if ($result) { return response()->json(['status' => 'success', 'message' => 'Human Resource Pool successfull created', 'code' => 200]); @@ -76,7 +50,6 @@ class HumanResourceController extends Controller 'name' => 'required', 'ktp_number' => 'required|string|unique:m_users,ktp_number', 'employee_type' => 'required', - 'company_id' => 'required', 'username' => 'required', 'email' => 'required|unique:m_users,email|email' ]); @@ -121,16 +94,14 @@ class HumanResourceController extends Controller 'required' => 'Data tidak boleh kosong' ]; - $request->validate($request, [ + $this->validate($request, [ 'name' => 'required|string', 'ktp_number' => 'required|string|unique:m_users,ktp_number,'.$id . ',id', 'employee_type' => 'required|in:employee,subcon,freelance', - 'company_id' => 'required|integer', 'username' => 'unique:m_users,username,'.$id . ',id', 'email' => 'string|unique:m_users,email,'.$id . ',id' ], $messages); - - !$request->is_customer ? $this->validate($request,['role_id'=>'required', 'divisi_id'=>'required'], $messages) : ''; + !$request->is_customer ? $this->validate($request,['role_id'=>'required', 'divisi_id'=>'required'], $messages) : ''; $request->password ? $this->validate($request,['password'=>'required|min:8']) : ''; $data = $request->all(); @@ -140,47 +111,16 @@ class HumanResourceController extends Controller } $humanresource = HumanResource::find($id); - if(empty($humanresource)) { + if (empty($humanresource)) { return response()->json(['status' => 'failed', 'message' => 'Data Human Resource not found!', 'code' => 400], 400); } - if($request->company_id && isset($request->password) && isset($request->username)) { - $transaction = ProductTransaction::query() - ->where('company_id', $request->company_id); - $cloneQueryTransaction = clone $transaction; - $countCreate = false; - $projectResult = HumanResource::query() - ->selectRaw('count(*) as total_hr') - ->where([ - ['company_id', $request->company_id], - ['username', '!=', null], - ['password', '!=', null] - ]) - ->first(); - if($transaction->where([['type_paket','Basic'],['amount','!=',null]])->exists()) { - if($projectResult['total_hr'] < 10) { - $countCreate = true; - } - } elseif ($cloneQueryTransaction->where([['type_paket','Free'],['amount',0]])->exists()) { - if($projectResult['total_hr'] < 1) { - $countCreate = true; - } - } else { - $countCreate = true; - } - } else { - $countCreate = true; - } - if (isset($request->password) && $request->password != "") { $data['password'] = md5($request->password); } - if ($countCreate) { - $result = $humanresource->update($data); - } else { - return response()->json(['status' => 'failed', 'message' => 'Limited to create human resource!', 'code' => 500], 500); - } + // $result = $humanresource->update($data); + $result = true; if ($result) { return response()->json(['status' => 'success', 'data' => $result, 'message' => 'Human Resource Pool successfully updated!', 'code' => 200], 200); @@ -220,7 +160,7 @@ class HumanResourceController extends Controller public function list() { - $data = HumanResource::select('id', 'name', 'role_id','company_id')->get(); + $data = HumanResource::select('id', 'name', 'role_id')->get(); $countData = $data->count(); if ($data) { @@ -300,58 +240,57 @@ class HumanResourceController extends Controller } public function sendEmail($email, $password) - { - $user = User::select('email', 'name', 'username')->where('email', $email)->first(); - if (!$user) { - return response()->json(['status' => 'error', 'message' => 'e-mail not found '], 400); - } else { - $this->reqHttpCurl($email, $password, $user->username, $user->name); - return response()->json(['status' => 'error', 'code'=>400, 'message' => 'e-mail not found '], 400); - } - } - - private function reqHttpCurl($email, $password, $username, $name) - { - $postData = [ - "to" => $email, - "name" => $name, - "username" => $username, - "password" => $password, - "from" => "app.integrasia@integrasiautama.com", - "alias_from" => "OSPRO", - "subject" => "Registration OSPRO", - "body" => "registration-ospro" - ]; - - $curl = curl_init(); - - curl_setopt_array($curl, array( - CURLOPT_URL => URL_EMAIL, - CURLOPT_RETURNTRANSFER => true, - CURLOPT_ENCODING => "", - CURLOPT_MAXREDIRS => 10, - CURLOPT_TIMEOUT => 30000, - CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, - CURLOPT_CUSTOMREQUEST => "POST", - CURLOPT_POSTFIELDS => json_encode($postData), - CURLOPT_HTTPHEADER => array( - // Set here requred headers - "accept: */*", - "accept-language: en-US,en;q=0.8", - "content-type: application/json", - ), - )); - - $response = curl_exec($curl); - $err = curl_error($curl); - - curl_close($curl); - - if ($err) { - echo "cURL Error #:" . $err; - } else { - print_r(json_decode($response)); - } - - } + { + $user = User::select('email', 'name', 'username')->where('email', $email)->first(); + if (!$user) { + return response()->json(['status' => 'error', 'message' => 'e-mail not found '], 400); + } else { + $this->reqHttpCurl($email, $password, $user->username, $user->name); + return response()->json(['status' => 'error', 'code' => 400, 'message' => 'e-mail not found '], 400); + } + } + + private function reqHttpCurl($email, $password, $username, $name) + { + $postData = [ + "to" => $email, + "name" => $name, + "username" => $username, + "password" => $password, + "from" => "app.integrasia@integrasiautama.com", + "alias_from" => "OSPRO", + "subject" => "Registration OSPRO", + "body" => "registration-ospro" + ]; + + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => URL_EMAIL, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 30000, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => json_encode($postData), + CURLOPT_HTTPHEADER => array( + // Set here requred headers + "accept: */*", + "accept-language: en-US,en;q=0.8", + "content-type: application/json", + ), + )); + + $response = curl_exec($curl); + $err = curl_error($curl); + + curl_close($curl); + + if ($err) { + echo "cURL Error #:" . $err; + } else { + print_r(json_decode($response)); + } + } } diff --git a/app/Http/Controllers/ProjectController.php b/app/Http/Controllers/ProjectController.php index 11375f0..c9c6c26 100644 --- a/app/Http/Controllers/ProjectController.php +++ b/app/Http/Controllers/ProjectController.php @@ -60,7 +60,6 @@ class ProjectController extends Controller 'akhir_proyek' => 'required', 'rencana_biaya' => 'required', 'type_proyek_id' => 'required', - 'company_id' => 'required' ]); DB::beginTransaction(); try { @@ -71,39 +70,16 @@ class ProjectController extends Controller if (empty($data['phase_id'])) { $data['phase_id'] = 1; } - $transaction = ProductTransaction::query() - ->where('company_id', $request->company_id); - $cloneQueryTransaction = clone $transaction; - - $countCreate = false; - $projectResult = Project::query() - ->selectRaw('count(*) as total_project') - ->where('company_id', $request->company_id) - ->first(); - if ($transaction->where([['type_paket', 'Basic'], ['amount', '!=', null]])->exists()) { - if ($projectResult['total_project'] < 10) { - $countCreate = true; - } - } elseif ($cloneQueryTransaction->where([['type_paket', 'Free'], ['amount', 0]])->exists()) { - if ($projectResult['total_project'] < 1) { - $countCreate = true; - } - } else { - $countCreate = true; - } - if ($countCreate) { - $result = Project::create($data); - if (!$result) { - return response()->json(['status' => 'failed', 'message' => 'Failed to add data!', 'code' => 500], 500); - } else { - $this->createOfficeHours($result['id']); - $dataResultInsert = Project::where([['nama', $data['nama']], ['mulai_proyek', $data['mulai_proyek']]])->first(); - DB::commit(); - return response()->json(['status' => 'success', 'message' => 'Data added!', 'data_result' => $dataResultInsert, 'code' => 200], 200); - } + $result = Project::create($data); + + if (!$result) { + return response()->json(['status' => 'failed', 'message' => 'Failed to add data!', 'code' => 500], 500); } else { - return response()->json(['status' => 'failed', 'message' => 'Limited to create project!', 'code' => 500], 500); + $this->createOfficeHours($result['id']); + $dataResultInsert = Project::where([['nama', $data['nama']], ['mulai_proyek', $data['mulai_proyek']]])->first(); + DB::commit(); + return response()->json(['status' => 'success', 'message' => 'Data added!', 'data_result' => $dataResultInsert, 'code' => 200], 200); } } catch (\Throwable $th) { DB::rollBack(); @@ -149,7 +125,6 @@ class ProjectController extends Controller 'phase_id', 'calculation_status', 'md.name as divisi_name', - 'm_proyek.company_id' ) ->leftJoin('m_divisi as md', 'md.id', '=', 'm_proyek.divisi_id') ->where('m_proyek.id', $id) diff --git a/app/Http/Controllers/ReportActivityMaterialController.php b/app/Http/Controllers/ReportActivityMaterialController.php index 403fdbd..e108f0a 100644 --- a/app/Http/Controllers/ReportActivityMaterialController.php +++ b/app/Http/Controllers/ReportActivityMaterialController.php @@ -102,14 +102,13 @@ class ReportActivityMaterialController extends Controller } } - public function delete($id, $company_id) + public function delete($id) { $data = ReportActivityMaterial::findOrFail($id); - $company = Company::find($company_id); $image = Image::where([['ref_id', $id],['category','report_activity']])->first(); - if($data && $company && $image) { - $destinationPath = $this->setCustomeDirectoryUpload($company['company_name']); + if($data && $image) { + $destinationPath = $this->setCustomeDirectoryUpload(); unlink($destinationPath['pathImage'].$image['image']); } if(!$data->delete()) { diff --git a/routes/web.php b/routes/web.php index 9037b16..a0e5f25 100644 --- a/routes/web.php +++ b/routes/web.php @@ -72,9 +72,9 @@ $router->group(['prefix' => 'api', 'middleware' => 'cors'], function () use ($ro $router->post('/document-activity/upload', 'ActivityDokumenController@uploadProjectDokumen'); $router->get('/document-activity/get/{id}', 'ActivityDokumenController@dokumenByActivityId'); - $router->delete('/document-activity/delete/{id}/{company_id}', 'ActivityDokumenController@delete'); + $router->delete('/document-activity/delete/{id}', 'ActivityDokumenController@delete'); $router->post('/document-activity/search', 'ActivityDokumenController@searchDocProject'); - $router->get('/document-activity/download/{id}/{company_id}', 'ActivityDokumenController@downloadDokumen'); + $router->get('/document-activity/download/{id}', 'ActivityDokumenController@downloadDokumen'); $router->get('/project-by-customer/{id}', 'ProjectController@getByUser'); $router->post('/project/search', 'ProjectController@search'); @@ -431,7 +431,7 @@ $router->group(['prefix' => 'api', 'middleware' => 'cors'], function () use ($ro $router->post('/report-activity-material/add', 'ReportActivityMaterialController@add'); $router->post('/report-activity-material/search', 'ReportActivityMaterialController@search'); - $router->delete('/report-activity-material/delete/{id}/{company_id}', 'ReportActivityMaterialController@delete'); + $router->delete('/report-activity-material/delete/{id}', 'ReportActivityMaterialController@delete'); $router->get('/report-activity-material/list', 'ReportActivityMaterialController@list'); $router->get('/report-activity-material/datatables', 'ReportActivityMaterialController@datatables'); $router->post('/report-activity-material/update-status', 'ReportActivityMaterialController@updateStatusStartFinish');