diff --git a/app/Http/Controllers/ImageController.php b/app/Http/Controllers/ImageController.php index 6ecb88c..a7b9de5 100644 --- a/app/Http/Controllers/ImageController.php +++ b/app/Http/Controllers/ImageController.php @@ -1,121 +1,237 @@ -hasFile('files')){ - - $this->validate($request, [ - 'ref_id' => 'required', - 'category' => 'required' - ]); - - $ref_id = $request->ref_id; - $dokumen = $request->file('files'); - $extension = $dokumen->extension(); - $name = $ref_id.date("YmdHis").".".$extension; - - $resultMove = $dokumen->move($this->pathImage, $name); - - if($resultMove){ - $data = [ - 'ref_id' => (int)$ref_id, - 'image' => $name, - 'category' => $request->category - ]; - - $result = Image::create($data); - - if($result){ - return response()->json(['status'=>'success', "name_image"=>$name,'message'=>'image upload is successfully!','code'=>200], 200); - }else{ - unlink($this->pathImage.$name); - return response()->json(['status'=>'failed','message'=>'image upload is failed!','code'=>400], 400); - } - - }else{ - return response()->json(['status'=>'failed','message'=>'image upload is failed!','code'=>400], 400); - } - }else{ - return response()->json(['status'=>'failed','message'=>'image is required!','code'=>400], 400); - } - } - - public function delete($id) - { - $data = Image::find($id); - - if($data){ - unlink($this->pathImage.$data->image); - $delete = $data->delete(); - }else{ - return response()->json(['status'=>'failed','message'=>'data image not found!','code'=>400], 400); - die(); - } - - - if($delete){ - return response()->json(['status'=>'success','message'=>'data image successfully deleted!','code'=>200], 200); - }else{ - return response()->json(['status'=>'failed','message'=>'data image failed deleted!','code'=>400], 400); - } - } - - public function search(Request $request) - { - $payload = $request->all(); - $dataBuilder = $this->setUpPayload($payload, 'm_image'); - $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 deleteByRef($id, $category) - { - $data = Image::where("ref_id", $id)->where("category", $category)->first(); - - if($data){ - unlink($this->pathImage.$data->image); - $delete = $data->delete(); - }else{ - return response()->json(['status'=>'failed','message'=>'data image not found!','code'=>400], 400); - die(); - } - - - if($delete){ - return response()->json(['status'=>'success','message'=>'data image successfully deleted!','code'=>200], 200); - }else{ - return response()->json(['status'=>'failed','message'=>'data image failed deleted!','code'=>400], 400); - } - } - - public function getByRefId($id, $category) - { - if(!$id || (int) $id < 0 || $id==""){ - return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400); - die(); - } - - if(!$category || $category==""){ - return response()->json(['status'=>'failed','message'=>'category is required!','code'=>400], 400); - die(); - } - - $result = Image::where("ref_id", $id)->where("category", $category)->first(); - - if($result){ - return response()->json(['status'=>'success','code'=>200,'data'=>$result], 200); - }else{ - return response()->json(['status'=>'failed','message'=>'failed get data image, please try again later!','code'=>400], 400); - } - } -} +hasFile('files')){ + + $this->validate($request, [ + 'ref_id' => 'required', + 'category' => 'required' + ]); + + $ref_id = $request->ref_id; + $dokumen = $request->file('files'); + $extension = $dokumen->extension(); + $category = $request->category; + $name = $ref_id.date("YmdHis").".".$extension; + + $resultMove = $dokumen->move($this->pathImage, $name); + + if($resultMove){ + $data = [ + 'ref_id' => (int)$ref_id, + 'image' => $name, + 'category' => $category + ]; + + $result = Image::create($data); + + $company = Company::find((int)$ref_id); + if($company && $category === 'company_logo_login') { + $dataArray = json_decode($company['logo_login'], true); + if(isset($dataArray['slider'])) { + $jsonImageSlider['login'] = $name; + $jsonImageSlider['slider'] = $dataArray['slider']; + } else { + $jsonImageSlider['login'] = $name; + } + $company->update([ + 'logo_login' => $jsonImageSlider + ]); + } + + if($company && $category === 'company_logo_header') { + $company->update([ + 'logo_header' => array('content'=>$name) + ]); + } + + if($company && $category === 'company_favicon') { + $company->update([ + 'favicon_image' => array('content'=>$name) + ]); + } + + if($result){ + return response()->json(['status'=>'success', "name_image"=>$name,'message'=>'image upload is successfully!','code'=>200], 200); + }else{ + unlink($this->pathImage.$name); + return response()->json(['status'=>'failed','message'=>'image upload is failed!','code'=>400], 400); + } + + }else{ + return response()->json(['status'=>'failed','message'=>'image upload is failed!','code'=>400], 400); + } + }else{ + return response()->json(['status'=>'failed','message'=>'image is required!','code'=>400], 400); + } + } + + public function uploadMultipleImage(Request $request) { + $this->validate($request, [ + 'ref_id' => 'required', + 'category' => 'required', + 'files.*' => 'required|file|mimes:jpeg,png,jpg,gif|max:2048', + ]); + + if ($request->hasFile('files')) { + $ref_id = $request->ref_id; + $category = $request->category; + $dokumen = $request->file('files'); + $successCount = 0; + $imageSlider = []; + foreach ($dokumen as $file) { + $extension = $file->extension(); + $name = $ref_id.date("YmdHis").$successCount.".".$extension; + + $resultMove = $file->move($this->pathImage, $name); + + if ($resultMove) { + $data = [ + 'ref_id' => (int) $ref_id, + 'image' => $name, + 'category' => $category + ]; + $imageSlider[] = [ + 'content' => $name + ]; + $result = Image::create($data); + if ($result) { + $successCount++; + } else { + unlink($this->pathImage . $name); + } + } + } + $company = Company::find((int)$ref_id); + if($company && $category === 'company_slider_login') { + $dataArray = json_decode($company['logo_login'], true); + if(isset($dataArray['login'])) { + $jsonImageSlider['login'] = $dataArray['login']; + $jsonImageSlider['slider'] = $imageSlider; + } else { + $jsonImageSlider['slider'] = $imageSlider; + } + $company->update([ + 'logo_login' => $jsonImageSlider + ]); + } + if ($successCount > 0 && $company) { + return response()->json(['status' => 'success', 'message' => "$successCount images uploaded successfully!", 'code' => 200], 200); + } else { + return response()->json(['status' => 'failed', 'message' => 'No images uploaded successfully!', 'code' => 400], 400); + } + } else { + return response()->json(['status' => 'failed', 'message' => 'Image is required!', 'code' => 400], 400); + } + } + + + + public function delete($id) + { + $data = Image::find($id); + + if($data){ + unlink($this->pathImage.$data->image); + $delete = $data->delete(); + }else{ + return response()->json(['status'=>'failed','message'=>'data image not found!','code'=>400], 400); + die(); + } + + + if($delete){ + return response()->json(['status'=>'success','message'=>'data image successfully deleted!','code'=>200], 200); + }else{ + return response()->json(['status'=>'failed','message'=>'data image failed deleted!','code'=>400], 400); + } + } + + public function search(Request $request) + { + $payload = $request->all(); + $dataBuilder = $this->setUpPayload($payload, 'm_image'); + $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 deleteByRef($id, $category) + { + $data = Image::where("ref_id", intval($id))->where("category", $category)->first(); + + if($data){ + unlink($this->pathImage.$data->image); + $delete = $data->delete(); + }else{ + return response()->json(['status'=>'failed','message'=>'data image not found!','code'=>400], 400); + die(); + } + + + if($delete){ + return response()->json(['status'=>'success','message'=>'data image successfully deleted!','code'=>200], 200); + }else{ + return response()->json(['status'=>'failed','message'=>'data image failed deleted!','code'=>400], 400); + } + } + + public function deleteByRefMultiple($id, $category) + { + $successCount = 0; + $data = Image::where([ + ["ref_id", intval($id)], + ["category", $category] + ])->get(); + if($data->isNotEmpty()) { + foreach($data as $img) { + unlink($this->pathImage.$img->image); + $delete = $img->delete(); + if($delete){ + $successCount++; + } + } + } else { + return response()->json(['status'=>'failed','message'=>'data image not found!','code'=>400], 400); + die(); + } + + if($successCount > 0) { + return response()->json(['status'=>'success','message'=>'data image successfully deleted!','code'=>200], 200); + } else { + return response()->json(['status'=>'failed','message'=>'data image failed deleted!','code'=>400], 400); + } + } + + public function getByRefId($id, $category) + { + if(!$id || (int) $id < 0 || $id==""){ + return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400); + die(); + } + + if(!$category || $category==""){ + return response()->json(['status'=>'failed','message'=>'category is required!','code'=>400], 400); + die(); + } + + $result = Image::where("ref_id", $id)->where("category", $category)->first(); + + if($result){ + return response()->json(['status'=>'success','code'=>200,'data'=>$result], 200); + }else{ + return response()->json(['status'=>'failed','message'=>'failed get data image, please try again later!','code'=>400], 400); + } + } +} diff --git a/routes/web.php b/routes/web.php index 3716661..2a75e85 100644 --- a/routes/web.php +++ b/routes/web.php @@ -314,7 +314,9 @@ $router->group(['prefix' => 'api', 'middleware' => 'cors'], function () use ($ro $router->post('/image/search', 'ImageController@search'); $router->delete('/image/delete/{id}', 'ImageController@delete'); $router->delete('/image/delete/{id}/{category}', 'ImageController@deleteByRef'); + $router->delete('/image/multiple-delete/{id}/{category}', 'ImageController@deleteByRefMultiple'); $router->post('/image/upload', 'ImageController@uploadImage'); + $router->post('/image/multiple-upload', 'ImageController@uploadMultipleImage'); $router->get('/image/{id}/{category}', 'ImageController@getByRefId'); $router->post('/panic-button/add', 'PanicButtonController@add');