diff --git a/wrenchboard/src/shared_tool/account.cc b/wrenchboard/src/shared_tool/account.cc index b015febf..ec14bb26 100644 --- a/wrenchboard/src/shared_tool/account.cc +++ b/wrenchboard/src/shared_tool/account.cc @@ -1511,11 +1511,38 @@ long LoginWrenchBoardFamilyLogin(CVars in, CVars &out); long WrenchBoardCreateFamilyAcc(CVars in, CVars &out); long WrenchBoardCreateFamilyAcc(CVars in, CVars &out){ + long ret = 0; -return 0; + try { + CVars x; + x["username"] = in["uid"]; + x["username"].set_valid(true); + x["email"] = in["uid"]; + x["email"].set_valid(true); + x["password"] = in["uid"]; + x["password"].set_valid(true); + x["firstname"] = in["firstname"]; + x["firstname"].set_valid(true); + x["lastname"] = in["lastname"]; + x["lastname"].set_valid(true); + x["account_type"] = "FAMILY"; + x["account_type"].set_valid(true); + // x["loc"] = out["loc"]; + // x["loc"].set_valid(true); + ret = insert_db_record(DBS_VALID, "members", "members_id_seq", x); + + if ( ret > 0 ){ + pgsql_exec("UPDATE members_family SET family_member_id=%lu WHERE uid='%s'",ret, in["uid"].c_str() ); + } + } catch (bad_parameter) { + logfmt(logINFO, "ERROR CALL long WrenchBoardCreateFamilyAcc(CVars in, CVars &out)"); + } + + return ret; } long LoginWrenchBoardFamilyLogin(CVars in, CVars &out){ long ret = PHP_API_BAD_PARAM; + long family_member_id = 0; logfmt(logINFO, "********~~~~~~~~ ------LoginWrenchBoardFamilyLogin()"); try { @@ -1529,10 +1556,36 @@ long LoginWrenchBoardFamilyLogin(CVars in, CVars &out){ map_to_cvars(f, rec); if( rec["family_member_id"]==""){ logfmt(logINFO, "LoginWrenchBoardFamilyLogin()- Need to Construct Account Now------->"); - WrenchBoardCreateFamilyAcc(rec,out); + family_member_id = WrenchBoardCreateFamilyAcc(rec,out); } - out = rec; - ret = PHP_LOGIN_OK; + else{ + family_member_id = rec["family_member_id"].Long(); + } + if (family_member_id > 0){ + load_db_record(out, "SELECT *,id AS member_id , to_char(last_login, 'Day Mon dd, yyyy HH:MI AM') AS last_login2 " + " FROM members WHERE status=1 AND id = %lu",family_member_id); + + CVars vw; + vw["currency"] = "NAIRA"; // this might become a variable based on the country + vw["currency"].set_valid( true ); + long wallet_id = CheckWallet(out["member_id"].Long(),vw); + load_db_record( out, "SELECT amount AS balance FROM members_wallet WHERE member_id = %lu AND currency='%s' ", out["member_id"].Long(), vw["currency"].c_str()); + pgsql_exec("DELETE FROM members_session WHERE member_id=%ld ", out["member_id"].Long()); + // remove all existing session + + if (SessionCheck(out["id"].Long(), in["sessionid"].c_str(), 1) > 0) { + out["stauts"] = "OK"; + /*LOAD THE SESSION INTO OUT now */ + load_db_record(out, "SELECT session FROM members_session WHERE member_id=%lu ORDER BY id DESC LIMIT 1", out["member_id"].Long()); + //=============================================================================================================================== + pgsql_query("UPDATE members SET last_login = now() , loc='%s' WHERE id = %lu",loc, out["member_id"].Long()); + pgsql_exec("UPDATE members_family SET last_login = now() WHERE family_member_id=%lu",family_member_id ); + ret = PHP_LOGIN_OK; + LoginLogger(out["member_id"].Long(),login_mode); + } else { + out["status"] = "Session check failed"; + } + } } out["status"] = "OK"; } catch (bad_parameter) {