/// <summary> /// Builds string request from AlertSettings to be sent to CryptoCompare subscribe call /// sample output: "42[\"SubAdd\",{\"subs\":[\"0~Bitstamp~BTC~USD\",\"0~Coinbase~BTC~USD\"]}]" /// </summary> /// <param name="sSubcriptionType"></param> /// <returns>Return null if parsing was not possible</returns> public string BuildRequest(string sSubcriptionType) { string sRequest = "42[\"SubAdd\",{\"subs\":["; //\"0~Bitstamp~BTC~USD\",\"0~Coinbase~BTC~USD\"]}]"; using (CryptoAlertsContext dbContext = new CryptoAlertsContext()) { this.alertSettings = dbContext.AlertSettings.Where(x => x.DtDeleted == null && x.BActive == true).ToList <AlertSetting>(); int iCount = this.alertSettings.Count; foreach (AlertSetting alertSetting in this.alertSettings) { //build subscription string string sSetting = "\"" + sSubcriptionType + "~" + alertSetting.Exchanx.SName; sSetting += "~" + alertSetting.CurrencyPair.SName.Replace('/', '~') + "\""; sRequest += sSetting; if (iCount > 1) { sRequest += ","; } iCount--; } sRequest += "]}]"; } return(sRequest); }
public static async Task <Alert> CreateAlert(int iAlertSettingId, int iUserId, string sTitle, string sMessage) { Alert alert = new Alert(); using (CryptoAlertsContext dbContext = new CryptoAlertsContext()) { int iAlerts = dbContext.Alerts.Where(x => x.IUserId == iUserId && x.IAlertSettingId == iAlertSettingId && !x.DtDeleted.HasValue && !x.DtSent.HasValue).Count(); if (iAlerts == 0) { alert.IAlertSettingId = iAlertSettingId; alert.IUserId = iUserId; alert.SMessage = sMessage; alert.STitle = sTitle; dbContext.Alerts.Add(alert); int id = await dbContext.SaveChangesAsync(); alert.IAlertId = id; Console.WriteLine("Alert table updated: " + id); } } return(alert); }