public async Task <IHttpActionResult> PostSpotStatus(TSQuery tsQuery) { int iTemp = 0; string inTS = "", inTSdt, outTS, defaultTS = "19010101000000", sTemp; DateTime dtTemp; SpotStatus spotStatus = new SpotStatus(); // Comvert incoming TS data time string to the format "YYYY-MM-DD 00:00:00" if (tsQuery.TS == null || tsQuery.TS.Length != 14 || tsQuery.TS.CompareTo(defaultTS) < 0) { inTS = defaultTS; } else { inTS = tsQuery.TS; } inTSdt = inTS.Substring(0, 4) + "-" + inTS.Substring(4, 2) + "-" + inTS.Substring(6, 2) + " " + //Date inTS.Substring(8, 2) + ":" + inTS.Substring(10, 2) + ":" + inTS.Substring(12, 2); //Time // Create Timestamp for fetch with 20s overlap (To handle potential lag) dtTemp = DateTime.UtcNow; //dtTemp = db.GetDbUtcTimestamp(); outTS = dtTemp.AddSeconds(-20).ToString("yyyyMMddHHmmss"); if (outTS.CompareTo(inTS) < 0) // Make sure Xs earlier is not before this fetch (should never happen if client updates are every 60s) { outTS = inTS; } spotStatus.TS = outTS; spotStatus.Result = "Api reached"; if (tsQuery.TimeToDie == null || tsQuery.TimeToDie == "") { spotStatus.SpotStates = db.GetSpotStateChangesSinceTS(inTSdt); //spotStatus.SpotStates = db.GetSpotStateChangesSinceTS("1900-01-01 00:00:00"); } else { spotStatus.SpotStates = db.GetSpotStateChangesSinceTS(inTSdt, tsQuery.TimeToDie); } return(CreatedAtRoute("DefaultApi", new { id = spotStatus.TS }, spotStatus)); }
public int GetSpotStatusID(SpotStatus oSpotStatus) { var iSpotStatusID = 0; var sCacheItemKey = "SpotStatus-" + oSpotStatus.ToString(); if (HttpContext.Current.Cache[sCacheItemKey] == null) { iSpotStatusID = GetSpotStatusFromDB(oSpotStatus).IASpotStatusID; HttpContext.Current.Cache.Add(sCacheItemKey, iSpotStatusID, null, DateTime.Now.AddSeconds(3600), TimeSpan.Zero, CacheItemPriority.Normal, null); } else { iSpotStatusID = (int) HttpContext.Current.Cache[sCacheItemKey]; } return iSpotStatusID; }
/// <summary> /// Retreives the apporpirate SpotsStatus object from the DB based on the enum value passed in /// </summary> /// <param name="oSpotStatus"></param> /// <returns></returns> private IASpotStatus GetSpotStatusFromDB(SpotStatus oSpotStatus) { IASpotStatus oIASpotStatus = null; switch (oSpotStatus) { case SpotStatus.OnHold: oIASpotStatus = DataAccess.IASpotStatus.SingleOrDefault(row => row.Name == "On Hold"); break; case SpotStatus.Unviewed: oIASpotStatus = DataAccess.IASpotStatus.SingleOrDefault(row => row.Name == "Unviewed"); break; case SpotStatus.Viewed: oIASpotStatus = DataAccess.IASpotStatus.SingleOrDefault(row => row.Name == "Viewed"); break; case SpotStatus.Finished: oIASpotStatus = DataAccess.IASpotStatus.SingleOrDefault(row => row.Name == "Finished"); break; case SpotStatus.NeedsFix: oIASpotStatus = DataAccess.IASpotStatus.SingleOrDefault(row => row.Name == "Needs Fix"); break; default: throw new ApplicationException(string.Format("Spot status is undefined or doesn't exist: {0}", oSpotStatus.ToString())); } return oIASpotStatus; }
public static StatusOption GetStatusOption(SpotStatus status, DataAccessDataContext context) { return StatusService.GetStatuses(context)[StatusType.SpotStatus].Where(s => s.SystemName == status.ToString()).SingleOrDefault(); }