public PaymentsJournalViewModel(
            PaymentsJournalFilterViewModel filterViewModel,
            IUnitOfWorkFactory unitOfWorkFactory,
            ICommonServices commonServices,
            INavigationManager navigationManager,
            IOrderRepository orderRepository,
            IOrganizationParametersProvider organizationParametersProvider,
            IProfitCategoryProvider profitCategoryProvider) : base(filterViewModel, unitOfWorkFactory, commonServices)
        {
            TabName = "Журнал платежей из банк-клиента";
            this.unitOfWorkFactory = unitOfWorkFactory ?? throw new ArgumentNullException(nameof(unitOfWorkFactory));
            this.commonServices    = commonServices ?? throw new ArgumentNullException(nameof(commonServices));
            this.orderRepository   = orderRepository ?? throw new ArgumentNullException(nameof(orderRepository));
            this.organizationParametersProvider = organizationParametersProvider ?? throw new ArgumentNullException(nameof(organizationParametersProvider));
            this.profitCategoryProvider         = profitCategoryProvider ?? throw new ArgumentNullException(nameof(profitCategoryProvider));
            this.navigationManager = navigationManager;

            RegisterPayments();

            FinishJournalConfiguration();

            UpdateOnChanges(
                typeof(Payment),
                typeof(PaymentItem),
                typeof(VodOrder)
                );
        }
        public CreateManualPaymentFromBankClientViewModel(
            IEntityUoWBuilder uowBuilder,
            IUnitOfWorkFactory uowFactory,
            ICommonServices commonServices,
            INavigationManager navigationManager,
            IPaymentsRepository paymentsRepository,
            IProfitCategoryRepository profitCategoryRepository,
            IProfitCategoryProvider profitCategoryProvider,
            IOrganizationRepository organizationRepository,
            IOrganizationParametersProvider organizationParametersProvider,
            ILifetimeScope scope) : base(uowBuilder, uowFactory, commonServices, navigationManager)
        {
            if (profitCategoryRepository == null)
            {
                throw new ArgumentNullException(nameof(profitCategoryRepository));
            }
            if (profitCategoryProvider == null)
            {
                throw new ArgumentNullException(nameof(profitCategoryProvider));
            }

            _paymentsRepository             = paymentsRepository ?? throw new ArgumentNullException(nameof(paymentsRepository));
            _organizationRepository         = organizationRepository ?? throw new ArgumentNullException(nameof(organizationRepository));
            _organizationParametersProvider =
                organizationParametersProvider ?? throw new ArgumentNullException(nameof(organizationParametersProvider));
            Scope = scope ?? throw new ArgumentNullException(nameof(scope));

            Configure(profitCategoryRepository, profitCategoryProvider);
            Entity.PropertyChanged += OnEntityPropertyChanged;
        }
        public static IList <Payment> GetAllUndistributedPayments(IUnitOfWork uow, IProfitCategoryProvider profitCategoryProvider)
        {
            var undistributedPayments = uow.Session.QueryOver <Payment>()
                                        .Where(x => x.Status == PaymentState.undistributed)
                                        .And(x => x.ProfitCategory.Id == profitCategoryProvider.GetDefaultProfitCategory())
                                        .List();

            return(undistributedPayments);
        }
        public PaymentLoaderViewModel(
            IUnitOfWorkFactory unitOfWorkFactory,
            ICommonServices commonServices,
            INavigationManager navigationManager,
            IOrganizationParametersProvider organizationParametersProvider,
            IProfitCategoryProvider profitCategoryProvider,
            IPaymentsRepository paymentsRepository,
            ICounterpartyRepository counterpartyRepository,
            IOrderRepository orderRepository)
            : base(unitOfWorkFactory, commonServices?.InteractiveService, navigationManager)
        {
            if (commonServices == null)
            {
                throw new ArgumentNullException(nameof(commonServices));
            }

            _profitCategoryProvider = profitCategoryProvider ?? throw new ArgumentNullException(nameof(profitCategoryProvider));
            _paymentsRepository     = paymentsRepository ?? throw new ArgumentNullException(nameof(paymentsRepository));
            _counterpartyRepository = counterpartyRepository ?? throw new ArgumentNullException(nameof(counterpartyRepository));
            _orderRepository        = orderRepository ?? throw new ArgumentNullException(nameof(orderRepository));

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

            InteractiveService = commonServices.InteractiveService;
            _vodovozId         = organizationParametersProvider.VodovozOrganizationId;
            _vodovozSouthId    = organizationParametersProvider.VodovozSouthOrganizationId;

            UoW = unitOfWorkFactory.CreateWithoutRoot();

            TabName = "Выгрузка выписки из банк-клиента";

            GetOrganisations();
            CreateCommands();
            GetProfitCategories();
        }