public DriverDistrictPrioritySetViewModel(
            DriverDistrictPrioritySet entity,
            IUnitOfWork uow,
            IUnitOfWorkFactory unitOfWorkFactory,
            ICommonServices commonServices,
            IDefaultDeliveryDayScheduleSettings defaultDeliveryDayScheduleSettings,
            IEmployeeRepository employeeRepository,
            INavigationManager navigation = null)
            : base(commonServices.InteractiveService, navigation)
        {
            if (defaultDeliveryDayScheduleSettings == null)
            {
                throw new ArgumentNullException(nameof(defaultDeliveryDayScheduleSettings));
            }
            this.uow = uow ?? throw new ArgumentNullException(nameof(uow));
            this.unitOfWorkFactory  = unitOfWorkFactory ?? throw new ArgumentNullException(nameof(unitOfWorkFactory));
            this.employeeRepository = employeeRepository ?? throw new ArgumentNullException(nameof(employeeRepository));
            this.commonServices     = commonServices;

            Entity           = entity ?? new DriverDistrictPrioritySet();
            permissionResult = commonServices.CurrentPermissionService.ValidateEntityPermission(typeof(DriverDistrictPrioritySet));
            OnPropertyChanged(nameof(CanEdit));

            FillObservableDriverWorkSchedules();
            UpdateTabName();

            Entity.PropertyChanged += (sender, args) => {
                switch (args.PropertyName)
                {
                case nameof(Entity.Driver):
                    UpdateTabName();
                    break;

                case nameof(Entity.Id):
                    OnPropertyChanged(nameof(Id));
                    OnPropertyChanged(nameof(IsInfoVisible));
                    break;

                case nameof(Entity.Author):
                    OnPropertyChanged(nameof(Author));
                    break;

                case nameof(Entity.DateActivated):
                    OnPropertyChanged(nameof(DateActivated));
                    break;

                case nameof(Entity.DateDeactivated):
                    OnPropertyChanged(nameof(DateDeactivated));
                    break;
                }
            };
        }
Beispiel #2
0
        public AtWorksDlg(
            IDefaultDeliveryDayScheduleSettings defaultDeliveryDayScheduleSettings,
            IEmployeeJournalFactory employeeJournalFactory,
            DriverApiUserRegisterEndpoint driverApiUserRegisterEndpoint)
        {
            if (defaultDeliveryDayScheduleSettings == null)
            {
                throw new ArgumentNullException(nameof(defaultDeliveryDayScheduleSettings));
            }

            _employeeJournalFactory        = employeeJournalFactory ?? throw new ArgumentNullException(nameof(employeeJournalFactory));
            _driverApiRegistrationEndpoint = driverApiUserRegisterEndpoint ?? throw new ArgumentNullException(nameof(driverApiUserRegisterEndpoint));
            this.Build();

            var colorWhite    = new Color(0xff, 0xff, 0xff);
            var colorLightRed = new Color(0xff, 0x66, 0x66);

            ytreeviewAtWorkDrivers.ColumnsConfig = FluentColumnsConfig <AtWorkDriver> .Create()
                                                   .AddColumn("Приоритет")
                                                   .AddNumericRenderer(x => x.PriorityAtDay)
                                                   .Editing(new Gtk.Adjustment(6, 1, 10, 1, 1, 1))
                                                   .AddColumn("Статус")
                                                   .AddTextRenderer(x => x.Status.GetEnumTitle())
                                                   .AddColumn("Причина")
                                                   .AddTextRenderer(x => x.Reason)
                                                   .AddSetter((cell, driver) => cell.Editable = driver.Status == AtWorkDriver.DriverStatus.NotWorking)
                                                   .AddColumn("Водитель")
                                                   .AddTextRenderer(x => x.Employee.ShortName)
                                                   .AddColumn("Скор.")
                                                   .AddTextRenderer(x => x.Employee.DriverSpeed.ToString("P0"))
                                                   .AddColumn("График работы")
                                                   .AddComboRenderer(x => x.DaySchedule)
                                                   .SetDisplayFunc(x => x.Name)
                                                   .FillItems(UoW.GetAll <DeliveryDaySchedule>().ToList())
                                                   .Editing()
                                                   .AddColumn("Оконч. работы")
                                                   .AddTextRenderer(x => x.EndOfDayText).Editable()
                                                   .AddColumn("Экспедитор")
                                                   .AddComboRenderer(x => x.WithForwarder)
                                                   .SetDisplayFunc(x => x.Employee.ShortName).Editing().Tag(Columns.Forwarder)
                                                   .AddColumn("Автомобиль")
                                                   .AddPixbufRenderer(x => x.Car != null && x.Car.IsCompanyCar ? vodovozCarIcon : null)
                                                   .AddTextRenderer(x => x.Car != null ? x.Car.RegistrationNumber : "нет")
                                                   .AddColumn("База")
                                                   .AddComboRenderer(x => x.GeographicGroup)
                                                   .SetDisplayFunc(x => x.Name)
                                                   .FillItems(_geographicGroupRepository.GeographicGroupsWithCoordinates(UoW))
                                                   .AddSetter(
                (c, n) => {
                c.Editable      = true;
                c.BackgroundGdk = n.GeographicGroup == null
                                                                ? colorLightRed
                                                                : colorWhite;
            }
                )
                                                   .AddColumn("Грузоп.")
                                                   .AddTextRenderer(x => x.Car != null ? x.Car.MaxWeight.ToString("D") : null)
                                                   .AddColumn("Районы доставки")
                                                   .AddTextRenderer(x => string.Join(", ", x.DistrictsPriorities.Select(d => d.District.DistrictName)))
                                                   .AddColumn("")
                                                   .AddColumn("Комментарий")
                                                   .AddTextRenderer(x => x.Comment)
                                                   .Editable(true)
                                                   .RowCells().AddSetter <CellRendererText>((c, n) => c.Foreground = n.Status == AtWorkDriver.DriverStatus.NotWorking? "gray": "black")
                                                   .Finish();

            ytreeviewAtWorkDrivers.Selection.Mode     = Gtk.SelectionMode.Multiple;
            ytreeviewAtWorkDrivers.Selection.Changed += YtreeviewDrivers_Selection_Changed;

            ytreeviewOnDayForwarders.ColumnsConfig = FluentColumnsConfig <AtWorkForwarder> .Create()
                                                     .AddColumn("Экспедитор").AddTextRenderer(x => x.Employee.ShortName)
                                                     .AddColumn("Едет с водителем").AddTextRenderer(x => RenderForwaderWithDriver(x))
                                                     .Finish();

            ytreeviewOnDayForwarders.Selection.Mode     = Gtk.SelectionMode.Multiple;
            ytreeviewOnDayForwarders.Selection.Changed += YtreeviewForwarders_Selection_Changed;

            ydateAtWorks.Date = DateTime.Today;

            int currentUserId = ServicesConfig.CommonServices.UserService.CurrentUserId;

            canReturnDriver = ServicesConfig.CommonServices.PermissionService.ValidateUserPresetPermission("can_return_driver_to_work", currentUserId);

            this.defaultDeliveryDaySchedule =
                UoW.GetById <DeliveryDaySchedule>(defaultDeliveryDayScheduleSettings.GetDefaultDeliveryDayScheduleId());
            SetButtonClearDriverScreenSensitive();
        }