sarga/packages/Webkul/CartRule/src/Repositories/CartRuleCouponRepository.php

68 lines
1.8 KiB
PHP
Executable File

<?php
namespace Webkul\CartRule\Repositories;
use Webkul\Core\Eloquent\Repository;
class CartRuleCouponRepository extends Repository
{
/**
* @var array
*/
protected $charsets = [
'alphanumeric' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789',
'alphabetical' => 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'numeric' => '0123456789',
];
/**
* Specify Model class name
*
* @return mixed
*/
function model()
{
return 'Webkul\CartRule\Contracts\CartRuleCoupon';
}
/**
* Creates coupons for cart rule
*
* @param array $data
* @param int $cartRuleId
* @return void
*/
public function generateCoupons($data, $cartRuleId)
{
$cartRule = app('Webkul\CartRule\Repositories\CartRuleRepository')->findOrFail($cartRuleId);
for ($i = 0; $i < $data['coupon_qty']; $i++) {
parent::create([
'cart_rule_id' => $cartRuleId,
'code' => $data['code_prefix'] . $this->getRandomString($data['code_format'], $data['code_length']) . $data['code_suffix'],
'usage_limit' => $cartRule->uses_per_coupon ?? 0,
'usage_per_customer' => $cartRule->usage_per_customer ?? 0,
'is_primary' => 0,
'expired_at' => $cartRule->ends_till ?: null,
]);
}
}
/**
* Creates coupons for cart rule
*
* @param string $format
* @param int $length
* @return string
*/
public function getRandomString($format, $length)
{
$couponCode = '';
for ($i = 0; $i < $length; $i++) {
$couponCode .= $this->charsets[$format][rand(0, strlen($this->charsets[$format]) - 1)];
}
return $couponCode;
}
}