Как настроить индивидуальную систему скидок в CodeIgniter - PullRequest
0 голосов
/ 22 октября 2018

Я столкнулся с проблемой, в которой я пытаюсь дать пользователям возможность получать и применять скидки на продукты, в которых они активны.

Допустим, я публикую новый продукт, к которому прикреплен discount_id

Тогда любой пользователь, который знает код для конкретного discount_id, должен получить сумму скидки ($), вычтенную из первоначальной цены товара, и она должна быть обновлена ​​в их корзине.

Это моя функция, которую я пытаюсь создать, но я слишком запутался:

public function discountItemCodeVerification($id){

            // Verify discount exists
            $discount   =   $this->input->post('discount_code');
            $result     =   $this->PublicCart_model->verifyDiscountCode($discount);

            if(!$result){

                // Set message
                $this->session->set_flashdata('error', 'The discount has expired or is invalid');

                // Redirect
                redirect('cart/userCart');

            } else {

                // Get Last ID Data
                $postID =   $id;

                // Get Relationship Data
                $discountID     =   $result->discount_id;
                $discountType   =   $this->PublicCart_model->getDiscountID($discountID);

                // Verify Item has an Individual Discount Attached to Itself
                $individualDiscount = $this->PublicCart_model->verifyItemDiscountCode($postID, $discountID);

                if($discountType->type == 'percent' || !empty($individualDiscount)){

                    // Get data
                    $data['item']   =   $this->PublicStore_model->readPostID($id);

                    // HERE IS WHERE I NEED HELP
                    $postData    =   array(
                        // 'price' =>  round($data->price * ((100 - $result->amout) / 100 ), 2),
                        // 'price' =>  $data[item]->price * (( 100 - $result->amout) / 100),
                        'price' =>  $data['item']->price - ($data['item']->price * ($result->amount/100)),
                    );
                    // Update Cart Data
                    $this->PublicCart_model->updateCartItem($postID, $postData);

                    // Set message
                    $this->session->set_flashdata('success', 'A percentage type discount has been applied to your final price');

                    // Redirect
                    redirect('cart/userCart');

                } elseif($discountType->type == 'float' || !empty($individualDiscount)){

                    // Set message
                    $this->session->set_flashdata('success', 'A float type discount has been applied to your final price');

                    // Redirect
                    redirect('cart/userCheckout');

                }

            }
    }

и вот методы в моей модели, которые я пытаюсь использовать:

/*
  *
  * VERIFY CART DISCOUNTS AND GET ITS RELATIONSHIP
  *
  */
  public function verifyDiscountCode($discount){
    $query  =  $this->db->get_where($this->discounts, array(
      'code'  =>  $discount,
    ));
    return $query->row();
  }

  public function getDiscountID($discountID){
    $query  = $this->db->get_where($this->relationship, array(
      'discount_id' =>  $discountID,
      'status'      =>  $this->published,
    ));
    return $query->row();
  }
  /*
  *
  * VERIFY INDIVIDUAL CART ITEM DISCOUNTS
  *
  */
  public function verifyItemDiscountCode($postID, $discountID){
    $query  = $this->db->get_where($this->relationship, array(
      'post_id'     =>  $postID,
      'discount_id' =>  $discountID,
      'status'      =>  $this->published,
    ));
    return $query->row();
  }

  public function updateCartItem($postID, $postData){
    $this->db->select('*');
    $this->db->where('friend_id', $this->session->userdata('user_id'));
    $this->db->where('post_id', $postID);
    $this->db->where('type', $this->cartType);
    $this->db->update($this->relationship, $postData);
  }

На данный момент поведение, которое я получаю, это обновление до «0» в цене товара в корзине пользователя, даже если скидка (процент) не равна 100%.

Любая помощь будет оченьвысоко ценится, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...