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; } }; }
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(); }