Beispiel #1
0
        public DeliveryPointViewModel GetForCreationDeliveryPointViewModel(Counterparty client)
        {
            var controller = new NomenclatureFixedPriceController(
                new NomenclatureFixedPriceFactory(),
                new WaterFixedPricesGenerator(
                    new NomenclatureRepository(
                        new NomenclatureParametersProvider(
                            new ParametersProvider()))));

            var dpViewModel = new DeliveryPointViewModel(
                new UserRepository(),
                new GtkTabsOpener(),
                new PhoneRepository(),
                new ContactParametersProvider(new ParametersProvider()),
                new CitiesDataLoader(_fiasApiClient),
                new StreetsDataLoader(_fiasApiClient),
                new HousesDataLoader(_fiasApiClient),
                new NomenclatureJournalFactory(),
                controller,
                new DeliveryPointRepository(),
                new DeliveryScheduleSelectorFactory(),
                EntityUoWBuilder.ForCreate(),
                UnitOfWorkFactory.GetDefaultFactory,
                ServicesConfig.CommonServices,
                new RoboAtsCounterpartyJournalFactory(),
                client);

            return(dpViewModel);
        }
Beispiel #2
0
 public DeliveryPointFixedPricesModel(IUnitOfWork uow, DeliveryPoint deliveryPoint, NomenclatureFixedPriceController fixedPriceController)
 {
     this.uow                       = uow ?? throw new ArgumentNullException(nameof(uow));
     this.deliveryPoint             = deliveryPoint ?? throw new ArgumentNullException(nameof(deliveryPoint));
     this.fixedPriceController      = fixedPriceController ?? throw new ArgumentNullException(nameof(fixedPriceController));
     deliveryPoint.PropertyChanged += DeliveryPointOnPropertyChanged;
 }
        public DeliveryPointViewModel GetForOpenDeliveryPointViewModel(int id)
        {
            var controller = new NomenclatureFixedPriceController(
                new NomenclatureFixedPriceFactory(),
                new WaterFixedPricesGenerator(
                    new NomenclatureRepository(
                        new NomenclatureParametersProvider(
                            new ParametersProvider()))));

            var dpViewModel = new DeliveryPointViewModel(
                new UserRepository(),
                new GtkTabsOpener(),
                new PhoneRepository(),
                ContactParametersProvider.Instance,
                new CitiesDataLoader(OsmWorker.GetOsmService()),
                new StreetsDataLoader(OsmWorker.GetOsmService()),
                new HousesDataLoader(OsmWorker.GetOsmService()),
                new NomenclatureSelectorFactory(),
                controller,
                new DeliveryPointRepository(),
                new DeliveryScheduleSelectorFactory(),
                EntityUoWBuilder.ForOpen(id),
                UnitOfWorkFactory.GetDefaultFactory,
                ServicesConfig.CommonServices);

            return(dpViewModel);
        }
Beispiel #4
0
 public CounterpartyFixedPricesModel(IUnitOfWork uow, Counterparty counterparty, NomenclatureFixedPriceController fixedPriceController)
 {
     this.uow                      = uow ?? throw new ArgumentNullException(nameof(uow));
     this.counterparty             = counterparty ?? throw new ArgumentNullException(nameof(counterparty));
     this.fixedPriceController     = fixedPriceController ?? throw new ArgumentNullException(nameof(fixedPriceController));
     counterparty.PropertyChanged += CounterpartyOnPropertyChanged;
 }
        public DeliveryPointViewModel(
            IUserRepository userRepository,
            IGtkTabsOpener gtkTabsOpener,
            IPhoneRepository phoneRepository,
            IContactsParameters contactsParameters,
            ICitiesDataLoader citiesDataLoader,
            IStreetsDataLoader streetsDataLoader,
            IHousesDataLoader housesDataLoader,
            INomenclatureJournalFactory nomenclatureSelectorFactory,
            NomenclatureFixedPriceController nomenclatureFixedPriceController,
            IDeliveryPointRepository deliveryPointRepository,
            IDeliveryScheduleSelectorFactory deliveryScheduleSelectorFactory,
            IEntityUoWBuilder uowBuilder, IUnitOfWorkFactory unitOfWorkFactory, ICommonServices commonServices,
            IRoboAtsCounterpartyJournalFactory roboAtsCounterpartyJournalFactory,
            Domain.Client.Counterparty client = null)
            : base(uowBuilder, unitOfWorkFactory, commonServices)
        {
            if (client != null && uowBuilder.IsNewEntity)
            {
                Entity.Counterparty = client;
            }
            else if (client == null && uowBuilder.IsNewEntity)
            {
                throw new ArgumentNullException(nameof(client), "Нельзя создать точку доставки без указания клиента");
            }

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

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

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

            _deliveryPointRepository = deliveryPointRepository ?? throw new ArgumentNullException(nameof(deliveryPointRepository));

            _gtkTabsOpener  = gtkTabsOpener ?? throw new ArgumentNullException(nameof(gtkTabsOpener));
            _userRepository = userRepository ?? throw new ArgumentNullException(nameof(userRepository));

            NomenclatureSelectorFactory =
                nomenclatureSelectorFactory ?? throw new ArgumentNullException(nameof(nomenclatureSelectorFactory));

            _fixedPricesModel = new DeliveryPointFixedPricesModel(UoW, Entity, nomenclatureFixedPriceController);
            PhonesViewModel   = new PhonesViewModel(phoneRepository, UoW, contactsParameters, roboAtsCounterpartyJournalFactory, CommonServices)
            {
                PhonesList    = Entity.ObservablePhones,
                DeliveryPoint = Entity,
                ReadOnly      = !CanEdit
            };

            CitiesDataLoader  = citiesDataLoader ?? throw new ArgumentNullException(nameof(citiesDataLoader));
            StreetsDataLoader = streetsDataLoader ?? throw new ArgumentNullException(nameof(streetsDataLoader));
            HousesDataLoader  = housesDataLoader ?? throw new ArgumentNullException(nameof(housesDataLoader));

            CanArchiveDeliveryPoint =
                commonServices.CurrentPermissionService.ValidatePresetPermission("can_arc_counterparty_and_deliverypoint");
            CanSetFreeDelivery            = commonServices.CurrentPermissionService.ValidatePresetPermission("can_set_free_delivery");
            CanEditOrderLimits            = commonServices.CurrentPermissionService.ValidatePresetPermission("user_can_edit_orders_limits");
            CanEditNomenclatureFixedPrice =
                commonServices.CurrentPermissionService.ValidatePresetPermission("can_edit_delivery_point_fixed_prices");

            DeliveryPointCategories =
                deliveryPointRepository?.GetActiveDeliveryPointCategories(UoW)
                ?? throw new ArgumentNullException(nameof(deliveryPointRepository));
            DeliveryScheduleSelectorFactory =
                deliveryScheduleSelectorFactory?.CreateDeliveryScheduleAutocompleteSelectorFactory()
                ?? throw new ArgumentNullException(nameof(deliveryScheduleSelectorFactory));

            _roboAtsCounterpartyJournalFactory = roboAtsCounterpartyJournalFactory ?? throw new ArgumentNullException(nameof(roboAtsCounterpartyJournalFactory));

            Entity.PropertyChanged += (sender, e) =>
            {
                switch (e.PropertyName)
                {                 // от этого события зависит панель цен доставки, которые в свою очередь зависят от района и, возможно, фиксов
                case nameof(Entity.District):
                    CurrentObjectChanged?.Invoke(this, new CurrentObjectChangedArgs(Entity));
                    break;
                }
            };
        }