public ActionResult Chart()
 {
     try
     {
         var Allchart = dbcontext.Organization_Chart.ToList();
         ViewBag.userUnitCode    = Allchart.Select(m => new { code = m.User_unit_code });
         ViewBag.unitDescription = Allchart.Select(m => new { code = m.unit_Description });
         ViewBag.parent          = Allchart.Select(m => new { code = m.unit_Description, id = m.ID });
         ViewBag.unitTypeCode    = dbcontext.Organization_Unit_Type.ToList().Select(m => new { code = m.Name, id = m.ID });
         ViewBag.unitLevelCode   = dbcontext.Organization_Unit_Level.ToList().Select(m => new { code = m.Name, id = m.ID });
         ViewBag.unitSchema      = dbcontext.Organization_Unit_Schema.ToList().Select(m => new { code = m.Name, id = m.ID });
         ViewBag.location        = dbcontext.work_location.ToList().Select(m => new { code = m.Name, id = m.ID });
         var Model = new OrganizationChartReportVM();
         return(View(Model));
     }
     catch (Exception)
     {
         return(View());
     }
 }
        public ActionResult Chart(OrganizationChartReportVM record, FormCollection model)
        {
            try
            {
                var Allchart = dbcontext.Organization_Chart.ToList();
                ViewBag.userUnitCode    = Allchart.Select(m => new { code = m.User_unit_code });
                ViewBag.unitDescription = Allchart.Select(m => new { code = m.unit_Description });
                ViewBag.parent          = Allchart.Select(m => new { code = m.unit_Description, id = m.ID });
                ViewBag.unitTypeCode    = dbcontext.Organization_Unit_Type.ToList().Select(m => new { code = m.Name, id = m.ID });
                ViewBag.unitLevelCode   = dbcontext.Organization_Unit_Level.ToList().Select(m => new { code = m.Name, id = m.ID });
                ViewBag.unitSchema      = dbcontext.Organization_Unit_Schema.ToList().Select(m => new { code = m.Name, id = m.ID });
                ViewBag.location        = dbcontext.work_location.ToList().Select(m => new { code = m.Name, id = m.ID });

                /////////////////////////////////////////////
                ////////////////////////////////////////////
                var organizationChartList = new List <Organization_Chart>();
                var display         = new Boolean[12];
                var report          = new reportVM();
                var userUnit        = model["userUnit"].Split(char.Parse(","));
                var unitDescription = model["unitDescription"].Split(char.Parse(","));
                var parent          = model["parent"].Split(char.Parse(","));
                var UnitType        = model["UnitType"].Split(char.Parse(","));
                var unitlevel       = model["unitlevel"].Split(char.Parse(","));
                var unitSchema      = model["unitSchema"].Split(char.Parse(","));
                var loaction        = model["loaction"].Split(char.Parse(","));
                var check_status    = model["check_status"].Split(char.Parse(","));
                var List_Display    = model["List_Display"].Split(char.Parse(","));
                /////////////////////////////////////////////
                /////////////////////////////////////////////
                for (var i = 0; i < 12; i++)
                {
                    display[i] = false;
                }
                foreach (var item in userUnit)
                {
                    if (item != "")
                    {
                        var newRecord = Allchart.FirstOrDefault(m => m.User_unit_code == item); if (newRecord != null && !organizationChartList.Contains(newRecord))
                        {
                            organizationChartList.Add(newRecord);
                        }
                    }
                }
                foreach (var item in unitDescription)
                {
                    if (item != "")
                    {
                        var newRecord = Allchart.FirstOrDefault(m => m.unit_Description == item); if (newRecord != null && !organizationChartList.Contains(newRecord))
                        {
                            organizationChartList.Add(newRecord);
                        }
                    }
                }
                foreach (var item in parent)
                {
                    if (item != "")
                    {
                        var newRecord = Allchart.FirstOrDefault(m => m.parent == item); if (newRecord != null && !organizationChartList.Contains(newRecord))
                        {
                            organizationChartList.Add(newRecord);
                        }
                    }
                }
                foreach (var item in UnitType)
                {
                    if (item != "")
                    {
                        var id = int.Parse(item); var newRecord = Allchart.FirstOrDefault(m => m.unit_type_code.ID == id); if (newRecord != null && !organizationChartList.Contains(newRecord))
                        {
                            organizationChartList.Add(newRecord);
                        }
                    }
                }
                foreach (var item in unitlevel)
                {
                    if (item != "")
                    {
                        int unit_id = int.Parse(item); var newRecord = Allchart.FirstOrDefault(m => m.unit_type_code.Organization_Unit_LevelID == unit_id); if (newRecord != null && !organizationChartList.Contains(newRecord))
                        {
                            organizationChartList.Add(newRecord);
                        }
                    }
                }
                foreach (var item in unitSchema)
                {
                    if (item != "")
                    {
                        int schemaID = int.Parse(item); var newRecord = Allchart.FirstOrDefault(m => m.unit_type_code.Organization_Unit_SchemaID == schemaID); if (newRecord != null && !organizationChartList.Contains(newRecord))
                        {
                            organizationChartList.Add(newRecord);
                        }
                    }
                }
                foreach (var item in loaction)
                {
                    if (item != "")
                    {
                        var id = int.Parse(item); var newRecord = Allchart.FirstOrDefault(m => m.work_location.ID == id); if (newRecord != null && !organizationChartList.Contains(newRecord))
                        {
                            organizationChartList.Add(newRecord);
                        }
                    }
                }
                foreach (var item in check_status)
                {
                    if (item != "")
                    {
                        var id = int.Parse(item); var newRecord = Allchart.FirstOrDefault(m => m.unit_status.GetHashCode() == id); if (newRecord != null && !organizationChartList.Contains(newRecord))
                        {
                            organizationChartList.Add(newRecord);
                        }
                    }
                }
                foreach (var item in List_Display)
                {
                    if (item != "")
                    {
                        var index = int.Parse(item); display[index] = true;
                    }
                }
                foreach (var item in organizationChartList)
                {
                    if (item.parent != "0")
                    {
                        var id = int.Parse(item.parent); item.parent = Allchart.FirstOrDefault(m => m.ID == id).unit_Description;
                    }
                }
                report.listDisplay = display; report.Organization_Chart = organizationChartList;
                return(View("chartReport", report));
            }
            catch (Exception)
            {
                return(View(record));
            }
        }