Skip to content

Feature: add the possibility to redeem vouchers multiple times with limit #57

@roesware

Description

@roesware

For example:

A school class (30 students) can redeem a code for their class.
But you want to count on how many times the voucher has been redeemd.

After 30 redeems, the voucher is no longer valid.

Code example:

  1. Migration
 Schema::create('vouchers', function (Blueprint $table) {
            $table->id();
            $table->string('code')->unique();
            $table->integer('max_redeems')->default(30); // new
            $table->integer('current_redeems')->default(0); // new
            $table->timestamps();
        });
  1. Model
class Voucher extends Model
{
    protected $fillable = ['code', 'max_redeems', 'current_redeems'];

    public function isValid()
    {
        return $this->current_redeems < $this->max_redeems;
    }

    public function redeem()
    {
        if ($this->isValid()) {
            $this->current_redeems++;
            $this->save();
            return true;
        }
        return false;
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions