mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-02-25 18:45:27 -06:00
First stuff for acting on reminders.
This commit is contained in:
parent
3f716cc369
commit
a60671d4c1
75
app/Http/Controllers/ReminderController.php
Normal file
75
app/Http/Controllers/ReminderController.php
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
<?php namespace FireflyIII\Http\Controllers;
|
||||||
|
|
||||||
|
use Auth;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use FireflyIII\Http\Requests;
|
||||||
|
use FireflyIII\Models\Reminder;
|
||||||
|
use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface;
|
||||||
|
|
||||||
|
class ReminderController extends Controller
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public function index(PiggyBankRepositoryInterface $repository)
|
||||||
|
{
|
||||||
|
|
||||||
|
$reminders = Auth::user()->reminders()->get();
|
||||||
|
|
||||||
|
$today = new Carbon;
|
||||||
|
// active reminders:
|
||||||
|
$active = $reminders->filter(
|
||||||
|
function (Reminder $reminder) use ($today, $repository) {
|
||||||
|
if ($reminder->notnow === false && $reminder->active === true && $reminder->startdate <= $today && $reminder->enddate >= $today) {
|
||||||
|
$reminder->description = $repository->getReminderText($reminder);
|
||||||
|
return $reminder;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
// expired reminders:
|
||||||
|
$expired = $reminders->filter(
|
||||||
|
function (Reminder $reminder) use ($today) {
|
||||||
|
if ($reminder->notnow === false && $reminder->active === true && $reminder->startdate > $today || $reminder->enddate < $today) {
|
||||||
|
return $reminder;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
// inactive reminders
|
||||||
|
$inactive = $reminders->filter(
|
||||||
|
function (Reminder $reminder) use ($today) {
|
||||||
|
if ($reminder->active === false) {
|
||||||
|
return $reminder;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
// dismissed reminders
|
||||||
|
$dismissed = $reminders->filter(
|
||||||
|
function (Reminder $reminder) use ($today) {
|
||||||
|
if ($reminder->notnow === true) {
|
||||||
|
return $reminder;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
$title = 'Reminders';
|
||||||
|
$mainTitleIcon = 'fa-clock-o';
|
||||||
|
|
||||||
|
return view('reminders.index', compact('dismissed', 'expired', 'inactive', 'active', 'title', 'mainTitleIcon'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param Reminder $reminder
|
||||||
|
*/
|
||||||
|
public function show(Reminder $reminder)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -28,7 +28,7 @@ class BillFormRequest extends Request
|
|||||||
{
|
{
|
||||||
$nameRule = 'required|between:1,255|uniqueForUser:bills,name';
|
$nameRule = 'required|between:1,255|uniqueForUser:bills,name';
|
||||||
if (intval(Input::get('id')) > 0) {
|
if (intval(Input::get('id')) > 0) {
|
||||||
$nameRule .= ',' . intval(Input::get('id'));
|
$nameRule = 'required|between:1,255';
|
||||||
}
|
}
|
||||||
|
|
||||||
$rules = [
|
$rules = [
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
use FireflyIII\Models\Account;
|
use FireflyIII\Models\Account;
|
||||||
use FireflyIII\Models\Bill;
|
use FireflyIII\Models\Bill;
|
||||||
|
use FireflyIII\Models\Reminder;
|
||||||
use FireflyIII\Models\Budget;
|
use FireflyIII\Models\Budget;
|
||||||
use FireflyIII\Models\Category;
|
use FireflyIII\Models\Category;
|
||||||
use FireflyIII\Models\LimitRepetition;
|
use FireflyIII\Models\LimitRepetition;
|
||||||
@ -89,6 +90,16 @@ Route::bind(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Route::bind(
|
||||||
|
'reminder', function ($value, $route) {
|
||||||
|
if (Auth::check()) {
|
||||||
|
return Reminder::where('id', $value)->where('user_id', Auth::user()->id)->first();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
Route::bind(
|
Route::bind(
|
||||||
'limitrepetition', function ($value, $route) {
|
'limitrepetition', function ($value, $route) {
|
||||||
if (Auth::check()) {
|
if (Auth::check()) {
|
||||||
@ -230,12 +241,10 @@ Route::group(
|
|||||||
Route::get('/chart/budget/{budget}/spending/{year?}', ['uses' => 'GoogleChartController@budgetsAndSpending']);
|
Route::get('/chart/budget/{budget}/spending/{year?}', ['uses' => 'GoogleChartController@budgetsAndSpending']);
|
||||||
Route::get('/chart/budgets/spending/{year?}', ['uses' => 'GoogleChartController@allBudgetsAndSpending']);
|
Route::get('/chart/budgets/spending/{year?}', ['uses' => 'GoogleChartController@allBudgetsAndSpending']);
|
||||||
Route::get('/chart/budget/{budget}/{limitrepetition}', ['uses' => 'GoogleChartController@budgetLimitSpending']);
|
Route::get('/chart/budget/{budget}/{limitrepetition}', ['uses' => 'GoogleChartController@budgetLimitSpending']);
|
||||||
|
|
||||||
Route::get('/chart/reports/income-expenses/{year}', ['uses' => 'GoogleChartController@yearInExp']);
|
Route::get('/chart/reports/income-expenses/{year}', ['uses' => 'GoogleChartController@yearInExp']);
|
||||||
Route::get('/chart/reports/income-expenses-sum/{year}', ['uses' => 'GoogleChartController@yearInExpSum']);
|
Route::get('/chart/reports/income-expenses-sum/{year}', ['uses' => 'GoogleChartController@yearInExpSum']);
|
||||||
Route::get('/chart/bills/{bill}', ['uses' => 'GoogleChartController@billOverview']);
|
Route::get('/chart/bills/{bill}', ['uses' => 'GoogleChartController@billOverview']);
|
||||||
Route::get('/chart/piggy-history/{piggyBank}', ['uses' => 'GoogleChartController@piggyBankHistory']);
|
Route::get('/chart/piggy-history/{piggyBank}', ['uses' => 'GoogleChartController@piggyBankHistory']);
|
||||||
|
|
||||||
Route::get('/chart/category/{category}/period', ['uses' => 'GoogleChartController@categoryPeriodChart']);
|
Route::get('/chart/category/{category}/period', ['uses' => 'GoogleChartController@categoryPeriodChart']);
|
||||||
Route::get('/chart/category/{category}/overview', ['uses' => 'GoogleChartController@categoryOverviewChart']);
|
Route::get('/chart/category/{category}/overview', ['uses' => 'GoogleChartController@categoryOverviewChart']);
|
||||||
|
|
||||||
@ -292,6 +301,12 @@ Route::group(
|
|||||||
Route::get('/related/related/{tj}', ['uses' => 'RelatedController@related', 'as' => 'related.related']);
|
Route::get('/related/related/{tj}', ['uses' => 'RelatedController@related', 'as' => 'related.related']);
|
||||||
Route::post('/related/search/{tj}', ['uses' => 'RelatedController@search', 'as' => 'related.search']);
|
Route::post('/related/search/{tj}', ['uses' => 'RelatedController@search', 'as' => 'related.search']);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reminder Controller
|
||||||
|
*/
|
||||||
|
Route::get('/reminders', ['uses' => 'ReminderController@index', 'as' => 'reminders.index']);
|
||||||
|
Route::get('/reminder/{reminder}', ['uses' => 'ReminderController@show', 'as' => 'reminders.show']);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Repeated Expenses Controller
|
* Repeated Expenses Controller
|
||||||
*/
|
*/
|
||||||
|
@ -15,6 +15,16 @@ class Reminder extends Model
|
|||||||
|
|
||||||
protected $fillable = ['user_id', 'startdate', 'enddate', 'active', 'notnow', 'remindersable_id', 'remindersable_type',];
|
protected $fillable = ['user_id', 'startdate', 'enddate', 'active', 'notnow', 'remindersable_id', 'remindersable_type',];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $value
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function getActiveAttribute($value)
|
||||||
|
{
|
||||||
|
return intval($value) == 1;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
@ -23,6 +33,16 @@ class Reminder extends Model
|
|||||||
return ['created_at', 'updated_at', 'startdate', 'enddate'];
|
return ['created_at', 'updated_at', 'startdate', 'enddate'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $value
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function getNotnowAttribute($value)
|
||||||
|
{
|
||||||
|
return intval($value) == 1;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return \Illuminate\Database\Eloquent\Relations\MorphTo
|
* @return \Illuminate\Database\Eloquent\Relations\MorphTo
|
||||||
*/
|
*/
|
||||||
@ -43,9 +63,11 @@ class Reminder extends Model
|
|||||||
return $query->where('reminders.startdate', '=', $start->format('Y-m-d 00:00:00'))->where('reminders.enddate', '=', $end->format('Y-m-d 00:00:00'));
|
return $query->where('reminders.startdate', '=', $start->format('Y-m-d 00:00:00'))->where('reminders.enddate', '=', $end->format('Y-m-d 00:00:00'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function scopeToday(EloquentBuilder $query) {
|
public function scopeToday(EloquentBuilder $query)
|
||||||
|
{
|
||||||
$today = new Carbon;
|
$today = new Carbon;
|
||||||
return $query->where('startdate','<=',$today->format('Y-m-d 00:00:00'))->where('enddate','>=',$today->format('Y-m-d 00:00:00'))->where('active',1);
|
|
||||||
|
return $query->where('startdate', '<=', $today->format('Y-m-d 00:00:00'))->where('enddate', '>=', $today->format('Y-m-d 00:00:00'))->where('active', 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
23
resources/views/list/reminders.blade.php
Normal file
23
resources/views/list/reminders.blade.php
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<div class="row">
|
||||||
|
@foreach($reminders as $reminder)
|
||||||
|
<div class="col-lg-6 col-md-6 col-sm-12 col-xs-12">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
Reminder for piggy bank "{{$reminder->remindersable->name}}"
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
@if(isset($reminder->description))
|
||||||
|
{!! $reminder->description !!}
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
<div class="panel-footer">
|
||||||
|
<div class="btn-group">
|
||||||
|
<a class="btn btn-warning" href="#">Dismiss</a>
|
||||||
|
<a class="btn btn-success" href="#">Act</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@endforeach
|
||||||
|
</div>
|
@ -1,7 +1,7 @@
|
|||||||
<!-- /.row -->
|
<!-- /.row -->
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-3 col-md-6">
|
<div class="col-lg-3 col-md-6">
|
||||||
<div class="panel panel-info">
|
<div class="panel panel-red">
|
||||||
<div class="panel-heading">
|
<div class="panel-heading">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-3">
|
<div class="col-xs-3">
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
<ul class="dropdown-menu dropdown-messages">
|
<ul class="dropdown-menu dropdown-messages">
|
||||||
@foreach($reminders as $reminder)
|
@foreach($reminders as $reminder)
|
||||||
<li>
|
<li>
|
||||||
<a href="#">
|
<a href="{{route('reminders.show',$reminder->id)}}">
|
||||||
<div>
|
<div>
|
||||||
<strong>
|
<strong>
|
||||||
{{$reminder->remindersable->name}}
|
{{$reminder->remindersable->name}}
|
||||||
@ -39,7 +39,7 @@
|
|||||||
<li class="divider"></li>
|
<li class="divider"></li>
|
||||||
@endforeach
|
@endforeach
|
||||||
<li>
|
<li>
|
||||||
<a class="text-center" href="#">
|
<a class="text-center" href="{{route('reminders.index')}}">
|
||||||
<strong>See all reminders</strong>
|
<strong>See all reminders</strong>
|
||||||
<i class="fa fa-angle-right"></i>
|
<i class="fa fa-angle-right"></i>
|
||||||
</a>
|
</a>
|
||||||
|
40
resources/views/reminders/index.blade.php
Normal file
40
resources/views/reminders/index.blade.php
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
@extends('layouts.default')
|
||||||
|
@section('content')
|
||||||
|
{!! Breadcrumbs::renderIfExists(Route::getCurrentRoute()->getName()) !!}
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
||||||
|
<h3>Active reminders</h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@include('list.reminders',['reminders' => $active])
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
||||||
|
<h3>Dismissed reminders</h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@include('list.reminders',['reminders' => $dismissed])
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
||||||
|
<h3>Expired reminders</h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@include('list.reminders',['reminders' => $expired])
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
|
||||||
|
<h3>Inactive reminders</h3>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@include('list.reminders',['reminders' => $inactive])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@stop
|
Loading…
Reference in New Issue
Block a user