Exemplo n.º 1
0
        public static void StartService(string serviceHostName, string servicePort, string modulKassaBaseAddress,
                                        IEnumerable <CashBox> cashboxes)
        {
            _logger.Info("Запуск службы фискализации и печати кассовых чеков...");

            var parametersProvider = new ParametersProvider();

            var fiscalizationWorker = new FiscalizationWorker(
                new OrderRepository(),
                new SalesReceiptSender(modulKassaBaseAddress),
                new OrderParametersProvider(parametersProvider),
                cashboxes
                );

            fiscalizationWorker.Start();

            _logger.Info("Служба фискализации запущена");

            var salesReceiptsInstanceProvider = new SalesReceiptsInstanceProvider(
                new BaseParametersProvider(parametersProvider),
                new OrderRepository(),
                new OrderParametersProvider(parametersProvider)
                );
            WebServiceHost salesReceiptsHost = new SalesReceiptsServiceHost(salesReceiptsInstanceProvider);

            salesReceiptsHost.AddServiceEndpoint(
                typeof(ISalesReceiptsService),
                new WebHttpBinding(),
                $"http://{serviceHostName}:{servicePort}/SalesReceipts"
                );
            salesReceiptsHost.Open();
            _logger.Info("Запущена служба мониторинга отправки чеков");
        }
        public DeliveryPointsManagementView()
        {
            this.Build();

            treeDeliveryPoints.ColumnsConfig = FluentColumnsConfig <DeliveryPoint> .Create()
                                               .AddColumn("Адрес").AddTextRenderer(node => node.CompiledAddress).WrapMode(Pango.WrapMode.WordChar).WrapWidth(1000)
                                               .AddColumn("Номер").AddTextRenderer(x => x.Id.ToString())
                                               .AddColumn("")
                                               .RowCells().AddSetter <CellRendererText>((c, n) => c.Foreground = n.IsActive ? "black" : "red")
                                               .Finish();

            _canDeleteByPresetPermission =
                ServicesConfig.CommonServices.CurrentPermissionService.ValidatePresetPermission("can_delete_counterparty_and_deliverypoint");
            _permissionResult = ServicesConfig.CommonServices.CurrentPermissionService.ValidateEntityPermission(typeof(DeliveryPoint));

            buttonAdd.Sensitive = _permissionResult.CanCreate;

            if (_permissionResult.CanRead)
            {
                treeDeliveryPoints.RowActivated += (o, args) => buttonEdit.Click();
            }
            treeDeliveryPoints.Selection.Changed += OnSelectionChanged;

            IParametersProvider        parametersProvider        = new ParametersProvider();
            IFiasApiParametersProvider fiasApiParametersProvider = new FiasApiParametersProvider(parametersProvider);
            IFiasApiClient             fiasApiClient             = new FiasApiClient(fiasApiParametersProvider.FiasApiBaseUrl, fiasApiParametersProvider.FiasApiToken);

            _deliveryPointViewModelFactory = new DeliveryPointViewModelFactory(fiasApiClient);
        }
        public FixedPricesDialogOpener()
        {
            IParametersProvider        parametersProvider        = new ParametersProvider();
            IFiasApiParametersProvider fiasApiParametersProvider = new FiasApiParametersProvider(parametersProvider);
            IFiasApiClient             fiasApiClient             = new FiasApiClient(fiasApiParametersProvider.FiasApiBaseUrl, fiasApiParametersProvider.FiasApiToken);

            _deliveryPointViewModelFactory = new DeliveryPointViewModelFactory(fiasApiClient);
        }
Exemplo n.º 4
0
        public DeliveryPointJournalFactory(DeliveryPointJournalFilterViewModel deliveryPointJournalFilter = null)
        {
            _deliveryPointJournalFilter = deliveryPointJournalFilter;
            IParametersProvider        parametersProvider        = new ParametersProvider();
            IFiasApiParametersProvider fiasApiParametersProvider = new FiasApiParametersProvider(parametersProvider);
            IFiasApiClient             fiasApiClient             = new FiasApiClient(fiasApiParametersProvider.FiasApiBaseUrl, fiasApiParametersProvider.FiasApiToken);

            _deliveryPointViewModelFactory = new DeliveryPointViewModelFactory(fiasApiClient);
        }
