protected override Task OnClientDisconect(string uid) { var session = Get(uid); if (session == null) { return(Task.FromResult(1)); } DashboardSocket.ActionDisconnected(Get(uid).Action.Key); Get(uid)?.OnClose(); CloseSession(uid); return(Task.FromResult(1)); }
public IActionResult GetDashboardJavascript(string recompile = "0") { Response.ContentType = "text/javascript"; if (this.Context.Admin == null || this.Context.Admin.GetStatus() == AdminStatusDM.NotActive) { return(this.Content("console.error('ccsocket:: auth error');")); } string js_extension = string.Empty; if (string.IsNullOrEmpty(DashboardJS) || recompile.Equals("1")) { string path = this.HostingEnvironment.WebRootPath + @"/js/compiled/dashboard.js"; string direct = this.HostingEnvironment.WebRootPath + @"/js/compiled/direct.js"; var baseUrl = $"{(this.Request.Scheme.Equals("https") ? "wss" : "ws")}://{this.Request.Host.Value.ToString()}{this.Request.PathBase.Value.ToString()}"; DashboardJS = (new Microsoft.Ajax.Utilities.Minifier().MinifyJavaScript(System.IO.File.ReadAllText(path))) .Replace("[HOST]", baseUrl) .Replace("\"[EVENTS]\"", DashboardSocket.PrintEvents()) + ";" + (new Microsoft.Ajax.Utilities.Minifier().MinifyJavaScript(System.IO.File.ReadAllText(direct))); } // close all previous sessions for this admin!! var sessions = (from d in DashboardSocketsServer.Sessions where d.Value.Admin.username.Equals(this.Context.Admin.username) select d.Value.Key).ToList(); foreach (var session in sessions) { DashboardSocketsServer.CloseSession(session); } DashboardSessionSocket socket = new DashboardSessionSocket(this.Context); DashboardSocketsServer.AddSession(socket); js_extension = DashboardJS.Replace("[SGUID]", socket.Key); return(this.ReturnContent(js_extension)); }
protected override Task OnClientConnect(string uid) { DashboardSocket.ActionConnected(ActionLiveModel.Convert(Get(uid))); return(base.OnClientConnect(uid)); }
public IActionResult OnNewUpsell() { DashboardSocket.OnNewUpsell("providername", "actionid"); return(this.Content("ok")); }
/// /// Main entry point /// public async Task <IActionResult> Index([FromQuery] T model) { try { model.Prepare(this.Request); this.TrackingID = model.TrackingID; this.Action = await this.Database.Query <ActionDM>().Where("trackingid={0}", this.TrackingID).LoadSingleAsync(); await this.PreparePostbackObject(); if (string.IsNullOrEmpty(this.TrackingID)) { this.Postback.Log("Could not get trackingGuid.. Flow is interupted"); return(this.StatusCode(400)); } if (this.Action == null && this.RequireAction) { this.Postback.Log("Could not load Action for trackingId: " + this.TrackingID); return(this.StatusCode(400)); } this.Action = await this.Call(model); if (this.Action == null) // abstraction class had some error. we assume that that class will make some log { return(this.StatusCode(400)); } bool isStolen = false, isCharge = false; string providerName = (this.Action.providerid.HasValue ? ProvidersCache.Instance.Get(this.Action.providerid.Value).Name : "provider null?"); if (model.Type == ActionModelEvent.Charge || model.Type == ActionModelEvent.Subscribe) { isCharge = true; DashboardSocket.OnNewTransaction(providerName, this.Action.actionid); this.Action.times_charged++; isStolen = this.SystemPostback(); } if (model.Type == ActionModelEvent.Refund) { DashboardSocket.OnNewRefund(providerName, this.Action.actionid); this.Action.has_refund = true; } if (model.Type == ActionModelEvent.Chargeback) { DashboardSocket.OnNewChargeback(providerName, this.Action.actionid); this.Action.has_chargeback = true; } this.Action.UpdateLater(); await this.Database.TransactionalManager.RunAsync(); // Redirect to page for facebook pixel if (isCharge && !isStolen && this.Action != null && !string.IsNullOrEmpty(this.Action.fbid)) { return(this.Redirect("/fbid/" + this.Action.fbid)); } return(StatusCode(200)); } catch (Exception e) { this.Logger.StartLoggin(model != null ? model.TrackingID : "notracking") .Add("providername", ProvidersCache.Instance.Get(this.ProviderID).Name) .Add("query", HttpContext.Request.QueryString.Value) .Add(model != null ? model : null) .OnException(e); return(StatusCode(200)); } }
public async Task <DistributionModel> OnQuestion(string key, PrelanderTagModel model) { try { this.Action.Trace("q.start"); GetPrelander(model.prelanderid); if (this.Prelander == null) { return new DistributionModel() { Status = false } } ; this.Action.Trace("q.after prelander"); var tag = PrelandersCache.Instance.GetTag(this.Prelander.ID, model.tag); if (tag == null) { return new DistributionModel() { Status = false } } ; this.Action.Trace("q.after tag"); var answer = PrelandersCache.Instance.GetAnswer(this.Prelander.ID, model.tag, model.answer); if (answer == null) { return new DistributionModel() { Status = false } } ; this.Action.Trace("q.after answer"); this.RecreateTagModel(this.Action.prelander_data); if (this.TagManager.ContainsKey(model.tag)) { this.TagManager[model.tag] = model.index; this.Action.prelander_data = this.ActionPrelanderCache; this.Action.UpdateLater(); } this.Action.Trace("q.after recreate and update"); var interaction = new PrelanderTagActionInteractionDM(this.Database) { prelanderid = this.Prelander.ID, actionid = this.Action.GetStringID(), prelandertagid = tag.GetStringID(), answerid = answer.GetStringID() }; interaction.InsertLater(); this.Action.Trace("q.after interaction"); this.UpdateTagManager(); this.Database.TransactionalManager.RunAsync(); this.Action.Trace("q.after update"); DashboardSocket.OnActionUpdate(this.Action); return(new DistributionModel() { Status = true }); } catch (Exception e) { this.Logger.StartLoggin("") .Add("where", "pl-onQuestion") .Add("model.answer", model.answer) .Add("model.tag", model.tag) .OnException(e); return(new DistributionModel() { Status = false }); } }
public async Task <DistributionModel> OnInit(string key, PrelanderInitModel model) { try { GetPrelander(model.prelanderid); if (this.Prelander == null) { this.Logger.StartLoggin(this.Action.GetStringID()) .Where("pl-init") .Add("tagCount", model.tags != null ? model.tags.Count.ToString() : "null") .Add(model.tags) .OnException(new Exception("Could not get prealnder from id: " + model.prelanderid)); return(new DistributionModel() { Status = false }); } if (this.Prelander.Answers == null || this.Prelander.Tags == null || this.Prelander.Tags.Count == 0 || this.Prelander.Answers.Count == 0) { foreach (var tag in model.tags) { var newTag = new PrelanderTagDM(this.Database) { prelandertagid = string.Format("{0}.{1}.{2}", this.Prelander.ID, (tag.isQuestion ? "a" : "t"), tag.name), name = tag.name, value = tag.value, prelanderid = this.Prelander.ID, isQuestion = tag.isQuestion }; newTag.InsertLater(); this.Prelander.Tags.Add(newTag); if (tag.answers != null) { for (int i = 0; i < tag.answers.Length; i++) { var newAnswer = new PrelanderTagAnswerDM(this.Database) { answerid = string.Format("{0}-{1}", newTag.GetStringID(), i), prelandertagid = newTag.GetStringID(), prelanderid = this.Prelander.ID, tagName = tag.name, name = string.Format("ccqa" + i), value = tag.answers[i] }; newAnswer.InsertLater(); this.Prelander.Answers.Add(newAnswer); } } } } this.Action.Trace("init.before tag manager"); foreach (var tag in model.tags) { this.TagManager.Add(tag.name, null); } this.Action.Trace("init.after tag manager"); this.Action.prelanderid = this.Prelander.ID; this.Action.prelandertypeid = this.Prelander.Type.ID; this.Action.prelander_data = this.ActionPrelanderCache; this.Action.UpdateLater(); DashboardSocket.OnActionUpdate(this.Action); this.Action.Trace("init.after update"); this.UpdateTagManager(); this.Action.Trace("init.after update tag manager"); this.Database.TransactionalManager.RunAsync(); return(new DistributionModel() { Status = true }); } catch (Exception e) { this.Logger.StartLoggin("") .Add("where", "pl-init") .Add("tagCount", model.tags != null ? model.tags.Count.ToString() : "null") .Add(model.tags) .OnException(e); return(new DistributionModel() { Status = false }); } }