public ActionResult PartialReportByDepartmentAverageMark(string[] dateValue)
        {
            ViewBag.Today = DateTime.Now.Month;
            DateTime[] dateValues = new DateTime[] {
                DateTime.ParseExact(dateValue[0], "MM/dd/yyyy", CultureInfo.InvariantCulture),
                DateTime.ParseExact(dateValue[1], "MM/dd/yyyy", CultureInfo.InvariantCulture)
            };
            List <CustomDepartment> DepartmentsWithoutParentAndChildren = new List <CustomDepartment>();
            List <Department>       DepsWithoutParentAndChildren        = unit.Departments.GetDepartmentsWithoutParentAndChildren().ToList();

            foreach (var department in DepsWithoutParentAndChildren)
            {
                DepartmentsWithoutParentAndChildren.Add(
                    new CustomDepartment
                {
                    DepartmentId = department.DepartmentId,
                    Name         = department.Name,
                    AverageMark  = unit
                                   .Employees
                                   .GetEmployeesAverageMarkByDepartmentIdAndTwoDate(department.DepartmentId, dateValues)
                }
                    );
            }
            ViewBag.DepartmentsWithoutParentAndChildren = DepartmentsWithoutParentAndChildren;

            List <Department> DepartmentsWithoutParentWithChildren = unit.Departments.GetDepartmentsWithoutParentWithChildren().ToList();
            List <DepartmentsWithChildren> result = new List <DepartmentsWithChildren>();
            DepartmentsWithChildren        item   = null;
            List <Department> children            = null;

            foreach (Department parent in DepartmentsWithoutParentWithChildren)
            {
                item = new DepartmentsWithChildren
                {
                    Department  = parent,
                    Children    = new List <CustomDepartment>(),
                    AverageMark = unit
                                  .Employees
                                  .GetEmployeesAverageMarkByDepartmentIdAndTwoDate(parent.DepartmentId, dateValues)
                };
                children = unit.Departments.GetDepartmentsByParentId(parent.DepartmentId).ToList();
                foreach (Department child in children)
                {
                    item.Children.Add(
                        new CustomDepartment
                    {
                        DepartmentId = child.DepartmentId,
                        Name         = child.Name,
                        ParentId     = child.ParentId,
                        AverageMark  = unit
                                       .Employees
                                       .GetEmployeesAverageMarkByDepartmentIdAndTwoDate(child.DepartmentId, dateValues)
                    }
                        );
                }
                result.Add(item);
            }
            ViewBag.Marks = result;
            return(PartialView(result));
        }
        public ActionResult PartialReportByConsolidated(DateTime?dateValue)
        {
            ViewBag.Today = DateTime.Now.ToString("yyyy-MM");

            List <CustomDepartment> DepartmentsWithoutParentAndChildren = new List <CustomDepartment>();
            List <Department>       DepsWithoutParentAndChildren        = unit.Departments.GetDepartmentsWithoutParentAndChildren().ToList();

            foreach (var department in DepsWithoutParentAndChildren)
            {
                DepartmentsWithoutParentAndChildren.Add(
                    new CustomDepartment
                {
                    DepartmentId = department.DepartmentId,
                    Name         = department.Name,
                    AverageMark  = unit
                                   .Employees
                                   .GetEmployeesAverageMarkByDepartmentIdAndDate(department.DepartmentId, dateValue),
                    AverageMarkDepartment = unit
                                            .Employees
                                            .GetDepartmentsAverageMarkByDepartmentIdAndDate(department.DepartmentId, dateValue)
                }
                    );
            }
            ViewBag.DepartmentsWithoutParentAndChildren = DepartmentsWithoutParentAndChildren;

            List <Department> DepartmentsWithoutParentWithChildren = unit.Departments.GetDepartmentsWithoutParentWithChildren().ToList();
            List <DepartmentsWithChildren> result = new List <DepartmentsWithChildren>();
            DepartmentsWithChildren        item   = null;
            List <Department> children            = null;

            foreach (Department parent in DepartmentsWithoutParentWithChildren)
            {
                item = new DepartmentsWithChildren
                {
                    Department  = parent,
                    Children    = new List <CustomDepartment>(),
                    AverageMark = unit
                                  .Employees
                                  .GetEmployeesAverageMarkByDepartmentIdAndDate(parent.DepartmentId, dateValue),
                    AverageMarkDepartment = unit
                                            .Employees
                                            .GetDepartmentsAverageMarkByDepartmentIdAndDate(parent.DepartmentId, dateValue)
                };
                children = unit.Departments.GetDepartmentsByParentId(parent.DepartmentId).ToList();
                foreach (Department child in children)
                {
                    item.Children.Add(
                        new CustomDepartment
                    {
                        DepartmentId = child.DepartmentId,
                        Name         = child.Name,
                        ParentId     = child.ParentId,
                        AverageMark  = unit
                                       .Employees
                                       .GetEmployeesAverageMarkByDepartmentIdAndDate(child.DepartmentId, dateValue),
                        AverageMarkDepartment = unit
                                                .Employees
                                                .GetDepartmentsAverageMarkByDepartmentIdAndDate(child.DepartmentId, dateValue)
                    }
                        );
                }
                result.Add(item);
            }
            return(PartialView(result));
        }
        public ActionResult ReportByDepartmentAverageMark()
        {
            var firstDate      = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
            var lastDayOfMonth = firstDate.AddMonths(1).AddDays(-1);

            DateTime[] dateValues = new DateTime[] {
                firstDate,
                lastDayOfMonth,
            };
            List <CustomDepartment> DepartmentsWithoutParentAndChildren = new List <CustomDepartment>();
            List <Department>       DepsWithoutParentAndChildren        = unit.Departments.GetDepartmentsWithoutParentAndChildren().ToList();

            foreach (var department in DepsWithoutParentAndChildren)
            {
                DepartmentsWithoutParentAndChildren.Add(
                    new CustomDepartment
                {
                    DepartmentId = department.DepartmentId,
                    Name         = department.Name,
                    AverageMark  = unit
                                   .Employees
                                   .GetEmployeesAverageMarkByDepartmentIdAndTwoDate(department.DepartmentId, dateValues)
                }
                    );
            }
            ViewBag.DepartmentsWithoutParentAndChildren = DepartmentsWithoutParentAndChildren;

            List <Department> DepartmentsWithoutParentWithChildren = unit.Departments.GetDepartmentsWithoutParentWithChildren().ToList();
            List <DepartmentsWithChildren> result = new List <DepartmentsWithChildren>();
            DepartmentsWithChildren        item   = null;
            List <Department> children            = null;

            foreach (Department parent in DepartmentsWithoutParentWithChildren)
            {
                item = new DepartmentsWithChildren
                {
                    Department  = parent,
                    Children    = new List <CustomDepartment>(),
                    AverageMark = unit
                                  .Employees
                                  .GetEmployeesAverageMarkByDepartmentIdAndTwoDate(parent.DepartmentId, dateValues)
                };
                children = unit.Departments.GetDepartmentsByParentId(parent.DepartmentId).ToList();
                foreach (Department child in children)
                {
                    item.Children.Add(
                        new CustomDepartment
                    {
                        DepartmentId = child.DepartmentId,
                        Name         = child.Name,
                        ParentId     = child.ParentId,
                        AverageMark  = unit
                                       .Employees
                                       .GetEmployeesAverageMarkByDepartmentIdAndTwoDate(child.DepartmentId, dateValues)
                    }
                        );
                }
                result.Add(item);
            }
            ViewBag.Marks = result;
            return(View(result));
        }