basket.php 5.63 KB
<?php
/**
 * Created by PhpStorm.
 * User: Alex Savenko
 * Date: 12.01.2017
 * Time: 12:59
 */

namespace models;


use Phalcon\Forms\Element\Select;

class basket extends \db
{
    /**
     * @param   array   $data
     * @return  string
     */
    public function addData($data)
    {

        $query_basket =  $this->get(
            '
                INSERT INTO
                    public.basket
                        (
                          user_id,
                          letter,
                          last_mod
                        )
                        VALUES
                        (
                          :user_id,
                          :letter,
                          CURRENT_TIMESTAMP
                        )
                        RETURNING user_id
            ',
            [
                'user_id'       => $data['user_id'],
                'letter'        => $data['letter']
            ],
            -1
        );

        foreach ($data['items'] as $item) {
            $this->get(
                '
                    INSERT INTO
                        public.basket_items
                            (
                              user_id,
                              item_id,
                              count
                            )
                            VALUES
                            (
                              :user_id,
                              :item_id,
                              :count
                            )
                            RETURNING id
                ',
                [
                    'user_id'   => $data['user_id'],
                    'item_id'   => $item['item_id'],
                    'count'     => $item['count_items']
                ],
                -1
            );
        }
        return 'User #'.$query_basket[0]['user_id'].' added';

    }

    /**
     * @param $user_id
     * @return bool
     */
    public function checkUserExist($user_id) {
        $query = $this->get(
            '
                SELECT *
                FROM public.basket
                WHERE
                  user_id = :user_id
                LIMIT 1
            ',
            [
                'user_id' => $user_id
            ],
            -1
        );
        if (!empty($query[0]['id'])) {
            return true;
        }
        else {
            return false;
        }
    }

    /**
     * @param $user_id
     * @param $item_id
     * @return bool
     */
    public function checkItemExist($user_id, $item_id) {
        $query = $this->get(
            '
                SELECT *
                FROM public.basket_items
                WHERE
                  user_id = :user_id
                  AND
                  item_id = :item_id
                LIMIT 1
            ',
            [
                'user_id' => $user_id,
                'item_id' => $item_id
            ],
            -1
        );
        if (!empty($query[0]['id'])) {
            return true;
        }
        else {
            return false;
        }
    }

    /**
     * @param $data
     * @return string
     */
    public function updateData($data) {
        $query_basket =  $this->exec(
            '
                UPDATE
                    public.basket
                SET
                    letter   = :letter,
                    last_mod = CURRENT_TIMESTAMP
                WHERE
                    user_id  = :user_id
                RETURNING user_id
            ',
            [
                'user_id'       => $data['user_id'],
                'letter'        => $data['letter']
            ],
            -1
        );

        foreach ($data['items'] as $item) {
            if ($this->checkItemExist($data['user_id'], $item['item_id'])) {
                $query_basket_items = $this->get(
                    '
                    UPDATE
                        public.basket_items
                    SET
                        item_id = :item_id,
                        count   = :count
                    WHERE
                        user_id = :user_id
                        AND
                        item_id = :item_id
                    RETURNING id
                ',
                    [
                        'user_id'   => $data['user_id'],
                        'item_id'   => $item['item_id'],
                        'count'     => $item['count_items']
                    ],
                    -1
                );
            }
            else {
                $query_basket_items = $this->get(
                    '
                    INSERT INTO
                        public.basket_items
                            (
                              user_id,
                              item_id,
                              count
                            )
                            VALUES
                            (
                              :user_id,
                              :item_id,
                              :count
                            )
                            RETURNING id
                ',
                    [
                        'user_id'   => $data['user_id'],
                        'item_id'   => $item['item_id'],
                        'count'     => $item['count_items']
                    ],
                    -1
                );
            }
        }
        return 'User #'.$query_basket[0]['user_id'].' updated';
    }

    /**
     * @param $user_id
     * @param $data
     */
    public function updateBasket($user_id, $data){
        if ($this->checkUserExist($user_id)) {
            $this->updateData($data);
        }
        else {
            $this->addData($data);
        }
    }

}