Files
CoreGrade/coregrade/src/shared_tool/groups.cc
T
2020-02-05 07:15:32 -05:00

116 lines
3.6 KiB
C++

// Account management toosl
#include "clog.h"
#include "cgi.h"
#include "input.h"
#include "coregrade_api.h"
#include "groups.h"
#include "email.h"
#include "safestring.h"
#include <string>
#include "pgsql.h"
#include "pgsql_wrapper.h"
#include "cfg.h"
#include <curl/curl.h>
long groups_calls(CVars in, CVars &out) {
logfmt(logINFO, "groups_calls()");
out["result"] = "YES I GET TO BACK END";
long action = REQ_LONG(in, "action", 0, -1);
switch (action) {
case COREGRADE_GROUP_ACCEPTGROUP:
//return LoginCoreGradeAccount( in, out);
break;
case COREGRADE_GROUP_INVITEGROUP:
//return CreateCoreGradeAccountPending(in, out);
break;
case COREGRADE_GROUP_CREATEGROUP:
return CreateCoreGradeGroup(in, out);
break;
}
logfmt(logINFO, "/groups_calls()");
return 0;
}
long CreateCoreGradeGroup(CVars in, CVars &out) {
long ret = PHP_API_BAD_PARAM;
out = in;
REQ_STRING(in, "group_name", 5, 99, "(.*)");
OPTIONAL(in, "description") REQ_STRING(in, "description", 1, 249, "(.*)");
REQ_LONG(in, "contribute", 1, -1);
REQ_LONG(in, "member_id", 1, -1);
OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)");
CVars x;
x["group_name"] = in["group_name"];
x["group_name"].set_valid(true);
x["description"] = in["description"];
x["description"].set_valid(true);
x["invite"] = "1";
x["invite"].set_valid(true);
x["member_id"] = in["member_id"];
x["member_id"].set_valid(true);
x["loc"] = in["loc"];
x["loc"].set_valid(true);
ret = insert_db_record(DBS_VALID, "members_groups", "members_groups_id_seq", x);
if (ret > 0) {
if (in["contribute"].Long() > 0) {
pgsql_exec("UPDATE members_groups SET contribute=NOW() WHERE id=%lu ", ret);
}
out["group_id"] = ret;
out["group_id"].set_valid(true);
x["group_id"] = ret;
x["group_id"].set_valid(true);
CVars y;
y["member_id"] = in["member_id"];
y["member_id"].set_valid(true);
y["admin_status"] = in["member_id"];
y["admin_status"].set_valid(true);
y["group_id"] = out["group_id"];
y["group_id"].set_valid(true);
y["loc"] = in["loc"];
y["loc"].set_valid(true);
//ALTER TABLE group_members ADD admin_status INT REFERENCES members(id);
CoreGradeGroupCreateMember(y, out);
CreateCoreGradeGroupMail(y);
}
return ret;
}
long CoreGradeGroupCreateMember(CVars in, CVars &out) {
long ret = PHP_API_BAD_PARAM;
out = in;
REQ_LONG(in, "member_id", 1, -1);
REQ_LONG(in, "group_id", 1, -1);
OPTIONAL(in, "loc") REQ_STRING(in, "loc", 3, 15, "(.*)");
CVars x;
x["group_id"] = in["group_id"];
x["group_id"].set_valid(true);
x["member_id"] = in["member_id"];
x["member_id"].set_valid(true);
x["loc"] = in["loc"];
x["loc"].set_valid(true);
if (in["admin_status"].Long() > 0) {
x["admin_status"] = in["admin_status"];
x["admin_status"].set_valid(true);
}
ret = insert_db_record(DBS_VALID, "group_members", "group_members_id_seq", x);
if (ret > 0) {
out["group_member_id"] = ret;
out["group_member_id"].set_valid(true);
x["group_member_id"] = ret;
x["group_member_id"].set_valid(true);
GroupCreateMemberMail(x);
pgsql_exec("UPDATE members_groups SET accepted = (SELECT count(*) FROM group_members WHERE group_id = %lu ) WHERE id=%lu", x["group_id"].Long(), x["group_id"].Long());
}
return ret;
}
//******************************************************************************