first commit

This commit is contained in:
2024-11-11 18:46:54 +01:00
commit a630d17338
25634 changed files with 4923715 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
<?php
namespace FreshMail\Sender\Service;
use FreshMail\Entity\Cart;
use PrestaShop\PrestaShop\Adapter\Product\PriceFormatter;
class CartData implements CartDataCollector
{
public static function getProductList(\Cart $cart, \Context $context)
{
$priceFormatter = new PriceFormatter();
$productList = $cart->getProducts();
foreach ($productList as &$prod) {
$prod['img'] = $context->link->getImageLink($prod['name'], \Product::getCover($prod['id_product'], $context)['id_image'], 'cart_default');
$prod['img_big'] = $context->link->getImageLink($prod['name'], \Product::getCover($prod['id_product'], $context)['id_image'], 'home_default');
$prod['price_wt'] = $priceFormatter->format($prod['price_wt'], new \Currency($cart->id_currency));
}
return $productList;
}
public static function getDiscountCode(Cart $fmCart)
{
$discountCode = '';
if (!empty($fmCart->id_cart_rule)) {
$discountCode = (new \CartRule($fmCart->id_cart_rule))->code;
} elseif (!empty($fmCart->discount_code)) {
$discountCode = $fmCart->discount_code;
}
return $discountCode;
}
public static function getDiscountValidTo(Cart $fmCart)
{
if (!empty($fmCart->id_cart_rule)) {
$id = $fmCart->id_cart_rule;
} elseif (!empty($fmCart->discount_code)) {
$id = \CartRule::getIdByCode($fmCart->discount_code);
}
if (empty($id)) {
return '';
}
$cr = new \CartRule($id);
if (!\Validate::isLoadedObject($cr)) {
return '';
}
return $cr->date_to;
}
public static function getCartUrl(Cart $fmCart)
{
return \Context::getContext()->link->getModuleLink('freshmail', 'restore', ['hash' => $fmCart->cart_token]);
}
public static function getShopAddress()
{
$city = \Configuration::get('PS_SHOP_CITY');
$postal = \Configuration::get('PS_SHOP_CODE');
$addr1 = \Configuration::get('PS_SHOP_ADDR1');
$addr2 = \Configuration::get('PS_SHOP_ADDR2');
return $city . ' ' . $postal . ' ' . $addr1 . ' ' . $addr2;
}
public static function getCustomer(\Cart $cart) : \Customer
{
return new \Customer($cart->id_customer);
}
}

View File

@@ -0,0 +1,15 @@
<?php
namespace FreshMail\Sender\Service;
use FreshMail\Entity\Cart;
interface CartDataCollector
{
public static function getProductList(\Cart $cart, \Context $context);
public static function getDiscountCode(Cart $fmCart);
public static function getDiscountValidTo(Cart $fmCart);
public static function getCartUrl(Cart $fmCart);
public static function getShopAddress();
public static function getCustomer(\Cart $cart) : \Customer;
}

View File

@@ -0,0 +1,80 @@
<?php
namespace FreshMail\Sender\Service;
use FreshMail\Entity\Cart;
use PrestaShop\PrestaShop\Adapter\Product\PriceFormatter;
class MockCartData implements CartDataCollector
{
public static function getProductList(\Cart $cart, \Context $context)
{
$query = new \DbQuery();
$query->select('p.*, pl.*')
->from('product', 'p')
->leftJoin('product_lang', 'pl', 'p.id_product = pl.id_product AND pl.id_lang = '.(int)$context->language->id)
->leftJoin('product_sale', 'ps', 'p.id_product = ps.id_product')
->where('p.active = 1')
->where('p.available_for_order = 1')
->orderBy('ps.quantity desc')
->limit(1)
;
$productList = \Db::getInstance()->executeS($query);
$priceFormatter = new PriceFormatter();
foreach ($productList as &$prod) {
$prod['name'] = \Product::getProductName($prod['id_product']);
$prod['quantity'] = 1;
$prod['price_wt'] = $priceFormatter->format(
\Product::getPriceStatic((int)$prod['id_product'], true),
new \Currency($cart->id_currency)
);
$prod['img'] = $context->link->getImageLink($prod['name'], \Product::getCover($prod['id_product'], $context)['id_image'], 'cart_default');
$prod['img_big'] = $context->link->getImageLink($prod['name'], \Product::getCover($prod['id_product'], $context)['id_image'], 'home_default');
}
return $productList;
}
public static function getDiscountCode(Cart $fmCart)
{
return 'PROMO_CODE';
}
public static function getDiscountValidTo(Cart $fmCart)
{
return 'YYYY-MM-DD';
}
public static function getCartUrl(Cart $fmCart)
{
return \Context::getContext()->link->getModuleLink('freshmail', 'restore', ['hash' => $fmCart->cart_token]);
}
public static function getShopAddress()
{
$city = \Configuration::get('PS_SHOP_CITY');
$postal = \Configuration::get('PS_SHOP_CODE');
$addr1 = \Configuration::get('PS_SHOP_ADDR1');
$addr2 = \Configuration::get('PS_SHOP_ADDR2');
return $city . ' ' . $postal . ' ' . $addr1 . ' ' . $addr2;
}
public static function getCustomer(\Cart $cart) : \Customer
{
$query = new \DbQuery();
$query->select('DISTINCT(firstname)')->from('customer')->limit(100);
$firstame = \Db::getInstance()->executeS($query);
$query = new \DbQuery();
$query->select('DISTINCT(lastname)')->from('customer')->limit(100);
$lastname = \Db::getInstance()->executeS($query);
$customer = new \Customer();
$customer->firstname = $firstame[array_rand($firstame)]['firstname'];
$customer->lastname = $lastname[array_rand($lastname)]['lastname'];
return $customer;
}
}