private static async Task UpdateTable(CloudStorageAccount storageAccount, StopwatchEntity entity)
        {
            var tableClient = storageAccount.CreateCloudTableClient();
            var table       = tableClient.GetTableReference("stopwatchdetails");

            var retrieveEntity = TableOperation.Retrieve <StopwatchEntity>(
                entity.UserName.ToLower().Replace(" ", "-"),
                entity.StopWatchName.ToLower().Replace(" ", "-")
                );
            var updateEntity = await table.ExecuteAsync(retrieveEntity);

            var newEntity = new StopwatchEntity
            {
                PartitionKey  = ((StopwatchEntity)updateEntity.Result).PartitionKey,
                RowKey        = ((StopwatchEntity)updateEntity.Result).RowKey,
                UserName      = ((StopwatchEntity)updateEntity.Result).UserName,
                StopWatchName = ((StopwatchEntity)updateEntity.Result).StopWatchName,
                Status        = entity.Status,
                ElapsedTime   = entity.ElapsedTime
            };

            var operation = TableOperation.InsertOrMerge(newEntity);

            table.Execute(operation);
        }
示例#2
0
 private UserDetailsEntity MapEntity(StopwatchEntity entity)
 {
     return(new UserDetailsEntity
     {
         UserName = entity.UserName,
         StopWatchName = entity.StopWatchName
     });
 }
示例#3
0
        public async Task UpdateTableAsync(StopwatchEntity entity)
        {
            entity.PartitionKey = entity.UserName.ToLower().Replace(" ", "-");
            entity.RowKey       = entity.StopWatchName.ToLower().Replace(" ", "-");
            var entityStatus = await RetrieveEntityAsync(MapEntity(entity));

            var dateTime = DateTime.UtcNow.ToString(DateFormat, CultureInfo.InvariantCulture);

            if (entity.Start)
            {
                if (entityStatus.Result != null &&
                    ((UserDetailsEntity)entityStatus.Result).Status == StopwatchStatus.Stop.ToString())
                {
                    entity.Status = StopwatchStatus.Start.ToString();
                    //Need to set startdate to now and add the time that was on clock when stopped. This will then handle a stop start situation, where
                    //clock was not restarted or reset.
                    var elapsedTime =
                        _elapsedTime.CalculateElapsedTime(((UserDetailsEntity)entityStatus.Result).EndTime,
                                                          ((UserDetailsEntity)entityStatus.Result).StartTime);
                    var timeSpan = TimeSpan.Parse(elapsedTime);
                    entity.StartTime = DateTime.UtcNow.Add(timeSpan).ToString(DateFormat);
                }
                else
                {
                    entity.Status    = StopwatchStatus.Created.ToString();
                    entity.StartTime = dateTime;
                }
            }
            if (entity.Restart)
            {
                entity.Status    = StopwatchStatus.Restart.ToString();
                entity.StartTime = dateTime;
            }
            if (entity.Stop)
            {
                entity.Status  = StopwatchStatus.Stop.ToString();
                entity.EndTime = dateTime;
            }
            else
            {
                entity.EndTime = string.Empty;
            }
            if (entity.Reset)
            {
                entity.Status    = StopwatchStatus.Reset.ToString();
                entity.StartTime = dateTime;
            }

            var operation = TableOperation.InsertOrMerge(entity);
            await _table.ExecuteAsync(operation);

            //This is only for when I run agains the webjob. The qebjob has a queue trigger
            //await AddMessageAsync(entity);
        }
示例#4
0
 public async Task Save(StopwatchEntity stopwatchEntity)
 {
     try
     {
         await _azureService.UpdateTableAsync(stopwatchEntity);
     }
     catch (Exception ex)
     {
         Console.Error.WriteLine(ex.Message);
         throw;
     }
 }
示例#5
0
        //GET api/values
        //public List<Employee> Get()
        //{
        //    CloudTable table = Stopwatch.Initializer();

        //    return new EmployeeDatabase();
        //}

        public StopwatchEntity Get(string UserName)
        {
            StopwatchEntity swe = Stopwatch.GetLoggedInStopwatch(UserName);

            return(swe);
        }
示例#6
0
 public async Task AddMessageAsync(StopwatchEntity entity)
 {
     var messageString = JsonConvert.SerializeObject(entity);
     var message       = new CloudQueueMessage(messageString);
     await _queue.AddMessageAsync(message);
 }
示例#7
0
 public void Save(StopwatchEntity stopwatchEntity)
 {
     _stopwatchDetails.Save(stopwatchEntity);
 }