Exemplo n.º 5
0
        public IOrganizationProvider CreateOrderOrganizationProvider()
        {
            var parametersProvider                = new ParametersProvider();
            var organizationParametersProvider    = new OrganizationParametersProvider(parametersProvider);
            var orderParametersProvider           = new OrderParametersProvider(parametersProvider);
            var geographicGroupParametersProvider = new GeographicGroupParametersProvider(parametersProvider);

            return(new Stage2OrganizationProvider(
                       organizationParametersProvider,
                       orderParametersProvider,
                       geographicGroupParametersProvider));
        }
Exemplo n.º 6
0
        public DeliveryPointPanelView(ICommonServices commonServices)
        {
            if (commonServices == null)
            {
                throw new ArgumentNullException(nameof(commonServices));
            }
            Build();
            _deliveryPointPermissionResult = commonServices.CurrentPermissionService.ValidateEntityPermission(typeof(DeliveryPoint));
            _orderPermissionResult         = commonServices.CurrentPermissionService.ValidateEntityPermission(typeof(Order));
            IParametersProvider        parametersProvider        = new ParametersProvider();
            IFiasApiParametersProvider fiasApiParametersProvider = new FiasApiParametersProvider(parametersProvider);
            IFiasApiClient             fiasApiClient             = new FiasApiClient(fiasApiParametersProvider.FiasApiBaseUrl, fiasApiParametersProvider.FiasApiToken);

            _deliveryPointViewModelFactory = new DeliveryPointViewModelFactory(fiasApiClient);
            Configure();
        }
        private void RegisterServices(IServiceCollection services)
        {
            // 1. Enable caching.
            services.AddConcurrency(opt => opt.UseInMemory());
            // 2. Enable DB store.
            services.AddSimpleIdServerUmaInMemory();
            // 3. Add uma core
            services.AddSimpleIdServerUmaCore();
            // 4. Enable logging.
            var parametersProvider = new ParametersProvider("http://localhost");

            services.AddLogging();
            services.AddTransient <IHostingProvider, HostingProvider>();
            services.AddSingleton <IParametersProvider>(parametersProvider);
            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();
            services.AddTransient <IUmaServerEventSource, UmaServerEventSource>();
        }
