Esempio n. 1
0
        public List <NomenclatureDTO> GetGoods(CatalogType type)
        {
            using (var uow = UnitOfWorkFactory.CreateWithoutRoot())
            {
                var types = Enum.GetValues(typeof(MobileCatalog))
                            .Cast <MobileCatalog>()
                            .Where(x => x.ToString().StartsWith(type.ToString()))
                            .ToArray();

                var list = NomenclatureRepository.GetNomenclatureWithPriceForMobileApp(uow, types);
                if (type == CatalogType.Water)
                {
                    list = list.OrderByDescending(n => n.Weight)
                           .ThenBy(n => n.NomenclaturePrice.Any() ? n.NomenclaturePrice.Max(p => p.Price) : 0)
                           .ToList();
                }
                else
                {
                    list = list.OrderBy(n => (int)n.MobileCatalog)
                           .ThenBy(n => n.NomenclaturePrice.Any() ? n.NomenclaturePrice.Max(p => p.Price) : 0)
                           .ToList();
                }

                var listDto = list.Select(n => new NomenclatureDTO(n)).ToList();

                var imageIds = NomenclatureRepository.GetNomenclatureImagesIds(uow, list.Select(x => x.Id).ToArray());
                listDto.Where(dto => imageIds.ContainsKey(dto.Id))
                .ToList()
                .ForEach(dto => dto.imagesIds = imageIds[dto.Id]);
                return(listDto);
            }
        }
        /// <summary>
        /// Gets the route lists for driver authenticated with the specified key.
        /// </summary>
        /// <returns>The route lists or <c>null</c>.</returns>
        /// <param name="authKey">Authentication key.</param>
        public List <RouteListDTO> GetRouteLists(string authKey)
        {
                        #if DEBUG
            logger.Debug("GetRouteLists called with args:\nauthKey: {0}", authKey);
                        #endif
            try
            {
                using (IUnitOfWork uow = UnitOfWorkFactory.CreateWithoutRoot("[ADS]Получение списка маршрутных листов"))
                {
                    if (!CheckAuth(uow, authKey))
                    {
                        return(null);
                    }

                    var result     = new List <RouteListDTO>();
                    var driver     = EmployeeRepository.GetDriverByAuthKey(uow, authKey);
                    var routeLists = RouteListRepository.GetDriverRouteLists(uow, driver, RouteListStatus.EnRoute, DateTime.Today);

                    foreach (RouteList rl in routeLists)
                    {
                        result.Add(new RouteListDTO(rl));
                    }
                    return(result);
                }
            }
            catch (Exception e)
            {
                logger.Error(e);
            }
            return(null);
        }
 public bool DisablePushNotifications(string authKey)
 {
     try
     {
         using (var uow = UnitOfWorkFactory.CreateWithoutRoot($"[ADS]Отключение Push-уведомлений"))
         {
             if (!CheckAuth(uow, authKey))
             {
                 return(false);
             }
             var driver = EmployeeRepository.GetDriverByAuthKey(uow, authKey);
             if (driver == null)
             {
                 return(false);
             }
             driver.AndroidToken = null;
             uow.Save(driver);
             uow.Commit();
             return(true);
         }
     }
     catch (Exception e)
     {
         logger.Error(e);
         return(false);
     }
 }
 public RevisionBottlesAndDeposits()
 {
     this.Build();
     UoW = UnitOfWorkFactory.CreateWithoutRoot();
     entityViewModelEntryCounterparty.SetEntityAutocompleteSelectorFactory(new DefaultEntityAutocompleteSelectorFactory <Counterparty,
                                                                                                                         CounterpartyJournalViewModel, CounterpartyJournalFilterViewModel>(ServicesConfig.CommonServices));
 }
