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 }); } }