Exemplo n.º 8
0
        public static void Main(string[] args)
        {
            CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture("ru-RU");
            Application.Init();
            QSMain.GuiThread = System.Threading.Thread.CurrentThread;
            applicationInfo  = new ApplicationVersionInfo();

            #region Первоначальная настройка обработки ошибок
            SingletonErrorReporter.Initialize(ReportWorker.GetReportService(), applicationInfo, new LogService(), null, false, null);
            var errorMessageModelFactoryWithoutUserService = new DefaultErrorMessageModelFactory(SingletonErrorReporter.Instance, null, null);
            var exceptionHandler = new DefaultUnhandledExceptionHandler(errorMessageModelFactoryWithoutUserService, applicationInfo);

            exceptionHandler.SubscribeToUnhandledExceptions();
            exceptionHandler.GuiThread = System.Threading.Thread.CurrentThread;
            #endregion

            //FIXME Удалить после того как будет удалена зависимость от библиотеки QSProjectLib
            QSMain.ProjectPermission = new System.Collections.Generic.Dictionary <string, UserPermission>();

            CreateProjectParam();
            ConfigureViewModelWidgetResolver();
            ConfigureJournalColumnsConfigs();

            QSMain.SetupFromArgs(args);
            QS.Project.Search.GtkUI.SearchView.QueryDelay = 1500;

            Gtk.Settings.Default.SetLongProperty("gtk-button-images", 1, "");
            // Создаем окно входа
            Login LoginDialog = new Login();
            LoginDialog.Logo = Gdk.Pixbuf.LoadFromResource("Vodovoz.icons.logo.png");
            LoginDialog.SetDefaultNames("Vodovoz");
            LoginDialog.DefaultLogin  = "******";
            LoginDialog.DefaultServer = "sql.vod.qsolution.ru";
            LoginDialog.UpdateFromGConf();

            ResponseType LoginResult;
            LoginResult = (ResponseType)LoginDialog.Run();
            if (LoginResult == ResponseType.DeleteEvent || LoginResult == ResponseType.Cancel)
            {
                return;
            }

            LoginDialog.Destroy();

            PerformanceHelper.StartMeasurement("Замер запуска приложения");
            GetPermissionsSettings();
            //Настройка базы
            var applicationConfigurator = new ApplicationConfigurator();
            applicationConfigurator.ConfigureOrm();
            applicationConfigurator.CreateApplicationConfig();

            PerformanceHelper.AddTimePoint(logger, "Закончена настройка базы");
            VodovozGtkServicesConfig.CreateVodovozDefaultServices();

            var parametersProvider = new ParametersProvider();
            parametersProvider.RefreshParameters();

            #region Настройка обработки ошибок c параметрами из базы и сервисами
            var baseParameters = new BaseParametersProvider(parametersProvider);
            SingletonErrorReporter.Initialize(
                ReportWorker.GetReportService(),
                applicationInfo,
                new LogService(),
                LoginDialog.BaseName,
                LoginDialog.BaseName == baseParameters.GetDefaultBaseForErrorSend(),
                baseParameters.GetRowCountForErrorLog()
                );

            var errorMessageModelFactoryWithUserService = new DefaultErrorMessageModelFactory(SingletonErrorReporter.Instance, ServicesConfig.UserService, UnitOfWorkFactory.GetDefaultFactory);
            exceptionHandler.InteractiveService       = ServicesConfig.InteractiveService;
            exceptionHandler.ErrorMessageModelFactory = errorMessageModelFactoryWithUserService;
            //Настройка обычных обработчиков ошибок.
            exceptionHandler.CustomErrorHandlers.Add(CommonErrorHandlers.MySqlException1055OnlyFullGroupBy);
            exceptionHandler.CustomErrorHandlers.Add(CommonErrorHandlers.MySqlException1366IncorrectStringValue);
            exceptionHandler.CustomErrorHandlers.Add(CommonErrorHandlers.NHibernateFlushAfterException);
            exceptionHandler.CustomErrorHandlers.Add(ErrorHandlers.NHibernateStaleObjectStateExceptionHandler);
            exceptionHandler.CustomErrorHandlers.Add(ErrorHandlers.MySqlExceptionConnectionTimeoutHandler);
            exceptionHandler.CustomErrorHandlers.Add(ErrorHandlers.MySqlExceptionAuthHandler);
            exceptionHandler.CustomErrorHandlers.Add(ErrorHandlers.SocketTimeoutException);

            #endregion

            passwordValidator = new PasswordValidator(
                new PasswordValidationSettingsFactory(UnitOfWorkFactory.GetDefaultFactory).GetPasswordValidationSettings()
                );

            //Настройка карты
            GMapProvider.UserAgent = String.Format("{0}/{1} used GMap.Net/{2} ({3})",
                                                   applicationInfo.ProductName,
                                                   applicationInfo.Version.VersionToShortString(),
                                                   Assembly.GetAssembly(typeof(GMapProvider)).GetName().Version.VersionToShortString(),
                                                   Environment.OSVersion.VersionString
                                                   );
            GMapProvider.Language = GMap.NET.LanguageType.Russian;
            PerformanceHelper.AddTimePoint(logger, "Закончена настройка карты.");

            DatePicker.CalendarFontSize      = 16;
            DateRangePicker.CalendarFontSize = 16;

            OsmWorker.ServiceHost = "osm.vod.qsolution.ru";
            OsmWorker.ServicePort = 7073;

            QS.Osm.Osrm.OsrmMain.ServerUrl = "http://osrm.vod.qsolution.ru:5000";

            PerformanceHelper.StartPointsGroup("Главное окно");

            var baseVersionChecker = new CheckBaseVersion(applicationInfo, new ParametersService(QS.Project.DB.Connection.ConnectionDB));
            if (baseVersionChecker.Check())
            {
                ServicesConfig.CommonServices.InteractiveService.ShowMessage(ImportanceLevel.Warning, baseVersionChecker.TextMessage, "Несовпадение версии");
                return;
            }
            QSMain.CheckServer(null);             // Проверяем настройки сервера

            PerformanceHelper.AddTimePoint("Закончена загрузка параметров базы и проверка версии.");

            AutofacClassConfig();
            PerformanceHelper.AddTimePoint("Закончена настройка AutoFac.");

            if (QSMain.User.Login == "root")
            {
                string        Message = "Вы зашли в программу под администратором базы данных. У вас есть только возможность создавать других пользователей.";
                MessageDialog md      = new MessageDialog(null, DialogFlags.Modal,
                                                          MessageType.Info,
                                                          ButtonsType.Ok,
                                                          Message);
                md.Run();
                md.Destroy();
                UsersDialog usersDlg = new UsersDialog(ServicesConfig.InteractiveService);
                usersDlg.Show();
                usersDlg.Run();
                usersDlg.Destroy();
                return;
            }

            if (ChangePassword(applicationConfigurator) && CanLogin())
            {
                StartMainWindow(LoginDialog.BaseName, applicationConfigurator, parametersProvider);
            }
            else
            {
                return;
            }

            PerformanceHelper.EndPointsGroup();

            PerformanceHelper.AddTimePoint(logger, "Закончен старт SAAS. Конец загрузки.");

            QSSaaS.Session.StartSessionRefresh();

            PerformanceHelper.AddTimePoint(logger, "Закончен старт SAAS. Конец загрузки.");
            PerformanceHelper.Main.PrintAllPoints(logger);

            Application.Run();
            QSSaaS.Session.StopSessionRefresh();
            ClearTempDir();
        }
