add cycle

This commit is contained in:
Fayyazi
2019-08-21 10:09:27 +04:30
parent e16fd9a120
commit 2872e09039
23 changed files with 213 additions and 485 deletions
+86
View File
@@ -0,0 +1,86 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\StoreCycleRequest;
use App\Cycle;
class CycleController extends Controller
{
public function index(Request $request)
{
$Cycles = Cycle::when($request->has('name') && $request->name, function($query) use($request){
$query->where('name', 'LIKE', '%'.$request->name.'%');
})
->when($request->has('result') && $request->result, function($query) use($request){
$query->where('result', $request->result);
})
->when($request->has('unique_id') && $request->unique_id, function($query) use($request){
$query->where('unique_id', $request->unique_id);
})
->with('user')->paginate(10);
return \MessageResponse::data($Cycles);
}
public function create()
{
}
public function show(Cycle $Cycle)
{
$Cycle->load('user', 'packages');
return \MessageResponse::data($Cycle);
}
public function store(StoreCycleRequest $request)
{
$UniqueID = substr(base_convert(sha1(uniqid(mt_rand())), 16, 36), 0, 10);
$CycleData = [
'name' => $request->name,
'unique_id' => $UniqueID,
'result' => $request->result,
'description' => $request->description,
'user_id' => auth('api')->user()->id,
'verified' => 'NotVerified',
];
$CycleObj = Cycle::create($CycleData);
$CycleObj->packages()->attach($request->packages);
return \MessageResponse::success(trans('messages.success'));
}
public function edit(Cycle $Cycle)
{
$Cycle->load('user', 'packages');
return \MessageResponse::data($Cycle);
}
public function update(StoreCycleRequest $request, Cycle $Cycle)
{
$Cycle->update($request->except(['packages']));
$Cycle->packages()->sync($request->packages);
return \MessageResponse::success(trans('messages.success'));
}
public function destroy(Cycle $Cycle)
{
if (auth('api')->user()->cant('delete', $Cycle)) {
return \MessageResponse::error(trans('messages.access_denied'));
}
if(count($Cycle->packages))
{
$Cycle->packages()->detach();
}
$Cycle->delete();
return \MessageResponse::success(trans('messages.success'));
}
public function verifyCycle(Cycle $Cycle)
{
if (auth('api')->user()->cant('verifyCycle', $Cycle)) {
return \MessageResponse::error(trans('You dont have permission'));
}
if ($Cycle->verified == 'Verified') {
$Cycle->verified = 'NotVerified';
} else {
$Cycle->verified = 'Verified';
}
$Cycle->save();
$Cycle = $Cycle->load('user');
return \MessageResponse::success(trans('messages.success'), null, $Cycle);
}
}
-1
View File
@@ -47,7 +47,6 @@ class ItemController extends Controller
}
public function update(StoreItemRequest $request, Item $Item)
{
// dd($request->all());
$Item->update($request->all());
return \MessageResponse::success(trans('messages.success'));
}
+5 -1
View File
@@ -59,13 +59,17 @@ class PackageController extends Controller
}
public function destroy(Package $Package)
{
if (!auth('api')->user()->can('delete', $Package)) {
if (auth('api')->user()->cant('delete', $Package)) {
return \MessageResponse::error(trans('messages.access_denied'));
}
if(count($Package->items))
{
$Package->items()->detach();
}
if(count($Package->cycles))
{
$Package->cycles()->detach();
}
$Package->delete();
return \MessageResponse::success(trans('messages.success'));
}
+52
View File
@@ -0,0 +1,52 @@
<?php
namespace App\Http\Requests;
use App\Cycle;
use Illuminate\Validation\Rule;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
class StoreCycleRequest extends FormRequest
{
public function authorize()
{
if ($this->method() == 'POST') {
return auth('api')->check() && auth('api')->user()->can('store', Cycle::class);
} else {
$Cycle = $this->route('Cycle');
return auth('api')->check() && $Cycle && auth('api')->user()->can('update', $Cycle);
}
}
public function rules()
{
switch ($this->method()) {
case 'POST': {
return [
'name' => 'required|max:100|unique:cycles',
'result' => 'required',
'packages' => 'required',
];
break;
}
case 'PUT':
case 'PATCH': {
$Cycle = $this->route('Cycle');
return [
'name' => 'required|max:100|unique:cycles,id,'.$Cycle->id,
// 'unique_id' => 'required|max:100|unique:cycles,id,'.$Cycle->id,
'result' => 'required',
'packages' => 'required',
];
break;
}
default:
break;
}
}
}