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); }
private UserDetailsEntity MapEntity(StopwatchEntity entity) { return(new UserDetailsEntity { UserName = entity.UserName, StopWatchName = entity.StopWatchName }); }
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); }
public async Task Save(StopwatchEntity stopwatchEntity) { try { await _azureService.UpdateTableAsync(stopwatchEntity); } catch (Exception ex) { Console.Error.WriteLine(ex.Message); throw; } }
//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); }
public async Task AddMessageAsync(StopwatchEntity entity) { var messageString = JsonConvert.SerializeObject(entity); var message = new CloudQueueMessage(messageString); await _queue.AddMessageAsync(message); }
public void Save(StopwatchEntity stopwatchEntity) { _stopwatchDetails.Save(stopwatchEntity); }