Esempio n. 5
0
        private async Task StartWorkingAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                await DelayAsync(stoppingToken);

                try
                {
                    _logger.LogInformation($"Обновление статуса обрабатывающихся платежей...");

                    using (var uow = UnitOfWorkFactory.CreateWithoutRoot())
                    {
                        var processingFastPayments = _fastPaymentRepository.GetAllProcessingFastPayments(uow);

                        using (var scope = _serviceScopeFactory.CreateScope())
                        {
                            await UpdateFastPaymentStatusAsync(processingFastPayments, scope, uow);
                        }
                    }

                    _logger.LogInformation(_updatedCount > 0
                                                ? $"{_updatedCount} платежей поменяли свой статус"
                                                : "Не обнаружено обрабатывающихся платежей");
                }
                catch (Exception e)
                {
                    _logger.LogError(e, "Ошибка при обновлении статуса обрабатывающихся платежей");
                }
                finally
                {
                    _isFirstLaunch = false;
                    _updatedCount  = 0;
                }
            }
        }
Esempio n. 6
0
        public bool SendMessageToLogistician(string authKey, string message)
        {
            try {
                using (var uow = UnitOfWorkFactory.CreateWithoutRoot($"[CS]Отправка сообщения логисту"))
                {
                    var driver = EmployeeRepository.GetDriverByAuthKey(uow, authKey);
                    if (driver == null)
                    {
                        return(false);
                    }

                    var chat = ChatRepository.GetChatForDriver(uow, driver);
                    if (chat == null)
                    {
                        chat          = new ChatClass();
                        chat.ChatType = ChatType.DriverAndLogists;
                        chat.Driver   = driver;
                    }

                    ChatMessage chatMessage = new ChatMessage();
                    chatMessage.Chat     = chat;
                    chatMessage.DateTime = DateTime.Now;
                    chatMessage.Message  = message;
                    chatMessage.Sender   = driver;

                    chat.Messages.Add(chatMessage);
                    uow.Save(chat);
                    uow.Commit();
                    return(true);
                }
            } catch (Exception e) {
                logger.Error(e);
                return(false);
            }
        }
Esempio n. 7
0
        public void SynchronizePaymentStatuses()
        {
            logger.Info("Запущен процесс синхронизации статусов платежей");

            try {
                using (IUnitOfWork uow = UnitOfWorkFactory.CreateWithoutRoot()) {
                    var payments = uow.Session.QueryOver <SmsPayment>().Where(x => x.SmsPaymentStatus == SmsPaymentStatus.WaitingForPayment).List();

                    int count = 0;
                    foreach (var payment in payments)
                    {
                        var actualStatus = paymentWorker.GetPaymentStatus(payment.ExternalId);
                        if (actualStatus == null || actualStatus == payment.SmsPaymentStatus)
                        {
                            continue;
                        }

                        payment.SmsPaymentStatus = actualStatus.Value;
                        uow.Save(payment);
                        count++;
                    }
                    if (count != 0)
                    {
                        uow.Commit();
                        logger.Info($"Синхронизировано {count} статусов платежей");
                    }
                }
            }
            catch (Exception ex) {
                logger.Error(ex, "При синхронизации произошла ошибка");
            }
        }
Esempio n. 8
0
        void UpdateWearItems(object[] nodes)
        {
            var progressPage = NavigationManager.OpenViewModel <ProgressWindowViewModel>(null);
            var progress     = progressPage.ViewModel.Progress;

            using (var localUow = UnitOfWorkFactory.CreateWithoutRoot("Обновление потребностей из журнала норм")) {
                var employeeRepository = AutofacScope.Resolve <EmployeeRepository>(new TypedParameter(typeof(IUnitOfWork), localUow));
                progress.Start(2, text: "Загружаем нормы");
                var norms = localUow.GetById <Norm>(nodes.GetIds()).ToArray();
                progress.Add(text: "Загружаем сотрудников");
                var employees = employeeRepository.GetEmployeesUseNorm(norms);

                progress.Start(employees.Count + 1);
                int step = 0;
                foreach (var employee in employees)
                {
                    progress.Add(text: $"Обработка {employee.ShortName}");
                    step++;
                    employee.UpdateWorkwearItems();
                    localUow.Save(employee);
                    if (step % 10 == 0)
                    {
                        localUow.Commit();
                    }
                }
                progress.Add(text: "Завершаем...");
                localUow.Commit();
            }
            NavigationManager.ForceClosePage(progressPage, CloseSource.FromParentPage);
        }
