<?
namespace shop;
class Coupon implements \ArrayAccess
{
  public function __construct( int $element_id )
  {
    global $mdb;
    if ( $element_id )
    {
      $result = $mdb -> get( 'pp_shop_coupon', '*', [ 'id' => $element_id ] );
      if ( \S::is_array_fix( $result ) ) foreach ( $result as $key => $val )
        $this -> $key = $val;
    }
 }

  public function load_from_db_by_name( string $name )
  {
    global $mdb;

    $result = $mdb -> get( 'pp_shop_coupon', '*', [ 'name' => $name ] );
    if ( is_array( $result ) ) foreach ( $result as $key => $val )
      $this -> $key = $val;
  }

  public function is_one_time() {
//    return $this -> bean -> one_time;
  }

  public function is_available()
  {
    if ( !$this -> id )
      return false;

    if ( !$this -> status )
      return false;

    return !$this -> used;
  }

  public function set_as_used()
  {
//    $this -> bean -> used = 1;
//    $this -> bean -> date_used = date( 'Y-m-d H:i:s' );
//    \R::store( $this -> bean );
  }

  public function __get( $variable )
  {
    if ( array_key_exists( $variable, $this -> data ) )
      return $this -> $variable;
  }

  public function __set( $variable, $value )
  {
    $this -> $variable = $value;
  }

  public function offsetExists( $offset )
  {
    return isset( $this -> $offset );
  }

  public function offsetGet( $offset )
  {
    return $this -> $offset;
  }

  public function offsetSet( $offset, $value )
  {
    $this -> $offset = $value;
  }

  public function offsetUnset( $offset )
  {
    unset( $this -> $offset );
  }
}