int main(int argc, char** argv) {

    Product*  myProduct1 = createProduct(20001, "Nexus 6P", 5000, 300, "Smartphone", 450, 100);
    Product*  myProduct2 = createProduct(20002, "Xiaomi Mi 4", 3700, 350, "Smartphone", 374, 120);
    Product*  myProduct3 = createProduct(20003, "iPad Pro", 6540, 500, "Tablet", 786, 322);
    Product*  myProduct4 = createProduct(20004, "iPad", 6540, 500, "Tablet", 786, 322);;

    Product** products = malloc(sizeof(Product*)*4);
    products[0] = myProduct1;
    products[1] = myProduct2;
    products[2] = myProduct3;


    printf("\nTESTING: PaymentReceipt\n");

    printf("\n->createPaymentReceipt");
    PaymentReceipt* myReceipt = createPaymentReceipt(products,1,"15/06/2016",3);
    printPaymentReceipt(myReceipt);

    printf("\n->addProduct");
    addProduct(myProduct4,myReceipt);
    printPaymentReceipt(myReceipt);




    return (EXIT_SUCCESS);
}
Example #2
0
void Request::executeRequest(const std::string& request) {
	utils::StringUtils util;
	if (!request.empty()) {
		std::vector<std::string> splitRequest = util.split(request,utils::separator);
		std::string type = splitRequest.front();
		if(type == utils::NEW_VISION_AREA) {
				createVisionArea(splitRequest);
		} else if(type ==  utils::MODIFY_VISION_AREA) {
				modifyVisionArea(splitRequest);
		} else if(type == utils::DELETE_VISION_AREA) {
				deleteVisionArea(splitRequest);
		} else if (type==utils::NEW_PRODUCT) {
				createProduct(splitRequest);
		} else if (type == utils::MODIFY_PRODUCT) {
				modifyProduct(splitRequest);
		} else if (type == utils::DELETE_PRODUCT) {
			deleteProduct(splitRequest);
		} else if (type == utils::LIST_AREA) {
			listAreas();
		} else if (type == utils::LIST_PRODUCT) {
			listProducts();
		} else if (type == utils::PRODUCT_IMAGE) {
			listProductImages(splitRequest);
		} else if (type == utils::STOCK_GENERAL) {
			listStockGeneral(splitRequest);
		} else if (type == utils::STOCK_AREA) {
			listStockArea(splitRequest);
		} else if (type == utils::STOCK_HISTORIC) {
			listStockHistoric(splitRequest);
		} else if (type == utils::PROCESS_FILE) {
			processFile(splitRequest);
		} else if (type == utils::PROCESS_VIDEO) {
			processVideo(splitRequest);
		} else if (type == utils::QUIT) {
			this->stop();
		} else if (type == utils::DETAILS_AREA){
			getAreas();
		}
		else if (type == utils::DETAILS_PRODUCT){
					detallesProductos();
				}
		else if (type == utils::IMAGES){
					imagenesDeProducto(splitRequest);
				}
		else {
			this->socket->send(utils::ERROR_MESSAGE);
		}
	}
}
Example #3
0
void *producer(void *arg)
{ 
  while(1) {
    int product = createProduct();
    if (product == 0) {break;}

    sem_wait(&empty);
    list_add(fifo, node_new_int(product));
    sem_post(&full);

    printf("Producer %d produced Item_%d (out of %d)\n",(int)arg,product,products_max);

    randomSleep();
  }
  pthread_exit(0);
}
Example #4
0
AddProduct::AddProduct(QSqlDatabase db)
{
    db.open();
    setFixedSize(400, 200);
    setWindowTitle("Ajouter un produit");
    setWindowIcon(QIcon("pictures/app_icon.png"));
    setWindowFlags(Qt::WindowCloseButtonHint);

    QPalette* palette = new QPalette();
    palette->setColor(QPalette::WindowText, Qt::white);
    QLinearGradient linearGradient(0, 0, 0, this->height());
    linearGradient.setColorAt(0, "#090808");
    linearGradient.setColorAt(1, "#242424");
    palette->setBrush(QPalette::Window, *(new QBrush(linearGradient)));

    this->setPalette(*palette);

    m_mainLayout     = new QVBoxLayout;
    m_addProductForm = new QFormLayout;
    m_buttonsLayout  = new QHBoxLayout;

    m_productName    = new QLineEdit;
    m_productName->setFixedHeight(25);
    m_productBarCode = new QLineEdit;
    m_productBarCode->setFixedHeight(25);
    m_productPrice   = new QLineEdit;
    m_productPrice->setFixedHeight(25);
    m_validate       = new QPushButton("Valider");
    m_abort          = new QPushButton("Annuler");

    m_addProductForm->addRow("&Nom du produit : ", m_productName);
    m_addProductForm->addRow("&Code barre : ", m_productBarCode);
    m_addProductForm->addRow("&Prix : ", m_productPrice);

    m_buttonsLayout->addWidget(m_validate);
    m_buttonsLayout->addWidget(m_abort);
    m_buttonsLayout->setAlignment(Qt::AlignCenter);

    m_mainLayout->addLayout(m_addProductForm);
    m_mainLayout->addLayout(m_buttonsLayout);
    this->setLayout(m_mainLayout);

    connect(m_validate, SIGNAL(clicked()), this, SLOT(createProduct()));
    connect(m_abort, SIGNAL(clicked()), this, SLOT(accept()));
}
Example #5
0
CNormalProduct * CNormalProduct::createProduct(const CEvaluationNode* node)
{
  CNormalProduct * product = new CNormalProduct();

  switch (node->mainType())
    {
      case CEvaluationNode::T_OPERATOR:  // PLUS(->createSum), MINUS(translated as +(-..)) and DIVIDE(->createFraction) do not occur.
      {
        if (node->getData() == "^")
          {
            if (CEvaluationNode::type(static_cast<const CEvaluationNode*>(node->getChild()->getSibling())->getType()) == CEvaluationNode::T_NUMBER)
              {
                CNormalItemPower* power = CNormalItemPower::createItemPower(node);
                product->multiply(*power);
                delete power;
                return product;
              }
            else
              {
                CNormalItem* item = CNormalItem::createItem(node);
                product->multiply(*item);
                delete item;
                return product;
              }
          }

        if (node->getData() == "*")
          {
            CNormalProduct* product1 = createProduct(static_cast<const CEvaluationNode*>(node->getChild()));
            CNormalProduct* product2 = createProduct(static_cast<const CEvaluationNode*>(node->getChild()->getSibling()));
            product->multiply(*product1);
            product->multiply(*product2);
            delete product1;
            delete product2;
            return product;
          }

        //default (case MODULUS):
        CNormalItem* item = CNormalItem::createItem(node);
        product->multiply(*item);
        delete item;
        return product;
      }

      case CEvaluationNode::T_NUMBER:
      {
        product->multiply(node->value());
        return product;
      }

      case CEvaluationNode::T_FUNCTION:
      {
        if (node->getData() == "-")
          {
            product->multiply(-1.0);
            CNormalProduct * product2 = createProduct(dynamic_cast<const CEvaluationNode*>(node->getChild()));
            product->multiply(*product2);
            delete product2;
            return product;
          }

        CNormalItem * item = CNormalItem::createItem(node);
        product->multiply(*item);
        delete item;
        return product;
      }

      default:   //cases VARIABLE, CONSTANT, CALL, CHOICE, LOGICAL, OBJECT, VECTOR
      {
        CNormalItem * item = CNormalItem::createItem(node);
        product->multiply(*item);
        delete item;
        return product;
      }
    }
}