From e04ac89c5a4361d4a93e2ba0e7689c6c511b8086 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 24 Feb 2015 02:07:33 -0800 Subject: [PATCH] Added expiring warrantee alerts --- app/commands/SendExpirationAlerts.php | 78 +++++++++++++++++++ app/controllers/admin/SettingsController.php | 5 +- app/controllers/admin/UsersController.php | 10 +-- ...15_02_24_072043_add_alerts_to_settings.php | 36 +++++++++ app/lang/en/admin/settings/general.php | 2 + app/models/Asset.php | 12 +++ app/start/artisan.php | 1 + app/views/backend/settings/edit.blade.php | 30 +++++-- app/views/backend/settings/index.blade.php | 21 ++++- app/views/backend/users/import.blade.php | 10 --- app/views/emails/expiring-report.blade.php | 19 +++++ 11 files changed, 199 insertions(+), 25 deletions(-) create mode 100644 app/commands/SendExpirationAlerts.php create mode 100644 app/database/migrations/2015_02_24_072043_add_alerts_to_settings.php create mode 100755 app/views/emails/expiring-report.blade.php diff --git a/app/commands/SendExpirationAlerts.php b/app/commands/SendExpirationAlerts.php new file mode 100644 index 0000000000..9dac3df72f --- /dev/null +++ b/app/commands/SendExpirationAlerts.php @@ -0,0 +1,78 @@ +'.$asset->name.''.$asset->asset_tag.''.$asset->warrantee_expires().''; + } + + if ((Setting::getSettings()->alert_email!='') && (Setting::getSettings()->alerts_enabled==1)){ + + if (count($expiring_assets) > 0) { + + Mail::send('emails.expiring-report', $data, function ($m) { + $m->to(Setting::getSettings()->alert_email, Setting::getSettings()->site_name); + $m->subject('Expiring Assets Report'); + }); + + } + + } else { + + if (Setting::getSettings()->alert_email=='') { + echo "Could not send email. No alert email configured in settings. \n"; + } elseif (Setting::getSettings()->alerts_enabled!=1) { + echo "Alerts are disabled in the settings. No mail will be sent. \n"; + } + + } + + + + + } + + + + + +} diff --git a/app/controllers/admin/SettingsController.php b/app/controllers/admin/SettingsController.php index 567c0215e6..4498f9f428 100755 --- a/app/controllers/admin/SettingsController.php +++ b/app/controllers/admin/SettingsController.php @@ -65,9 +65,10 @@ class SettingsController extends AdminController // Declare the rules for the form validation $rules = array( "site_name" => 'required|min:3', - "per_page" => 'required|min:1|numeric', + "per_page" => 'required|min:1|numeric', "qr_text" => 'min:1|max:31', "logo" => 'mimes:jpeg,bmp,png,gif', + "alert_email" => 'email', ); // Create a new validator instance from our validation rules @@ -106,6 +107,8 @@ class SettingsController extends AdminController $setting->qr_text = e(Input::get('qr_text')); $setting->auto_increment_prefix = e(Input::get('auto_increment_prefix')); $setting->auto_increment_assets = e(Input::get('auto_increment_assets', '0')); + $setting->alert_email = e(Input::get('alert_email')); + $setting->alerts_enabled = e(Input::get('alerts_enabled', '0')); $setting->header_color = e(Input::get('header_color')); diff --git a/app/controllers/admin/UsersController.php b/app/controllers/admin/UsersController.php index c54506e589..b59e878259 100755 --- a/app/controllers/admin/UsersController.php +++ b/app/controllers/admin/UsersController.php @@ -672,13 +672,9 @@ class UsersController extends AdminController } else { $activated = '0'; } - - - if (Input::get('generate_password')==1) { - $pass = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 10); - } else { - $pass = ''; - } + + $pass = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 10); + try { diff --git a/app/database/migrations/2015_02_24_072043_add_alerts_to_settings.php b/app/database/migrations/2015_02_24_072043_add_alerts_to_settings.php new file mode 100644 index 0000000000..8a208457ea --- /dev/null +++ b/app/database/migrations/2015_02_24_072043_add_alerts_to_settings.php @@ -0,0 +1,36 @@ +string('alert_email')->nullable()->default(NULL); + $table->boolean('alerts_enabled')->default(1); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + Schema::table('settings', function ($table) { + $table->dropColumn('alert_email'); + $table->dropColumn('alerts_enabled'); + }); + } + +} diff --git a/app/lang/en/admin/settings/general.php b/app/lang/en/admin/settings/general.php index e42112afb0..35c1b85a76 100755 --- a/app/lang/en/admin/settings/general.php +++ b/app/lang/en/admin/settings/general.php @@ -1,6 +1,8 @@ 'Send alerts to', + 'alerts_enabled' => 'Alerts enabled', 'auto_increment_assets' => 'Generate auto-incrementing asset IDs', 'auto_increment_prefix' => 'Prefix (optional)', 'auti_incrementing_help' => 'Enable auto-incrementing asset IDs first to set this', diff --git a/app/models/Asset.php b/app/models/Asset.php index deae2f262f..c644714f3b 100755 --- a/app/models/Asset.php +++ b/app/models/Asset.php @@ -130,6 +130,18 @@ class Asset extends Depreciable public function model() { return $this->belongsTo('Model','model_id'); + } + + public static function getExpiringWarrantee() { + + return Asset::where('archived','=','0') + ->whereNotNUll('warranty_months') + ->whereNotNUll('purchase_date') + ->whereRaw(DB::raw('DATE_ADD(`purchase_date`,INTERVAL `warranty_months` MONTH) <= DATE(NOW() + INTERVAL 1 MONTH) AND DATE_ADD(`purchase_date`,INTERVAL `warranty_months` MONTH) > NOW()')) + ->orderBy('purchase_date', 'ASC') + ->get(); + + } /** diff --git a/app/start/artisan.php b/app/start/artisan.php index b03a23f974..8398267f53 100755 --- a/app/start/artisan.php +++ b/app/start/artisan.php @@ -12,3 +12,4 @@ */ Artisan::add(new AppCommand); +Artisan::add(new SendExpirationAlerts); diff --git a/app/views/backend/settings/edit.blade.php b/app/views/backend/settings/edit.blade.php index 496b9f6904..dd28fd93d8 100755 --- a/app/views/backend/settings/edit.blade.php +++ b/app/views/backend/settings/edit.blade.php @@ -57,14 +57,14 @@ padding: 0px 20px;
{{ Form::text('site_name', Input::old('site_name', $setting->site_name), array('class' => 'form-control')) }} - {{ $errors->first('site_name', ':message') }} + {{ $errors->first('site_name', ':message') }}
- {{ Form::label('site_name', Lang::get('admin/settings/general.logo')) }} + {{ Form::label('logo', Lang::get('admin/settings/general.logo')) }}
{{ Form::file('logo') }} @@ -73,6 +73,24 @@ padding: 0px 20px;
+ + +
+
+ {{ Form::label('alert_email', Lang::get('admin/settings/general.alert_email')) }} +
+
+ {{ Form::text('alert_email', Input::old('alert_email', $setting->alert_email), array('class' => 'form-control')) }} + + + {{ Form::checkbox('alerts_enabled', '1', Input::old('alerts_enabled', $setting->alerts_enabled)) }} + @Lang('admin/settings/general.alerts_enabled') + + + {{ $errors->first('alert_email', ':message') }} +
+
+
@@ -81,7 +99,7 @@ padding: 0px 20px;
{{ Form::text('header_color', Input::old('header_color', $setting->header_color), array('class' => 'form-control', 'style' => 'width: 100px;')) }} - {{ $errors->first('header_color', ':message') }} + {{ $errors->first('header_color', ':message') }}
@@ -91,7 +109,7 @@ padding: 0px 20px;
{{ Form::text('per_page', Input::old('per_page', $setting->per_page), array('class' => 'form-control', 'style'=>'width: 100px;')) }} - {{ $errors->first('per_page', ':message') }} + {{ $errors->first('per_page', ':message') }}
@@ -139,7 +157,7 @@ padding: 0px 20px;
@if ($setting->auto_increment_assets == 1) {{ Form::text('auto_increment_prefix', Input::old('auto_increment_prefix', $setting->auto_increment_prefix), array('class' => 'form-control', 'style'=>'width: 100px;')) }} - {{ $errors->first('auto_increment_prefix', ':message') }} + {{ $errors->first('auto_increment_prefix', ':message') }} @else {{ Form::text('auto_increment_prefix', Input::old('auto_increment_prefix', $setting->auto_increment_prefix), array('class' => 'form-control', 'disabled'=>'disabled', 'style'=>'width: 100px;')) }} @endif @@ -176,7 +194,7 @@ padding: 0px 20px;
@if ($setting->qr_code == 1) {{ Form::text('qr_text', Input::old('qr_text', $setting->qr_text), array('class' => 'form-control')) }} - {{ $errors->first('qr_text', ':message') }} + {{ $errors->first('qr_text', ':message') }} @else {{ Form::text('qr_text', Input::old('qr_text', $setting->qr_text), array('class' => 'form-control', 'disabled'=>'disabled')) }}

