+ Обновлен скрипт SQL - добавлена таблица с описанием типов USSD
+ Реализовано: просмотр и удаление USSD
+ Кнопка перезагрузки вкладки; кнопка обновления обновляет данные группы во вкладке
This commit is contained in:
Alexander Zhirov 2023-06-04 02:00:19 +03:00
parent 2ba510adac
commit 69ab43a4ec
11 changed files with 403 additions and 29 deletions

View file

@ -18,6 +18,7 @@ import structures;
import requests.numbers;
import requests.sms;
import requests.ussd;
static ServerInfo serverInfo;
@ -210,6 +211,18 @@ void postReq(HTTPServerRequest req, HTTPServerResponse res) {
case "delsms":
sendDelSMS(req, res);
break;
case "listussdgroups":
getListUSSDGroups(req, res);
break;
case "listgroupussd":
getListGroupUSSD(req, res);
break;
case "viewussd":
getViewUSSD(req, res);
break;
case "delussd":
sendDelUSSD(req, res);
break;
default:
res.redirect("/");
}

39
source/requests/ussd.d Normal file
View file

@ -0,0 +1,39 @@
module requests.ussd;
import vibe.vibe;
import response;
import structures;
import sql;
import singlog;
// Получить список всех групп USSD
void getListUSSDGroups(HTTPServerRequest req, HTTPServerResponse res) {
auto numbers = sqlGetUSSDNumbers();
render!("list_ussd_groups.dt", numbers)(res);
}
// Получить список USSD конкретной группы
void getListGroupUSSD(HTTPServerRequest req, HTTPServerResponse res) {
auto jsr = req.json;
res.writeJsonBody(sqlGetListUSSD(jsr["to"].get!string).serializeToJson());
}
// Просмотр USSD
void getViewUSSD(HTTPServerRequest req, HTTPServerResponse res) {
auto jsr = req.json;
auto dataUSSD = sqlGetUSSD(jsr["id"].to!int);
render!("ussd.dt", dataUSSD)(res);
}
// Удалить USSD
void sendDelUSSD(HTTPServerRequest req, HTTPServerResponse res) {
auto jsr = req.json;
int idussd = jsr["id"].get!int;
if (!sqlDeleteUSSD(idussd)) {
res.send(true, "Не удалось удалить USSD");
return;
}
res.send();
}

View file

@ -6,6 +6,12 @@ import structures;
import std.conv;
/*
Запросы для таблицы номеров телефонов
*/
GroupDB[] sqlGetListGroups() {
GroupDB[] groups;
try {
@ -201,6 +207,12 @@ bool sqlInsertNumber(NumberDB number) {
return true;
}
/*
Запросы для таблицы SMS
*/
SMSDB[] sqlGetSMSNumbers() {
SMSDB[] numbers;
try {
@ -293,3 +305,106 @@ bool sqlDeleteSMS(int idsms) {
}
return true;
}
/*
Запросы для таблицы USSD
*/
USSDDB[] sqlGetUSSDNumbers() {
USSDDB[] numbers;
try {
auto queryResult = pgsql.sql(
"select distinct da_to from da_ussd"
);
foreach (row; queryResult) {
USSDDB data;
data.to = row["da_to"];
numbers ~= data;
}
} catch (Exception e) {
log.e("Не удалось выполнить запрос к БД. " ~ e.msg);
}
return numbers;
}
USSDDB[] sqlGetListUSSD(string to) {
USSDDB[] ussd;
try {
auto queryResult = pgsql.sql(
"select
dau.da_id,
to_char(dau.da_date, 'YYYY.MM.DD HH24:MI:SS') da_date,
dau.da_to,
dau.da_type,
daut.da_comment da_type_comment,
dau.da_text
from da_ussd dau
inner join da_ussd_type daut
on dau.da_type = daut.da_id
where dau.da_to = ?
order by dau.da_date desc",
to
);
foreach (row; queryResult) {
USSDDB data;
data.id = row["da_id"].to!int;
data.date = row["da_date"];
data.to = row["da_to"];
data.type = row["da_type"].to!int;
data.type_comment = row["da_type_comment"];
data.text = row["da_text"];
ussd ~= data;
}
} catch (Exception e) {
log.e("Не удалось выполнить запрос к БД. " ~ e.msg);
}
return ussd;
}
USSDDB sqlGetUSSD(int idussd) {
USSDDB data;
try {
auto queryResult = pgsql.sql(
"select
da_id,
to_char(da_date, 'YYYY.MM.DD HH24:MI:SS') da_date,
da_to,
da_type,
da_text
from da_ussd
where da_id = ?",
idussd
);
foreach (row; queryResult) {
data.id = row["da_id"].to!int;
data.date = row["da_date"];
data.to = row["da_to"];
data.type = row["da_type"].to!int;
data.text = row["da_text"];
}
} catch (Exception e) {
log.e("Не удалось выполнить запрос к БД. " ~ e.msg);
}
return data;
}
bool sqlDeleteUSSD(int idussd) {
try {
pgsql.sql(
"delete from da_ussd where da_id = ?", idussd
);
} catch (Exception e) {
log.e("Ошибка удаления USSD в БД. " ~ e.msg);
return false;
}
return true;
}

View file

@ -44,3 +44,12 @@ struct SMSDB {
string from;
string text;
}
struct USSDDB {
int id;
string date;
string to;
int type;
string type_comment;
string text;
}