示例#1
0
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;
        }

    }
示例#2
0
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;
}