Esempio n. 9
0
        private void createTableFormulas()
        {
            using (IUnitOfWork uow = UnitOfWorkFactory.CreateWithoutRoot())
            {
                Domain.SalaryFormulas salaryFormulas = null;
                var itemsQueryService = uow.Session.QueryOver <Service>().Where(x => x.ListServiceOrderType != null).List().Where(x => x.ListServiceOrderType.Count > 0).ToList()
                                        .Where(x => x.ListServiceOrderType[0].OrderTypeClass.IsCalculateSalary).ToList();
                var itemsQuerySalaryFormulas = uow.Session.QueryOver <Domain.SalaryFormulas>(() => salaryFormulas).List();

                foreach (var serv in itemsQueryService)
                {
                    if (itemsQuerySalaryFormulas.Where(x => x.Service.Id == serv.Id).Count() < 1)
                    {
                        itemsQuerySalaryFormulas.Add(new Domain.SalaryFormulas(serv, "", ""));
                    }
                }

                ytreeFormulas.ColumnsConfig = ColumnsConfigFactory.Create <Domain.SalaryFormulas>()
                                              .AddColumn("Услуга").AddTextRenderer(x => x.Service.Name)
                                              .AddColumn("Формула").AddTextRenderer(x => x.Formula)
                                              .AddColumn("Комментарий").AddTextRenderer(x => x.Comment)
                                              .Finish();
                ytreeFormulas.ItemsDataSource    = itemsQuerySalaryFormulas;
                ytreeFormulas.Selection.Changed += Selection_Changed;
            }
        }
Esempio n. 10
0
        private void SendNewNotifications()
        {
            logger.Debug($"Новый вызов отправки смс уведомлений");
            if (sendingInProgress)
            {
                logger.Debug($"Вывоз новой отправки до завершения предыдущей!");
                return;
            }
            sendingInProgress = true;
            try {
                using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) {
                    var newNotifications = smsNotificationRepository.GetUnsendedNewClientSmsNotifications(uow);
                    if (!newNotifications.Any())
                    {
                        return;
                    }
                    //закрытие просроченных уведомлений
                    CloseExpiredNotifications(uow, newNotifications);
                    newNotifications = newNotifications.Where(x => x.Status == SmsNotificationStatus.New).ToList();

                    foreach (var notification in newNotifications)
                    {
                        SendNotification(notification);
                        uow.Save(notification);
                    }
                    uow.Commit();
                }
            }
            catch (Exception ex) {
                logger.Fatal(ex);
            }
            finally {
                sendingInProgress = false;
            }
        }
Esempio n. 11
0
        public CashExpenseFilterView()
        {
            this.Build();
            UoW    = UnitOfWorkFactory.CreateWithoutRoot();
            Filter = new ExpenseFilter();

            ydateperiodPicker.Binding.AddBinding(Filter, x => x.StartDate, w => w.StartDate).InitializeFromSource();
            ydateperiodPicker.Binding.AddBinding(Filter, x => x.EndDate, w => w.EndDate).InitializeFromSource();
            ydateperiodPicker.PeriodChanged += (sender, e) => Refilter();

            var employeeFactory = new EmployeeJournalFactory();

            evmeEmployee.SetEntityAutocompleteSelectorFactory(employeeFactory.CreateWorkingEmployeeAutocompleteSelectorFactory());
            evmeEmployee.Binding.AddBinding(Filter, x => x.Employee, w => w.Subject).InitializeFromSource();
            evmeEmployee.ChangedByUser += (sender, e) => Refilter();

            var expenseCategoryVM = new EntityCommonRepresentationModelConstructor <ExpenseCategory>(UoW)
                                    .AddColumn("Имя", x => x.Name).AddSearch(x => x.Name)
                                    .AddColumn("Тип документа", x => x.ExpenseDocumentType.GetEnumTitle())
                                    .OrderBy(x => x.Name)
                                    .Finish();

            entryExpenseCategory.RepresentationModel = expenseCategoryVM;
            entryExpenseCategory.Binding.AddBinding(Filter, x => x.ExpenseCategory, w => w.Subject).InitializeFromSource();
            entryExpenseCategory.ChangedByUser += (sender, e) => Refilter();
        }
