void CreateBooking::on_saveBookingBtn_clicked() { QMessageBox msgBox; //int room_id = ui->roomsList->currentData().toInt(); //ui->customer_name->completer()->currentIndex() //int customer_id = ui->c_customer_name->completer()->currentIndex().data(Qt::UserRole).toInt(); int customer_id = m_customer_id; //customer_id = ui->c_customer_name->completer()->currentIndex().data(Qt::UserRole).toInt(); /* QModelIndex index = ui->c_customer_name->completer()->currentIndex(); if (index.isValid()) { int row = index.row(); customer_id = ui->c_customer_name->completer->completionModel()->index(row, 0).data().toInt(); //qDebug() << key; } */ if(customer_id < 0) { msgBox.warning(this,"Save Booking","Wrong customer details."); return; } qDebug()<<"Customer Id:"<<customer_id; QDate booking_date_from = ui->from_date->date(); QDate booking_date_to = ui->to_date->date(); if(ui->room_status_table->rowCount() <= 0 ) { msgBox.warning(this,"Save Booking","Please check the availability of rooms before saving the booking."); return; } if(!this->checkRoomAvailability()) { //msgBox.warning(this,"Save Booking","Please check the availability of rooms before saving the booking."); return; } int customer_status = ui->customer_status->currentData().toInt(); int num_of_persons = ui->num_of_person->text().toInt(); int booking_status = ui->booking_status->currentData().toInt(); QString name_of_persons = ui->persons_name->toPlainText(); QString comments = ui->comments->toPlainText(); int payment_status = ui->payment_status->currentData().toInt(); QString check_in_time; if(customer_status == 2) { check_in_time = ui->check_in_date_time->dateTime().toString("yyyy-MM-dd hh:mm:ss"); } DbMysql* d = DbMysql::getInstance(); if(!d->getConnection().open()) { msgBox.critical(this,"Error","Failed to connect database.1"); } else { int booking_id = 0; if(mEditMode) { booking_id=mBookingId; } else booking_id = this->genBookingId(); //QSqlQuery query2("INSERT INTO `room_booking` VALUES (DEFAULT, '"+QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss")+"', '"+QString::number(customer_id)+"', '"+booking_date_from.toString("yyyy-MM-dd")+"', '"+booking_date_to.toString("yyyy-MM-dd")+"', '"+QString::number(room_id)+"', '"+QString::number(booking_status)+"', '"+QString::number(customer_status)+"', '"+QString::number(payment_status)+"', '"+QString::number(num_of_persons)+"','"+name_of_persons+"','"+comments+"');",d->getConnection()); QString sql0; if(mEditMode) { sql0 = "UPDATE `booking` set customer_id="+QString::number(customer_id)+",booking_from='"+booking_date_from.toString("yyyy-MM-dd")+"',booking_to='"+booking_date_to.toString("yyyy-MM-dd")+"',booking_status="+QString::number(booking_status)+", customer_status='"+QString::number(customer_status)+"',nop='"+QString::number(num_of_persons)+"',persons_name='"+name_of_persons+"',commnets='"+comments+"' where booking_id="+QString::number(mBookingId)+";"; } else { sql0 = "INSERT INTO `booking` VALUES (DEFAULT, '"+QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss")+"', '"+QString::number(customer_id)+"', '"+booking_date_from.toString("yyyy-MM-dd")+"', '"+booking_date_to.toString("yyyy-MM-dd")+"','"+((check_in_time.length() > 0)?check_in_time:"NULL")+"','NULL','',"+QString::number(booking_status)+", '"+QString::number(customer_status)+"', '"+QString::number(payment_status)+"', '"+QString::number(num_of_persons)+"','"+name_of_persons+"','"+comments+"');"; } QSqlQuery query1(sql0,d->getConnection()); if(query1.isActive()) { if(mEditMode) { QSqlQuery query11("delete from room_bookings where booking_id="+QString::number(mBookingId)+";",d->getConnection()); if(!query11.isActive()) { qDebug()<<query11.lastQuery(); } } QString sql = "Insert into room_bookings values "; QString sql2 = "Update rooms set room_state=1 where room_id in ("; bool comaFlag = false; QList<QListWidgetItem*> room_items = ui->room_list->selectedItems(); ui->room_status_table->setRowCount(room_items.size()); int row = 0; foreach (QListWidgetItem* item, room_items) { if(comaFlag)sql+=","; sql += "(DEFAULT,"+ui->room_status_table->item(row,1)->text()+","+item->data(Qt::UserRole).toString()+",'"+booking_date_from.toString("yyyy-MM-dd")+"', '"+((ui->single_day->isChecked())?booking_date_from.toString("yyyy-MM-dd"):booking_date_to.toString("yyyy-MM-dd"))+"',"+QString::number(booking_id)+")"; sql2 += item->data(Qt::UserRole).toString(); comaFlag = true; row++; } sql2+= ");"; if(!mEditMode) { if(check_in_time.length() > 0) { QSqlQuery query3(sql2,d->getConnection()); } } if(ui->payment_status->currentData(Qt::UserRole).toInt() == 3) { QSqlQuery query4("insert into advance_payments values (DEFAULT,"+ui->advanceMoney->text()+","+QString::number(booking_id)+",NOW());",d->getConnection()); if(!query4.isActive()) { qDebug()<<query4.lastQuery(); qDebug()<<query4.lastError(); return; } } QSqlQuery query2(sql,d->getConnection()); if(query2.isActive()) { if(mEditMode) { msgBox.information(this,"Edit Booking","Update Booking done."); } else { msgBox.information(this,"Booking","Booking done."); } this->mpParent->populateBookingLog(); this->mpParent->createCalendar(); this->close(); } else { qDebug()<<query2.lastQuery(); qDebug()<<query2.lastError(); return; } } else { qDebug()<<query1.lastQuery(); qDebug()<<query1.lastError(); return; } }
int main (){ int i, num = 1, lido=0; for(i = 0; i < 12; i++){ contas[i] = NULL; compras[i] = NULL; } while(num > 0 && num < 15){ system("clear"); carregaTextArt("textart-big.txt"); puts("\n"); num = menuOpcoes(); printf("Opção: %d\n",num); switch(num){ case 1: { if(lido){ for(i = 0; i < 12; i++){ contas[i] = NULL; compras[i] = NULL; } for(i = 0; i < 26; i++){ clientes[i] = NULL; produtos[i] = NULL; } } query1(); lido=1; break; } case 2: { if(lido) query2(); } break; case 3: { if(lido) query3(); } break; case 4: { if(lido) query4(); } break; case 5: { if(lido) query5(); } break; case 6: { if(lido) query6(); } break; case 7: { if(lido) query7(); } break; case 8: { if(lido) query8(); } break; case 9: { if(lido) query9(); } break; case 10: { if(lido) query10(); } break; case 11: { if(lido) query11(); } break; case 12: { if(lido) query12(); } break; case 13: { if(lido) query13(); } break; case 14: { if(lido) query14(); } break; } } return 0; }