QSqlQuery qwerty;
qwerty.exec("SELECT * FROM Task_inside_priems WHERE id_task="+QString::number(id_task_chosen)
+" AND id_priem="+QString::number(list_priems_alreadyintable.at(i)));
qwerty.next();
item->setText(QString::number(qwerty.value(2).toInt()));
tablewidget_priems->setItem(i,k,item);
}
}
}
}
void WorkWithTask::pushbutton_Add_ok() //добавление параметров пары
{
DbConnect db;//ПОД СЕБЯ СТРОЙ!!!!!!!!!!!
QSqlQuery query=db.dbExec("SELECT * FROM Parametres_left");
int size=db.dbSize(query);
int row_choosen_left=-1;
int row_choosen_right=-1;
int flag=1;
int flag_right=1;
for(int i=0;i<size;i++){
if(tablewidget_parametres_left->item(i,0)->isSelected()){flag=0;row_choosen_left=i;}
if(tablewidget_parametres_right->item(i,0)->isSelected()){flag_right=0;row_choosen_right=i;}
}
if(((flag==1)||(flag_right==1))){
QMessageBox::information(this,"Ошибка","Сначала выберите оба параметра!");
return;
}
query.seek(-1);
int id_left; int id_right;
QString left_name;
QString right_name;
while(query.next()){
if(query.value(1).toString()==tablewidget_parametres_left->item(row_choosen_left,0)->text()){
id_left=query.value(0).toInt();
left_name=tablewidget_parametres_left->item(row_choosen_left,0)->text();
}
if(query.value(1).toString()==tablewidget_parametres_right->item(row_choosen_right,0)->text()){
id_right=query.value(0).toInt();
right_name=tablewidget_parametres_right->item(row_choosen_right,0)->text();
}
}
//будем добавлять в список пар-ов
bool flagbool=true;
for(int i=0;i<list_idparams_left_alreadyintable.size();i++){//проверка на уже выбранные пары параметров
if((id_left==list_idparams_left_alreadyintable.at(i))&&(id_right==list_idparams_right_alreadyintable.at(i))){
flagbool=false;
break;
}
}
if(!flagbool){
QMessageBox::information(this,"Ошибка!","Вы пытаесь добавить уже выбранную пару параметров!");
return;
}
query.clear();
query.exec("SELECT * FROM Altshuller WHERE id_parametr_left="+QString::number(id_left)
+" AND id_parametr_right="+QString::number(id_right));
size=db.dbSize(query);//теперь в сайзе приемы из альтшуллера
if(size==0){
QMessageBox::information(this,"Ошибка!","Извините, но для выбранной пары нет приемов");
return;
}
list_idparams_left_alreadyintable.append(id_left);
list_idparams_right_alreadyintable.append(id_right);
QListWidgetItem *item = new QListWidgetItem;
item->setText(left_name+" - "+right_name);
listwidget_params->addItem(item);
//теперь надо добавлять приемы к существующим(или не существующим)
query.seek(-1);
for(int i=0;i<size;i++){//добавляем только новые
query.next();
bool flag2=true;
for(int k=0;k<list_priems_alreadyintable.size();k++){
if(query.value(2).toInt()==list_priems_alreadyintable.at(k)){
flag2=false;
break;
}
}
if(flag2){
list_priems_alreadyintable.append(query.value(2).toInt());
QSqlQuery query_task_list;
query_task_list.exec("SELECT * FROM Task_list WHERE id_user="+QString::number(this->getUserID()));
float sum=0;float amount=0;
while(query_task_list.next()){
int id_task=query_task_list.value(0).toInt();
QSqlQuery query_task_inside;
query_task_inside.exec("SELECT * FROM Task_inside_priems WHERE id_task="+QString::number(id_task)
+" AND id_priem="+QString::number(list_priems_alreadyintable.at(list_priems_alreadyintable.size()-1)));
while(query_task_inside.next()){//тут имеем все оценки конкретного приема конкретного юзера, в теории
QSqlQuery query_rates;
query_rates.exec("SELECT * FROM Rates WHERE id_rate="+QString::number(query_task_inside.value(2).toInt()));
query_rates.next();
if(query_rates.value(2).toInt()==0){
continue;
}
amount++;
sum+=query_rates.value(2).toInt();
}
}
float overallRate;
if(amount==0){
overallRate=0;
}else{
overallRate=round((sum/amount)*100)/100;
}
list_priems_overallRate_alreadyintable.append(overallRate);
// QMessageBox::information(this,"",QString::number(overallRate));
}
}
tablewidget_priems->clear();//чистим значения из табл приемов и вставляем по новой
tablewidget_priems->setRowCount(0);
QStringList strlist;
strlist.append("Прием");strlist.append("Общая оценка");strlist.append("Ваша оценка");
tablewidget_priems->setHorizontalHeaderLabels(strlist);
//сортируем для начала по хай рейту
for(int i=0; i<list_priems_overallRate_alreadyintable.size()-1;i++){ //сортируем по убыванию
for(int j=0;j<list_priems_overallRate_alreadyintable.size()-i-1;j++){
if(list_priems_overallRate_alreadyintable[j]<list_priems_overallRate_alreadyintable[j+1]){
float b=list_priems_overallRate_alreadyintable[j];
list_priems_overallRate_alreadyintable[j]=list_priems_overallRate_alreadyintable[j+1];
list_priems_overallRate_alreadyintable[j+1]=b;
int b1=list_priems_alreadyintable[j];
list_priems_alreadyintable[j]=list_priems_alreadyintable[j+1];
list_priems_alreadyintable[j+1]=b1;
}
}
}
for(int i=0;i<list_priems_alreadyintable.size();i++){
tablewidget_priems->insertRow(i);
for(int k=0;k<3;k++){
if(k==0){
QSqlQuery query_output;
query_output.exec("SELECT * FROM Priems WHERE id_priem="+QString::number(list_priems_alreadyintable.at(i)));
query_output.next();
QTableWidgetItem *item = new QTableWidgetItem;
item->setFlags(item->flags() ^ Qt::ItemIsEditable);//УБИРАЕТ ИЗ ФЛАГОВ ЕДИТАБЛ
item->setText(query_output.value(0).toString()+" - "+query_output.value(1).toString());
tablewidget_priems->setItem(i,k,item);
}
if(k==1){
QTableWidgetItem *item = new QTableWidgetItem;
item->setFlags(item->flags() ^ Qt::ItemIsEditable);//УБИРАЕТ ИЗ ФЛАГОВ ЕДИТАБЛ
item->setText(QString::number(list_priems_overallRate_alreadyintable.at(i)));
tablewidget_priems->setItem(i,k,item);
}
if(k==2){
QTableWidgetItem *item = new QTableWidgetItem;
QSqlQuery query_tooltip;
query_tooltip.exec("SELECT * FROM Rates");QString str_tooltip=("");
while(query_tooltip.next()){
str_tooltip.append(QString::number(query_tooltip.value(2).toInt())+" - "+query_tooltip.value(1).toString()+"\n");
}
item->setToolTip(str_tooltip);
QStringList strlist=label_task_name->text().split(": ");
if(strlist.at(1)!="Новая"){
QSqlQuery query_priem;
query_priem.exec("SELECT * FROM Task_inside_priems WHERE id_priem="+QString::number(list_priems_alreadyintable.at(i))
+" AND id_task="+QString::number(id_task_chosen));
int size=0;int rate;
while(query_priem.next()){
size++;
rate=query_priem.value(2).toInt();
}
if(size==0){
item->setText("0");
tablewidget_priems->setItem(i,k,item);
}else{
item->setText(QString::number(rate));
tablewidget_priems->setItem(i,k,item);
}
}else{
item->setText("0");
tablewidget_priems->setItem(i,k,item);
}
}
}
}
}
void WorkWithTask::pushbutton_give_rates_ok()
{
}
void WorkWithTask::tablewidget_priems_data_changed(int row, int col)
{
if(col==2){
// DbConnect db;
QSqlQuery query;
query.exec("SELECT * FROM RATES WHERE which_rate="+tablewidget_priems->item(row,col)->text());