b0y-101 Mini Shell


Current Path : E:/www/instructor/teacher28/components/com_eventgallery/library/factory/
File Upload :
Current File : E:/www/instructor/teacher28/components/com_eventgallery/library/factory/order.php

<?php

/**
 * @package     Sven.Bluege
 * @subpackage  com_eventgallery
 *
 * @copyright   Copyright (C) 2005 - 2019 Sven Bluege All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die();

class EventgalleryLibraryFactoryOrder extends EventgalleryLibraryFactoryFactory
{


    /**
     * @param EventgalleryLibraryCart $cart
     * @return EventgalleryLibraryOrder
     */
    public function createOrder($cart) {

        $db = $this->db;
        $data = $cart->_getInternalDataObject();
        // avoid getting the creation date of the cart as the order creation date.
        unset($data['created']);

        $uuid = str_replace('.','0',uniqid("", true));
        $uuid = base_convert($uuid,16,10);

        $token = uniqid("", true);

        $query = $db->getQuery(true);
        $query->insert("#__eventgallery_order");
        $query->columns($db->quoteName(array('id', 'token')));
        $query->values(implode(',', Array($db->quote($uuid), $db->quote($token))));
        $db->setQuery($query);
        $db->execute();


        $user = JFactory::getUser();

        $data['id'] = $uuid;
        $data['token'] = $token;

        if (!$user->guest) {
            $data['userid'] = $user->id;
        }

        $lang = JFactory::getLanguage();
        $langTag = $lang->getTag();
        $data['language'] = $langTag;

        /**
         * @var EventgalleryTableOrder $orderTable
         */
        $orderTable = $this->store($data, 'Order');
        /**
         * @var EventgalleryLibraryImagelineitem $lineitem
         * @var EventgalleryLibraryFactoryImagelineitem $imageLineItemFactory
         */

        $imageLineItemFactory = EventgalleryLibraryFactoryImagelineitem::getInstance();

        foreach ($cart->getLineItems() as $lineitem) {
            $imageLineItemFactory->copyLineItem($orderTable->id, $lineitem);
        }

        /**
         * @var EventgalleryLibraryServicelineitem $lineitem
         * @var EventgalleryLibraryFactoryServicelineitem $serviceLineItemFactory
         */
        $serviceLineItemFactory = EventgalleryLibraryFactoryServicelineitem::getInstance();

        foreach ($cart->getServiceLineItems() as $lineitem) {
            $serviceLineItemFactory->copyLineItem($orderTable->id, $lineitem);
        }


        /**
         * @var EventgalleryLibraryFactoryOrderstatus $orderstatusFactory
         */
        $orderstatusFactory = EventgalleryLibraryFactoryOrderstatus::getInstance();

        /**
         * @var EventgalleryLibraryOrder $order
         */
        $order = new EventgalleryLibraryOrder($orderTable);
        $order->setOrderStatus($orderstatusFactory->getDefaultOrderStatus(EventgalleryLibraryOrderstatus::TYPE_ORDER));
        $order->setPaymentStatus($orderstatusFactory->getDefaultOrderStatus(EventgalleryLibraryOrderstatus::TYPE_PAYMENT));
        $order->setShippingStatus($orderstatusFactory->getDefaultOrderStatus(EventgalleryLibraryOrderstatus::TYPE_SHIPPING));
        $order->setDocumentNumber(EventgalleryLibraryDatabaseSequence::generateNewId());

        return $order;
    }

    public function getOrdersByUserId($userid) {
        $db = $this->db;

        $query = $db->getQuery(true);
        $query->select('*');
        $query->from("#__eventgallery_order");
        $query->where("userid=".$db->quote($userid));
        $query->order("created desc");

        $db->setQuery($query);
        $rows = $db->loadObjectList();
        $orders = array();
        foreach ($rows as $row) {
            array_push($orders, new EventgalleryLibraryOrder($row));
        }

        return $orders;
    }

    /**
     * @param string $documentNo
     * @return EventgalleryLibraryOrder
     */
    public function getOrdersByDocumentNumber($documentNo)
    {
        if ($documentNo<0) {
            return null;
        }

        $db = $this->db;

        $query = $db->getQuery(true);
        $query->select('*');
        $query->from("#__eventgallery_order");
        $query->where("documentno=".$db->quote($documentNo));


        $db->setQuery($query);
        $row = $db->loadObject();

        if ($row == null) {
            return null;
        }

        $order = new EventgalleryLibraryOrder($row);

        return $order;
    }

    /**
     * Returns the order oject for a given ID
     *
     * @param $id
     * @return EventgalleryLibraryOrder
     */
    public function getOrderById($id) {

        $db = $this->db;
        $query = $db->getQuery(true);

        $query->select('o.*');
        $query->from('#__eventgallery_order as o');
        $query->where('o.id = ' . $db->quote($id));
        $db->setQuery($query);


        return new EventgalleryLibraryOrder($db->loadObject());
    }

    /**
     * @param $email
     * @return array
     */
    public function getOrdersByEmail($email) {
        $db = $this->db;
        $query = $db->getQuery(true);

        $query->select('o.id');
        $query->from('#__eventgallery_order as o');
        $query->where('o.email = ' . $db->quote($email));
        $db->setQuery($query);

        $orderIds = $db->loadColumn(0);

        $orders = [];
        foreach($orderIds as $orderId) {
            array_push($orders, $this->getOrderById($orderId));
        }

        return $orders;

    }


}

Copyright © 2019 by b0y-101