Пример #1
0
        private void ApplyChanges(object obj)
        {
            if (IsEditing)
            {
                Minutes         = Hours * 60 + MinutesShort;
                _hours          = Minutes / 60;
                _minutesShort   = Minutes % 60;
                Work.WorkTypeID = SelectedWorkTypeIndex;
                UpdateWorkTimeRanges();
                WorkVM.UpdateWork();
                IsEditing           = false;
                MainWindow.IsEnable = true;

                var sortWorkRanges = WorkTimeRanges.OrderBy(r => r.EndTime).ToList();
                int lastRngIndex   = sortWorkRanges.Count - 1;
                if (lastRngIndex >= 0)
                {
                    LastRangeTime = sortWorkRanges[lastRngIndex].EndTime;
                }

                _generate_path();
                RaisePropertyChanged("MinutesShort");
                RaisePropertyChanged("Hours");
                RaisePropertyChanged("TimeLast");
                RaisePropertyChanged("LastRangeTime");
            }
        }
Пример #2
0
        public void Save()
        {
            WorkProjects.Save();
            WorkTasks.Save();
            Bills.Save();
            WorkTimeRanges?.Save();

            if (Bill == null || !Bills.IsExist(Bill.Id))
            {
                LoadLastBill();
            }
        }
Пример #3
0
        private void AddWorkTimeRange(object obj)
        {
            TimeRange rng = new TimeRange();

            rng.UpdateParentWorkTime = timeHandler;

            DateTime newDt = DateTime.Now;
            var      oldDt = WorkVM.Work.StartDate;

            if (oldDt.Hour != 0 || oldDt.Minute != 0)
            {
                newDt = (DateTime)WorkVM.Work.StartDate;
                WorkVM.Work.StartDate = new DateTime(oldDt.Year, oldDt.Month, oldDt.Day, 0, 0, 0);
            }
            rng.StartTime = new DateTime(1899, 12, 30, newDt.Hour, newDt.Minute, 0);
            rng.EndTime   = new DateTime(1899, 12, 30, newDt.Hour, newDt.Minute, 0);
            rng.IsFocused = true;
            WorkTimeRanges.Add(rng);
            RaisePropertyChanged("IsWorkTimeEnabled");
        }
Пример #4
0
 public void UpdateTimeRanges(List <WorkTimeRange> list, int workID)
 {
     //Обновим диапазоны
     if (workID == 0) //обновить все, их просто редактировали за день
     {
         WorkTimeRanges.AddOrUpdate(list.ToArray());
     }
     else
     {
         var oldWorkRanges = WorkTimeRanges.Where(wr => wr.WorkID == workID).ToList();
         var extraWorkRng  = oldWorkRanges.Where(old => list.FirstOrDefault(l => l.ID == old.ID) == null).ToList();
         if (extraWorkRng.Count > 0)
         {
             WorkTimeRanges.RemoveRange(extraWorkRng);
         }
         WorkTimeRanges.AddOrUpdate(list.ToArray());
     }
     ChangeTracker.DetectChanges();
     SaveChanges();
 }
Пример #5
0
        public WorkBlockControlViewModel(int workID, bool IsEditingFlag = false)
        {
            WorkVM        = WorksVM.Dictionary[workID];
            WorkInBlockID = new WorkIDDependency(workID);
            _generate_path();

            SelectedWorkTypeIndex = WorkVM.Work.WorkTypeID;
            _generate_TaskTypesCb();

            _applyCommand           = new RelayCommand(ApplyChanges, CanEdit);
            _cancelCommand          = new RelayCommand(CancelChanges, CanEdit);
            _deleteCommand          = new RelayCommand(Delete, CanDelete);
            _changeTaskCommand      = new RelayCommand(ChangeTask, CanChangeTask);
            _duplicateWorkCommand   = new RelayCommand(DuplicateWork, (_) => true);
            _shareWorkTaskCommand   = new RelayCommand(ShareWork, (_) => true);
            _addWorkRangeCommand    = new RelayCommand(AddWorkTimeRange, (_) => true);
            _deleteWorkRangeCommand = new RelayCommand(param =>
            {
                if (WorkTimeRanges.Count == 1) //нельзя удалять, если диапазон один
                {
                    return;
                }
                WorkTimeRanges.Remove(param as TimeRange);
                UpdateWorkTime();
                RaisePropertyChanged("IsWorkTimeEnabled");
            }, (_) => true);

            WorkNames = TasksVM.GetAllWorksNames(WorkVM.Work.TaskID);

            //SaveHotCommand.InputGestures.Add(new KeyGesture(Key.S, ModifierKeys.Control));
            //DeleteHotCommand.InputGestures.Add(new KeyGesture(Key.Delete, ModifierKeys.Control));

            MainWindow.GlobalPropertyChanged += HandleGlobalPropertyChanged;

            MessengerInstance.Register <string>(this, ApplyAction);
            IsEditing = IsEditingFlag;
            if (IsEditing)
            {
                IsExpanded          = true;
                MainWindow.IsEnable = false;
            }
            else
            {
                IsExpanded = false;
            }
            MouseLeft = false;

            _hours        = Minutes / 60;
            _minutesShort = Minutes % 60;

            WorkTimeRanges = new ObservableCollection <TimeRange>();

            //_endTime = Work.StartTime.AddMinutes(Work.Minutes);
            timeHandler = UpdateWorkTime;
            FillTimeRanges();
            if (WorkTimeRanges.Count == 0) //Работа новая
            {
                AddWorkTimeRange(this);
            }

            WorkVM.PropertyChanged += new PropertyChangedEventHandler(SetExpended);
        }
Пример #6
0
 public List <WorkTimeRange> GetTimeRanges(int workID)
 {
     return(WorkTimeRanges.Where(wt => wt.WorkID == workID).ToList());
 }