public UploadMobileDataController(
            [NotNull] IUiContext uiContext,
            [NotNull] IMobileDataExporter dataExporter,
            [NotNull] IMobileDataUploader uploader,
            [NotNull] IApplicationDatabaseService appDbService)
        {
            if (uiContext == null)
            {
                throw new ArgumentNullException(nameof(uiContext));
            }
            if (dataExporter == null)
            {
                throw new ArgumentNullException(nameof(dataExporter));
            }
            if (uploader == null)
            {
                throw new ArgumentNullException(nameof(uploader));
            }
            if (appDbService == null)
            {
                throw new ArgumentNullException(nameof(appDbService));
            }
            this.dataExporter      = dataExporter;
            this.uploader          = uploader;
            this.appDbService      = appDbService;
            MessengerInstance      = uiContext.Messenger;
            this.messageBoxService = uiContext.UserPrompts.MessageBox;
            this.logger            = uiContext.Logger;

            MessengerInstance.Register <WidgetActivatedMessage>(this, OnWidgetActivatedMessageReceived);
            MessengerInstance.Register <ShellDialogResponseMessage>(this, OnShellDialogMessageReceived);
        }
        public UploadMobileDataController(
            [NotNull] IUiContext uiContext,
            [NotNull] IMobileDataExporter dataExporter,
            [NotNull] IMobileDataUploader uploader,
            [NotNull] IApplicationDatabaseService appDbService)
        {
            if (uiContext == null) throw new ArgumentNullException(nameof(uiContext));
            if (dataExporter == null) throw new ArgumentNullException(nameof(dataExporter));
            if (uploader == null) throw new ArgumentNullException(nameof(uploader));
            if (appDbService == null) throw new ArgumentNullException(nameof(appDbService));
            this.dataExporter = dataExporter;
            this.uploader = uploader;
            this.appDbService = appDbService;
            MessengerInstance = uiContext.Messenger;
            this.messageBoxService = uiContext.UserPrompts.MessageBox;
            this.logger = uiContext.Logger;

            MessengerInstance.Register<WidgetActivatedMessage>(this, OnWidgetActivatedMessageReceived);
            MessengerInstance.Register<ShellDialogResponseMessage>(this, OnShellDialogMessageReceived);
        }