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"); } }
public void Save() { WorkProjects.Save(); WorkTasks.Save(); Bills.Save(); WorkTimeRanges?.Save(); if (Bill == null || !Bills.IsExist(Bill.Id)) { LoadLastBill(); } }
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"); }
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(); }
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); }
public List <WorkTimeRange> GetTimeRanges(int workID) { return(WorkTimeRanges.Where(wt => wt.WorkID == workID).ToList()); }