Skip to content

Instantly share code, notes, and snippets.

@trovster
Created October 29, 2015 10:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save trovster/f937301defe3d826855d to your computer and use it in GitHub Desktop.
Save trovster/f937301defe3d826855d to your computer and use it in GitHub Desktop.
Deposit controller, model and request using Laravel 5.1
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\AdminController as Controller;
use App\Models\Deposit;
use App\Http\Requests\DepositRequest;
class DepositController extends Controller
{
/**
* Deposit model being used.
*/
protected $deposit;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct(Deposit $deposit)
{
$this->deposit = $deposit;
}
/**
* Display a listing of the resource.
*
* @param Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
if($request->user()->cannot('deposit.index')) {
abort(403, 'You are not allowed to view deposits.');
}
return response()->view('admin/deposit/index', [
'deposits' => $this->deposit->all()
]);
}
/**
* Show the form for creating a new resource.
*
* @param Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function create(Request $request)
{
if($request->user()->cannot('deposit.create')) {
abort(403, 'You are not allowed to create deposits.');
}
return response()->view('admin/deposit/create');
}
/**
* Store a newly created resource in storage.
*
* @param App\Http\Requests\DepositRequest $request
* @return \Illuminate\Http\Response
*/
public function store(DepositRequest $request)
{
if($request->user()->cannot('deposit.create')) {
abort(403);
}
$this->deposit->create($request->all());
return redirect()->route('admin::admin.deposit.index')->with('message', 'A new deposit has been successfully created.')->with('success', true);
}
/**
* Display the specified resource.
*
* @param Illuminate\Http\Request $request
* @param App\Model\Deposit\Deposit $deposit
* @return \Illuminate\Http\Response
*/
public function show(Request $request, Deposit $deposit)
{
if($request->user()->cannot('deposit.show', [$deposit])) {
abort(403, 'You are not allowed to view this deposit.');
}
return response()->view('admin/deposit/show', [
'deposit' => $deposit
]);
}
/**
* Show the form for editing the specified resource.
*
* @param Illuminate\Http\Request $request
* @param App\Model\Deposit\Deposit $deposit
* @return \Illuminate\Http\Response
*/
public function edit(Request $request, Deposit $deposit)
{
if($request->user()->cannot('deposit.edit', [$deposit])) {
abort(403, 'You are not allowed to edit this deposit.');
}
return response()->view('admin/deposit/edit', [
'roles' => DepositRole::lists('role', 'id'),
'deposit' => $deposit
]);
}
/**
* Update the specified resource in storage.
*
* @param App\Http\Requests\DepositRequest $request
* @param App\Model\Deposit\Deposit $deposit
* @return \Illuminate\Http\Response
*/
public function update(DepositRequest $request, Deposit $deposit)
{
if($request->user()->cannot('deposit.edit', [$deposit])) {
abort(403, 'You are not allowed to edit this deposit.');
}
$deposit->update($request->all());
return redirect()->route('admin::admin.deposit.index')->with('message', 'The deposit has been successfully updated.')->with('success', true);
}
/**
* Remove the specified resource from storage.
*
* @param Illuminate\Http\Request $request
* @param App\Model\Deposit\Deposit $deposit
* @return \Illuminate\Http\Response
*/
public function destroy(Request $request, Deposit $deposit)
{
if($request->user()->cannot('deposit.destroy', [$deposit])) {
abort(403, 'You are not allowed to delete this deposit.');
}
$deposit->delete();
return redirect()->route('admin::admin.deposit.index')->with('message', 'The deposit has been successfully deleted.')->with('success', true);
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Deposit extends Model
{
use SoftDeletes;
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'deposits';
/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $dates = ['deleted_at'];
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = [];
/**
* When setting the amouht, make sure it is in pence.
*
* @param int $amount
*/
public function setAmountAttribute($amount)
{
$this->attributes['amount'] = $amount * 100;
}
/**
* When getting the amount, make sure it is in 00.00 format.
*
* @return float
*/
public function getAmountAttribute()
{
return number_format($this->attributes['amount'] / 100, 2);
}
}
<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
class DepositRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true; // @todo check authorisation for deposits.
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$rules = [
'uuid' => array(
'required',
'max:255',
),
'amount' => array(
'required',
),
];
return $rules;
}
/**
*
* @return array
*/
public function messages()
{
return [];
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment