public void ReloadList(object sender, EventArgs e) { int yearInt = int.Parse(YearsList[SelectedYearIndex]); var periodBegin = new DateTime(yearInt, SelectedMonthIndex + 1, 1); var periodEnd = new DateTime(periodBegin.Year, periodBegin.Month, DateTime.DaysInMonth(yearInt, periodBegin.Month)); var monthPlanTime = Context.timeTableWork.GetTimeForAMonth(periodBegin.Year, periodBegin.Month); var wrk = WorksVM.Dictionary.Select(p => p.Value.Work).Where(w => w.StartDate >= periodBegin && w.StartDate <= periodEnd && w.UserID == GlobalInfo.CurrentUser.ID); WorksList = monthPlanTime.GroupJoin(wrk, p => p.Date, w => w.StartDate, (mpt, w) => new { tt = mpt, work = w }) .DefaultIfEmpty() .Where(q => q.tt.PlanningTime > 0.0 || q.work.Sum(m => m.Minutes) > 0) .Select(tmp => new LaborCostsDay { DateTm = tmp.tt.Date, Time = tmp.work.Sum(q => q.Minutes) / 60.0, PlanTime = tmp.tt.PlanningTime }).ToList(); var userAbsences = Context.workWork.GetUserReasonAbsence(); foreach (var day in WorksList) { var reason = userAbsences.FirstOrDefault(ua => ua.AbsenceDate == day.DateTm); day.Reason = reason != null ? reason.Reason.ReasonText : ""; } SumTime = WorksList.Sum(w => w.Time); SumTimePlan = WorksList.Sum(w => w.PlanTime); DiffTime = SumTime - SumTimePlan; }
public OrderViewModel(OrderViewModel model) { WorksTree = new ObservableCollection <WorkTreeModel>(); WorksTree.Add(new WorkTreeModel { Name = "Периодические", id = -1 }); WorksTree.Add(new WorkTreeModel { Name = "Остальные", id = -2 }); UpdateOrder(model); model.WorksList.ToList().ForEach(o => WorksList.Add(o)); SelectedWorks.CollectionChanged += SelectedWorks_CollectionChanged; _storage.LoadOtherWorkListComplete += Instance_LoadOtherWorkListComplete; _storage.LoadWorkListComplete += Instance_LoadWorkListComplete; _storage.LoadWorkTypesComplete += Instance_LoadWorkTypesComplete; _storage.LoadMarksComplete += _storage_LoadMarksComplete; _storage.LoadModelsComplete += _storage_LoadModelsComplete; _storage.LoadBodiesComplete += _storage_LoadBodiesComplete; _storage.LoadEngineTypesComplete += _storage_LoadEngineTypesComplete; _storage.LoadEnginsComplete += _storage_LoadEnginsComplete; _storage.LoadTransmissionsComplete += _storage_LoadTransmissionsComplete; _storage.LoadWorkPartsListComplete += _storage_LoadWorkPartsListComplete; _storage.Update(); _storage.UpdateWorkTypes(); PostsHandler.Instance.ClientsLoaded += Instance_ClientsLoaded; }
public void BuildList() { WorksList.Nodes.Clear(); WorksList.Nodes.Add("Все категории"); if (JSONSerializeService.InputItems != null) { TreeNodeCollection tree = WorksList.Nodes[0].Nodes; List <WorkTypeClass> workslist = JSONSerializeService.InputItems; //Добавляем категорию foreach (var pair in WorkTypeClass.CategoryNames) { TreeNode newnode = new TreeNode(pair.Value); newnode.Name = pair.Value; newnode.Tag = pair.Key; tree.Add(newnode); } //Разбиваем по категориям foreach (WorkTypeClass ob in workslist) { TreeNode newnode = new TreeNode(ob.Article); newnode.Text = ob.Article; newnode.Name = workslist.IndexOf(ob).ToString(); newnode.Tag = ob; tree[WorkTypeClass.CategoryNames[ob.category]].Nodes.Add(newnode); } WorksList.Sort(); } }
/// <summary> /// Добавить работу в список заявляемых /// </summary> /// <param name="obj"></param> private void AddWork(object obj) { //if (_selectedWork == null) return; //SelectedWorks.Add(_selectedWork); if (SelectedWorkTree == null) { return; } var work = WorksList.FirstOrDefault(o => o.Name.Equals(SelectedWorkTree.Name) && o.id_Class == SelectedWorkTree.id_Class) ?? OtherWorksList.FirstOrDefault(o => o.Name.Equals(SelectedWorkTree.Name) && o.id_Class == SelectedWorkTree.id_Class); if (work == null || SelectedWorks.IndexOf(work) >= 0) { return; } SelectedWorks.Add(work); _storage.GetWorkParts(work.id); }