Esempio n. 12
0
        public RouteListsOnClosingReport()
        {
            Build();
            UoW = UnitOfWorkFactory.CreateWithoutRoot();

            Configure();
        }
Esempio n. 13
0
        public HistoryView()
        {
            this.Build();

            UoW = UnitOfWorkFactory.CreateWithoutRoot();

            datacomboObject.SetRenderTextFunc <HistoryObjectDesc> (x => x.DisplayName);
            datacomboObject.ItemsList = HistoryMain.TraceClasses.ToList();
            comboProperty.SetRenderTextFunc <HistoryFieldDesc> (x => x.DisplayName);
            comboAction.ItemsEnum = typeof(EntityChangeOperation);
            ComboWorks.ComboFillReference(comboUsers, "users", ComboWorks.ListMode.WithAll);
            selectperiod.ActiveRadio = SelectPeriod.Period.Today;

            datatreeChangesets.ColumnsConfig = Gamma.GtkWidgets.ColumnsConfigFactory.Create <ChangedEntity> ()
                                               .AddColumn("Время").AddTextRenderer(x => x.ChangeTimeText)
                                               .AddColumn("Пользователь").AddTextRenderer(x => x.ChangeSet.UserName)
                                               .AddColumn("Действие").AddTextRenderer(x => x.OperationText)
                                               .AddColumn("Тип объекта").AddTextRenderer(x => x.ObjectTitle)
                                               .AddColumn("Объект").AddTextRenderer(x => x.EntityTitle)
                                               .AddColumn("Откуда изменялось").AddTextRenderer(x => x.ChangeSet.ActionName)
                                               .Finish();
            datatreeChangesets.Selection.Changed += OnChangeSetSelectionChanged;
            GtkScrolledWindowChangesets.Vadjustment.ValueChanged += Vadjustment_ValueChanged;

            datatreeChanges.ColumnsConfig = Gamma.GtkWidgets.ColumnsConfigFactory.Create <FieldChange> ()
                                            .AddColumn("Поле").AddTextRenderer(x => x.FieldTitle)
                                            .AddColumn("Операция").AddTextRenderer(x => x.TypeText)
                                            .AddColumn("Новое значение").AddTextRenderer(x => x.NewPangoText, useMarkup: true)
                                            .AddColumn("Старое значение").AddTextRenderer(x => x.OldPangoText, useMarkup: true)
                                            .Finish();

            canUpdate = true;
            UpdateJournal();
        }
        public bool ServiceStatus()
        {
            _logger.Info("Запрос статуса службы отправки кассовых чеков");
            try
            {
                using (var uow = UnitOfWorkFactory.CreateWithoutRoot())
                {
                    var ordersAndReceiptNodes = _orderRepository
                                                .GetOrdersForCashReceiptServiceToSend(uow, _orderParametersProvider, DateTime.Today.AddDays(-3)).ToList();

                    var receiptsToSend = ordersAndReceiptNodes.Count(r => r.ReceiptId == null || r.WasSent.HasValue && !r.WasSent.Value);
                    _logger.Info($"Количество чеков на отправку: {receiptsToSend}");

                    var activeUoWCount = UowWatcher.GetActiveUoWCount();
                    _logger.Info($"Количество активных UoW: {activeUoWCount}");

                    return(receiptsToSend <= _salesReceiptsServiceSettings.MaxUnsendedCashReceiptsForWorkingService &&
                           activeUoWCount <= _salesReceiptsServiceSettings.MaxUoWAllowed);
                }
            }
            catch (Exception ex)
            {
                _logger.Error(ex, "Ошибка при проверке работоспособности службы отправки кассовых чеков");
                return(false);
            }
        }