diff --git a/app/views/backend/settings/index.blade.php b/app/views/backend/settings/index.blade.php index 21bd164f2b..78ea076b00 100755 --- a/app/views/backend/settings/index.blade.php +++ b/app/views/backend/settings/index.blade.php @@ -30,11 +30,30 @@ @lang('admin/settings/general.site_name') {{{ $setting->site_name }}} + + @lang('admin/settings/general.alert_email') + + @if ($setting->alert_email) + {{{ $setting->alert_email }}} + @else + -- + @endif + + + @lang('admin/settings/general.alerts_enabled') + + @if ($setting->alerts_enabled == 1) + @lang('general.yes') + @else + @lang('general.no') + @endif + + @lang('admin/settings/general.header_color') @if ($setting->header_color) - {{ $setting->header_color }} + {{{ $setting->header_color }}} @else default @endif diff --git a/app/views/backend/users/import.blade.php b/app/views/backend/users/import.blade.php index f6955c99af..af1bd6014f 100644 --- a/app/views/backend/users/import.blade.php +++ b/app/views/backend/users/import.blade.php @@ -67,16 +67,6 @@ Create a User ::

- - -
-
-
-
- {{ Form::checkbox('generate_password', '1', Input::old('generate_password')) }} Auto-generate passwords? -
-
-
diff --git a/app/views/emails/expiring-report.blade.php b/app/views/emails/expiring-report.blade.php new file mode 100755 index 0000000000..cac4f65eb9 --- /dev/null +++ b/app/views/emails/expiring-report.blade.php @@ -0,0 +1,19 @@ +@extends('emails/layouts/default') + +@section('content') + +

There are {{{ $count }}} asset(s) with warrantees expiring in the next month.

+ + + + + + + + + +{{ $email_content }} +
NameTagExpires
+ + +@stop