wahyu
1 year ago
1 changed files with 99 additions and 99 deletions
@ -1,99 +1,99 @@ |
|||||||
<?php |
<?php |
||||||
|
|
||||||
namespace App\Http\Controllers; |
namespace App\Http\Controllers; |
||||||
|
|
||||||
use Illuminate\Http\Request; |
use Illuminate\Http\Request; |
||||||
use App\Models\Divisi; |
use App\Models\Divisi; |
||||||
|
|
||||||
class DivisiController extends Controller |
class DivisiController extends Controller |
||||||
{ |
{ |
||||||
|
|
||||||
private function getAllChildren($divisi, $depth = 0, $array = []) { |
private function getAllChildren($divisi, $depth = 0, $array = []) { |
||||||
$divisi->depth = $depth; |
$divisi->depth = $depth; |
||||||
array_push($array, $divisi); |
array_push($array, $divisi); |
||||||
foreach($divisi->children as $child){ |
foreach($divisi->children as $child){ |
||||||
$array = $this->getAllChildren($child, $depth + 1, $array); |
$array = $this->getAllChildren($child, $depth + 1, $array); |
||||||
} |
} |
||||||
return $array; |
return $array; |
||||||
} |
} |
||||||
|
|
||||||
public function add(Request $request){ |
public function add(Request $request){ |
||||||
$this->validate($request, [ |
$this->validate($request, [ |
||||||
'name' => 'required', |
'name' => 'required', |
||||||
'description' => 'string', |
'description' => 'string', |
||||||
'parent' => 'integer' |
'parent' => 'integer' |
||||||
]); |
]); |
||||||
|
|
||||||
$data = $request->all(); |
$data = $request->all(); |
||||||
$data['created_by'] = $this->currentName; |
$data['created_by'] = $this->currentName; |
||||||
|
|
||||||
$result = Divisi::create($data); |
$result = Divisi::create($data); |
||||||
|
|
||||||
if(!$result) |
if(!$result) |
||||||
return response()->json(['status'=>'failed','message'=>'Failed to add data','code'=> 500]); |
return response()->json(['status'=>'failed','message'=>'Failed to add data','code'=> 500]); |
||||||
|
|
||||||
return response()->json(['status'=>'success','message'=>'Data created!','code'=>200]); |
return response()->json(['status'=>'success','message'=>'Data created!','code'=>200]); |
||||||
} |
} |
||||||
|
|
||||||
public function update(Request $request, $id){ |
public function update(Request $request, $id){ |
||||||
if(empty($id) || !is_int((int)$id)) |
if(empty($id) || !is_int((int)$id)) |
||||||
return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400); |
return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400); |
||||||
|
|
||||||
$data = Divisi::find($id); |
$data = Divisi::find($id); |
||||||
|
|
||||||
if(!$data) |
if(!$data) |
||||||
return response()->json(['status'=>'failed','message'=> 'Data not found!','code'=> 404], 404); |
return response()->json(['status'=>'failed','message'=> 'Data not found!','code'=> 404], 404); |
||||||
|
|
||||||
$result = $data->update($request->all()); |
$result = $data->update($request->all()); |
||||||
|
|
||||||
if(!$result) |
if(!$result) |
||||||
return response()->json(['status'=>'failed','message'=> 'Update failed!','code'=> 500], 500); |
return response()->json(['status'=>'failed','message'=> 'Update failed!','code'=> 500], 500); |
||||||
|
|
||||||
return response()->json(['status'=>'success','message'=>'Data added!','code'=>200], 200); |
return response()->json(['status'=>'success','message'=>'Data added!','code'=>200], 200); |
||||||
} |
} |
||||||
|
|
||||||
public function delete($id) |
public function delete($id) |
||||||
{ |
{ |
||||||
if(empty($id) || !is_int((int)$id)) |
if(empty($id) || !is_int((int)$id)) |
||||||
return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400); |
return response()->json(['status'=>'failed','message'=>'id is required!','code'=>400], 400); |
||||||
|
|
||||||
$data = Divisi::find($id); |
$data = Divisi::find($id); |
||||||
|
|
||||||
if(!$data) |
if(!$data) |
||||||
return response()->json(['status'=>'failed','message'=> 'Data not found!','code'=> 404], 404); |
return response()->json(['status'=>'failed','message'=> 'Data not found!','code'=> 404], 404); |
||||||
|
|
||||||
$delete = $data->delete(); |
$delete = $data->delete(); |
||||||
|
|
||||||
if(!$delete) |
if(!$delete) |
||||||
return response()->json(['status'=>'failed','message'=> 'Delete failed!','code'=> 500], 500); |
return response()->json(['status'=>'failed','message'=> 'Delete failed!','code'=> 500], 500); |
||||||
|
|
||||||
return response()->json(['status'=>'success','message'=> 'Data deleted!','code'=> 200], 200); |
return response()->json(['status'=>'success','message'=> 'Data deleted!','code'=> 200], 200); |
||||||
} |
} |
||||||
|
|
||||||
public function search() |
public function search() |
||||||
{ |
{ |
||||||
return $this->list(); |
return $this->list(); |
||||||
// cant use builder for this case |
// cant use builder for this case |
||||||
} |
} |
||||||
|
|
||||||
public function list() |
public function list() |
||||||
{ |
{ |
||||||
$parentMenus = Divisi::whereNull('parent')->with('children')->get(); |
$parentMenus = Divisi::whereNull('parent')->with('children')->get(); |
||||||
$divisions = []; |
$divisions = []; |
||||||
foreach($parentMenus as $menu){ |
foreach($parentMenus as $menu){ |
||||||
$childs = $this->getAllChildren($menu); |
$childs = $this->getAllChildren($menu); |
||||||
foreach($childs as $d){ |
foreach($childs as $d){ |
||||||
$d->displayName = ' ' . $d->name; |
$d->displayName = ' ' . $d->name; |
||||||
for($i=0; $i < $d->depth; $i++){ |
for($i=0; $i < $d->depth; $i++){ |
||||||
$d->displayName = '--' . $d->displayName ; |
$d->displayName = '--' . $d->displayName ; |
||||||
} |
} |
||||||
array_push($divisions, $d); |
array_push($divisions, $d); |
||||||
} |
} |
||||||
} |
} |
||||||
$countData = count($divisions); |
$countData = count($divisions); |
||||||
if($countData == 0) |
if($countData == 0) |
||||||
return response()->json(['status'=>'failed','message'=>'Data not found!','code'=> 404], 404); |
return response()->json(['status'=>'failed','message'=>'Data not found!','code'=> 404], 404); |
||||||
|
|
||||||
return response()->json(['status'=>'success','code'=>200,'data'=> $divisions, 'totalRecord'=> $countData], 200); |
return response()->json(['status'=>'success','code'=>200,'data'=> $divisions, 'totalRecord'=> $countData], 200); |
||||||
} |
} |
||||||
} |
} |
||||||
|
Loading…
Reference in new issue