Esempio n. 15
0
 public bool RouteListWasChanged(RouteList routeList)
 {
     using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) {
         var actualRouteList = uow.GetById <RouteList>(routeList.Id);
         return(actualRouteList.Version != routeList.Version);
     }
 }
 public NotDeliveredOrdersReport()
 {
     this.Build();
     UoW = UnitOfWorkFactory.CreateWithoutRoot();
     dateperiodpicker1.StartDate = DateTime.Now.Date;
     dateperiodpicker1.EndDate   = DateTime.Now.Date;
 }
        public FirstClientsReport(
            IEntityAutocompleteSelectorFactory districtAutocompleteSelectorFactory,
            IDiscountReasonRepository discountReasonRepository)
        {
            var districtSelector = districtAutocompleteSelectorFactory ??
                                   throw new ArgumentNullException(nameof(districtAutocompleteSelectorFactory));

            if (discountReasonRepository == null)
            {
                throw new ArgumentNullException(nameof(discountReasonRepository));
            }

            Build();
            UoW = UnitOfWorkFactory.CreateWithoutRoot();

            var reasons = discountReasonRepository.GetActiveDiscountReasons(UoW);

            yCpecCmbDiscountReason.ItemsList    = reasons;
            yCpecCmbDiscountReason.SelectedItem = reasons?.OrderByDescending(r => r.Id).First() ?? null;

            yChooseOrderStatus.ItemsEnum           = typeof(OrderStatus);
            yChooseOrderStatus.ShowSpecialStateAll = true;

            yChooseThePaymentTypeForTheOrder.ItemsEnum           = typeof(PaymentType);
            yChooseThePaymentTypeForTheOrder.ShowSpecialStateAll = true;

            datePeriodPicker.StartDate = datePeriodPicker.EndDate = DateTime.Today;
            entryDistrict.SetEntityAutocompleteSelectorFactory(districtSelector);
            entryDistrict.CanEditReference = false;
        }
Esempio n. 18
0
        public CashFlow(
            ISubdivisionRepository subdivisionRepository, ICommonServices commonServices, ICategoryRepository categoryRepository)
        {
            _subdivisionRepository = subdivisionRepository ?? throw new ArgumentNullException(nameof(subdivisionRepository));
            _commonServices        = commonServices ?? throw new ArgumentNullException(nameof(commonServices));

            if (categoryRepository == null)
            {
                throw new ArgumentNullException(nameof(categoryRepository));
            }

            Build();

            UoW = UnitOfWorkFactory.CreateWithoutRoot();
            comboPart.ItemsEnum            = typeof(ReportParts);
            comboIncomeCategory.ItemsList  = categoryRepository.IncomeCategories(UoW);
            comboExpenseCategory.Sensitive = comboIncomeCategory.Sensitive = false;
            var now = DateTime.Now;

            dateStart.Date = new DateTime(now.Year, now.Month, now.Day, 0, 0, 0);
            dateEnd.Date   = new DateTime(now.Year, now.Month, now.Day, 23, 59, 59);

            var officeFilter = new EmployeeFilterViewModel();

            officeFilter.SetAndRefilterAtOnce(
                x => x.Status           = EmployeeStatus.IsWorking,
                x => x.RestrictCategory = EmployeeCategory.office);
            var employeeFactory = new EmployeeJournalFactory(officeFilter);

            evmeCashier.SetEntityAutocompleteSelectorFactory(employeeFactory.CreateWorkingOfficeEmployeeAutocompleteSelectorFactory());

            evmeEmployee.SetEntityAutocompleteSelectorFactory(employeeFactory.CreateWorkingEmployeeAutocompleteSelectorFactory());

            var recurciveConfig = OrmMain.GetObjectDescription <ExpenseCategory>().TableView.RecursiveTreeConfig;
            var list            = categoryRepository.ExpenseCategories(UoW);

            list.Insert(0, allItem);
            var model = recurciveConfig.CreateModel((IList)list);

            comboExpenseCategory.Model = model.Adapter;
            comboExpenseCategory.PackStart(new CellRendererText(), true);
            comboExpenseCategory.SetCellDataFunc(comboExpenseCategory.Cells[0], HandleCellLayoutDataFunc);
            comboExpenseCategory.SetActiveIter(model.IterFromNode(allItem));

            UserSubdivisions = GetSubdivisionsForUser();
            specialListCmbCashSubdivisions.SetRenderTextFunc <Subdivision>(s => s.Name);
            specialListCmbCashSubdivisions.ItemsList = UserSubdivisions;

            ylblOrganisations.Visible = specialListCmbOrganisations.Visible = false;
            Organisations             = UoW.GetAll <Organization>();
            specialListCmbOrganisations.SetRenderTextFunc <Organization>(s => s.Name);
            specialListCmbOrganisations.ItemsList = Organisations;

            int  currentUserId = commonServices.UserService.CurrentUserId;
            bool canCreateCashReportsForOrganisations =
                commonServices.PermissionService.ValidateUserPresetPermission("can_create_cash_reports_for_organisations", currentUserId);

            checkOrganisations.Visible  = canCreateCashReportsForOrganisations;
            checkOrganisations.Toggled += CheckOrganisationsToggled;
        }
