Beispiel #1
0
        private void OnSecondTypeSelected()
        {
            if (_selectedSecondType is BaseEntityDto <School> school)
            {
                var projects = _projectFilterByVolunteerSpecification.FilterByVolunteers(DtoHelper.MapProjectsDtoToProjects(_allProjects).ToList(), GetVolunteersFromSchoolId(school.Entity.Id, DtoHelper.MapBaseEntityDtosToBaseEntities(_volunteersDto)).ToList());
                _projects = new ObservableCollection <ProjectDto>(DtoHelper.MapProjectsToProjectDto(projects.Distinct().ToList()));
                RaisePropertyChanged(nameof(Projects));
            }
            else
            {
                var vol = _selectedSecondType is BaseEntityDto <Volunteer> volunteer;

                if (vol)
                {
                    volunteer = (BaseEntityDto <Volunteer>)_selectedSecondType;
                    var projects = _projectFilterByVolunteerSpecification.Filter(DtoHelper.MapProjectsDtoToProjects(_allProjects).ToList(), volunteer.Entity);
                    _projects = new ObservableCollection <ProjectDto>(DtoHelper.MapProjectsToProjectDto(projects.Distinct().ToList()));
                    RaisePropertyChanged(nameof(Projects));
                }
            }
            IEnumerable <Volunteer> GetVolunteersFromSchoolId(int schoolId, IEnumerable <Volunteer> volunteers)
            {
                foreach (var volunteer in volunteers)
                {
                    foreach (var sv in volunteer.SchoolVolunteers)
                    {
                        if (sv.SchoolId == schoolId && sv.IsActual)
                        {
                            yield return(volunteer);

                            break;
                        }
                    }
                }
            }
        }