示例#1
0
        public void SaveUserConfiguration(UserConfigurationEntity entity)
        {
            _dbContext.Set <UserConfigurationEntity>().Update(entity);
            _dbContext.SaveChanges();

            DetachedEntityOrNull(entity);
        }
        public async Task <IActionResult> SaveTimeZoneAsync([FromBody] UserConfigurationEntity configuration)
        {
            if (configuration == null)
            {
                return(this.BadRequest(new { message = "Configuration details parameter is null." }));
            }

            try
            {
                var claims = this.GetUserClaims();
                this.telemetryClient.TrackTrace($"User {claims.UserObjectIdentifer} submitted settings. Time zone- {configuration.IanaTimezone}");
                configuration.UserAdObjectId  = claims.UserObjectIdentifer;
                configuration.WindowsTimezone = TZConvert.IanaToWindows(configuration.IanaTimezone);

                var isAddOperationSuccess = await this.userConfigurationStorageProvider.AddAsync(configuration).ConfigureAwait(false);

                if (isAddOperationSuccess)
                {
                    return(this.Ok("Configuration saved"));
                }

                return(this.StatusCode(StatusCodes.Status500InternalServerError, "Unable to save user configuration/time zone"));
            }
            catch (Exception ex)
            {
                this.telemetryClient.TrackException(ex);
                return(this.StatusCode(StatusCodes.Status500InternalServerError, ex.Message));
            }
        }
示例#3
0
        // TODO: This probably won't be necessary
        public UserConfiguration GetUserConfiguration(long id)
        {
            // TODO: Implement a UserController (REST endpoint), user creation, and a proper user system.
            //UserConfigurationEntity entity = _lifeManagerRepository.LoadUserConfiguration(id);
            UserConfigurationEntity entity = _lifeManagerRepository.LoadUserConfiguration(1);

            return(new UserConfigurationMapper().ToDomain(entity));
        }
示例#4
0
        public UserConfigurationEntity LoadUserConfiguration(long userConfigurationId)
        {
            UserConfigurationEntity userConfigurationEntity = _dbContext.UserConfiguration
                                                              .Include(userConfiguration => userConfiguration.SortedColumns)
                                                              .FirstOrDefault(userConfiguration => userConfiguration.Id == userConfigurationId);

            return(DetachedEntityOrNull(userConfigurationEntity));
        }
示例#5
0
        public User ToDomain(UserEntity entity)
        {
            // TODO: OneToMany User -> Configuration
            UserConfigurationEntity configEntity = entity.UserConfigurationEntity.IsNullOrEmpty() ? null : entity.UserConfigurationEntity[0];

            return(new User {
                Id = entity.Id,
                DisplayName = entity.DisplayName,
                DateTimeCreated = entity.DateTimeCreated,
                DateTimeLastModified = entity.DateTimeLastModified,
                Configuration = configEntity == null ? null : new UserConfigurationMapper().ToDomain(configEntity)
            });
        }
示例#6
0
        /// <summary>
        /// Add or update user configuration.
        /// </summary>
        /// <param name="userConfiguration">User configuration entity.</param>
        /// <returns>A task that represents the work queued to execute.</returns>
        public async Task <bool> AddAsync(UserConfigurationEntity userConfiguration)
        {
            try
            {
                await this.EnsureInitializedAsync().ConfigureAwait(false);

                TableOperation insertOrMergeOperation = TableOperation.InsertOrReplace(userConfiguration);
                TableResult    result = await this.cloudTable.ExecuteAsync(insertOrMergeOperation).ConfigureAwait(false);

                return(result.Result != null);
            }
            catch (Exception ex)
            {
                this.telemetryClient.TrackException(ex);
                throw;
            }
        }
示例#7
0
        public void SaveTableViewConfiguration(UserConfiguration.ITableViewConfiguration tableViewConfiguration)
        {
            UserConfigurationEntity userConfigurationEntity =
                _lifeManagerRepository.LoadUserConfigurationAttached(tableViewConfiguration.UserConfigurationId);

            // Remove existing column configuration for this table.
            List <ColumnSortOrderEntity> otherTableColumns = userConfigurationEntity.SortedColumns
                                                             .Where(sortedColumn => !tableViewConfiguration.GetTableName().Equals(sortedColumn.TableName))
                                                             .ToList();

            userConfigurationEntity.SortedColumns.Clear();
            foreach (var columnSortOrderEntity in otherTableColumns)
            {
                userConfigurationEntity.SortedColumns.Add(columnSortOrderEntity);
            }

            // TODO: SortedColumns should be a List, so AddRange should be used.
            // Add the new/updated column configuration for this table.
            tableViewConfiguration.ColumnSortOrderConfig
            .Select(columnSortOrderConfig => new ColumnSortOrderEntity {
                UserConfigurationId = columnSortOrderConfig.UserConfigurationId,
                TableName           = tableViewConfiguration.GetTableName(),
                ColumnName          = columnSortOrderConfig.ColumnName,
                IsSortedAscending   = columnSortOrderConfig.IsSortedAscending,
                Precedence          = columnSortOrderConfig.Precedence
            })
            .ToList().ForEach(entity => userConfigurationEntity.SortedColumns.Add(entity));

            switch (tableViewConfiguration)
            {
            case UserConfiguration.ToDoTaskTableViewConfiguration config:
                userConfigurationEntity.ToDoTaskHideCompletedAndCancelled = config.HideCompletedAndCancelled;
                break;

            default:
                throw new InvalidOperationException($"Can't save table configuration for type {tableViewConfiguration.GetType()}");
            }

            _lifeManagerRepository.SaveUserConfiguration(userConfigurationEntity);
        }