示例#1
0
        void UpdateNorms(EmployeeProcessingJournalNode[] nodes)
        {
            var progressPage = NavigationManager.OpenViewModel <ProgressWindowViewModel>(null);
            var progress     = progressPage.ViewModel.Progress;

            progress.Start(nodes.Length + 2, text: "Загружаем сотрудников");
            var employees = UoW.GetById <EmployeeCard>(nodes.Select(x => x.Id));

            progress.Add(text: "Загружаем нормы");
            var norms = normRepository.GetNormsForPost(UoW, employees.Select(x => x.Post).Where(x => x != null).Distinct().ToArray());

            int step = 0;

            foreach (var employee in employees)
            {
                progress.Add(text: $"Обработка {employee.ShortName}");
                if (employee.Post == null)
                {
                    Results[employee.Id] = "Отсутствует должность";
                    continue;
                }
                var norm = norms.FirstOrDefault(x => x.IsActive && x.Posts.Contains(employee.Post));
                if (norm != null)
                {
                    step++;
                    employee.UsedNorms.Clear();
                    employee.AddUsedNorm(norm);
                    UoW.Save(employee);
                    Results[employee.Id] = "ОК";
                    if (step % 10 == 0)
                    {
                        UoW.Commit();
                    }
                }
                else
                {
                    Results[employee.Id] = "Подходящая норма не найдена";
                }
            }
            progress.Add(text: "Готово");
            UoW.Commit();
            NavigationManager.ForceClosePage(progressPage, CloseSource.FromParentPage);
            Refresh();
        }
示例#2
0
        private bool TryAddNorm(IUnitOfWork uow, string postName, string subdivisionName, EmployeeCard employee)
        {
            var post = postRepository.GetPostByName(uow, postName, subdivisionName);

            if (post == null)
            {
                return(false);
            }

            var norm = normRepository.GetNormsForPost(uow, post);

            if (!norm.Any())
            {
                return(false);
            }

            //FIXME в идеале здесь перебирать все нормы и искать в них именно тот СИЗ который выдается.
            employee.AddUsedNorm(norm.First());
            ChangedEmployees.Add(employee);
            return(true);
        }