Exemplo n.º 9
0
        public void RegisterServices(IServiceCollection services)
        {
            var cachingType            = Configuration["Caching:Type"];
            var dbType                 = Configuration["Db:Type"];
            var isLogFileEnabled       = bool.Parse(Configuration["Log:File:Enabled"]);
            var isElasticSearchEnabled = bool.Parse(Configuration["Log:Elasticsearch:Enabled"]);
            var parametersProvider     = new ParametersProvider(Configuration["OpenId:WellKnownConfiguration"]);

            services.AddSimpleIdServerUmaCore();

            // 1. Enable caching.
            if (string.Equals(cachingType, "REDIS", StringComparison.CurrentCultureIgnoreCase))
            {
                services.AddConcurrency(opt => opt.UseRedis(o =>
                {
                    o.Configuration = Configuration["Caching:ConnectionString"];
                    o.InstanceName  = Configuration["Caching:InstanceName"];
                }));
            }
            else
            {
                services.AddConcurrency(opt => opt.UseInMemory());
            }

            // 2. Enable database.
            if (string.Equals(dbType, "SQLSERVER", StringComparison.CurrentCultureIgnoreCase))
            {
                services.AddSimpleIdServerUmaSqlServer(Configuration["Db:ConnectionString"]);
            }
            else if (string.Equals(dbType, "POSTGRES", StringComparison.CurrentCultureIgnoreCase))
            {
                services.AddSimpleIdServerUmaPostgresql(Configuration["Db:ConnectionString"]);
            }
            else
            {
                services.AddSimpleIdServerUmaInMemory();
            }

            // 3. Enable logging.
            var logger = new LoggerConfiguration()
                         .MinimumLevel.Information()
                         .Enrich.FromLogContext()
                         .WriteTo.ColoredConsole();

            if (isLogFileEnabled)
            {
                logger.WriteTo.RollingFile(Configuration["Log:File:PathFormat"]);
            }

            if (isElasticSearchEnabled)
            {
                logger.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(Configuration["Log:Elasticsearch:Url"]))
                {
                    AutoRegisterTemplate = true,
                    IndexFormat          = "umaserver-{0:yyyy.MM.dd}",
                    TemplateName         = "uma-events-template"
                });
            }

            Func <LogEvent, bool> serilogFilter = (e) =>
            {
                var ctx          = e.Properties["SourceContext"];
                var contextValue = ctx.ToString()
                                   .TrimStart('"')
                                   .TrimEnd('"');
                return(contextValue.StartsWith("SimpleIdentityServer") ||
                       e.Level == LogEventLevel.Error ||
                       e.Level == LogEventLevel.Fatal);
            };
            var log = logger.Filter.ByIncludingOnly(serilogFilter)
                      .CreateLogger();

            Log.Logger = log;
            services.AddLogging();
            services.AddTransient <IHostingProvider, HostingProvider>();
            services.AddSingleton <IParametersProvider>(parametersProvider);
            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();
            services.AddTransient <IUmaServerEventSource, UmaServerEventSource>();
        }