1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 
<?php
/* --------------------------------------------------------------
   CustomerGroupInterface.inc.php 2018-02-01
   Gambio GmbH
   http://www.gambio.de
   Copyright (c) 2017 Gambio GmbH
   Released under the GNU General Public License (Version 2)
   [http://www.gnu.org/licenses/gpl-2.0.html]
   --------------------------------------------------------------
*/

/**
 * Interface CustomerGroupInterface
 *
 * @category   System
 * @package    CustomerGroup
 * @subpackage Entities
 */
interface CustomerGroupInterface
{
    /**
     * Saves customer group in database.
     *
     * @return $this|\CustomerGroupInterface Same instance for chained method calls.
     */
    public function store();
    
    
    /**
     * Create base data from chosen personal offers table.
     *
     * @param \IntType $baseId
     *
     * @return \CustomerGroup
     */
    public function createBase(IntType $baseId);
    
    /**
     * Updates customer group in database.
     *
     * @return $this|\CustomerGroupInterface Same instance for chained method calls.
     */
    public function update();
    
    
    /**
     * Deletes customer group from database.
     *
     * @return $this|\CustomerGroupInterface Same instance for chained method calls.
     */
    public function delete();
    
    
    /**
     * Returns the customer group id.
     *
     * @return int Customer group id.
     */
    public function getId();
    
    
    /**
     * Sets the customer group id.
     *
     * @param \IntType $id The customer group id to be set.
     *
     * @return $this|\CustomerGroupInterface Same instance for chained method calls.
     */
    public function setId(IntType $id);
    
    
    /**
     * Returns the customer group default status.
     *
     * @return bool Customer group default status.
     */
    public function isDefault();
    
    
    /**
     * Sets the customer group id.
     *
     * @param \BoolType $default The customer group default group to set.
     *
     * @return $this|\CustomerGroupInterface Same instance for chained method calls.
     */
    public function setDefault(BoolType $default);
    
    
    /**
     * Returns the name.
     *
     * @param \LanguageCode $languageCode Language code for language specific name value.
     *
     * @return string Language specific name value.
     */
    public function getName(LanguageCode $languageCode);
    
    
    /**
     * Sets the name.
     *
     * @param \StringType   $name         Name.
     * @param \LanguageCode $languageCode Language code for language specific name value.
     *
     * @return $this|\CustomerGroupInterface Same instance for chained method calls.
     */
    public function setName(StringType $name, LanguageCode $languageCode);
    
    
    /**
     * Returns all language specific name.
     *
     * @return array Language specific name value.
     */
    public function getNames();
    
    
    /**
     * Returns the customer group settings.
     *
     * @return \CustomerGroupSettingsInterface
     */
    public function getSettings();
    
    
    /**
     * Sets the customer group settings.
     *
     * @param \CustomerGroupSettingsInterface $settings Customer group settings.
     *
     * @return $this|\CustomerGroupInterface Same instance for chained method calls.
     */
    public function setSettings(CustomerGroupSettingsInterface $settings);
    
    
    /**
     * Returns the customer group configurations.
     *
     * @return \CustomerGroupConfigurationsInterface
     */
    public function getConfigurations();
    
    
    /**
     * Sets the customer group configurations.
     *
     * @param \CustomerGroupConfigurationsInterface $configurations Customer group configurations.
     *
     * @return $this|\CustomerGroupInterface Same instance for chained method calls.
     */
    public function setConfigurations(CustomerGroupConfigurationsInterface $configurations);
    
    
    /**
     * Sets the number of members to the customer group.
     *
     * @param \IntType $number
     *
     * @return \CustomerGroup
     */
    public function setMembers(IntType $number);
    
    
    /**
     * Returns the customer group members number.
     *
     * @return int
     */
    public function getMembers();
}