Esempio n. 19
0
        public List <MessageDTO> AndroidGetChatMessages(string authKey, int days)
        {
            try {
                using (var uow = UnitOfWorkFactory.CreateWithoutRoot($"[CS]Получение сообщений чата"))
                {
                    var driver = EmployeeRepository.GetDriverByAuthKey(uow, authKey);
                    if (driver == null)
                    {
                        return(null);
                    }

                    var chat = ChatRepository.GetChatForDriver(uow, driver);
                    if (chat == null)
                    {
                        return(null);
                    }
                    var messages     = new List <MessageDTO>();
                    var chatMessages = ChatMessageRepository.GetChatMessagesForPeriod(uow, chat, days);
                    foreach (var m in chatMessages)
                    {
                        messages.Add(new MessageDTO(m, driver));
                    }
                    return(messages);
                }
            } catch (Exception e) {
                logger.Error(e);
                return(null);
            }
        }
Esempio n. 20
0
 public RouteListsOnClosingReport()
 {
     this.Build();
     ConfigureChkBtns();
     UoW = UnitOfWorkFactory.CreateWithoutRoot();
     ySpecCmbGeographicGroup.ItemsList = UoW.GetAll <GeographicGroup>();
 }
        protected void OnButtonAddClicked(object sender, EventArgs e)
        {
            if (DocumentUoW.Root.FromWarehouse == null)
            {
                MessageDialogWorks.RunErrorDialog("Не добавлен склад отправителя.");
                return;
            }

            ITdiTab mytab = DialogHelper.FindParentTab(this);

            if (mytab == null)
            {
                logger.Warn("Родительская вкладка не найдена.");
                return;
            }

            var filter = new StockBalanceFilter(UnitOfWorkFactory.CreateWithoutRoot());

            filter.SetAndRefilterAtOnce(x => x.RestrictWarehouse = DocumentUoW.Root.FromWarehouse);

            ReferenceRepresentation SelectDialog = new ReferenceRepresentation(new ViewModel.StockBalanceVM(filter));

            SelectDialog.Mode            = OrmReferenceMode.Select;
            SelectDialog.ButtonMode      = ReferenceButtonMode.None;
            SelectDialog.ObjectSelected += NomenclatureSelected;

            mytab.TabParent.AddSlaveTab(mytab, SelectDialog);
        }
