1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-17 16:42:48 +01:00

Working on CRUD

This commit is contained in:
Hillel Coren 2016-12-08 22:39:15 +02:00
parent ce724fe1c9
commit ce4571a187
12 changed files with 129 additions and 39 deletions

View File

@ -34,18 +34,20 @@ class MakeClass extends GeneratorCommand
protected function getArguments()
{
return [
['name', InputArgument::REQUIRED, 'The name of the datatable.'],
['name', InputArgument::REQUIRED, 'The name of the module.'],
['module', InputArgument::REQUIRED, 'The name of module will be used.'],
['class', InputArgument::REQUIRED, 'The name of the class.'],
['prefix', InputArgument::OPTIONAL, 'The prefix of the class.'],
];
}
public function getTemplateContents()
{
$module = $this->laravel['modules']->findOrFail($this->getModuleName());
$path = str_replace('/', '\\', config('modules.paths.generator.' . $this->argument('class')));
return (new Stub('/' . $this->argument('class') . '.stub', [
'NAMESPACE' => $this->getClassNamespace($module) . "\\" . config('modules.paths.generator.' . $this->argument('class')),
return (new Stub('/' . $this->argument('prefix') . $this->argument('class') . '.stub', [
'NAMESPACE' => $this->getClassNamespace($module) . "\\" . $path,
'LOWER_NAME' => $module->getLowerName(),
'CLASS' => $this->getClass(),
'STUDLY_NAME' => Str::studly($module->getLowerName()),
@ -65,7 +67,7 @@ class MakeClass extends GeneratorCommand
*/
protected function getFileName()
{
return studly_case($this->argument('name')) . Str::studly($this->argument('class'));
return studly_case($this->argument('prefix')) . studly_case($this->argument('name')) . Str::studly($this->argument('class'));
}
}

View File

@ -54,6 +54,11 @@ class MakeModule extends Command
Artisan::call('ninja:make-class', ['name' => $name, 'module' => $name, 'class' => 'repository']);
Artisan::call('ninja:make-class', ['name' => $name, 'module' => $name, 'class' => 'policy']);
Artisan::call('ninja:make-class', ['name' => $name, 'module' => $name, 'class' => 'auth-provider']);
Artisan::call('ninja:make-class', ['name' => $name, 'module' => $name, 'class' => 'presenter']);
Artisan::call('ninja:make-class', ['name' => $name, 'module' => $name, 'class' => 'request']);
Artisan::call('ninja:make-class', ['name' => $name, 'module' => $name, 'class' => 'request', 'prefix' => 'create']);
Artisan::call('ninja:make-class', ['name' => $name, 'module' => $name, 'class' => 'request', 'prefix' => 'edit']);
Artisan::call('module:dump');
}

View File

@ -36,7 +36,7 @@ class $CLASS$ extends BaseController
]);
}
public function getDatatable(DatatableService $datatableService)
public function datatable(DatatableService $datatableService)
{
$search = request()->input('test');
$userId = Auth::user()->filterId();
@ -70,20 +70,37 @@ class $CLASS$ extends BaseController
*/
public function store(Request $request)
{
$client = $this->$LOWER_NAME$Repo->save($request->input());
$$LOWER_NAME$ = $this->$LOWER_NAME$Repo->save($request->input());
Session::flash('message', trans('texts.created_$LOWER_NAME$'));
return redirect()->to($$LOWER_NAME$->getRoute());
return redirect()->to($$LOWER_NAME$->present()->editUrl)
->with('message', trans('texts.created_$LOWER_NAME$'));
}
/**
* Show the form for editing the specified resource.
* @return Response
*/
public function edit()
public function edit($STUDLY_NAME$Request $request)
{
return view('$LOWER_NAME$::edit');
$$LOWER_NAME$ = $request->entity();
$data = [
'$LOWER_NAME$' => $$LOWER_NAME$,
'method' => 'PUT',
'url' => '$LOWER_NAME$/' . $$LOWER_NAME$->public_id,
'title' => trans('texts.edit_$LOWER_NAME$'),
];
return view('$LOWER_NAME$::edit', $data);
}
/**
* Show the form for editing a resource.
* @return Response
*/
public function show(Request $request)
{
return redirect()->to("$LOWER_NAME$/{$request->$LOWER_NAME$}/edit");
}
/**

View File

@ -0,0 +1,28 @@
<?php
namespace $NAMESPACE$;
class Create$CLASS$Request extends $CLASS$Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return $this->user()->can('create', '$LOWER_NAME$');
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
];
}
}

View File

@ -14,9 +14,21 @@ class $CLASS$ extends EntityModel
/**
* @var string
*/
protected $presenter = 'App\Ninja\Presenters\$CLASS$Presenter';
protected $presenter = 'Modules\$CLASS$\Presenters\$CLASS$Presenter';
/**
* @var string
*/
protected $fillable = $FILLABLE$;
/**
* @var string
*/
protected $table = '$LOWER_NAME$';
public function getEntityType()
{
return '$LOWER_NAME$';
}
}

View File

@ -0,0 +1,10 @@
<?php
namespace $NAMESPACE$;
use App\Ninja\Presenters\EntityPresenter;
class $STUDLY_NAME$Presenter extends EntityPresenter
{
}

View File

@ -22,6 +22,7 @@ class $STUDLY_NAME$Repository extends BaseRepository
->select(
'$LOWER_NAME$.public_id',
'$LOWER_NAME$.deleted_at',
'$LOWER_NAME$.created_at',
'$LOWER_NAME$.is_deleted',
'$LOWER_NAME$.user_id'
);
@ -56,7 +57,7 @@ class $STUDLY_NAME$Repository extends BaseRepository
}
*/
$entity->fill($data);
//$entity->fill($data);
$entity->save();
/*

View File

@ -2,29 +2,9 @@
namespace $NAMESPACE$;
use Illuminate\Foundation\Http\FormRequest;
use App\Http\Requests\EntityRequest;
class $CLASS$ extends FormRequest
class $CLASS$Request extends EntityRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
protected $entityType = '$LOWER_NAME$';
}

View File

@ -3,5 +3,5 @@
Route::group(['middleware' => 'auth', 'namespace' => '$MODULE_NAMESPACE$\$STUDLY_NAME$\Http\Controllers'], function()
{
Route::resource('$LOWER_NAME$', '$STUDLY_NAME$Controller');
Route::get('api/$LOWER_NAME$', '$STUDLY_NAME$Controller@getDatatable');
Route::get('api/$LOWER_NAME$', '$STUDLY_NAME$Controller@datatable');
});

View File

@ -0,0 +1,28 @@
<?php
namespace $NAMESPACE$;
class Update$CLASS$Request extends $CLASS$Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return $this->user()->can('edit', '$LOWER_NAME$');
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
];
}
}

View File

@ -1,5 +1,6 @@
<?php namespace App\Ninja\Presenters;
use Utils;
use URL;
use Laracasts\Presenter\Presenter;
@ -10,13 +11,18 @@ class EntityPresenter extends Presenter
*/
public function url()
{
$type = $this->entity->getEntityType();
$type = Utils::pluralizeEntityType($this->entity->getEntityType());
$id = $this->entity->public_id;
$link = sprintf('/%ss/%s', $type, $id);
$link = sprintf('/%s/%s', $type, $id);
return URL::to($link);
}
public function editUrl()
{
return $this->url() . '/edit';
}
public function statusLabel()
{
$class = $text = '';

View File

@ -116,6 +116,7 @@ return [
'datatable' => 'Datatables',
'policy' => 'Policies',
'auth-provider' => 'AuthProviders',
'presenter' => 'Presenters',
],
],
/*