mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-28 19:55:48 +03:00
Доделал остальные операции по редактированию
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by QtCreator 4.11.1, 2024-12-10T17:52:46. -->
|
||||
<!-- Written by QtCreator 4.11.1, 2024-12-11T17:49:41. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>EnvironmentId</variable>
|
||||
|
||||
@@ -3,6 +3,10 @@
|
||||
#include "FileData.h"
|
||||
#include "tools.h"
|
||||
|
||||
#include "instructor.h"
|
||||
#include "trainee.h"
|
||||
#include "group.h"
|
||||
|
||||
#include <QDir>
|
||||
|
||||
DataParser::DataParser(QObject *parent) :
|
||||
@@ -71,7 +75,7 @@ void DataParser::createAuthMessage(ClientAutorization *auth)
|
||||
file.close();
|
||||
}
|
||||
|
||||
void DataParser::createQueryToDBMessage(ClientQueryToDB *queryToDB, int id)
|
||||
void DataParser::createQueryToDBMessage(ClientQueryToDB *queryToDB, int id, void* data)
|
||||
{
|
||||
QFile file(tempName);
|
||||
file.open(QIODevice::WriteOnly);
|
||||
@@ -86,6 +90,48 @@ void DataParser::createQueryToDBMessage(ClientQueryToDB *queryToDB, int id)
|
||||
if(id)
|
||||
xmlWriter.writeAttribute("id", QString::number(id));
|
||||
|
||||
if(data)
|
||||
{
|
||||
if(queryToDB->typeQuery == TypeQueryToDB::TYPE_QUERY_EDIT_INSTRUCTOR)
|
||||
{
|
||||
Instructor* instructor = (Instructor*)data;
|
||||
if(instructor)
|
||||
{
|
||||
xmlWriter.writeAttribute("instructor_id", QString::number(instructor->getID()));
|
||||
xmlWriter.writeAttribute("name", instructor->getName());
|
||||
xmlWriter.writeAttribute("login", instructor->getLogin());
|
||||
xmlWriter.writeAttribute("password", instructor->getPassword());
|
||||
xmlWriter.writeAttribute("is_admin", QString::number(instructor->getIsAdmin()));
|
||||
xmlWriter.writeAttribute("archived", QString::number(instructor->getArchived()));
|
||||
xmlWriter.writeAttribute("logged_in", QString::number(instructor->getLoggedIn()));
|
||||
}
|
||||
}
|
||||
else if(queryToDB->typeQuery == TypeQueryToDB::TYPE_QUERY_EDIT_TRAINEE)
|
||||
{
|
||||
Trainee* trainee = (Trainee*)data;
|
||||
if(trainee)
|
||||
{
|
||||
xmlWriter.writeAttribute("trainee_id", QString::number(trainee->getID()));
|
||||
xmlWriter.writeAttribute("name", trainee->getName());
|
||||
xmlWriter.writeAttribute("login", trainee->getLogin());
|
||||
xmlWriter.writeAttribute("password", trainee->getPassword());
|
||||
xmlWriter.writeAttribute("archived", QString::number(trainee->getArchived()));
|
||||
xmlWriter.writeAttribute("logged_in", QString::number(trainee->getLoggedIn()));
|
||||
xmlWriter.writeAttribute("group_trainee", QString::number(trainee->getGroup().getID()));
|
||||
xmlWriter.writeAttribute("computer_trainee", QString::number(trainee->getComputer().getID()));
|
||||
}
|
||||
}
|
||||
else if(queryToDB->typeQuery == TypeQueryToDB::TYPE_QUERY_EDIT_GROUP)
|
||||
{
|
||||
Group* group = (Group*)data;
|
||||
if(group)
|
||||
{
|
||||
xmlWriter.writeAttribute("group_id", QString::number(group->getID()));
|
||||
xmlWriter.writeAttribute("name", group->getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
xmlWriter.writeEndElement();
|
||||
xmlWriter.writeEndElement();
|
||||
xmlWriter.writeEndDocument();
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define DATAPARSER_H
|
||||
|
||||
#include "FileData.h"
|
||||
#include "instructor.h"
|
||||
|
||||
#include <QObject>
|
||||
#include <Datas.h>
|
||||
@@ -21,7 +22,7 @@ public:
|
||||
void saveClientSettrings(QString language,bool isAutoStart);
|
||||
void createFileDataList(QList<FileData> fileDataList,QString filename);
|
||||
void createAuthMessage(ClientAutorization *auth);
|
||||
void createQueryToDBMessage(ClientQueryToDB *queryToDB, int id = 0);
|
||||
void createQueryToDBMessage(ClientQueryToDB *queryToDB, int id = 0, void* data = nullptr);
|
||||
void createDeAuthMessage(ClientDeAutorization *deAuth);
|
||||
void createAuthData(ServerAuthorization *serverAuth);
|
||||
void createAuthDataOffline(QString username,QString pass);
|
||||
|
||||
@@ -46,7 +46,14 @@ enum TypeQueryToDB{
|
||||
TYPE_QUERY_GET_LIST_INSTRUCTORS,
|
||||
TYPE_QUERY_GET_ALL_LISTS,
|
||||
TYPE_QUERY_NEW_INSTRUCTOR,
|
||||
TYPE_QUERY_DEL_INSTRUCTOR
|
||||
TYPE_QUERY_DEL_INSTRUCTOR,
|
||||
TYPE_QUERY_EDIT_INSTRUCTOR,
|
||||
TYPE_QUERY_NEW_GROUP,
|
||||
TYPE_QUERY_DEL_GROUP,
|
||||
TYPE_QUERY_EDIT_GROUP,
|
||||
TYPE_QUERY_NEW_TRAINEE,
|
||||
TYPE_QUERY_DEL_TRAINEE,
|
||||
TYPE_QUERY_EDIT_TRAINEE
|
||||
};
|
||||
|
||||
class ClientQueryToDB{
|
||||
|
||||
@@ -46,7 +46,7 @@ bool ConnectorToServer::deAuthorizationInstructorLocal(QString login)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ConnectorToServer::sendQueryToDB(TypeQueryToDB typeQuery, int id)
|
||||
bool ConnectorToServer::sendQueryToDB(TypeQueryToDB typeQuery, int id, void* data)
|
||||
{
|
||||
if (!client->getIsConnected())
|
||||
{
|
||||
@@ -56,7 +56,7 @@ bool ConnectorToServer::sendQueryToDB(TypeQueryToDB typeQuery, int id)
|
||||
ClientQueryToDB *queryToDB = new ClientQueryToDB;
|
||||
queryToDB->typeQuery = typeQuery;
|
||||
|
||||
dataParser->createQueryToDBMessage(queryToDB, id);
|
||||
dataParser->createQueryToDBMessage(queryToDB, id, data);
|
||||
emit sigSendQueryToDB();
|
||||
|
||||
return true;
|
||||
@@ -128,6 +128,16 @@ bool ConnectorToServer::isLoggedInInstructor(int id)
|
||||
return false;
|
||||
}
|
||||
|
||||
Instructor ConnectorToServer::getInstructor(int id)
|
||||
{
|
||||
for(Instructor instructor : listInstructors)
|
||||
{
|
||||
if(instructor.getID() == id)
|
||||
return instructor;
|
||||
}
|
||||
return Instructor();
|
||||
}
|
||||
|
||||
QList<Trainee> ConnectorToServer::getListTraineesInGroup(int id)
|
||||
{
|
||||
QList<Trainee> list;
|
||||
@@ -163,6 +173,26 @@ bool ConnectorToServer::isLoggedInTrainee(int id)
|
||||
return false;
|
||||
}
|
||||
|
||||
Trainee ConnectorToServer::getTrainee(int id)
|
||||
{
|
||||
for(Trainee trainee : listTrainees)
|
||||
{
|
||||
if(trainee.getID() == id)
|
||||
return trainee;
|
||||
}
|
||||
return Trainee();
|
||||
}
|
||||
|
||||
Group ConnectorToServer::getGroup(int id)
|
||||
{
|
||||
for(Group group : listGroups)
|
||||
{
|
||||
if(group.getID() == id)
|
||||
return group;
|
||||
}
|
||||
return Group();
|
||||
}
|
||||
|
||||
void ConnectorToServer::slot_AnswerQueryToDB(QList<Instructor>* listInstructors,
|
||||
QList<Trainee>* listTrainees,
|
||||
QList<Group>* listGroups)
|
||||
|
||||
@@ -22,7 +22,8 @@ public:
|
||||
bool authorizationInstructorLocal(QString login, QString password);
|
||||
bool deAuthorizationInstructorLocal(QString login);
|
||||
|
||||
bool sendQueryToDB(TypeQueryToDB typeQuery, int id = 0);
|
||||
//bool sendQueryToDB(TypeQueryToDB typeQuery, int id = 0, Instructor* instructor = nullptr);
|
||||
bool sendQueryToDB(TypeQueryToDB typeQuery, int id = 0, void* data = nullptr);
|
||||
|
||||
public:
|
||||
//Запросы к БД (локальной)
|
||||
@@ -36,10 +37,13 @@ public:
|
||||
bool isArchivedInstructor(int id);
|
||||
bool isAdminInstructor(int id);
|
||||
bool isLoggedInInstructor(int id);
|
||||
Instructor getInstructor(int id);
|
||||
|
||||
QList<Trainee> getListTraineesInGroup(int id);
|
||||
bool isArchivedTrainee(int id);
|
||||
bool isLoggedInTrainee(int id);
|
||||
Trainee getTrainee(int id);
|
||||
Group getGroup(int id);
|
||||
|
||||
public slots:
|
||||
void slot_AnswerQueryToDB(QList<Instructor>* listInstructors,
|
||||
|
||||
@@ -31,7 +31,6 @@ EditorInstructors::~EditorInstructors()
|
||||
void EditorInstructors::on_btnNewInstructor_clicked()
|
||||
{
|
||||
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_NEW_INSTRUCTOR);
|
||||
|
||||
return;
|
||||
/*
|
||||
if(int id_instructor = dbLMS->newInstructor())
|
||||
@@ -127,36 +126,38 @@ void EditorInstructors::on_btnToOrFromArchive_clicked()
|
||||
|
||||
int id = treeItemCurrent->text(ColumnsTreeInsructors::clmn_ID).toInt();
|
||||
|
||||
Instructor instructor = dbLMS->getInstructor(id);
|
||||
Instructor instructor = connectorToServer->getInstructor(id);
|
||||
if(instructor.getID() == 0)
|
||||
return;
|
||||
|
||||
if(instructor.getArchived())
|
||||
if(connectorToServer->isArchivedInstructor(id)/* instructor.getArchived()*/)
|
||||
{//Архивный
|
||||
instructor.setArchived(false);
|
||||
if(int id_edit = dbLMS->editInstructor(instructor))
|
||||
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_EDIT_INSTRUCTOR, id, &instructor);
|
||||
/*if(int id_edit = dbLMS->editInstructor(instructor))
|
||||
{
|
||||
loadInstructorsFromDB();
|
||||
setCurrentInstructor(id_edit);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
else
|
||||
{//Не Архивный
|
||||
if(dbLMS->isLoggedInInstructor(id))
|
||||
if(connectorToServer->isLoggedInInstructor(id))
|
||||
{//Инструктор залогирован!
|
||||
QMessageBox::critical(this, tr("Error!"), tr("You cannot archive a logged-in instructor."));
|
||||
return;
|
||||
}
|
||||
|
||||
instructor.setArchived(true);
|
||||
if(int id_edit = dbLMS->editInstructor(instructor))
|
||||
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_EDIT_INSTRUCTOR, id, &instructor);
|
||||
/*if(int id_edit = dbLMS->editInstructor(instructor))
|
||||
{
|
||||
if(!archiveVisible)
|
||||
ui->btnArchive->click();
|
||||
|
||||
loadInstructorsFromDB();
|
||||
setCurrentInstructor(id_edit);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -175,7 +176,7 @@ void EditorInstructors::on_btnEdit_clicked()
|
||||
|
||||
int id = treeItemCurrent->text(ColumnsTreeInsructors::clmn_ID).toInt();
|
||||
|
||||
if(dbLMS->isLoggedInInstructor(id))
|
||||
if(connectorToServer->isLoggedInInstructor(id))
|
||||
{//Инструктор залогирован!
|
||||
QMessageBox::critical(this, tr("Error!"), tr("You cannot archive a logged-in instructor."));
|
||||
return;
|
||||
@@ -183,7 +184,7 @@ void EditorInstructors::on_btnEdit_clicked()
|
||||
|
||||
DialogEditInstructor dlg(this);
|
||||
|
||||
Instructor instructor = dbLMS->getInstructor(id);
|
||||
Instructor instructor = connectorToServer->getInstructor(id);
|
||||
if(instructor.getID() == 0)
|
||||
return;
|
||||
|
||||
@@ -197,7 +198,11 @@ void EditorInstructors::on_btnEdit_clicked()
|
||||
{
|
||||
Instructor instructor_edit = dlg.getInstructor();
|
||||
|
||||
if(int id_edit = dbLMS->editInstructor(instructor_edit))
|
||||
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_EDIT_INSTRUCTOR, id, &instructor_edit);
|
||||
|
||||
return;
|
||||
/*
|
||||
if(int id_edit = connectorToServer->editInstructor(instructor_edit))
|
||||
{//Отредактировано
|
||||
loadInstructorsFromDB();
|
||||
setCurrentInstructor(id_edit);
|
||||
@@ -208,6 +213,7 @@ void EditorInstructors::on_btnEdit_clicked()
|
||||
dlg.setInstructor(instructor_edit);
|
||||
continue;
|
||||
}
|
||||
*/
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -31,6 +31,9 @@ EditorTrainees::~EditorTrainees()
|
||||
|
||||
void EditorTrainees::on_btnNewGroup_clicked()
|
||||
{
|
||||
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_NEW_GROUP);
|
||||
return;
|
||||
/*
|
||||
if(int id_group = dbLMS->newGroup())
|
||||
{
|
||||
loadTraineesFromDB();
|
||||
@@ -75,7 +78,7 @@ void EditorTrainees::on_btnNewGroup_clicked()
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
void EditorTrainees::on_btnDeleteGroup_clicked()
|
||||
@@ -89,7 +92,7 @@ void EditorTrainees::on_btnDeleteGroup_clicked()
|
||||
{//Выбрана группа
|
||||
int id_group = treeItemCurrent->text(ColumnsTreeTrainees::clmn_ID).toInt();
|
||||
|
||||
if(dbLMS->getListTraineesInGroup(id_group).count() > 0)
|
||||
if(connectorToServer->getListTraineesInGroup(id_group).count() > 0)
|
||||
{
|
||||
QMessageBox::critical(this, tr("Editing error!"), tr("The group is not empty.\nIt is not possible to delete a non-empty group."));
|
||||
return;
|
||||
@@ -98,6 +101,8 @@ void EditorTrainees::on_btnDeleteGroup_clicked()
|
||||
{//Пустая группа
|
||||
if(QMessageBox::warning(this, tr("Attention!"), tr("The deletion will be irrevocable.\nDelete anyway?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
|
||||
{
|
||||
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_DEL_GROUP, id_group);
|
||||
/*
|
||||
if(int id = dbLMS->delGroup(id_group))
|
||||
{//Удалено
|
||||
loadTraineesFromDB();
|
||||
@@ -105,7 +110,7 @@ void EditorTrainees::on_btnDeleteGroup_clicked()
|
||||
else
|
||||
{
|
||||
//Ошибка удаления
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -122,6 +127,11 @@ void EditorTrainees::on_btnNewTrainee_clicked()
|
||||
if(treeItemParent == nullptr)
|
||||
{//Выбрана группа. Можно добавить Обучаемого
|
||||
int id_group = treeItemCurrent->text(ColumnsTreeTrainees::clmn_ID).toInt();
|
||||
|
||||
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_NEW_TRAINEE, id_group);
|
||||
return;
|
||||
|
||||
/*
|
||||
if(int id_trainee = dbLMS->newTrainee(id_group))
|
||||
{
|
||||
loadTraineesFromDB();
|
||||
@@ -170,7 +180,7 @@ void EditorTrainees::on_btnNewTrainee_clicked()
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -188,7 +198,7 @@ void EditorTrainees::on_btnDeleteTrainee_clicked()
|
||||
int id_trainee = treeItemCurrent->text(ColumnsTreeTrainees::clmn_ID).toInt();
|
||||
int id_group = treeItemParent->text(ColumnsTreeTrainees::clmn_ID).toInt();
|
||||
|
||||
if(dbLMS->isLoggedInTrainee(id_trainee))
|
||||
if(connectorToServer->isLoggedInTrainee(id_trainee))
|
||||
{//Обучаемый залогирован!
|
||||
QMessageBox::critical(this, tr("Error!"), tr("You cannot delete a logged-in trainee."));
|
||||
return;
|
||||
@@ -196,6 +206,8 @@ void EditorTrainees::on_btnDeleteTrainee_clicked()
|
||||
|
||||
if(QMessageBox::warning(this, tr("Attention!"), tr("The deletion will be irrevocable.\nDelete anyway?"), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
|
||||
{
|
||||
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_DEL_TRAINEE, id_trainee);
|
||||
/*
|
||||
if(int id = dbLMS->delTrainee(id_trainee))
|
||||
{//Удалено
|
||||
loadTraineesFromDB();
|
||||
@@ -204,7 +216,7 @@ void EditorTrainees::on_btnDeleteTrainee_clicked()
|
||||
else
|
||||
{
|
||||
//Ошибка удаления
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -222,13 +234,15 @@ void EditorTrainees::on_btnToOrFromArchiveTrainee_clicked()
|
||||
|
||||
int id_trainee = treeItemCurrent->text(ColumnsTreeTrainees::clmn_ID).toInt();
|
||||
|
||||
Trainee trainee = dbLMS->getTrainee(id_trainee);
|
||||
Trainee trainee = connectorToServer->getTrainee(id_trainee);
|
||||
if(trainee.getID() == 0)
|
||||
return;
|
||||
|
||||
if(trainee.getArchived())
|
||||
if(connectorToServer->isArchivedTrainee(id_trainee) /*trainee.getArchived()*/)
|
||||
{//Архивный
|
||||
trainee.setArchived(false);
|
||||
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_EDIT_TRAINEE, id_trainee, &trainee);
|
||||
/*
|
||||
if(int id = dbLMS->editTrainee(trainee))
|
||||
{//Отредактировано
|
||||
loadTraineesFromDB();
|
||||
@@ -237,17 +251,19 @@ void EditorTrainees::on_btnToOrFromArchiveTrainee_clicked()
|
||||
else
|
||||
{
|
||||
//Ошибка редактирования
|
||||
}
|
||||
}*/
|
||||
}
|
||||
else
|
||||
{//Не Архивный
|
||||
if(dbLMS->isLoggedInTrainee(id_trainee))
|
||||
if(connectorToServer->isLoggedInTrainee(id_trainee))
|
||||
{//Обучаемый залогирован!
|
||||
QMessageBox::critical(this, tr("Error!"), tr("You cannot archive a logged-in trainee."));
|
||||
return;
|
||||
}
|
||||
|
||||
trainee.setArchived(true);
|
||||
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_EDIT_TRAINEE, id_trainee, &trainee);
|
||||
/*
|
||||
if(int id = dbLMS->editTrainee(trainee))
|
||||
{//Отредактировано
|
||||
if(!archiveVisible)
|
||||
@@ -259,7 +275,7 @@ void EditorTrainees::on_btnToOrFromArchiveTrainee_clicked()
|
||||
else
|
||||
{
|
||||
//Ошибка редактирования
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -280,7 +296,7 @@ void EditorTrainees::on_btnEdit_clicked()
|
||||
|
||||
DialogEditGroup dlg(this);
|
||||
|
||||
Group group = dbLMS->getGroup(id_group);
|
||||
Group group = connectorToServer->getGroup(id_group);
|
||||
if(group.getID() == 0)
|
||||
return;
|
||||
|
||||
@@ -294,6 +310,9 @@ void EditorTrainees::on_btnEdit_clicked()
|
||||
{
|
||||
Group group_edit = dlg.getGroup();
|
||||
|
||||
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_EDIT_GROUP, id_group, &group_edit);
|
||||
return;
|
||||
/*
|
||||
if(int id = dbLMS->editGroup(group_edit))
|
||||
{//Отредактировано
|
||||
loadTraineesFromDB();
|
||||
@@ -304,7 +323,7 @@ void EditorTrainees::on_btnEdit_clicked()
|
||||
{
|
||||
dlg.setGroup(group_edit);
|
||||
continue;
|
||||
}
|
||||
}*/
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -322,7 +341,7 @@ void EditorTrainees::on_btnEdit_clicked()
|
||||
|
||||
int id_trainee = treeItemCurrent->text(ColumnsTreeTrainees::clmn_ID).toInt();
|
||||
|
||||
if(dbLMS->isLoggedInTrainee(id_trainee))
|
||||
if(connectorToServer->isLoggedInTrainee(id_trainee))
|
||||
{//Обучаемый залогирован!
|
||||
QMessageBox::critical(this, tr("Error!"), tr("You cannot archive a logged-in trainee."));
|
||||
return;
|
||||
@@ -330,7 +349,7 @@ void EditorTrainees::on_btnEdit_clicked()
|
||||
|
||||
DialogEditTrainee dlg(this);
|
||||
|
||||
Trainee trainee = dbLMS->getTrainee(id_trainee);
|
||||
Trainee trainee = connectorToServer->getTrainee(id_trainee);
|
||||
if(trainee.getID() == 0)
|
||||
return;
|
||||
|
||||
@@ -344,6 +363,9 @@ void EditorTrainees::on_btnEdit_clicked()
|
||||
{
|
||||
Trainee trainee_edit = dlg.getTrainee();
|
||||
|
||||
connectorToServer->sendQueryToDB(TypeQueryToDB::TYPE_QUERY_EDIT_TRAINEE, id_trainee, &trainee_edit);
|
||||
return;
|
||||
/*
|
||||
if(int id = dbLMS->editTrainee(trainee_edit))
|
||||
{//Отредактировано
|
||||
loadTraineesFromDB();
|
||||
@@ -354,7 +376,7 @@ void EditorTrainees::on_btnEdit_clicked()
|
||||
{
|
||||
dlg.setTrainee(trainee_edit);
|
||||
continue;
|
||||
}
|
||||
}*/
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user