Esempio n. 22
0
        public DriverWagesReport()
        {
            this.Build();
            UoW = UnitOfWorkFactory.CreateWithoutRoot();
            var driverFilter = new EmployeeFilterViewModel();

            driverFilter.SetAndRefilterAtOnce(
                x => x.Status           = EmployeeStatus.IsWorking,
                x => x.RestrictCategory = EmployeeCategory.driver);
            var employeeFactory = new EmployeeJournalFactory(driverFilter);

            evmeDriver.SetEntityAutocompleteSelectorFactory(employeeFactory.CreateEmployeeAutocompleteSelectorFactory());
            evmeDriver.Changed += (sender, args) =>
            {
                if (dateperiodpicker.StartDateOrNull.HasValue && evmeDriver.Subject is Employee)
                {
                    OnUpdate(true);
                }
            };

            dateperiodpicker.PeriodChanged += (sender, args) =>
            {
                if (evmeDriver.Subject is Employee && dateperiodpicker.StartDateOrNull.HasValue)
                {
                    OnUpdate(true);
                }
            };
            buttonCreateReport.Clicked += OnButtonCreateReportClicked;
        }
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            _logger.LogInformation("Процесс синхронизации платежей из кэша запущен");
            while (!stoppingToken.IsCancellationRequested)
            {
                await Task.Delay(30000, stoppingToken);

                try
                {
                    _logger.LogInformation("Поиск данных платежей в кэше...");

                    var paymentsInCache = _fastPaymentFileCache.GetAllPaymentCaches();

                    var message = $"Найдено {paymentsInCache.Count} данных платежей.";
                    if (paymentsInCache.Count > 0)
                    {
                        _logger.LogInformation(message + " Синхронизация...");
                    }
                    else
                    {
                        _logger.LogInformation(message);
                        continue;
                    }

                    IList <FastPaymentDTO> cachesToRemove = new List <FastPaymentDTO>();
                    int savedPayments = 0;

                    using (var uow = UnitOfWorkFactory.CreateWithoutRoot())
                    {
                        foreach (var paymentDto in paymentsInCache)
                        {
                            var fastPayment = _fastPaymentRepository.GetFastPaymentByTicket(uow, paymentDto.Ticket);

                            if (fastPayment == null)
                            {
                                var order      = _orderRepository.GetOrder(uow, paymentDto.OrderId);
                                var newPayment = _fastPaymentApiFactory.GetFastPayment(order, paymentDto);
                                newPayment.SetProcessingStatus();
                                uow.Save(newPayment);
                                uow.Commit();
                            }

                            cachesToRemove.Add(paymentDto);
                            savedPayments++;
                        }

                        if (savedPayments > 0)
                        {
                            _fastPaymentFileCache.RemovePaymentCaches(cachesToRemove);
                        }
                    }

                    _logger.LogInformation($"Обработано {savedPayments} платежей");
                }
                catch (Exception e)
                {
                    _logger.LogError(e, "Ошибка при синхронизации платежей из кэша");
                }
            }
        }
Esempio n. 24
0
 public AccountableDebts()
 {
     this.Build();
     this.TabName = "Долги сотрудников";
     representationtreeviewDebts.Selection.Changed += RepresentationtreeviewDebts_Selection_Changed;
     UoW = UnitOfWorkFactory.CreateWithoutRoot();
 }
Esempio n. 25
0
 public AccountableSlipsView()
 {
     this.Build();
     this.TabName = "Движения по подотчетным деньгам";
     accountableslipfilter1.Refiltered += Accountableslipfilter1_Refiltered;
     UoW = UnitOfWorkFactory.CreateWithoutRoot();
 }
Esempio n. 26
0
        public WayBillGeneratorViewModel(
            IUnitOfWorkFactory unitOfWorkFactory,
            IInteractiveService interactiveService,
            INavigationManager navigation,
            IWayBillDocumentRepository wayBillDocumentRepository,
            RouteGeometryCalculator calculator,
            EntityAutocompleteSelectorFactory <EmployeesJournalViewModel> entityAutocompleteSelectorFactory
            )
            : base(unitOfWorkFactory, interactiveService, navigation)
        {
            this.entityAutocompleteSelectorFactory = entityAutocompleteSelectorFactory ?? throw new ArgumentNullException(nameof(entityAutocompleteSelectorFactory));

            if (wayBillDocumentRepository == null)
            {
                throw new ArgumentNullException(nameof(wayBillDocumentRepository));
            }

            if (calculator == null)
            {
                throw new ArgumentNullException(nameof(calculator));
            }

            this.Entity = new WayBillDocumentGenerator(UnitOfWorkFactory.CreateWithoutRoot(), wayBillDocumentRepository, calculator);
            TabName     = "Путевые листы для ФО";
            CreateCommands();
        }
        public int?StartOrResumeTrack(string authKey, int routeListId)
        {
            try
            {
                using (var uow = UnitOfWorkFactory.CreateWithoutRoot("[ADS]Старт записи трека"))
                {
                    if (!CheckAuth(authKey))
                    {
                        return(null);
                    }

                    var track = TrackRepository.GetTrackForRouteList(uow, routeListId);

                    if (track != null)
                    {
                        return(track.Id);
                    }

                    track = new Track();

                    track.RouteList = uow.GetById <RouteList>(routeListId);
                    track.Driver    = EmployeeRepository.GetDriverByAuthKey(uow, authKey);
                    track.StartDate = DateTime.Now;
                    uow.Save(track);
                    uow.Commit();

                    return(track.Id);
                }
            }
            catch (Exception e)
            {
                logger.Error(e);
            }
            return(null);
        }
