public ReportingHandlers(IRepository<Cathedra> cathedraRepository,
                                 IRepository<Person> personRepository,
                                 IExcelReportingService excelService,
                                 IReportGenerator reportGenerator)
        {
            if (cathedraRepository == null)
            {
                throw new ArgumentNullException("cathedraRepository");
            }

            if (personRepository == null)
            {
                throw new ArgumentNullException("personRepository");
            }

            if (excelService == null)
            {
                throw new ArgumentNullException("excelService");
            }

            if (reportGenerator == null)
            {
                throw new ArgumentNullException("reportGenerator");
            }

            _cathedraRepository = cathedraRepository;
            _personRepository = personRepository;
            _excelService = excelService;
            _reportGenerator = reportGenerator;
        }
        public MainViewModel(IRepository<Book> bookRepository,
                             IRepository<Cathedra> cathedraRepository,
                             IRepository<Conference> conferenceRepository,
                             IRepository<Exhibition> exhibitionRepository,
                             IRepository<Person> professorRepository,
                             IRepository<Publication> publicationRepository,
                             IRepository<CouncilParticipation> councilParticipationRepository,
                             IRepository<Dissertation> dissertationRepository,
                             IRepository<InventiveApplication> inventiveApplicationRepository,
                             IRepository<EfficiencyProposal> efficiencyProposalRepository,
                             IRepository<Research> researchRepository,
                             IRepository<ScienceRank> scienceRankRepository,
                             IRepository<ScienceRankMetric> scienceRankMetricRepository,
                             IRepository<ScienceRankMetricDefinition> scienceRankMetricDefinitionRepository,
                             IExcelReportingService excelReportingService,
                             IReportGenerator reportGenerator)
        {
            _bookRepository = bookRepository;
            _cathedraRepository = cathedraRepository;
            _conferenceRepository = conferenceRepository;
            _exhibitionRepository = exhibitionRepository;
            _professorRepository = professorRepository;
            _publicationRepository = publicationRepository;
            _councilParticipationRepository = councilParticipationRepository;
            _dissertationRepository = dissertationRepository;
            _inventiveApplicationRepository = inventiveApplicationRepository;
            _researchRepository = researchRepository;
            _scienceRankRepository = scienceRankRepository;

            _excelReportingService = excelReportingService;
            _reportGenerator = reportGenerator;
            _scienceRankMetricRepository = scienceRankMetricRepository;
            _scienceRankMetricDefinitionRepository = scienceRankMetricDefinitionRepository;
            _efficiencyProposalRepository = efficiencyProposalRepository;

            _workWindow = new StartupViewModel();

            InitFacultyTree();
            InitRoutedCommands();
        }