123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343 |
- <?php
- namespace Dotdigitalgroup\Email\Setup\Schema;
- use \Magento\Framework\Setup\SchemaSetupInterface;
- use Dotdigitalgroup\Email\Setup\Schema;
- class Shared
- {
- /**
- * Create abandoned cart table
- *
- * @param SchemaSetupInterface $installer
- * @param string $tableName
- */
- public function createAbandonedCartTable($installer, $tableName)
- {
- $abandonedCartTable = $installer->getConnection()->newTable($installer->getTable($tableName));
- $abandonedCartTable = $this->addColumnForAbandonedCartTable($abandonedCartTable);
- $abandonedCartTable = $this->addIndexKeyForAbandonedCarts($installer, $abandonedCartTable);
- $abandonedCartTable->setComment('Abandoned Carts Table');
- $installer->getConnection()->createTable($abandonedCartTable);
- }
- /**
- * @param \Magento\Framework\DB\Ddl\Table $table
- * @return mixed
- */
- private function addColumnForAbandonedCartTable($table)
- {
- return $table->addColumn(
- 'id',
- \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
- null,
- [
- 'primary' => true,
- 'identity' => true,
- 'unsigned' => true,
- 'nullable' => false
- ],
- 'Primary Key'
- )
- ->addColumn(
- 'quote_id',
- \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
- null,
- ['unsigned' => true, 'nullable' => true],
- 'Quote Id'
- )
- ->addColumn(
- 'store_id',
- \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
- 10,
- ['unsigned' => true, 'nullable' => true],
- 'Store Id'
- )
- ->addColumn(
- 'customer_id',
- \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
- 10,
- ['unsigned' => true, 'nullable' => true, 'default' => null],
- 'Customer ID'
- )
- ->addColumn(
- 'email',
- \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
- 255,
- ['nullable' => false, 'default' => ''],
- 'Email'
- )
- ->addColumn(
- 'status',
- \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
- 255,
- ['nullable' => false, 'default' => ''],
- 'Contact Status'
- )
- ->addColumn(
- 'is_active',
- \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
- 5,
- ['unsigned' => true, 'nullable' => false, 'default' => '1'],
- 'Quote Active'
- )
- ->addColumn(
- 'quote_updated_at',
- \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
- null,
- [],
- 'Quote updated at'
- )
- ->addColumn(
- 'abandoned_cart_number',
- \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
- null,
- ['unsigned' => true, 'nullable' => false, 'default' => 0],
- 'Abandoned Cart number'
- )
- ->addColumn(
- 'items_count',
- \Magento\Framework\DB\Ddl\Table::TYPE_SMALLINT,
- null,
- ['unsigned' => true, 'nullable' => true, 'default' => 0],
- 'Quote items count'
- )
- ->addColumn(
- 'items_ids',
- \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
- 255,
- ['unsigned' => true, 'nullable' => true],
- 'Quote item ids'
- )
- ->addColumn(
- 'created_at',
- \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
- null,
- [],
- 'Created At'
- )
- ->addColumn(
- 'updated_at',
- \Magento\Framework\DB\Ddl\Table::TYPE_TIMESTAMP,
- null,
- [],
- 'Updated at'
- );
- }
- /**
- * @param SchemaSetupInterface $installer
- * @param \Magento\Framework\DB\Ddl\Table $abandonedCartTable
- * @return mixed
- */
- private function addIndexKeyForAbandonedCarts($installer, $abandonedCartTable)
- {
- return $abandonedCartTable->addIndex(
- $installer->getIdxName(Schema::EMAIL_ABANDONED_CART_TABLE, ['quote_id']),
- ['quote_id']
- )
- ->addIndex(
- $installer->getIdxName(Schema::EMAIL_ABANDONED_CART_TABLE, ['store_id']),
- ['store_id']
- )
- ->addIndex(
- $installer->getIdxName(Schema::EMAIL_ABANDONED_CART_TABLE, ['customer_id']),
- ['customer_id']
- )
- ->addIndex(
- $installer->getIdxName(Schema::EMAIL_ABANDONED_CART_TABLE, ['email']),
- ['email']
- );
- }
- /**
- * Create consent table
- *
- * @param SchemaSetupInterface $installer
- * @param string $tableName
- */
- public function createConsentTable($installer, $tableName)
- {
- $emailContactConsentTable = $installer->getConnection()->newTable($installer->getTable($tableName));
- $emailContactConsentTable = $this->addColumnForConsentTable($emailContactConsentTable);
- $emailContactConsentTable = $this->addIndexToConsentTable($installer, $emailContactConsentTable);
- $emailContactConsentTable = $this->addKeyForConsentTable($installer, $emailContactConsentTable);
- $emailContactConsentTable->setComment('Email contact consent table.');
- $installer->getConnection()->createTable($emailContactConsentTable);
- }
- /**
- * @param \Magento\Framework\DB\Ddl\Table $emailContactConsentTable
- * @return mixed
- */
- private function addColumnForConsentTable($emailContactConsentTable)
- {
- $emailContactConsentTable
- ->addColumn(
- 'id',
- \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
- 10,
- [
- 'primary' => true,
- 'identity' => true,
- 'unsigned' => true,
- 'nullable' => false
- ],
- 'Primary Key'
- )
- ->addColumn(
- 'email_contact_id',
- \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
- null,
- ['unsigned' => true, 'nullable' => true],
- 'Email Contact Id'
- )
- ->addColumn(
- 'consent_url',
- \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
- 255,
- ['unsigned' => true, 'nullable' => true],
- 'Contact consent url'
- )
- ->addColumn(
- 'consent_datetime',
- \Magento\Framework\DB\Ddl\Table::TYPE_DATETIME,
- null,
- [],
- 'Contact consent datetime'
- )
- ->addColumn(
- 'consent_ip',
- \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
- 255,
- ['unsigned' => true, 'nullable' => true],
- 'Contact consent ip'
- )
- ->addColumn(
- 'consent_user_agent',
- \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
- 255,
- ['unsigned' => true, 'nullable' => true],
- 'Contact consent user agent'
- );
- return $emailContactConsentTable;
- }
- /**
- * @param SchemaSetupInterface $installer
- * @param \Magento\Framework\DB\Ddl\Table $emailContactConsentTable
- * @return mixed
- */
- private function addKeyForConsentTable($installer, $emailContactConsentTable)
- {
- return $emailContactConsentTable->addForeignKey(
- $installer->getFkName(Schema::EMAIL_CONTACT_CONSENT_TABLE, 'email_contact_id', Schema::EMAIL_CONTACT_TABLE, 'email_contact_id'),
- 'email_contact_id',
- $installer->getTable(Schema::EMAIL_CONTACT_TABLE),
- 'email_contact_id',
- \Magento\Framework\DB\Ddl\Table::ACTION_CASCADE
- );
- }
- /**
- * @param SchemaSetupInterface $installer
- * @param \Magento\Framework\DB\Ddl\Table $table
- * @return mixed]
- */
- private function addIndexToConsentTable($installer, $table)
- {
- return $table->addIndex(
- $installer->getIdxName($installer->getTable(Schema::EMAIL_CONTACT_CONSENT_TABLE), ['email_contact_id']),
- ['email_contact_id']
- );
- }
- /**
- * Create failed auth table
- *
- * @param SchemaSetupInterface $installer
- * @param string $tableName
- */
- public function createFailedAuthTable($installer, $tableName)
- {
- $emailAuthEdc = $installer->getConnection()->newTable($installer->getTable($tableName));
- $emailAuthEdc = $this->addColumnForFailedAuthTable($emailAuthEdc);
- $emailAuthEdc = $this->addIndexToFailedAuthTable($installer, $emailAuthEdc);
- $emailAuthEdc->setComment('Email Failed Auth Table.');
- $installer->getConnection()->createTable($emailAuthEdc);
- }
- /**
- * @param \Magento\Framework\DB\Ddl\Table $table
- * @return mixed
- */
- private function addColumnForFailedAuthTable($table)
- {
- $table
- ->addColumn(
- 'id',
- \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
- 10,
- [
- 'primary' => true,
- 'identity' => true,
- 'unsigned' => true,
- 'nullable' => false
- ],
- 'Primary Key'
- )
- ->addColumn(
- 'failures_num',
- \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
- null,
- ['unsigned' => true, 'nullable' => true],
- 'Number of fails'
- )
- ->addColumn(
- 'first_attempt_date',
- \Magento\Framework\DB\Ddl\Table::TYPE_DATETIME,
- null,
- [],
- 'First attempt date'
- )
- ->addColumn(
- 'last_attempt_date',
- \Magento\Framework\DB\Ddl\Table::TYPE_DATETIME,
- null,
- [],
- 'Last attempt date'
- )
- ->addColumn(
- 'url',
- \Magento\Framework\DB\Ddl\Table::TYPE_TEXT,
- 255,
- ['unsigned' => true, 'nullable' => true],
- 'URL'
- )
- ->addColumn(
- 'store_id',
- \Magento\Framework\DB\Ddl\Table::TYPE_INTEGER,
- null,
- ['unsigned' => true, 'nullable' => true],
- 'Store Id'
- );
- return $table;
- }
- /**
- * @param SchemaSetupInterface $installer
- * @param \Magento\Framework\DB\Ddl\Table $emailAuthEdc
- * @return mixed
- */
- private function addIndexToFailedAuthTable($installer, $emailAuthEdc)
- {
- return $emailAuthEdc
- ->addIndex(
- $installer->getIdxName('email_auth_edc', ['store_id']),
- ['store_id']
- );
- }
- }
|