firefly-iii/app/controllers/CategoryController.php

138 lines
3.6 KiB
PHP

<?php
use Firefly\Helper\Controllers\CategoryInterface as CI;
use Firefly\Storage\Category\CategoryRepositoryInterface as CRI;
/**
* Class CategoryController
*/
class CategoryController extends BaseController
{
protected $_repository;
protected $_category;
/**
* @param CRI $repository
* @param CI $category
*/
public function __construct(CRI $repository, CI $category)
{
$this->_repository = $repository;
$this->_category = $category;
}
/**
* @return \Illuminate\View\View
*/
public function create()
{
return View::make('categories.create')->with('title', 'Create a new category');
}
/**
* @param Category $category
*
* @return $this
*/
public function delete(Category $category)
{
return View::make('categories.delete')->with('category', $category)
->with('title', 'Delete category "' . $category->name . '"');
}
/**
* @param Category $category
*
* @return \Illuminate\Http\RedirectResponse
*/
public function destroy(Category $category)
{
$this->_repository->destroy($category);
Session::flash('success', 'The category was deleted.');
return Redirect::route('categories.index');
}
/**
* @param Category $category
*
* @return $this
*/
public function edit(Category $category)
{
return View::make('categories.edit')->with('category', $category)
->with('title', 'Edit category "' . $category->name . '"');
}
/**
* @return $this
*/
public function index()
{
$categories = $this->_repository->get();
return View::make('categories.index')->with('categories', $categories)
->with('title', 'All your categories');
}
/**
* @param Category $category
*
* @return $this
*/
public function show(Category $category)
{
$start = \Session::get('start');
$end = \Session::get('end');
$journals = $this->_category->journalsInRange($category, $start, $end);
return View::make('categories.show')->with('category', $category)->with('journals', $journals)->with(
'highlight', Input::get('highlight')
)->with('title', 'Overview for category "'.$category->name.'"');;
}
/**
* @return $this|\Illuminate\Http\RedirectResponse
*/
public function store()
{
$category = $this->_repository->store(Input::all());
if ($category->validate()) {
Session::flash('success', 'Category "' . $category->name . '" created!');
if (Input::get('create') == '1') {
return Redirect::route('categories.create');
}
return Redirect::route('categories.index');
} else {
Session::flash('error', 'Could not save the new category!');
return Redirect::route('categories.create')->withInput();
}
}
/**
* @param Category $category
*
* @return $this|\Illuminate\Http\RedirectResponse
*/
public function update(Category $category)
{
$category = $this->_repository->update($category, Input::all());
if ($category->validate()) {
Session::flash('success', 'Category "' . $category->name . '" updated.');
return Redirect::route('categories.index');
} else {
Session::flash('success', 'Could not update category "' . $category->name . '".');
return Redirect::route('categories.edit')->withErrors($category->errors())->withInput();
}
}
}