private void DateListItemButton_Click(Object sender, RoutedEventArgs e) { if (e.OriginalSource is Button button && button.DataContext is DispanserizationViewModel dispanserizationItem) { try { DispanserizationViewModel dispanserization = _mediator.Send( new DispanserizationCreateCommand(dispanserizationItem.BeginDate, _patient.ID, _patient.Code, _patient.DisplayName) ).Result; _patient.Dispanserizations.Add(dispanserization); _printService.Print( new DispanserizationPrintForm(dispanserization) ); } catch (Exception ex) { Log.Error(ex, "При записи на диспансеризацию произошла ошибка"); } _mainWindow.PrevWorkflow <ActionsControl>(); } }
public async Task <IEnumerable <SpecialtyViewModel> > Handle(SpecialtyListItemsQuery request, CancellationToken cancellationToken) { DateTime beginDate = _dateTimeProvider.Now.Date; DateTime endDate = _dateTimeProvider.Now.Date.AddDays(28); IEnumerable <Resource> resources = _resources.ToList(); IEnumerable <TimeItemTotal> totals = _timeItems.GetResourceTotals(beginDate, endDate); IEnumerable <VisitItemViewModel> visitItems = request.Patient.VisitItems .ToList(); IEnumerable <DateItemViewModel> dateItems = totals .GroupJoin(visitItems, t => t.ResourceID, g => g.ResourceID, (t, g) => new DateItemViewModel { Date = t.Date, IsEnabled = (t.TimesCount - t.VisitsCount) > 0, IsBlocked = g.Any(), ResourceID = t.ResourceID }) .OrderBy(di => di.Date) .ToList(); IEnumerable <ResourceViewModel> resourceItems = resources .GroupJoin(dateItems, r => r.ID, d => d.ResourceID, (r, g) => new ResourceViewModel { ResourceName = r.Doctor.DisplayName, IsEnabled = g.Any(di => di.IsEnabled) && g.All(di => !di.IsBlocked), IsBlocked = g.Any(di => di.IsBlocked), ResourceID = r.ID, SpecialtyID = r.Doctor.SpecialtyID, Dates = g }) .OrderBy(ri => ri.ResourceName) .ToList(); ICollection <SpecialtyViewModel> viewModels = resources .GroupBy(r => r.Doctor.Specialty) .Select(g => g.Key) .GroupJoin(resourceItems, s => s.ID, g => g.SpecialtyID, (s, g) => new SpecialtyViewModel { SpecialtyName = s.Name, Resources = g, IsEnabled = g.Any(ri => ri.IsEnabled) && g.All(ri => !ri.IsBlocked) }) .OrderBy(si => si.SpecialtyName) .ToList(); SpecialtyViewModel dispanserizationViewModel = viewModels.FirstOrDefault(s => s.SpecialtyName == "Диспансеризация"); if (dispanserizationViewModel != null) { DispanserizationViewModel dispanserization = request.Patient.Dispanserizations .OrderBy(d => d.BeginDate) .LastOrDefault(d => !d.IsClosed && d.BeginDate.Year == _dateTimeProvider.Now.Year); if (dispanserization != null) { foreach (var ri in dispanserizationViewModel.Resources) { ri.Dates = ri.Dates.Where(di => di.Date >= dispanserization.BeginDate); ri.IsEnabled = ri.Dates.Any(di => di.IsEnabled) && ri.Dates.All(di => !di.IsBlocked); ri.IsBlocked = ri.Dates.Any(di => di.IsBlocked); } dispanserizationViewModel.IsEnabled = dispanserizationViewModel.Resources.Any(ri => ri.IsEnabled); } else { viewModels.Remove(dispanserizationViewModel); } } return(await Task.FromResult(viewModels)); }
internal DispanserizationPrintForm(DispanserizationViewModel dispanserization) { InitializeComponent(); DataContext = dispanserization; }