Compare commits

..

9 Commits

Author SHA1 Message Date
ameye 43c8ce6a07 Backend Service 2019-03-09 05:44:59 +00:00
ameye c559475f86 Backend Service 2019-03-09 01:43:46 +00:00
ameye d1f697b738 Backend Service 2019-03-09 01:43:35 +00:00
ameye c91ab83752 Backend Service 2019-03-08 16:29:11 +00:00
ameye d028bd3998 Backend Service Layer 2019-03-08 16:27:41 +00:00
ameye f4745eab09 Backend Service Layer 2019-03-08 16:19:35 +00:00
ameye 6c46364498 Backend Service Layer 2019-03-08 13:33:27 +00:00
ameye 2ba9d7ae58 Backend Provider added 2019-03-07 01:17:34 +00:00
ameye e3e4ef0bd9 Backend Provider added 2019-03-07 01:17:23 +00:00
15 changed files with 743 additions and 764 deletions
+5 -15
View File
@@ -23,22 +23,12 @@ database:
mailsend:
{
from = "support@kleenapp.co";
server = "smtpout.secureserver.net";
domain = "kleenapp.com";
user = "support@kleenapp.co";
pass = "Kle@nAp1!";
name = "Kleen Demo Support";
};
mailsendOLD:
{
from = "support@wrenchboard.com";
from = "savvy@chiefsoft.com";
server = "smtp.gmail.com";
domain = "kleenapp.com";
user = "support@wrenchboard.com";
pass = "may12002!";
name = "Kleen Demo Support";
domain = "mermsemr.com";
user = "savvy@chiefsoft.com";
pass = "may12002";
name = "MERMS EHR";
};
stripe:
+5 -3
View File
@@ -2,12 +2,14 @@
#define __mx_function_members_h__
#include "vars.h"
long MemberLogin(CVars in, CVars &out);
long MemberSessionCheck(long uid, const char *sessionid, int create );
long CreateMember(CVars in, CVars &out);
long DeletAallCards(CVars in, CVars &out);
long medTMemberLogin(CVars in, CVars &out);
long medTrCreateMember(CVars in, CVars &out);
long medTrUpdateProfile(CVars in, CVars &out);
long kleenNewLundryPickUp(CVars in, CVars &out);
long SessionCheck(long uid, const char *sessionid, int create );
long medTrUpdateStartProfile(CVars in, CVars &out);
long getServiceDetail(long service_id, CVars &out);
long medTrMemberTransportList(CVars in, CVars &out);
+302 -295
View File
@@ -21,6 +21,308 @@
/* -- */
#include "function_members.h"
long MemberLogin(CVars in, CVars &out) {
long ret = PHP_API_BAD_PARAM;
try {
REQ_STRING(in, "username", 2, 49, "(.*)");
REQ_STRING(in, "password", 2, 49, "(.*)");
const char * loc = getenv("REMOTE_ADDR");
ret = load_db_record(out, "SELECT UPPER( md5( now()::text) ) AS sessionid,m.*,mp.*,m.id AS member_id,mp.id AS member_profile_id FROM members m \
LEFT JOIN members_profile mp ON mp.member_id = m.id \
WHERE m.status=1 AND LOWER(m.username)=LOWER('%s') AND m.password= md5('%s')", in["username"].c_str(), in["password"].c_str());
if (ret && out["member_id"].Long() > 0) {
// remove all existing session
pgsql_exec("DELETE FROM members_session WHERE member_id=%ld ", out["member_id"].Long());
// Create New Session Now
if (MemberSessionCheck(out["member_id"].Long(), out["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());
//Email-bad member_email_calls(in["action"].Long(), out, out);
//===============================================================================================================================
pgsql_query("UPDATE members SET last_login = now() WHERE id = %lu", out["member_id"].Long());
// account_email(ACCOUNT_LOGIN_ALERT,out,out); // ALERT CUSTOMER OF LOGIN
ret = PHP_LOGIN_OK;
} else {
out["status"] = "Session check failed";
}
} else {
out["status_message"] = "Invalid Username/Password";
}
} catch (bad_parameter) {
logfmt(logINFO, "ERROR CALL long medTMemberLogin(CVars in, CVars &out)");
}
return ret;
}
long MemberSessionCheck(long uid, const char *sessionid, int create) {
logfmt(logINFO, "long MemberSessionCheck(long uid, const char *sessionid, int create )");
// Sanity check
long session_expired_minutes = 15; // load in the global
if (uid < 1 || sessionid == NULL || strlen(sessionid) < 4) {
return -1L; // Invalif parameters
}
logfmt(logINFO, "#######-#########-A");
// Clean old sessions
if (create == 1) // Clean Previous session by force
{
pgsql_exec("DELETE FROM members_session WHERE member_id=%ld", uid);
}
logfmt(logINFO, "#######-#########-B");
pgsql_exec("DELETE FROM members_session WHERE member_id=%ld AND updated < (now() - interval '%lu minutes')", uid, session_expired_minutes);
// Update/check existing session
if (create == 0) {
pgsql_exec("UPDATE members_session SET updated=NOW() WHERE member_id=%ld AND session='%s'", uid, sessionid);
const PGresult *res = pgsql_query("SELECT * FROM members_session WHERE member_id=%ld AND session='%s'", uid, sessionid);
if (res != NULL && pgsql_num_rows(res) > 0) {
logfmt(logINFO, "VALID SESSION *****");
return 1L; // Session updated
} else {
logfmt(logINFO, "INVALID SESSION *****");
//INVALID SESSION DETECTED
return -1L; // Invalid parameters
}
}
if (create > 0) {
// Check session i?
const PGresult *res = pgsql_query("SELECT * FROM members_session WHERE member_id=%ld AND session<>'%s'", uid, sessionid);
if (res != NULL && pgsql_num_rows(res) > 0) {
return -2L; // Active sessions found
}
CVars sess; // Do we have the same session already?
if (load_db_record(sess, "SELECT * FROM members_session WHERE member_id=%lu AND session='%s'", uid, sessionid) > 0) {
pgsql_exec("UPDATE members_session SET updated=NOW() WHERE member_id=%ld AND session='%s'", uid, sessionid);
return sess["id"].Long();
}
// Create a new session
const char * loc = getenv("REMOTE_ADDR");
sess["loc"] = loc;
sess["loc"].set_valid(true);
sess["member_id"] = uid;
sess["member_id"].set_valid(true);
sess["session"] = sessionid;
sess["session"].set_valid(true);
long sid = insert_db_record(DBS_VALID, "members_session", "members_session_id_seq", sess); //members_session_id_seq
if (sid > 0) {
return sid; // New session created
}
return -3L; // Failed to create new session
}
logfmt(logINFO, "/long MemberSessionCheck(long uid, const char *sessionid, int create )");
return 0L; // No route
}
long CreateMember(CVars in, CVars &out) {
long ret = PHP_API_BAD_PARAM;
logfmt(logINFO, "medTrCreateMember()");
try {
// REQ_LONG(in, "pid", 0, -1);
REQ_STRING(in, "username", 5, 49, "(.*)");
REQ_STRING(in, "firstname", 2, 49, "(.*)");
REQ_STRING(in, "lastname", 2, 49, "(.*)");
OPTIONAL(in, "phone") REQ_STRING(in, "phone", 5, 23, "(.*)");
REQ_STRING(in, "password", 5, 49, "(.*)");
OPTIONAL(in, "phone") REQ_STRING(in, "loc", 5, 16, "(.*)");
OPTIONAL(in, "login") REQ_LONG(in, "login", 0, -1);
long member_id = 0;
//REQ_STRING (in, "sessionid", 4, 40, "(.*)");
const char * loc = getenv("REMOTE_ADDR");
ret = load_db_record(out, "SELECT *,id AS member_id FROM members WHERE LOWER(username)=LOWER('%s') ", in["username"].c_str());
if (ret > 0) {
// LETS CREATE THE ACOUNT NOW
CVars x;
x["username"] = in["username"];
x["username"].set_valid(true);
x["firstname"] = in["firstname"];
x["firstname"].set_valid(true);
x["lastname"] = in["lastname"];
x["lastname"].set_valid(true);
x["phone"] = in["phone"];
x["phone"].set_valid(true);
x["loc"] = in["loc"];
x["loc"].set_valid(true);
x["email"] = in["email"];
x["email"].set_valid(true);
x["password"] = in["email"];
x["password"].set_valid(true);
out["member_id"] = insert_db_record(DBS_VALID, "members", "members_id_seq", x);
if (out["member_id"].Long() > 0) {
pgsql_query("UPDATE members SET password = md5('%s') WHERE id = %lu", in["password"].c_str(), out["member_id"].Long()); // setting the password MD5 now
// Now Send Email
ret = PHP_API_OK;
out["status"] = "OK";
member_id = out["member_id"].Long();
//---emailbad member_email_calls(MERMS_USER_CREATEACCOUNT, out, out);
// out["member_id"] = member_id;
// if (in["login"] != "" && in["login"] == 1) {
in["action"] = MERMS_USER_LOGIN;
in["action"].set_valid(true); // needed for next action to know what email to send
ret = MemberLogin(in, out);
ret = 100; // needed if login is good
// }
// ==============
}
} else {
// LETS CREATE THE ACOUNT NOW
CVars x;
x["username"] = in["username"];
x["username"].set_valid(true);
x["firstname"] = in["firstname"];
x["firstname"].set_valid(true);
x["lastname"] = in["lastname"];
x["lastname"].set_valid(true);
x["phone"] = in["phone"];
x["phone"].set_valid(true);
x["loc"] = in["loc"];
x["loc"].set_valid(true);
x["email"] = in["email"];
x["email"].set_valid(true);
x["password"] = in["email"];
x["password"].set_valid(true);
out["member_id"] = insert_db_record(DBS_VALID, "members", "members_id_seq", x);
if (out["member_id"].Long() > 0) {
pgsql_query("UPDATE members SET password = md5('%s') WHERE id = %lu", in["password"].c_str(), out["member_id"].Long()); // setting the password MD5 now
// Now Send Email
ret = PHP_API_OK;
out["status"] = "OK";
//Email bad member_email_calls(in["action"].Long(), out, out);
// if (in["login"] != "" && in["login"] == 1) {
in["action"] = MERMS_USER_LOGIN;
in["action"].set_valid(true); // needed for next action to know what email to send
ret = MemberLogin(in, out);
ret = 100; // needed if login is good
// }
// ==============
}
}
}catch (bad_parameter) {
logfmt(logINFO, "ERROR CALL medTrCreateMember");
}
logfmt(logINFO, "/medTrCreateMember()");
return ret;
}
long medTrUpdateStartProfile(CVars in, CVars &out) {
long ret = medTrUpdateProfile(in, out);
if (ret == PHP_API_OK) {
load_db_record(out, "SELECT UPPER( md5( now()::text) ) AS sessionid,m.*,mp.*,m.id AS member_id,mp.id AS member_profile_id FROM members m \
LEFT JOIN members_profile mp ON mp.member_id = m.id \
WHERE m.id = %lu", in["member_id"].Long());
// We need to have the session back
load_db_record(out, "SELECT * FROM members_session WHERE member_id = %lu ORDER BY id DESC limit 1", in["member_id"].Long());
}
return ret;
}
long medTrUpdateProfile(CVars in, CVars &out) {
long ret = PHP_API_BAD_PARAM;
logfmt(logINFO, "medTrUpdateProfile()");
REQ_LONG(in, "pid", 0, -1);
REQ_LONG(in, "member_id", 0, -1);
REQ_STRING(in, "street1", 2, 49, "(.*)");
OPTIONAL(in, "street2") REQ_STRING(in, "street2", 1, 49, "(.*)");
REQ_STRING(in, "city", 5, 49, "(.*)");
// OPTIONAL(in, "phone") REQ_STRING(in, "phone", 5, 23, "(.*)");
REQ_STRING(in, "zipcode", 1, 12, "(.*)");
REQ_STRING(in, "state", 1, 3, "(.*)");
REQ_STRING(in, "country", 1, 3, "(.*)");
REQ_STRING(in, "loc", 5, 16, "(.*)");
//REQ_STRING (in, "sessionid", 4, 40, "(.*)");
const char * loc = getenv("REMOTE_ADDR");
CVars x;
x["pid"] = in["pid"];
x["pid"].set_valid(true);
x["street1"] = in["street1"];
x["street1"].set_valid(true);
x["street2"] = in["street2"];
x["street2"].set_valid(true);
x["city"] = in["city"];
x["city"].set_valid(true);
// x["phone"] = in["phone"];
// x["phone"].set_valid(true);
x["zipcode"] = in["zipcode"];
x["zipcode"].set_valid(true);
x["loc"] = in["loc"];
x["loc"].set_valid(true);
x["state"] = in["state"];
x["state"].set_valid(true);
x["country"] = in["country"];
x["country"].set_valid(true);
ret = load_db_record(out, "SELECT *,id AS member_profile_id FROM members_profile WHERE member_id = %lu ", in["member_id"].Long());
if (ret > 0) {
update_db_record(DBS_VALID, "members_profile", x, in["member_profile_id"].Long());
member_email_calls(in["action"].Long(), in, out);
ret = PHP_API_OK;
} else {
// LETS CREATE THE ACOUNT NOW
x["member_id"] = in["member_id"];
x["member_id"].set_valid(true);
out["member_profile_id"] = insert_db_record(DBS_VALID, "members_profile", "members_profile_id_seq", x);
if (out["member_profile_id"].Long() > 0) {
member_email_calls(in["action"].Long(), in, out);
// Now Send Email
ret = PHP_API_OK;
// ==============
}
}
logfmt(logINFO, "/medTrUpdateProfile()");
return ret;
}
//------------------------------------------------------
long serviceCost(long service_id, long discount_rate);
long medTrMemberTransportById(CVars in, CVars &out) {
@@ -275,112 +577,7 @@ long getServiceDetail(long service_id, CVars &out) {
long medTMemberLogin(CVars in, CVars &out) {
long ret = PHP_API_BAD_PARAM;
try {
REQ_STRING(in, "username", 2, 49, "(.*)");
REQ_STRING(in, "password", 2, 49, "(.*)");
const char * loc = getenv("REMOTE_ADDR");
ret = load_db_record(out, "SELECT UPPER( md5( now()::text) ) AS sessionid,m.*,mp.*,m.id AS member_id,mp.id AS member_profile_id FROM members m \
LEFT JOIN members_profile mp ON mp.member_id = m.id \
WHERE m.status=1 AND LOWER(m.username)=LOWER('%s') AND m.password= md5('%s')", in["username"].c_str(), in["password"].c_str());
if (ret && out["member_id"].Long() > 0) {
// remove all existing session
pgsql_exec("DELETE FROM members_session WHERE member_id=%ld ", out["member_id"].Long());
// Create New Session Now
if (SessionCheck(out["member_id"].Long(), out["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());
member_email_calls(in["action"].Long(), in, out);
//===============================================================================================================================
pgsql_query("UPDATE members SET last_login = now() WHERE id = %lu", out["member_id"].Long());
// account_email(ACCOUNT_LOGIN_ALERT,out,out); // ALERT CUSTOMER OF LOGIN
ret = PHP_LOGIN_OK;
} else {
out["status"] = "Session check failed";
}
} else {
out["status_message"] = "Invalid Username/Password";
}
} catch (bad_parameter) {
logfmt(logINFO, "ERROR CALL long medTMemberLogin(CVars in, CVars &out)");
}
return ret;
}
long SessionCheck(long uid, const char *sessionid, int create) {
logfmt(logINFO, "long SessionCheck(long uid, const char *sessionid, int create )");
// Sanity check
long session_expired_minutes = 15; // load in the global
if (uid < 1 || sessionid == NULL || strlen(sessionid) < 4) {
return -1L; // Invalif parameters
}
logfmt(logINFO, "#######-#########-A");
// Clean old sessions
if (create == 1) // Clean Previous session by force
{
pgsql_exec("DELETE FROM members_session WHERE member_id=%ld", uid);
}
logfmt(logINFO, "#######-#########-B");
pgsql_exec("DELETE FROM members_session WHERE member_id=%ld AND updated < (now() - interval '%lu minutes')", uid, session_expired_minutes);
// Update/check existing session
if (create == 0) {
pgsql_exec("UPDATE members_session SET updated=NOW() WHERE member_id=%ld AND session='%s'", uid, sessionid);
const PGresult *res = pgsql_query("SELECT * FROM members_session WHERE member_id=%ld AND session='%s'", uid, sessionid);
if (res != NULL && pgsql_num_rows(res) > 0) {
logfmt(logINFO, "VALID SESSION *****");
return 1L; // Session updated
} else {
logfmt(logINFO, "INVALID SESSION *****");
//INVALID SESSION DETECTED
return -1L; // Invalid parameters
}
}
if (create > 0) {
// Check session i?
const PGresult *res = pgsql_query("SELECT * FROM members_session WHERE member_id=%ld AND session<>'%s'", uid, sessionid);
if (res != NULL && pgsql_num_rows(res) > 0) {
return -2L; // Active sessions found
}
CVars sess; // Do we have the same session already?
if (load_db_record(sess, "SELECT * FROM members_session WHERE member_id=%lu AND session='%s'", uid, sessionid) > 0) {
pgsql_exec("UPDATE members_session SET updated=NOW() WHERE member_id=%ld AND session='%s'", uid, sessionid);
return sess["id"].Long();
}
// Create a new session
const char * loc = getenv("REMOTE_ADDR");
sess["loc"] = loc;
sess["loc"].set_valid(true);
sess["member_id"] = uid;
sess["member_id"].set_valid(true);
sess["session"] = sessionid;
sess["session"].set_valid(true);
long sid = insert_db_record(DBS_VALID, "members_session", "members_session_id_seq", sess); //members_session_id_seq
if (sid > 0) {
return sid; // New session created
}
return -3L; // Failed to create new session
}
logfmt(logINFO, "/long SessionCheck(long uid, const char *sessionid, int create )");
return 0L; // No route
}
vector<string> split_string(const char *str, char c = ' ')
{
@@ -631,195 +828,5 @@ long serviceCost(long service_id, long discount_rate) {
return service_cost;
}
long medTrCreateMember(CVars in, CVars &out) {
long ret = PHP_API_BAD_PARAM;
logfmt(logINFO, "medTrCreateMember()");
try {
REQ_LONG(in, "pid", 0, -1);
REQ_STRING(in, "username", 5, 49, "(.*)");
REQ_STRING(in, "firstname", 2, 49, "(.*)");
REQ_STRING(in, "lastname", 2, 49, "(.*)");
OPTIONAL(in, "phone") REQ_STRING(in, "phone", 5, 23, "(.*)");
REQ_STRING(in, "password", 5, 49, "(.*)");
OPTIONAL(in, "phone") REQ_STRING(in, "loc", 5, 16, "(.*)");
OPTIONAL(in, "login") REQ_LONG(in, "login", 0, -1);
long member_id = 0;
//REQ_STRING (in, "sessionid", 4, 40, "(.*)");
const char * loc = getenv("REMOTE_ADDR");
ret = load_db_record(out, "SELECT *,id AS member_id FROM members WHERE LOWER(username)=LOWER('%s') ", in["username"].c_str());
if (ret > 0) {
// LETS CREATE THE ACOUNT NOW
CVars x;
x["pid"] = in["pid"];
x["pid"].set_valid(true);
x["username"] = in["username"];
x["username"].set_valid(true);
x["firstname"] = in["firstname"];
x["firstname"].set_valid(true);
x["lastname"] = in["lastname"];
x["lastname"].set_valid(true);
x["phone"] = in["phone"];
x["phone"].set_valid(true);
x["loc"] = in["loc"];
x["loc"].set_valid(true);
x["email"] = in["email"];
x["email"].set_valid(true);
x["password"] = in["email"];
x["password"].set_valid(true);
out["member_id"] = insert_db_record(DBS_VALID, "members", "members_id_seq", x);
if (out["member_id"].Long() > 0) {
pgsql_query("UPDATE members SET password = md5('%s') WHERE id = %lu", in["password"].c_str(), out["member_id"].Long()); // setting the password MD5 now
// Now Send Email
ret = PHP_API_OK;
out["status"] = "OK";
member_id = out["member_id"].Long();
member_email_calls(MEDTRANS_USER_CREATE, out, out);
// out["member_id"] = member_id;
// if (in["login"] != "" && in["login"] == 1) {
in["action"] = MEDTRANS_USER_LOGIN;
in["action"].set_valid(true); // needed for next action to know what email to send
ret = medTMemberLogin(in, out);
ret = 100; // needed if login is good
// }
// ==============
}
} else {
// LETS CREATE THE ACOUNT NOW
CVars x;
x["pid"] = in["pid"];
x["pid"].set_valid(true);
x["username"] = in["username"];
x["username"].set_valid(true);
x["firstname"] = in["firstname"];
x["firstname"].set_valid(true);
x["lastname"] = in["lastname"];
x["lastname"].set_valid(true);
x["phone"] = in["phone"];
x["phone"].set_valid(true);
x["loc"] = in["loc"];
x["loc"].set_valid(true);
x["email"] = in["email"];
x["email"].set_valid(true);
x["password"] = in["email"];
x["password"].set_valid(true);
out["member_id"] = insert_db_record(DBS_VALID, "members", "members_id_seq", x);
if (out["member_id"].Long() > 0) {
pgsql_query("UPDATE members SET password = md5('%s') WHERE id = %lu", in["password"].c_str(), out["member_id"].Long()); // setting the password MD5 now
// Now Send Email
ret = PHP_API_OK;
out["status"] = "OK";
member_email_calls(in["action"].Long(), out, out);
// if (in["login"] != "" && in["login"] == 1) {
in["action"] = MEDTRANS_USER_LOGIN;
in["action"].set_valid(true); // needed for next action to know what email to send
ret = medTMemberLogin(in, out);
ret = 100; // needed if login is good
// }
// ==============
}
}
}catch (bad_parameter) {
logfmt(logINFO, "ERROR CALL medTrCreateMember");
}
logfmt(logINFO, "/medTrCreateMember()");
return ret;
}
long medTrUpdateStartProfile(CVars in, CVars &out) {
long ret = medTrUpdateProfile(in, out);
if (ret == PHP_API_OK) {
load_db_record(out, "SELECT UPPER( md5( now()::text) ) AS sessionid,m.*,mp.*,m.id AS member_id,mp.id AS member_profile_id FROM members m \
LEFT JOIN members_profile mp ON mp.member_id = m.id \
WHERE m.id = %lu", in["member_id"].Long());
// We need to have the session back
load_db_record(out, "SELECT * FROM members_session WHERE member_id = %lu ORDER BY id DESC limit 1", in["member_id"].Long());
}
return ret;
}
long medTrUpdateProfile(CVars in, CVars &out) {
long ret = PHP_API_BAD_PARAM;
logfmt(logINFO, "medTrUpdateProfile()");
REQ_LONG(in, "pid", 0, -1);
REQ_LONG(in, "member_id", 0, -1);
REQ_STRING(in, "street1", 2, 49, "(.*)");
OPTIONAL(in, "street2") REQ_STRING(in, "street2", 1, 49, "(.*)");
REQ_STRING(in, "city", 5, 49, "(.*)");
// OPTIONAL(in, "phone") REQ_STRING(in, "phone", 5, 23, "(.*)");
REQ_STRING(in, "zipcode", 1, 12, "(.*)");
REQ_STRING(in, "state", 1, 3, "(.*)");
REQ_STRING(in, "country", 1, 3, "(.*)");
REQ_STRING(in, "loc", 5, 16, "(.*)");
//REQ_STRING (in, "sessionid", 4, 40, "(.*)");
const char * loc = getenv("REMOTE_ADDR");
CVars x;
x["pid"] = in["pid"];
x["pid"].set_valid(true);
x["street1"] = in["street1"];
x["street1"].set_valid(true);
x["street2"] = in["street2"];
x["street2"].set_valid(true);
x["city"] = in["city"];
x["city"].set_valid(true);
// x["phone"] = in["phone"];
// x["phone"].set_valid(true);
x["zipcode"] = in["zipcode"];
x["zipcode"].set_valid(true);
x["loc"] = in["loc"];
x["loc"].set_valid(true);
x["state"] = in["state"];
x["state"].set_valid(true);
x["country"] = in["country"];
x["country"].set_valid(true);
ret = load_db_record(out, "SELECT *,id AS member_profile_id FROM members_profile WHERE member_id = %lu ", in["member_id"].Long());
if (ret > 0) {
update_db_record(DBS_VALID, "members_profile", x, in["member_profile_id"].Long());
member_email_calls(in["action"].Long(), in, out);
ret = PHP_API_OK;
} else {
// LETS CREATE THE ACOUNT NOW
x["member_id"] = in["member_id"];
x["member_id"].set_valid(true);
out["member_profile_id"] = insert_db_record(DBS_VALID, "members_profile", "members_profile_id_seq", x);
if (out["member_profile_id"].Long() > 0) {
member_email_calls(in["action"].Long(), in, out);
// Now Send Email
ret = PHP_API_OK;
// ==============
}
}
logfmt(logINFO, "/medTrUpdateProfile()");
return ret;
}
// vi:ts=2
+24 -25
View File
@@ -37,9 +37,9 @@ long member_email_calls(long action, CVars in, CVars &out) {
long ret = 0;
const char * loc = getenv("REMOTE_ADDR");
C_CGI_Form form("", "");
// form.LetStr("subject", "KleenApp Email Test");
form.LetStr("site_name", "KleenApp");
form.LetStr("contactus", "https://www.kleenapp.co/");
// form.LetStr("subject", "myFit by MERMS Email Test");
form.LetStr("site_name", "myFit by MERMS");
form.LetStr("contactus", "https://myFit.mermsemr.com/");
CGIList * inv_list = new CGIList(&form, "inv_items");
char listing_items[1024];
@@ -132,24 +132,23 @@ long member_email_calls(long action, CVars in, CVars &out) {
case MEDTRANS_USER_LOGIN:
case MERMS_USER_LOGIN:
if (load_db_record(x, "SELECT *,email as email2,now() AS last_login2 FROM members WHERE id = %lu ", in["member_id"].Long())) {
vars2form(x, form);
form.LetStr("subject", "KleenApp Account Access");
form.LetStr("subject", "myFit by MERMS Account Access");
form.LetStr("email", x["email2"].c_str());
form.Email("USERS/user_login.mailfile");
}
break;
case MEDTRANS_USER_CREATE:
case MERMSEMR_BKO_MEMBERADD:
case MERMS_USER_CREATEACCOUNT:
if (load_db_record(x, "SELECT *,email as email2,now() AS last_login2 FROM members WHERE id = %lu ", in["member_id"].Long())) {
vars2form(x, form);
form.LetStr("subject", "Welcome to KleenApp ");
form.LetStr("subject", "Welcome to myFit by MERMS ");
form.LetStr("email", x["email2"].c_str());
form.Email("USERS/user_welcome.mailfile");
alert_email_calls(MEDTRANS_USER_CREATE, in, out);
alert_email_calls(MERMS_USER_CREATEACCOUNT, in, out);
}
@@ -181,10 +180,10 @@ long agent_email_calls(long action, CVars in, CVars &out) {
char * server_name = getenv("SERVER_NAME");
const char * loc = getenv("REMOTE_ADDR");
C_CGI_Form form("", "");
// form.LetStr("subject", "KleenApp Email Test");
// form.LetStr("subject", "myFit by MERMS Email Test");
char vname[100];
form.LetStr("site_name", "KleenApp");
form.LetStr("site_name", "myFit by MERMS");
form.LetStr("agent_site", "https://agent.medtransgo.com/");
logfmt(logINFO, "@@@@@@->AMEYE-1)");
@@ -268,10 +267,10 @@ long provider_email_calls(long action, CVars in, CVars &out) {
char * server_name = getenv("SERVER_NAME");
const char * loc = getenv("REMOTE_ADDR");
C_CGI_Form form("", "");
// form.LetStr("subject", "KleenApp Email Test");
// form.LetStr("subject", "myFit by MERMS Email Test");
char vname[100];
form.LetStr("site_name", "KleenApp");
form.LetStr("site_name", "myFit by MERMS");
form.LetStr("agent_site", "https://agent.medtransgo.com/");
logfmt(logINFO, "@@@@@@->AMEYE-1)");
@@ -303,7 +302,7 @@ long provider_email_calls(long action, CVars in, CVars &out) {
logfmt(logINFO, "@@@@@@->AMEYE-101)");
form.LetStr("confirm_link", in["service_id"].c_str());
logfmt(logINFO, "@@@@@@->AMEYE-102)");
form.LetStr("server_link", "https://www.kleenapp.co//provider/processRequest?reqId=");
form.LetStr("server_link", "https://www.myFit by MERMS.co//provider/processRequest?reqId=");
logfmt(logINFO, "@@@@@@->AMEYE-103)");
form.LetStr("subject", "Laundry Pickup Assigned");
form.LetStr("email", z["driver_email"].c_str());
@@ -348,9 +347,9 @@ long dailyReport() {
long ret = 0;
const char * loc = getenv("REMOTE_ADDR");
C_CGI_Form form("", "");
form.LetStr("subject", "KleenApp Alert Email");
form.LetStr("subject", "myFit by MERMS Alert Email");
out["alertrequest"] = CfgReadChar("alerts.request");
form.LetStr("site_name", "KleenApp");
form.LetStr("site_name", "myFit by MERMS");
CVars w, x, y, z;
load_db_record(x, "SELECT TO_CHAR( now() :: DATE, 'Day Mon dd, yyyy') AS long_date, now()::date AS report_date, count(id) AS today_members_count FROM members WHERE added::date = now()::date;");
@@ -387,19 +386,19 @@ long alert_email_calls(long action, CVars in, CVars &out) {
long ret = 0;
const char * loc = getenv("REMOTE_ADDR");
C_CGI_Form form("", "");
form.LetStr("subject", "KleenApp Alert Email");
form.LetStr("subject", "myFit by MERMS Alert Email");
out["alertrequest"] = CfgReadChar("alerts.request");
out["alertaccount"] = CfgReadChar("alerts.account");
CGIList * inv_list = new CGIList( &form, "inv_items" );
char listing_items[1024];
const PGresult *res;
form.LetStr("site_name", "KleenApp");
form.LetStr("site_name", "myFit by MERMS");
switch (action) {
case MEDTRANS_USER_CREATE:
case MERMS_USER_CREATEACCOUNT:
if (load_db_record(x, "SELECT *,email as email2,now() AS last_login3 FROM members WHERE id = %lu ", in["member_id"].Long())) {
vars2form(x, form);
form.LetStr("email", out["alertrequest"].c_str());
@@ -622,10 +621,10 @@ void commonItems(C_CGI_Form &form) {
char * server_name = getenv("SERVER_NAME");
form.LetStr("server_name", server_name);
form.LetStr("site_name", "KleenApp");
form.LetStr("facebook", "KleenApp");
form.LetStr("twitter", "KleenApp");
form.LetStr("contactus", "KleenApp");
form.LetStr("site_name", "myFit by MERMS");
form.LetStr("facebook", "myFit by MERMS");
form.LetStr("twitter", "myFit by MERMS");
form.LetStr("contactus", "myFit by MERMS");
}
long email_test(CVars in, CVars &out) {
@@ -637,8 +636,8 @@ long email_test(CVars in, CVars &out) {
out["alertemail"] = CfgReadChar("alerts.system");
//form.LetStr( "site_name", "KleenApp" );
form.LetStr("subject", "KleenApp Email Test");
//form.LetStr( "site_name", "myFit by MERMS" );
form.LetStr("subject", "myFit by MERMS Email Test");
commonItems(form);
+7 -82
View File
@@ -33,93 +33,18 @@ long members_call(CVars in, CVars &out) {
const char * loc = getenv("REMOTE_ADDR");
switch (action) {
case MERMSEMR_USER_DRYCLIST:
return kleenDryCleanList(in, out);
case MERMS_USER_LOGIN:
return MemberLogin(in, out);
break;
case MEDTRANS_USER_LOGIN:
return medTMemberLogin(in, out);
case MERMS_USER_CREATEACCOUNT:
return CreateMember(in, out);
break;
case MEDTRANS_USER_CREATE:
return medTrCreateMember(in, out);
case MERMS_USER_REMINDERS:
// return medTrCreateMember(in, out);
break;
case MERMSEMR_USER_COMPLETEPROFILE:
return medTrUpdateStartProfile(in, out);
break;
case MEDTRANS_USER_UPDATE:
return medTrUpdateProfile(in, out);
break;
case MEDTRANS_USER_PROFILE:
REQ_LONG(in, "member_id", 0, -1);
REQ_STRING(in, "sessionid", 2, 100, "(.*)");
if (load_db_record(out, "SELECT m.*,p.* FROM members m LEFT JOIN members_profile p ON p.member_id=m.id WHERE m.id=%lu", in["member_id"].Long()) > 0) {
return PHP_API_OK;
}
break;
case MERMSEMR_USER_SAVECARDPAYMENT:
in["paymenttype"] = "1";
save_creditcard(in, out);
break;
case MERMSEMR_USER_GETCCLIST:
return getUserCCList(in, out);
break;
case MEDTRANS_USER_NEWLUNDRYPICK:
return kleenNewLundryPickUp(in, out);
break;
case MEDTRANS_USER_GET_TRAN_BYID:
return medTrMemberTransportById(in, out);
break;
case MERMSEMR_USER_GETSERVICEITEM:
return medTrMemberServiceById(in, out);
break;
case MERMSEMR_USER_GETSERVICELIST:
return medTrMemberTransportList(in, out);
break;
case MEDTRANS_USER_LUNDRYLOCATION:
return medTrLanguageList(in, out);
break;
case MEDTRANS_USER_VERIFYSESSION:
REQ_LONG(in, "member_id", 0, -1);
REQ_STRING(in, "sessionid", 2, 100, "(.*)");
ret = PHP_INVALID_SESSION;
out["status"] = "INVALID_SESSION";
if (SessionCheck(in["member_id"].Long(), in["sessionid"].c_str(), 0) == 1L) {
out = in;
out["status"] = "VALID_SESSION";
ret = PHP_VALID_SESSION;
}
break;
case MERMSEMR_USER_CONFIRMPICKUP:
logfmt(logINFO, "MERMSEMR_USER_CONFIRMPICKUP()");
REQ_LONG(in, "member_id", 0, -1);
REQ_STRING(in, "sessionid", 2, 100, "(.*)");
REQ_LONG(in, "service_id", 0, -1);
REQ_LONG(in, "paymentid", 0, -1);
return kleenConfirmPickup(in, out);
break;
case MEDTRANS_USER_PASSRESET: // 200067
REQ_LONG(in, "mode", 0, -1);
return passwordReset(in, out);
break;
case MERMSEMR_USER_DELETECARD:
out = in;
return userDeleteCard(in, out);
break;
}
logfmt(logINFO, "/members_call()");
return ret;
@@ -23,6 +23,9 @@ long mermsemr_api_main(CVars in, CVars &out) {
//REQ_LONG( in, "pid", 0, -1); // global implementation - who is calling
try {
if (action >= MERMS_USER_START && action <= MERMS_USER_END) {
return members_call(in, out);
}
if (action >= MERMS_PROVIDERS_START && action <= MERMS_PROVIDERS_END) {
return providers_call(in, out);
+112 -2
View File
@@ -16,6 +16,9 @@
#include "function_members.h"
long provider_login(CVars in, CVars &out);
long PracticeLogin(CVars in, CVars &out);
long PracticeSessionCheck(long practice_id, long practice_users_id, const char *sessionid, int create);
long providers_call(CVars in, CVars &out) {
long ret = PHP_API_BAD_PARAM;
@@ -56,14 +59,14 @@ long providers_call(CVars in, CVars &out) {
long provider_login(CVars in, CVars &out) {
long ret = 0;
long ret = -1;
try{
REQ_STRING(in, "username", 2, 49, "(.*)");
REQ_STRING(in, "pass", 2, 49, "(.*)");
if ( load_db_record(out, "SELECT p.name AS practice_name,u.*,u.id AS user_id FROM practice_users u LEFT JOIN practice p ON p.id = u.practice_id WHERE u.id = 1 ") > 0 ){
ret = PHP_LOGIN_OK;
ret = PracticeLogin( in, out );
}
@@ -77,3 +80,110 @@ try{
return ret;
}
long PracticeLogin(CVars in, CVars &out) {
long ret = PHP_API_BAD_PARAM;
try {
REQ_STRING(in, "username", 2, 49, "(.*)");
REQ_STRING(in, "pass", 2, 49, "(.*)");
const char * loc = getenv("REMOTE_ADDR");
ret = load_db_record(out, "SELECT UPPER( md5( now()::text) ) AS sessionid,m.*,m.*,m.id AS practice_users_id FROM practice_users m \
WHERE m.status=1 AND LOWER(m.username)=LOWER('%s') AND m.password= md5('%s')", in["username"].c_str(), in["pass"].c_str());
if (ret && out["practice_users_id"].Long() > 0) {
// remove all existing session
pgsql_exec("DELETE FROM practice_users_session WHERE practice_users_id=%ld ", out["practice_users_id"].Long());
// Create New Session Now
if (PracticeSessionCheck(out["practice_id"].Long(), out["practice_users_id"].Long(),out["sessionid"].c_str(), 1) > 0) {
out["stauts"] = "OK";
/*LOAD THE SESSION INTO OUT now */
load_db_record(out, "SELECT session FROM practice_users_session WHERE practice_users_id=%lu ORDER BY id DESC LIMIT 1", out["practice_users_id"].Long());
provider_email_calls(in["action"].Long(), in, out);
//===============================================================================================================================
pgsql_query("UPDATE practice_users SET last_login = now() WHERE id = %lu", out["practice_users_id"].Long());
// account_email(ACCOUNT_LOGIN_ALERT,out,out); // ALERT CUSTOMER OF LOGIN
ret = PHP_LOGIN_OK;
} else {
out["status"] = "Practice Session Check Failed";
}
} else {
out["status_message"] = "Invalid Username/Password";
}
} catch (bad_parameter) {
logfmt(logINFO, "ERROR CALL long PracticeLogin(CVars in, CVars &out)");
}
return ret;
}
long PracticeSessionCheck(long practice_id, long practice_users_id, const char *sessionid, int create) {
logfmt(logINFO, "long PracticeSessionCheck(long uid, const char *sessionid, int create )");
// Sanity check
long session_expired_minutes = 15; // load in the global
if (practice_users_id < 1 || sessionid == NULL || strlen(sessionid) < 4) {
return -1L; // Invalif parameters
}
logfmt(logINFO, "#######-#########-A");
// Clean old sessions
if (create == 1) // Clean Previous session by force
{
pgsql_exec("DELETE FROM practice_users_session WHERE practice_user_id=%ld", practice_users_id);
}
logfmt(logINFO, "#######-#########-B");
pgsql_exec("DELETE FROM practice_users_session WHERE practice_user_id=%ld AND updated < (now() - interval '%lu minutes')", practice_users_id, session_expired_minutes);
// Update/check existing session
if (create == 0) {
pgsql_exec("UPDATE practice_users_session SET updated=NOW() WHERE practice_users_id=%ld AND session='%s'", practice_users_id, sessionid);
const PGresult *res = pgsql_query("SELECT * FROM practice_users_session WHERE practice_users_id=%ld AND session='%s'", practice_users_id, sessionid);
if (res != NULL && pgsql_num_rows(res) > 0) {
logfmt(logINFO, "VALID SESSION *****");
return 1L; // Session updated
} else {
logfmt(logINFO, "INVALID SESSION *****");
//INVALID SESSION DETECTED
return -1L; // Invalid parameters
}
}
if (create > 0) {
// Check session i?
const PGresult *res = pgsql_query("SELECT * FROM practice_users_session WHERE practice_user_id=%ld AND session<>'%s'", practice_users_id, sessionid);
if (res != NULL && pgsql_num_rows(res) > 0) {
return -2L; // Active sessions found
}
CVars sess; // Do we have the same session already?
if (load_db_record(sess, "SELECT * FROM practice_users_session WHERE practice_user_id=%lu AND session='%s'", practice_users_id, sessionid) > 0) {
pgsql_exec("UPDATE practice_users_session SET updated=NOW() WHERE practice_user_id=%ld AND session='%s'", practice_users_id, sessionid);
return sess["id"].Long();
}
// Create a new session
const char * loc = getenv("REMOTE_ADDR");
sess["loc"] = loc;
sess["loc"].set_valid(true);
sess["practice_id"] = practice_id;
sess["practice_id"].set_valid(true);
sess["practice_user_id"] = practice_users_id;
sess["practice_user_id"].set_valid(true);
sess["session"] = sessionid;
sess["session"].set_valid(true);
long sid = insert_db_record(DBS_VALID, "practice_users_session", "practice_users_session_id_seq", sess); //members_session_id_seq
if (sid > 0) {
return sid; // New session created
}
return -3L; // Failed to create new session
}
logfmt(logINFO, "/long PracticeSessionCheck(long uid, const char *sessionid, int create )");
return 0L; // No route
}
+11 -12
View File
@@ -77,18 +77,17 @@ class MER_Controller extends CI_Controller {
if ( $res==PHP_LOGIN_OK && isset($out["practice_id"]) && $out["practice_id"] > 0 ){
$_SESSION['session_id'] = "SASAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK";
$_SESSION['username'] = "ameye";
$_SESSION['practice_name'] = $out['practice_name'];
$_SESSION['practice_code'] = "IFE0001A";
$_SESSION['user_firstname'] = $out['firstname'];
$_SESSION['user_lastname'] = $out['lastname'];
$_SESSION['user_email'] = $out['email'];
$_SESSION['user_id'] = $out['user_id'];
$_SESSION['practice_id'] = $out['practice_id'];
$_SESSION['user_provider'] = "1";
$_SESSION['user_admin'] = "1";
$_SESSION['session_id'] =$out['sessionid']; // "";
$_SESSION['username'] = $out['username']; // "";
$_SESSION['practice_name'] = $out['practice_name'];
$_SESSION['practice_code'] = "IFE0001A";
$_SESSION['user_firstname'] = $out['firstname'];
$_SESSION['user_lastname'] = $out['lastname'];
$_SESSION['user_email'] = $out['email'];
$_SESSION['user_id'] = $out['user_id'];
$_SESSION['practice_id'] = $out['practice_id'];
$_SESSION['user_provider'] = "1";
$_SESSION['user_admin'] = "1";
$loginReturn = true;
}
else {
@@ -1,4 +1,5 @@
<!-- end app-header -->
<!-- begin app-container -->
<div class="app-container">
@@ -15,280 +16,103 @@
<? include "application/views/template/topstrip.php"; ?>
<!-- begin row -->
<div class="row">
<div class="col-sm-12">
<div class="card card-statistics">
<div class="row no-gutters">
<div class="col-xxl-3 col-lg-6">
<div class="p-20 border-lg-right border-bottom border-xxl-bottom-0">
<div class="d-flex m-b-10">
<p class="mb-0 font-regular text-muted font-weight-bold">Total Visits</p>
<a class="mb-0 ml-auto font-weight-bold" href="#"><i class="ti ti-more-alt"></i> </a>
</div>
<div class="d-block d-sm-flex h-100 align-items-center">
<div class="apexchart-wrapper">
<div id="analytics7"></div>
</div>
<div class="statistics mt-3 mt-sm-0 ml-sm-auto text-center text-sm-right">
<h3 class="mb-0"><i class="icon-arrow-up-circle"></i> 15,640</h3>
<p>Monthly visitor</p>
</div>
</div>
</div>
</div>
<div class="col-xxl-3 col-lg-6">
<div class="p-20 border-xxl-right border-bottom border-xxl-bottom-0">
<div class="d-flex m-b-10">
<p class="mb-0 font-regular text-muted font-weight-bold">Total Cost</p>
<a class="mb-0 ml-auto font-weight-bold" href="#"><i class="ti ti-more-alt"></i> </a>
</div>
<div class="d-block d-sm-flex h-100 align-items-center">
<div class="apexchart-wrapper">
<div id="analytics8"></div>
</div>
<div class="statistics mt-3 mt-sm-0 ml-sm-auto text-center text-sm-right">
<h3 class="mb-0"><i class="icon-arrow-up-circle"></i> 16,656</h3>
<p>This month</p>
</div>
</div>
</div>
</div>
<div class="col-xxl-3 col-lg-6">
<div class="p-20 border-lg-right border-bottom border-lg-bottom-0">
<div class="d-flex m-b-10">
<p class="mb-0 font-regular text-muted font-weight-bold">Total Sales</p>
<a class="mb-0 ml-auto font-weight-bold" href="#"><i class="ti ti-more-alt"></i> </a>
</div>
<div class="d-block d-sm-flex h-100 align-items-center">
<div class="apexchart-wrapper">
<div id="analytics9"></div>
</div>
<div class="statistics mt-3 mt-sm-0 ml-sm-auto text-center text-sm-right">
<h3 class="mb-0"><i class="icon-arrow-up-circle"></i>569</h3>
<p>Avg. Sales per day</p>
</div>
</div>
</div>
</div>
<div class="col-xxl-3 col-lg-6">
<div class="p-20">
<div class="d-block d-sm-flex h-100 align-items-center">
<div class="apexchart-wrapper">
<div id="analytics10"></div>
</div>
<div class="statistics ml-sm-auto mt-4 mt-sm-0 pr-sm-5">
<ul class="list-style-none p-0">
<li class="d-flex py-1">
<span><i class="fa fa-circle text-primary pr-2"></i> Redirect Visits</span> <span class="pl-2 font-weight-bold">456</span></li>
<li class="d-flex py-1"><span><i class="fa fa-circle text-warning pr-2"></i> New Visits</span> <span class="pl-2 font-weight-bold">256</span></li>
<li class="d-flex py-1"><span><i class="fa fa-circle text-info pr-2"></i> Direct Visits</span> <span class="pl-2 font-weight-bold">128</span></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6 col-xxl-4 m-b-30">
<div class="card card-statistics h-100 mb-0">
<div class="card-header d-flex justify-content-between">
<div class="card-heading">
<h4 class="card-title">Recent Encounters</h4>
<h4 class="card-title">New Patient</h4>
</div>
<div class="dropdown">
<a class="btn btn-round btn-inverse-primary btn-xs" href="#">View all </a>
<!-- a class="btn btn-round btn-inverse-primary btn-xs" href="#">View all </a -->
</div>
</div>
<div class="card-body">
<div class="row active-task m-b-20">
<div class="col-xs-1">
<div class="bg-type mb-1 mb-xs-0 mt-1">
<span>PP</span>
<div class="card-body">
<form>
<div class="form-row">
<div class="form-group col-md-6">
<label for="inputEmail4">Firstname</label>
<input type="text" class="form-control" id="firstname" placeholder="Firstname">
</div>
<div class="form-group col-md-6">
<label for="inputPassword4">Lastname</label>
<input type="text" class="form-control" id="lastname" placeholder="Lastname">
</div>
</div>
</div>
<div class="col-11">
<small class="d-block mb-1">Car dealer</small>
<h5 class="mb-0"><a href="#">Unread utf-8 in more quick overview</a></h5>
<ul class="list-unstyled list-inline">
<li class="list-inline-item">
<small> Created by Lizzy Halfman</small>
</li>
<li class="list-inline-item">|</li>
<li class="list-inline-item">
<small>Saturday, March 17 2019</small>
</li>
</ul>
</div>
</div>
<div class="row active-task m-b-20">
<div class="col-xs-1">
<div class="bg-type bg-pink mb-1 mb-xs-0 mt-1">
<span>SL</span>
<div class="form-row">
<div class="form-group col-md-6">
<label for="inputEmail4">Email</label>
<input type="email" class="form-control" id="inputEmail4" placeholder="Email">
</div>
<div class="form-group col-md-6">
<label for="inputPassword4">Password</label>
<input type="password" class="form-control" id="inputPassword4" placeholder="Password">
</div>
</div>
</div>
<div class="col-11">
<small class="d-block mb-1">Webster HTML5 </small>
<h5 class="mb-0"><a href="#">I get an error "No Direct Access Allowed!" when I enter purchase</a></h5>
<ul class="list-unstyled list-inline">
<li class="list-inline-item">
<small> Created by Samuel Woods</small>
</li>
<li class="list-inline-item">|</li>
<li class="list-inline-item">
<small>Sunday, March 19 2019</small>
</li>
</ul>
</div>
</div>
<div class="row active-task m-b-20">
<div class="col-xs-1">
<div class="bg-type bg-success mb-1 mb-xs-0 mt-1">
<span>MP</span>
<div class="form-group">
<label for="inputAddress">Address</label>
<input type="text" class="form-control" id="inputAddress" placeholder="1234 Main St">
</div>
</div>
<div class="col-11">
<small class="d-block mb-1">The corps</small>
<h5 class="mb-0"><a href="#">OAuth Credentials not generating the key</a></h5>
<ul class="list-unstyled list-inline">
<li class="list-inline-item">
<small> Created by Andrew nico</small>
</li>
<li class="list-inline-item">|</li>
<li class="list-inline-item">
<small>Monday, March 21 2019</small>
</li>
</ul>
</div>
</div>
<div class="row active-task m-b-20">
<div class="col-xs-1">
<div class="bg-type bg-orange mb-1 mb-xs-0 mt-1">
<span>SP</span>
<div class="form-group">
<label for="inputAddress2">Address 2</label>
<input type="text" class="form-control" id="inputAddress2" placeholder="Apartment, studio, or floor">
</div>
</div>
<div class="col-11">
<small class="d-block mb-1">Sam martin vCard</small>
<h5 class="mb-0"><a href="#">Pre-Buy Questions : For bakery Shop (Mentor Android Application)</a></h5>
<ul class="list-unstyled list-inline">
<li class="list-inline-item">
<small> Created by Jimmy Falicon</small>
</li>
<li class="list-inline-item">|</li>
<li class="list-inline-item">
<small>Friday, March 22 2019</small>
</li>
</ul>
</div>
</div>
<div class="row active-task m-b-20">
<div class="col-xs-1">
<div class="bg-type bg-info mb-1 mb-xs-0 mt-1">
<span>AP</span>
<div class="form-row">
<div class="form-group col-md-6">
<label for="inputCity">City</label>
<input type="text" class="form-control" id="inputCity">
</div>
<div class="form-group col-md-4">
<label for="inputState">State</label>
<select id="inputState" class="form-control">
<option selected>Select State</option>
<option>Ontario</option>
<option>Toronto</option>
</select>
</div>
<div class="form-group col-md-2">
<label for="inputZip">Zip</label>
<input type="text" class="form-control" id="inputZip">
</div>
</div>
</div>
<div class="col-11">
<small class="d-block mb-1">Mentor admin </small>
<h5 class="mb-0"><a href="#">I need a payment option, for each seller per item</a></h5>
<ul class="list-unstyled list-inline">
<li class="list-inline-item">
<small> Created by Brian Joedon</small>
</li>
<li class="list-inline-item">|</li>
<li class="list-inline-item">
<small>Saturday, March 17 2019</small>
</li>
</ul>
</div>
<div class="form-group">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="gridCheck">
<label class="form-check-label" for="gridCheck">
Check me out
</label>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-9">
</div>
<div class="form-group col-md-3">
<button type="submit" class="btn btn-primary">Add Patient</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<div class="col-lg-6 col-xxl-4 m-b-30">
<div class="card card-statistics h-100 mb-0">
<div class="card-header d-flex justify-content-between">
<div class="card-heading">
<h4 class="card-title">Activities</h4>
</div>
<div class="dropdown">
<a class="p-2" href="#!" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fe fe-more-horizontal"></i>
</a>
<div class="dropdown-menu custom-dropdown dropdown-menu-right p-4">
<h6 class="mb-1">Action</h6>
<a class="dropdown-item" href="#!"><i class="fa-fw fa fa-file-o pr-2"></i>View reports</a>
<a class="dropdown-item" href="#!"><i class="fa-fw fa fa-edit pr-2"></i>Edit reports</a>
<a class="dropdown-item" href="#!"><i class="fa-fw fa fa-bar-chart-o pr-2"></i>Statistics</a>
<h6 class="mb-1 mt-3">Export</h6>
<a class="dropdown-item" href="#!"><i class="fa-fw fa fa-file-pdf-o pr-2"></i>Export to PDF</a>
<a class="dropdown-item" href="#!"><i class="fa-fw fa fa-file-excel-o pr-2"></i>Export to CSV</a>
</div>
</div>
</div>
<div class="card-body">
<ul class="activity">
<li class="activity-item primary">
<div class="activity-info">
<h5 class="mb-0">Meeting with Amanda and team.</h5>
<span>10:30 Jan</span>
</div>
</li>
<li class="activity-item info">
<div class="activity-info">
<h5 class="mb-0"> Assign task for Smith. </h5>
<span>
Wed, 10 Mar
</span>
</div>
</li>
<li class="activity-item success">
<div class="activity-info">
<h5 class="mb-0"> Complete milestone 3 and update. </h5>
<span>
Mon, 14 Jun
</span>
</div>
</li>
<li class="activity-item danger">
<div class="activity-info">
<h5 class="mb-0">Start new task with mark. </h5>
<span>
Sat, 01 May
</span>
</div>
</li>
<li class="activity-item warning">
<div class="activity-info">
<h5 class="mb-0">You have created a new task</h5>
<span>9:30</span>
</div>
</li>
<li class="activity-item info">
<div class="activity-info">
<h5 class="mb-0"> Meeting with client and CEO.</h5>
<span>
Fri, 10 Aug
</span>
</div>
</li>
<li class="activity-item success">
<div class="activity-info">
<h5 class="mb-0">Meeting with Amanda and team.</h5>
<span>
Fri, 01 Dec
</span>
</div>
</li>
</ul>
</div>
</div>
</div>
<div class="col-xxl-4 m-b-30">
<? include 'components/patient_listing.php'; ?>
<div class="col-xxl-8 m-b-20">
<? include 'application/views/provider/components/patient_listing.php'; ?>
</div>
</div>
@@ -297,42 +121,7 @@
<!-- end row -->
<!-- event Modal -->
<div class="modal fade" id="eventModal" tabindex="-1" role="dialog" aria-labelledby="verticalCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="verticalCenterTitle">Add New Event</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<form>
<div class="form-group">
<label for="modelemail">Event Name</label>
<input type="email" class="form-control" id="modelemail">
</div>
<div class="form-group">
<label>Choose Event Color</label>
<select class="form-control">
<option>Primary</option>
<option>Warning</option>
<option>Success</option>
<option>Danger</option>
</select>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-success">Save changes</button>
</div>
</div>
</div>
</div>
</div>
<!-- end container-fluid -->
</div>
@@ -282,6 +282,29 @@
<div><button class="btn btn-light text-primary mb-2">Upload New Avatar</button></div>
<div><button class="btn btn-danger">Delete</button></div>
</div>
<div class="py-5 profile-counter">
<ul class="nav justify-content-center text-center">
<li class="nav-item border-right px-3">
<div>
<h4 class="mb-0">ADMIN</h4>
</div>
</li>
<li class="nav-item border-right px-3">
<div>
<h4 class="mb-0">ADMIN</h4>
</div>
</li>
<li class="nav-item px-3">
<div>
<h4 class="mb-0">ADMIN</h4>
</div>
</li>
</ul>
</div>
</div>
</div>
<div class="col-xl-5 col-md-6 col-12 border-t border-right">
@@ -129,9 +129,8 @@
<i class="fa fa-angle-down"></i>
</a>
<div class="dropdown-menu animated fadeIn" aria-labelledby="navbarDropdown">
<a class="dropdown-item nav-link" href="javascript:void(0)">Action</a>
<a class="dropdown-item nav-link" href="javascript:void(0)">Another action</a>
<a class="dropdown-item nav-link" href="javascript:void(0)">Something else here</a>
<a class="dropdown-item nav-link" href="/patient/addnew">Add Patient</a>
<a class="dropdown-item nav-link" href="/patient/report">Find Patient</a>
</div>
</li>
<li class="nav-item full-screen d-none d-lg-block" id="btnFullscreen">
@@ -340,24 +339,7 @@
</ul>
</div>
</li>
<li class="nav-item">
<a class="nav-link search" href="javascript:void(0)">
<i class="ti ti-search"></i>
</a>
<div class="search-wrapper">
<div class="close-btn">
<i class="ti ti-close"></i>
</div>
<div class="search-content">
<form>
<div class="form-group">
<i class="ti ti-search magnifier"></i>
<input type="text" class="form-control autocomplete" placeholder="Search Here" id="autocomplete-ajax" autofocus="autofocus">
</div>
</form>
</div>
</div>
</li>
<li class="nav-item dropdown user-profile">
<a href="javascript:void(0)" class="nav-link dropdown-toggle " id="navbarDropdown4" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<img src="/assets/img/avtar/02.jpg" alt="avtar-img">
+15 -15
View File
@@ -1,25 +1,25 @@
<?
// USERS
define('MERMS_USER_BEFORESESSION', 120001);
define('MERMS_USER_CREATEACCOUNT', 120001);
define('MERMS_USER_RESETPASSWORD', 120001);
define('MERMS_USER_LOGIN', 120001);
define('MERMS_USER_DASHLOAD', 120001);
define('MERMS_USER_LOADPROFILE', 120001);
define('MERMS_USER_UPDATEPROFILE', 120001);
define('MERMS_USER_REMINDERS', 120001);
define('MERMS_USER_CREATEACCOUNT', 120015);
define('MERMS_USER_RESETPASSWORD', 120020);
define('MERMS_USER_LOGIN', 120025);
define('MERMS_USER_DASHLOAD', 120030);
define('MERMS_USER_LOADPROFILE', 120035);
define('MERMS_USER_UPDATEPROFILE', 120040);
define('MERMS_USER_REMINDERS', 120045);
//define('', 120001);
//define('', 120001);
// PROVIDERS
define('MERMS_PROVIDERS_BEFORESESSION', 120001);
define('MERMS_PROVIDERS_CREATEACCOUNT', 120001);
define('MERMS_PROVIDERS_RESETPASSWORD', 120001);
define('MERMS_PROVIDERS_LOGIN', 120001);
define('MERMS_PROVIDERS_DASHLOAD', 120001);
define('MERMS_PROVIDERS_LOADPROFILE', 120001);
define('MERMS_PROVIDERS_UPDATEPROFILE', 120001);
define('MERMS_PROVIDERS_REMINDERS', 120001);
define('MERMS_PROVIDERS_BEFORESESSION', 150010);
define('MERMS_PROVIDERS_CREATEACCOUNT', 150015);
define('MERMS_PROVIDERS_RESETPASSWORD', 150020);
define('MERMS_PROVIDERS_LOGIN', 150025);
define('MERMS_PROVIDERS_DASHLOAD', 150030);
define('MERMS_PROVIDERS_LOADPROFILE', 150035);
define('MERMS_PROVIDERS_UPDATEPROFILE', 150040);
define('MERMS_PROVIDERS_REMINDERS', 150045);
//define('', 120001);
+21
View File
@@ -0,0 +1,21 @@
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /api/providers/
#RewriteBase /
#Checks to
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin
ErrorDocument 404 /index.php
</IfModule>
+21
View File
@@ -0,0 +1,21 @@
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /api/users/
#RewriteBase /
#Checks to
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin
ErrorDocument 404 /index.php
</IfModule>
+111 -3
View File
@@ -7,15 +7,87 @@ require '../backend_defines.php';
//var_dump($mermsemr->cfgReadChar("database.host"));
//phpinfo();
$action = 100;
$endpoints = array(
'createuser' => array('POST'),
'login' => array('POST'),
'userlogin' => array('POST'),
'getprofile' => array('POST'),
'userstask' => array('POST')
);
switch ($action) {
header("Access-Control-Allow-Origin: *");
header("Access-Control-Expose-Headers: Access-Control-Allow-Origin");
header("Access-Control-Allow-Headers: Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With");
header("Access-Control-Allow-Methods: POST, GET, PUT, DELETE, OPTIONS");
header('Content-type: application/json');
$endpoint = strtolower(str_replace('/api/users/', '', strtok($_SERVER['REQUEST_URI'], '?')));
if (!isset($endpoints[$endpoint])) {
header('HTTP/1.1 400 Bad Request');
header('Status: 400 Bad Request');
echo "{\"status\":\"Invalid endpoint url\"}";
exit();
}
$methods = $endpoints[$endpoint];
if (array_search($_SERVER['REQUEST_METHOD'], $methods) === false) {
header('HTTP/1.1 405 Method Not Allowed');
header('Status: 405 Method Not Allowed');
echo "{\"status\":\"Invalid request method\"}";
exit();
}
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if ($endpoint == "uploadfile") {
upload_file_call();
exit();
} else {
$raw_json = file_get_contents("php://input");
$raw_array = json_decode($raw_json, true);
$in = flatten($raw_array);
}
}
// $in["action"] = MERMS_USER_CREATEACCOUNT;
$in["loc"] = $_SERVER["REMOTE_ADDR"];
switch ($endpoint) {
case 'userlogin':
case 'login':
$in["action"] = MERMS_USER_LOGIN;
//$in["account_no"] = "7702222222";
//$in["password"] = "1234";
break;
case 'createuser':
$in["action"] = MERMS_USER_CREATEACCOUNT;
//$in["action_recieved"] = MERMS_USER_CREATEACCOUNT;
break;
case 'userstask':
$in["action"] = MERMS_USER_REMINDERS;
break;
}
$out = $in;
switch ( $in["action"] ) {
case 100:
$out["return"] = "REACH AND BACK";
$out["retrun_number"] = rand(1000,9999);
$out["endpoint"] = $endpoint;
break;
case MERMS_USER_BEFORESESSION:
break;
case MERMS_USER_CREATEACCOUNT:
// start account
// complete account
$out["return"] = "REACH AND BACK CREATE ACCOUNT";
$out["retrun_number"] = rand(1000,9999);
$out["endpoint"] = $endpoint;
break;
case MERMS_USER_RESETPASSWORD:
@@ -44,4 +116,40 @@ switch ($action) {
break;
}
// calling the backend
$out["internal_return"]= $mermsemr->mermsemr_api($in,$out);
header("HTTP/1.1 200 OK");
header("Status: 200 OK");
//$out = array_merge($in, $out); // DEBUG
echo json_encode(processOutJson($in, $out));
exit();
function flatten($data, $parentkey = "") {
$result = array();
foreach ($data as $key => $val) {
if (is_array($val)) {
$result = array_merge($result, flatten($val, $parentkey . $key . "_"));
} else {
$result[$parentkey . $key] = $val;
}
}
return $result;
}
function processOutJson($in, $out) {
switch ($in["action"]) {
case 1000:
break;
default:
return $out;
}
return $res;
}
?>