aira-virtual / promocodes
Promotional Codes Generator for Laravel 5
Requires
- php: >=5.4.0
- laravel/framework: ~5.0
README
Use version 0.5.1 for Laravel 5.1
PR0M0C0D35 | |
---|---|
Promocodes generator for Laravel 5.*. Trying to make the best package in this category. You are welcome to join the party, give me some advices :tada: and make pull requests. |
Table of Contents
What's new?
Installation
Install this package via Composer:
$ composer require aira-virtual/promocodes
Open config/app.php
and follow steps below:
Find the providers
array and add our service provider.
'providers' => [
// ...
Aira\Promocodes\PromocodesServiceProvider::class
],
Find the aliases
array and add our facade.
'aliases' => [
// ...
'Promocodes' => Aira\Promocodes\Facades\Promocodes::class
],
Configuration
Publish config & migration file using Artisan command:
$ php artisan vendor:publish
To create table for promocodes in database run:
$ php artisan migrate
Configuration parameters are well documented. There is no need to describe each parameter here.
Check
config/promocodes.php
and read comments there if you need.
Usage
Generate as many codes as you wish and output them without saving. You will get array of codes in return:
Promocodes::output($amount = 1)
Create as many codes as you wish, with same reward for each one. They will be saved in database and you will get collection of them in return:
Promocodes::create($label = "Test Code", $amount = 1, $reward = null, array $data = [])
Check if given code exists and isn't used at all:
Promocodes::check($code)
Apply, that given code is used. Update database record. You will get promocode record back or true/false:
Promocodes::apply($code)
Promocodes can be related to users
If you want to use user relation open your model and make it Rewardable
as in example:
namespace App;
use Illuminate\Notifications\Notifiable;
use Aira\Promocodes\Traits\Rewardable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable, Rewardable;
// ...
}
Get all promocodes of current user:
User::promocodes()
There is query scopes for promocodes:
fresh()
,byCode($code)
:
User::promocodes()->fresh()
- all not used codes of userUser::promocodes()->byCode($code)
- record which matches given code
Create promocode(s) for current user. Works exactly same like create
method of Promocodes
:
User::createCode("Test Code", $amount = 1, $reward = null, array $data = [])
Apply, that given code is used by current user. Second argument is optional, if null, it will return promocode record or boolean, or you can pass callback function, which gives you reward or boolean value as argument:
User::applyCode($code, $callback = null)
Example:
$user = Auth::user();
$user->applyCode('ABCD-DCBA', function ($promocode) use ($user) {
return 'Congratulations, ' . $user->name . '! We have added ' . $promocode->reward . ' points on your account'.
});
How to use additional data?
- Process of creation:
Promocodes::create("Test Code", 1, 25, ['foo' => 'bar', 'baz' => 'qux']);
or
User::createCode("Test Code", 1, 25, ['foo' => 'bar', 'baz' => 'qux']);
- Getting data back:
Promocodes::apply('ABC-DEF', function($promocode) {
echo $pomocode->data['foo'];
});
or
User::applyCode('ABC-DEF', function($promocode) {
echo $pomocode->data['foo'];
});
License
laravel-promocodes is licensed under a MIT License.
TODO
- [x] Create tests to check funtionality