//ARDVRO 2021
//Download
//https://github.com/ardvro/common/sample
//https://cdn.ardvro.com/res/sample/sqljson/index.html
//https://cdn.ardvro.com/res/sample/sqljson/sample.js
var _connector;
openConnection();
function openConnection() {
log("Get the connection key.");
const webcfg = new WebsiteConfig();
const cfg = webcfg.WebApps[0];
const wsdata = {
ClientRsaKey: cfg.ClientRsaKey,
ServerRsaKey: cfg.ServerRsaKey,
AppCode: cfg.AppCode,
WebSocketUrl: cfg.WebSocketUrl,
AppName: cfg.AppName
};
log("Creating WebSocketProtocol Object.");
_connector = new WebSocketClient(wsdata);
_connector.Open(onConnectionConfirmed, onUnrequestedDataReceived, onConnectionClosed);
}
function onConnectionConfirmed(connectInfo) {
log("Connected to server : ");
log("creating Controller");
let profileCtrl = new ProfileControllerTest({
Connector: _connector,
OnLoad: function (ctrl) {
log("querying profiles");
ctrl.GetProfilesByName("test contact", function (results) {
log("Profiles results:");
log(results);
});
}
});
}
//notification can ben handle here
function onUnrequestedDataReceived(box) {
}
function onConnectionClosed(e) {
}
var ProfileControllerTest = function ProfileControllerTest(cfg) {
let ctrl = {};
log("initializing Controller");
let dbcontext;
ctrl.GetProfilesByName = function (name, callback) {
dbcontext.pfeProfile.Where("name like (?)", "%" + name + "%").List("*").Send(function (results) {
if (callback != null) {
callback(results);
}
});
};
ctrl.GetContacts = function (profileId, name, pageIndex, pageSize, callback) {
name = '%' + name + '%';
dbcontext.pfeProfileContact.Join("pfeProfile,pfeProfileProvider").Where("pfeProfileContact.pfeProfileId=? and pfeProfileContact.Name like ?", profileId, name).OrderBy("pfeProfileContact.Name ASC").Limit(pageIndex, pageSize).PagingJsons("*").Send(function (jsons) {
if (callback != null) {
let list = [];
if (jsons != null && jsons != "") {
list = JSON.parse(jsons);
}
callback(list);
}
});
};
ctrl.GetProfile = function (profileId, callback) {
dbcontext.pfeProfile.Join("pfeProfileProvider").Where("pfeProfile.Id=?", Number(profileId)).Json("*").Send(function (json) {
if (callback != null) {
let list = [];
if (json != null && json != "") {
list = JSON.parse(json);
}
callback(list);
}
});
};
ctrl.GetProfileByUserId = function (userId, callback) {
dbcontext.pfeProfile.Join("pfeProfileUser,pfeProfileProvider").Where("pfeProfileUser.ssoUserId =?", userId).Json("*").Send(function (jsons) {
if (callback != null) {
let profile;
if (jsons != null && jsons != "") {
profile = JSON.parse(jsons);
}
callback(profile);
}
});
};
ctrl.SaveContact = function (username, id, profileIdFrom, profileIdTo, name, avatar, callback) {
let contact = {};
contact.Id = id;
contact.Status = 1;
contact.Updated = cfg.GetServerTime().Format('yyyy-MM-dd HH:mm:ss');
contact.Updater = username;
contact.pfeProfileId = profileIdFrom;
contact.pfeProfileId2 = profileIdTo;
contact.Name = name;
contact.Avatar = avatar;
contact.Detail = "";
dbcontext.pfeProfileContact.Save(contact).Send(function (result) {
if (callback != null) {
callback(result);
}
});
};
ctrl.GetProfileProviderByUserName = function (username, onResponse) {
dbcontext.pfeProfileProvider.Join("pfeProfile").Where("Username=?", username).Json("*").Send(function (json) {
if (json != null && json != "") {
let data = JSON.parse(json);
if (onResponse != null) {
onResponse(data.pfeProfile);
}
}
else {
if (onResponse != null) {
onResponse(null);
}
}
});
};
ctrl.GetProfileProviderByUserNameAndProviderType = function (username, providerType, onResponse) {
dbcontext.pfeProfileProvider.Join("pfeProfile").Where("Username=? and ProviderType=?", username, providerType).Json("*").Send(function (json) {
if (json != null && json != "") {
let data = JSON.parse(json);
if (onResponse != null) {
onResponse(data.pfeProfile);
}
}
else {
if (onResponse != null) {
onResponse(null);
}
}
});
};
ctrl.CreateProfile = function (name, email, providerType, userId, profileStatus, onResponse) {
dbcontext.pfeProfileProvider.Join("pfeProfile").Where("Username=?", email).Json("*").Send(function (json) {
if (json != null && json != "") {
let data = JSON.parse(json);
if (onResponse != null) {
onResponse(data.pfeProfile);
}
}
else {
let profile = {};
profile = {};
profile.Status = profileStatus;
profile.Updater = name;
profile.Name = name;
profile.pfeProfileProviders = [];
let provider = {};
provider.Status = 1;
provider.Updater = name;
provider.Username = email;
provider.ProviderType = providerType;
provider.Credentials = "";
profile.pfeProfileProviders.push(provider);
let profileuser = {};
if (userId != null && userId != 0 && userId != "") {
profileuser.Status = 1;
profileuser.Updater = name;
profileuser.ssoUserId = userId;
profile.pfeProfileUsers = [];
profile.pfeProfileUsers.push(profileuser);
}
dbcontext.pfeProfile.Save(profile).Send(function (result) {
provider.pfeProfileId = result.Id;
profileuser.pfeProfileId = result.Id;
if (result.pfeProfileUsers != null && result.pfeProfileUsers.length > 0) {
profile.pfeProfileUsers = result.pfeProfileUsers;
}
if (result.pfeProfileProviders != null && result.pfeProfileProviders.length > 0) {
profile.pfeProfileProviders = result.pfeProfileProviders;
}
if (onResponse != null) {
onResponse(result);
}
});
}
});
};
ctrl.SaveProfile = function (profile, callback) {
dbcontext.pfeProfile.Upsert(profile).Send(function (result) {
if (callback != null) {
callback(result);
}
});
};
function construct() {
dbcontext = new SqlJson({
Connector: cfg.Connector,
OnLoad: function (db) {
dbcontext = db;
log("Controller finished inizializing");
if (cfg.OnLoad != null) {
cfg.OnLoad(ctrl);
}
}
});
}
construct();
return ctrl;
};