Esempio n. 28
0
        public ChainStoreDelayReport()
        {
            this.Build();

            UoW = UnitOfWorkFactory.CreateWithoutRoot();
            ydatepicker.Date = DateTime.Now.Date;
            entityviewmodelentryCounterparty.SetEntityAutocompleteSelectorFactory(new DefaultEntityAutocompleteSelectorFactory <Counterparty,
                                                                                                                                CounterpartyJournalViewModel, CounterpartyJournalFilterViewModel>(ServicesConfig.CommonServices));
            entityviewmodelentrySellManager.SetEntityAutocompleteSelectorFactory(
                new EntityAutocompleteSelectorFactory <EmployeesJournalViewModel>(typeof(Employee),
                                                                                  () =>
            {
                var employeeFilter = new EmployeeFilterViewModel {
                    Status   = EmployeeStatus.IsWorking,
                    Category = EmployeeCategory.office
                };
                return(new EmployeesJournalViewModel(employeeFilter, UnitOfWorkFactory.GetDefaultFactory, ServicesConfig.CommonServices));
            })
                );

            entityviewmodelentryOrderAuthor.SetEntityAutocompleteSelectorFactory(
                new EntityAutocompleteSelectorFactory <EmployeesJournalViewModel>(typeof(Employee),
                                                                                  () =>
            {
                var employeeFilter = new EmployeeFilterViewModel {
                    Status   = EmployeeStatus.IsWorking,
                    Category = EmployeeCategory.office
                };
                return(new EmployeesJournalViewModel(employeeFilter, UnitOfWorkFactory.GetDefaultFactory, ServicesConfig.CommonServices));
            })
                );
            ydatepicker.Date    = DateTime.Now;
            buttonRun.Sensitive = true;
            buttonRun.Clicked  += OnButtonCreateReportClicked;
        }
        public CheckVersionResultDTO CheckApplicationVersion(int versionCode)
        {
            using (var uow = UnitOfWorkFactory.CreateWithoutRoot("[ADS]Проверка текущей версии приложения"))
            {
                BaseParameter lastVersionParameter     = null;
                BaseParameter lastVersionNameParameter = null;
                lastVersionParameter     = uow.Session.Get <BaseParameter>("last_android_version_code");
                lastVersionNameParameter = uow.Session.Get <BaseParameter>("last_android_version_name");


                var result = new CheckVersionResultDTO();
                result.DownloadUrl = "market://details?id=ru.qsolution.vodovoz.driver";
                result.NewVersion  = lastVersionNameParameter?.StrValue;

                int lastVersionCode = 0;
                Int32.TryParse(lastVersionParameter?.StrValue, out lastVersionCode);

                if (lastVersionCode > versionCode)
                {
                    result.Result = CheckVersionResultDTO.ResultType.CanUpdate;
                }

                if (VERSION_CODE > versionCode)
                {
                    result.Result = CheckVersionResultDTO.ResultType.NeedUpdate;
                }

                return(result);
            }
        }
Esempio n. 30
0
        public string GetParameterValue(string parameterName)
        {
            if (string.IsNullOrWhiteSpace(parameterName))
            {
                throw new ArgumentNullException(nameof(parameterName));
            }

            using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) {
                string freshParameterValue = uow.Session.QueryOver <BaseParameter>()
                                             .Where(x => x.Name == parameterName)
                                             .Select(x => x.StrValue)
                                             .SingleOrDefault <string>();
                if (parameters.ContainsKey(parameterName))
                {
                    parameters[parameterName] = freshParameterValue;
                    return(freshParameterValue);
                }
                if (!parameters.ContainsKey(parameterName) && !string.IsNullOrWhiteSpace(freshParameterValue))
                {
                    parameters.Add(parameterName, freshParameterValue);
                    return(freshParameterValue);
                }
                throw new InvalidProgramException($"В параметрах базы не найден параметр ({parameterName})");
            }
        }