public async Task <IActionResult> PostConfiguration([FromRoute] String IMEINumber,
                                                            [FromBody] UrlModel urlModel,
                                                            CancellationToken cancellationToken)
        {
            using (MobileConfiguration context = this.MobileConfigurationResolver())
            {
                ApplicationConfiguration config = await context.ApplicationConfiguration.SingleOrDefaultAsync(c => c.IMEINumber == IMEINumber, cancellationToken);

                if (config != null)
                {
                    throw new InvalidOperationException($"Configuration found for IMEI Number {IMEINumber}, use the PUT method to update the config");
                }

                ApplicationConfiguration newConfig = new ApplicationConfiguration
                {
                    IMEINumber         = IMEINumber,
                    SecurityServiceUri = urlModel.SecurityServiceUrl,
                    ManagementApiUri   = urlModel.ManagementApiUrl
                };
                await context.ApplicationConfiguration.AddAsync(newConfig, cancellationToken);

                await context.SaveChangesAsync(cancellationToken);

                return(this.NoContent());
            }
        }
Esempio n. 2
0
        internal static void EnsureInitialized()
        {
            if (_instances == null)
            {
                lock (_lockObject)
                    if (_instances == null)
                    {
                        var localInstances = new Dictionary <Type, object>();
                        var pageService    = new PageService();

                        #region Service Bindings

                        var mobileConfiguration      = new MobileConfiguration();
                        var mobileRedirectionService = new MobileRedirectionService(mobileConfiguration);

                        localInstances[typeof(IMobileConfiguration)] = mobileConfiguration;
                        localInstances[typeof(IPageRouteRegistrar)]  = new PageRouteRegistrar(pageService, mobileConfiguration);
                        localInstances[typeof(IPageService)]         = pageService;
                        localInstances[typeof(IConfiguredContentFragmentService)] = pageService;
                        localInstances[typeof(IMobileRedirectionService)]         = mobileRedirectionService;
                        localInstances[typeof(IHtmlService)] = new HtmlService(mobileConfiguration);

                        #endregion

                        _instances = localInstances;
                    }
            }
        }
        /// <summary>
        /// Initialises the database.
        /// </summary>
        /// <param name="app">The application.</param>
        /// <param name="environment">The environment.</param>
        private async Task InitialiseDatabase(IApplicationBuilder app,
                                              IHostingEnvironment environment)
        {
            using (IServiceScope scope = app.ApplicationServices.GetService <IServiceScopeFactory>().CreateScope())
            {
                MobileConfiguration mobileConfiguration = scope.ServiceProvider.GetRequiredService <MobileConfiguration>();

                DatabaseSeeding.InitialiseDatabase(mobileConfiguration);
            }
        }
        public async Task <IActionResult> GetConfiguration([FromRoute] String IMEINumber,
                                                           CancellationToken cancellationToken)
        {
            using (MobileConfiguration context = this.MobileConfigurationResolver())
            {
                ApplicationConfiguration config = await context.ApplicationConfiguration.SingleOrDefaultAsync(c => c.IMEINumber == IMEINumber, cancellationToken);

                if (config == null)
                {
                    throw new NotFoundException($"No configuration found for IMEI Number {IMEINumber}");
                }

                UrlModel model = new UrlModel();
                model.ManagementApiUrl   = config.ManagementApiUri;
                model.SecurityServiceUrl = config.SecurityServiceUri;

                return(this.Ok(model));
            }
        }
        public static void InitialiseDatabase(MobileConfiguration mobileConfiguration)
        {
            try
            {
                if (mobileConfiguration.Database.IsMySql())
                {
                    mobileConfiguration.Database.Migrate();
                }

                mobileConfiguration.SaveChanges();
            }
            catch (Exception ex)
            {
                String connString = mobileConfiguration.Database.GetDbConnection().ConnectionString;

                Exception newException = new Exception($"Connection String [{connString}]", ex);
                throw newException;
            }
        }
        public async Task <IActionResult> PutConfiguration([FromRoute] String IMEINumber,
                                                           [FromBody] UrlModel urlModel,
                                                           CancellationToken cancellationToken)
        {
            using (MobileConfiguration context = this.MobileConfigurationResolver())
            {
                ApplicationConfiguration config = await context.ApplicationConfiguration.SingleOrDefaultAsync(c => c.IMEINumber == IMEINumber, cancellationToken);

                if (config == null)
                {
                    throw new NotFoundException($"No configuration found for IMEI Number {IMEINumber}");
                }

                config.ManagementApiUri   = urlModel.ManagementApiUrl;
                config.SecurityServiceUri = urlModel.SecurityServiceUrl;

                await context.SaveChangesAsync(cancellationToken);

                return(this.NoContent());
            }
        }
        public async void OnSave()
        {
            bool goToLogin = !ConfigurationReader.GetConfiguration().AlreadyInitialized;

            var configuration = new MobileConfiguration();

            configuration.ApplicationMode    = this.View.SelectedApplicationMode;
            configuration.Language           = "en"; //TODO make an option
            configuration.AlreadyInitialized = true;

            if (configuration.ApplicationMode == ApplicationMode.Client)
            {
                configuration.ServerUrl = this.View.ServerUrlInputText;
                bool isValid = this.UrlValidator.IsUrlValid(configuration.ServerUrl);

                if (!isValid)
                {
                    this.AlertDisplayer.DisplayAlert(StringResources.InvalidUrl, StringResources.InvalidUrlMessage);
                    return;
                }

                this.SynchronizationServiceManager.StartSynchronizationService();
            }
            else
            {
                this.SynchronizationServiceManager.StopSynchronizationService();
            }

            this.ConfigurationWriter.SaveConfiguration(configuration);
            if (goToLogin)
            {
                await this.NavigationManager.NavigateAsNewStack <ILoginPresenter>();
            }
            else
            {
                await this.NavigationManager.PopCurrent();
            }
        }
        public void SaveConfiguration(MobileConfiguration configuration)
        {
            var serialized = this.Serializer.Serialize(configuration);

            this.FileSystem.WriteAllBytes(Constants.CONFIG_FILE_PATH, GetBytes(serialized));
        }