public bool Charge(UUID agentID, int amount, string text, int daysUntilNextCharge, TransactionType type, string identifer, bool chargeImmediately) { IMoneyModule moneyModule = m_registry.RequestModuleInterface<IMoneyModule>(); if (moneyModule != null) { if (chargeImmediately) { bool success = moneyModule.Charge(agentID, amount, text, type); if (!success) return false; } IScheduleService scheduler = m_registry.RequestModuleInterface<IScheduleService>(); if (scheduler != null) { OSDMap itemInfo = new OSDMap(); itemInfo.Add("AgentID", agentID); itemInfo.Add("Amount", amount); itemInfo.Add("Text", text); itemInfo.Add("Type", (int)type); SchedulerItem item = new SchedulerItem("ScheduledPayment" + identifer, OSDParser.SerializeJsonString(itemInfo), false, DateTime.UtcNow, daysUntilNextCharge, RepeatType.days, agentID); itemInfo.Add("SchedulerID", item.id); scheduler.Save(item); } } return true; }
private object[] GetDBValues(SchedulerItem I) { return new object[] { I.id, I.FireFunction, I.FireParams, I.RunOnce, I.RunEvery, I.TimeToRun, I.HisotryKeep, I.HistoryReciept, I.HistoryLastID, I.CreateTime, I.StartTime, (int) I.RunEveryType, I.Enabled, I.ScheduleFor }; }
public string SchedulerSave(SchedulerItem I) { object[] dbv = GetDBValues(I); Dictionary<string, object> values = new Dictionary<string, object>(dbv.Length); int i = 0; foreach (object value in dbv) { values[theFields[i++]] = value; } if (SchedulerExist(I.id)) { QueryFilter filter = new QueryFilter(); filter.andFilters["id"] = I.id; m_Gd.Update("scheduler", values, null, filter, null, null); } else { m_Gd.Insert("scheduler", values); } return I.id; }
public SchedulerItem SaveHistoryComplete(SchedulerItem I) { Dictionary<string, object> values = new Dictionary<string, object>(3); values["is_complete"] = true; values["complete_time"] = DateTime.UtcNow; values["reciept"] = ""; QueryFilter filter = new QueryFilter(); filter.andFilters["id"] = I.HistoryLastID; m_Gd.Update("scheduler_history", values, null, filter, null, null); return I; }
public SchedulerItem SaveHistory(SchedulerItem I) { string his_id = UUID.Random().ToString(); Dictionary<string, object> row = new Dictionary<string, object>(7); row["id"] = his_id; row["scheduler_id"] = I.id; row["ran_time"] = DateTime.UtcNow; row["run_time"] = I.TimeToRun; row["is_complete"] = 0; row["complete_time"] = DateTime.UtcNow; row["reciept"] = ""; m_Gd.Insert("scheduler_history", row); I.HistoryLastID = his_id; return I; }
public void HistoryDeleteOld(SchedulerItem I) { if ((I.id != "") && (I.HistoryLastID != "")) { QueryFilter filter = new QueryFilter(); filter.andNotFilters["id"] = I.HistoryLastID; filter.andFilters["scheduler_id"] = I.id; m_Gd.Delete("scheduler_history", filter); } }
private void FireEvent(SchedulerItem I) { try { // save chagnes before it fires in case its chagned during the fire I = m_database.SaveHistory(I); if (I.RunOnce) I.Enabled = false; if (I.Enabled) I.CalculateNextRunTime(I.TimeToRun); if (!I.HisotryKeep) m_database.HistoryDeleteOld(I); m_database.SchedulerSave(I); // now fire List<Object> reciept = EventManager.FireGenericEventHandler(I.FireFunction, I.FireParams); if (!I.HistoryReciept) I = m_database.SaveHistoryComplete(I); else { foreach (string results in reciept.Cast<string>().Where(results => results != "")) { m_database.SaveHistoryCompleteReciept(I.HistoryLastID, results); } } } catch (Exception e) { MainConsole.Instance.ErrorFormat("[Scheduler] FireEvent Error {0}: {1}", I.id, e.ToString()); } }
public string Save(SchedulerItem I) { if (m_doRemoteCalls) return (string) DoRemote(I); return m_database.SchedulerSave(I); }
public bool Register(SchedulerItem I, OnGenericEventHandler handler) { if (m_doRemoteCalls) return false; EventManager.RegisterEventHandler(I.FireFunction, handler); return true; }