Files
WrenchBoradWeb/wrenchboard/src/shared_tool/groups.cc
T
2019-05-31 11:26:35 -04:00

131 lines
3.9 KiB
C++

// Account management toosl
#include "clog.h"
#include "cgi.h"
#include "input.h"
#include "wrenchboard_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 WRENCHBOARD_GROUP_ACCEPTGROUP:
//return LoginWrenchBoardAccount( in, out);
break;
case WRENCHBOARD_GROUP_INVITEGROUP:
//return CreateWrenchBoardAccountPending(in, out);
break;
case WRENCHBOARD_GROUP_CREATEGROUP:
return CreateWrenchBoardGroup( in, out);
break;
}
logfmt( logINFO, "/groups_calls()" );
return 0;
}
long CreateWrenchBoardGroup(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);
WrenchBoardGroupCreateMember(y,out);
CreateWrenchBoardGroupMail(y);
}
return ret;
}
long WrenchBoardGroupCreateMember(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;
}
//******************************************************************************
/*
CREATE TABLE group_members (
id SERIAL,
member_id INT REFERENCES members(id),
group_name VARCHAR(100) UNIQUE NOT NULL,
description VARCHAR(250),
added timestamp without time zone DEFAULT now(),
balance integer DEFAULT 0,
contribute timestamp without time zone,
alert integer DEFAULT 0,
status integer DEFAULT 1,
invite integer DEFAULT 0,
accepted integer DEFAULT 0,
rejected integer DEFAULT 0,
loc INET
);
ALTER TABLE ONLY members_groups
ADD CONSTRAINT members_groups_id_key UNIQUE (id);
*/