public ActionResult UnitSalariesByFacultyType(string id)
        {
            var authorizedDepartments = GetAuthorizedDepartments(id);

            if (authorizedDepartments.Count > 0)
            {
                var salaries = DbContext.Salaries
                    .Include("FacultyType")
                    .Where(s => s.Person.Employments.Any(e => e.Department.UnitId == id));

                var package = new ExcelPackage();
                var header = "Salaries By Faculty Type: " + authorizedDepartments.FirstOrDefault().Unit.Name +
                    " " + TimeZoneInfo.ConvertTimeBySystemTimeZoneId(
                        System.DateTime.Now, TimeZoneInfo.Local.Id, "Eastern Standard Time").ToString("MMMM dd, yyyy");
                var report = new SalariesByFacultyTypeReport(package, authorizedDepartments, salaries, true,
                    header, null, "Salaries by faculty type");

                return File(report.Package.GetAsByteArray(), report.FileType, report.FileName);
            }

            return new HttpUnauthorizedResult();
        }
        public ActionResult ExecutiveUnitMeeting(string id)
        {
            var authorizedDepartments = GetAuthorizedDepartments(id);

            if (authorizedDepartments.Count > 0)
            {
                var salaries = GetUnitMeetingSalaries(id);

                var package = new ExcelPackage();
                var fileName = "FacSal_ExecutiveMeetingReport_" +
                TimeZoneInfo.ConvertTimeBySystemTimeZoneId(
                    System.DateTime.Now, TimeZoneInfo.Local.Id, "Eastern Standard Time").ToString()
                + ".xlsx";
                new MeetingReport(package, authorizedDepartments, salaries, 15, true,
                    fileName);

                var header = "Virginia Tech Meeting Report: " + authorizedDepartments.FirstOrDefault().Unit.Name +
                    " " + TimeZoneInfo.ConvertTimeBySystemTimeZoneId(
                        System.DateTime.Now, TimeZoneInfo.Local.Id, "Eastern Standard Time").ToString("MMMM dd, yyyy");
                var report = new SalariesByFacultyTypeReport(package, authorizedDepartments, salaries, true, header,
                    fileName, "Unit summary");

                return File(report.Package.GetAsByteArray(), report.FileType, report.FileName);
            }

            return new HttpUnauthorizedResult();
        }
        public ActionResult DepartmentSalariesByFacultyType(string id)
        {
            if (User.IsInRole("manage-all") ||
                User.IsInRole("read-" + id))
            {
                var department = DbContext.Departments
                    .Include("Unit")
                    .Where(d => d.Id == id)
                    .ToList()[0];

                var salaries = DbContext.Salaries
                    .Include("FacultyType")
                    .Where(s => s.Person.Employments.Any(e => e.DepartmentId == id));

                var package = new ExcelPackage();
                var header = "Salaries By Faculty Type: " + department.Unit.Name +
                " " + TimeZoneInfo.ConvertTimeBySystemTimeZoneId(
                    System.DateTime.Now, TimeZoneInfo.Local.Id, "Eastern Standard Time").ToString("MMMM dd, yyyy");
                var departments = new List<Department>() { department };
                var report = new SalariesByFacultyTypeReport(package, departments, salaries, false,
                    header, null, "Salaries by faculty type");

                return File(report.Package.GetAsByteArray(), report.FileType, report.FileName);
            }

            return new HttpUnauthorizedResult();
        }