Пример #1
0
        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));
        }
Пример #2
0
        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;
        }
Пример #3
0
        /// <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;
        }
Пример #4
0
 public static StatusOption GetStatusOption(SpotStatus status, DataAccessDataContext context)
 {
     return StatusService.GetStatuses(context)[StatusType.SpotStatus].Where(s => s.SystemName == status.ToString()).SingleOrDefault();
 }