Exemple #1
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);
        }
Exemple #2
0
        public async Task <List <UserDetailsModel> > RetrieveElaspedTime(UserDetailsEntity userDetailsEntity)
        {
            try
            {
                var entityList = new List <UserDetailsModel>();
                if (!string.IsNullOrEmpty(userDetailsEntity.UserName) && !string.IsNullOrEmpty(userDetailsEntity.StopWatchName))
                {
                    var userEntity = await _azureService.RetrieveEntityAsync(userDetailsEntity);

                    entityList.Add(new UserDetailsModel
                    {
                        UserName      = ((UserDetailsEntity)userEntity.Result).UserName,
                        StopWatchName = ((UserDetailsEntity)userEntity.Result).StopWatchName,
                        Status        = ((UserDetailsEntity)userEntity.Result).Status,
                        ElapsedTime   = _elapsedTime.CalculateElapsedTime(((UserDetailsEntity)userEntity.Result).StartTime, ((UserDetailsEntity)userEntity.Result).EndTime)
                    });
                }

                if (!string.IsNullOrEmpty(userDetailsEntity.StopWatchName))
                {
                    return(entityList);
                }

                var entities = _azureService.RetrieveEntities(userDetailsEntity);
                entityList.AddRange(entities.Select(x => new UserDetailsModel
                {
                    UserName      = x.UserName,
                    StopWatchName = x.StopWatchName,
                    Status        = x.Status,
                    ElapsedTime   = _elapsedTime.CalculateElapsedTime(x.StartTime, x.EndTime)
                }).ToList());

                return(entityList);
            }
            catch (Exception ex)
            {
                Console.Error.WriteLine(ex.Message);
                throw;
            }
        }