Files
newwalls.pl/modules/epaka/src/EpakaDB.php
2024-12-17 13:43:22 +01:00

241 lines
7.7 KiB
PHP

<?php
class EpakaDB
{
public static function addAdminController($className, $module, $position = 1)
{
if(Tab::getIdFromClassName($className) === false){
$sql = "INSERT INTO ". _DB_PREFIX_ ."tab
(id_tab, id_parent, class_name, module, position, active, hide_host_mode)
VALUES (NULL, '-1', '".pSQL($className)."', '".pSQL($module)."' , '".$position."', '1', '0')";
return Db::getInstance()->execute($sql);
}
return true;
}
public static function createTable($tableName, $columnsArr, $primaryKeys = null, $engineDb, $charset = 'utf8', $collate = 'utf8_general_ci')
{
$query = 'CREATE TABLE IF NOT EXISTS '._DB_PREFIX_.$tableName.'(';
$i = 0;
foreach ($columnsArr as $column => $values){
$i++;
$query .= $column.' '.$values;
if ($i < count($columnsArr)) {
$query .= ', ';
}
}
if (!empty($primaryKeys)) {
$query .= ', PRIMARY KEY ('.implode(',',$primaryKeys ).'))';
} else {
$query .= ')';
}
$query .= 'ENGINE = '.pSQL($engineDb);
$query .= ' CHARSET = '.pSQL($charset);
$query .= ' COLLATE = '.pSQL($collate);
return DB::getInstance()->execute($query);
}
public static function dropTable($tableName)
{
$query = 'DROP TABLE IF EXISTS '._DB_PREFIX_.$tableName.';';
return DB::getInstance()->execute($query);
}
public static function deleteFromTable($tableName, $columnName, $value)
{
$query = 'DELETE FROM '._DB_PREFIX_.$tableName.' WHERE '.$columnName.'="'.$value.'";';
return DB::getInstance()->execute($query);
}
public static function existsTable($tableName)
{
$query = 'SELECT 1 FROM '._DB_PREFIX_.$tableName.' LIMIT 1;';
try {
$result = DB::getInstance()->execute($query);
} catch (PrestaShopException $e) {
$result = false;
}
return $result;
}
public static function getCourriers($type = null)
{
$sql = new DbQuery();
$sql->select('*');
$sql->from('epaka_carriers', 'ec');
if (!empty($type)) {
$sql->where('delivery_type = '.$type);
}
$result = Db::getInstance()->executeS($sql);
// $array = array();
// foreach ($result as $row) {
// $array[$row['machine']] = $row['id_machine_type'];
// }
return $result;
}
public static function getCourriersRelations($idPresta = null, $idEpaka = null)
{
$sql = new DbQuery();
$sql->select('*');
$sql->from('epaka_carriers_relations', 'ecr');
if (!empty($idPresta)) {
$sql->where('ecr.prestashop_id = '.$idPresta.'');
}
if (!empty($idEpaka)) {
$sql->where('ecr.epaka_id = '.$idEpaka.'');
}
$result = Db::getInstance()->executeS($sql);
return $result;
}
public static function clearCourriersRelations()
{
return Db::getInstance()->delete('epaka_carriers_relations');
}
public static function addCourriersRelation($idPresta, $idEpaka, $epakaCariers = null)
{
if (empty($epakaCariers)) {
return false;
}
// polaczone z epaka.pl
if (!empty($idEpaka)) {
foreach ($epakaCariers as $eCTmp) {
if ($eCTmp->courierId == $idEpaka) {
if (!empty((array)$eCTmp->courierMapSourceId) && $eCTmp->courierPointDelivery == "1") {
$epakaCarrierDeliveryType = 'p2p';
} else {
$epakaCarrierDeliveryType = 'd2d';
}
break;
}
}
}
// NIE polaczone z epaka.pl
else {
$epakaCarrierDeliveryType = 'onp';
}
return Db::getInstance()->insert('epaka_carriers_relations', array(
'prestashop_id' => (int)$idPresta, 'epaka_id' => (int)$idEpaka, 'epaka_carrier_delivery_type' => $epakaCarrierDeliveryType
));
}
public static function getBasketDelivery($idCart = null)
{
$result = false;
$sql = new DbQuery();
$sql->select('*');
$sql->from('epaka_delivery', 'ed');
if (!empty($idCart)) {
$sql->where('id_cart = '.(int)$idCart);
$result = Db::getInstance()->getRow($sql);
} else {
$result = Db::getInstance()->executeS($sql);
}
return $result;
}
/* public static function getCarrierTypes($id_carrier_prestashop = null)
{
$sql = new DbQuery();
$sql->select('ec.epaka_id, ec.epaka_name, ec.epaka_name_short, c.id_carrier as presta_id, c.name as presta_name');
$sql->from('epaka_carriers_relations', 'ecr');
$sql->innerJoin('epaka_carriers', 'ec', 'ecr.epaka_id = ec.epaka_id');
$sql->innerJoin(
'carrier',
'c',
'c.id_carrier = ecr.prestashop_id AND active = 1 AND deleted = 0');
if (!empty($id_carrier_prestashop)) {
$sql->where('ecr.prestashop_id = '.$id_carrier_prestashop);
}
$result = Db::getInstance()->executeS($sql);
if(empty($result)){
return array();
}
return $result;
} */
public static function getCarrierByShort($short)
{
$sql = new DbQuery();
$sql->select('*');
$sql->from('epaka_carriers', 'ec');
$sql->where('ec.epaka_name_short LIKE "'.$short.'"');
return Db::getInstance()->getRow($sql);
}
public static function checkIfIsOrderReferenceIsOK($id_cart = null, $id_carrier_prestashop = null, $id_carrier_epaka = null)
{
$sql = new DbQuery();
$sql->select('*');
$sql->from('epaka_delivery', 'ed');
if (!empty($id_cart)) {
$sql->where('ed.id_cart = '.$id_cart.'');
}
if (!empty($id_carrier_prestashop)) {
$sql->where('ed.id_carrier_prestashop = '.$id_carrier_prestashop.'');
}
if (!empty($id_carrier_epaka)) {
$sql->where('ed.id_carrier_epaka = '.$id_carrier_epaka.'');
}
return Db::getInstance()->getRow($sql);
}
public static function addEpakaId($id_cart = null, $id_epaka_order = null)
{
$sql = 'UPDATE '._DB_PREFIX_.'epaka_delivery';
$sql .= ' SET id_epaka_order = '.pSQL($id_epaka_order);
$sql .= ' WHERE id_cart = '.pSQL($id_cart);
$sql .= ';';
return DB::getInstance()->execute($sql);
}
public static function delEpakaId($id_cart = null)
{
$sql = 'UPDATE '._DB_PREFIX_.'epaka_delivery';
$sql .= ' SET id_epaka_order = NULL';
$sql .= ' WHERE id_cart = '.pSQL($id_cart);
$sql .= ';';
return DB::getInstance()->execute($sql);
}
public static function insertRelation($id_cart, $id_carrier_prestashop, $id_carrier_epaka, $point_code = null, $point_name = null, $id_epaka_order = null)
{
$insertData = [
'id_cart' => $id_cart,
'id_carrier_prestashop' => $id_carrier_prestashop,
'id_carrier_epaka' => $id_carrier_epaka,
'point_code' => $point_code,
'point_name' => $point_name,
'id_epaka_order' => $id_epaka_order
];
return Db::getInstance()->insert('epaka_delivery',$insertData, false, true, Db::ON_DUPLICATE_KEY);;
}
public static function getUnfinishedPrestaOrders()
{
$sql = 'SELECT * FROM '._DB_PREFIX_.'orders';
$sql .= ' WHERE current_state <> 4'; // 4 -Dostarczane;
$sql .= ';';
return DB::getInstance()->executeS($sql);
}
}