Example #1
0
        public static GeoDeptViewModel Recursive(GeoDeptViewModel dept, List <GeoDeptViewModel> deptList, ref List <GeoDeptViewModel> result)
        {
            var objects = deptList.Where(c => c.DEPTPARENT == dept.DEPTCODE);

            if (objects.Count() < 1)
            {
                if (string.IsNullOrEmpty(dept.GEOREPORTCD))
                {
                    return(null);
                }
                return(dept);
            }
            else
            {
                List <GeoDeptViewModel> newList = new List <GeoDeptViewModel>();
                foreach (GeoDeptViewModel ca in objects)
                {
                    GeoDeptViewModel org = Recursive(ca, deptList, ref result);
                    if (org != null)
                    {
                        if (newList.Where(p => p.DEPTCODE == org.DEPTCODE).FirstOrDefault() == null)
                        {
                            //newList.Add(org);
                            result.Add(org);
                        }
                    }
                }
                dept.GeoDeptViewModels = newList;
                return(dept);
            }
        }
Example #2
0
        public static GeoDeptViewModel GeoRecursive(GeoDeptViewModel org, List <GeoDeptViewModel> list)
        {
            var objects = list.Where(c => c.DEPTPARENT == org.DEPTCODE);

            if (objects.Count() < 1)
            {
                return(org);
            }
            else
            {
                List <GeoDeptViewModel> newList = new List <GeoDeptViewModel>();
                foreach (GeoDeptViewModel ca in objects)
                {
                    GeoDeptViewModel child = GeoRecursive(ca, list);
                    if (child != null)
                    {
                        if (newList.Where(p => p.DEPTCODE == child.DEPTCODE).FirstOrDefault() == null)
                        {
                            newList.Add(child);
                        }
                    }
                }
                org.GeoDeptViewModels = newList;
                return(org);
            }
        }
Example #3
0
        //Version: 1.0
        //public static List<GeoDeptViewModel> getTreeGeoDepts()
        //{
        //    var data = getGeoDeptReports();
        //    int count = 0;
        //    List<GeoDeptViewModel> a = new List<GeoDeptViewModel>();
        //    a = (from e in data
        //         select new GeoDeptViewModel
        //         {
        //             DEPTCODE = e.DEPTCODE,
        //             DEPTNAME = e.DEPTNAME,
        //             DEPTPARENT = e.DEPTPARENT,
        //             SYS_EMPID = e.SYS_EMPID,
        //             isChild = data.Where(obj => obj.DEPTPARENT == e.DEPTCODE).FirstOrDefault() != null,
        //             GEOREPORTCD = e.GEOREPORTCD
        //         }).ToList();
        //    a.RemoveAll(obj => obj.isChild == false && string.IsNullOrEmpty(obj.GEOREPORTCD));

        //    while (count < 4)
        //    {
        //       a = (from e in a
        //                                    select new GeoDeptViewModel
        //                                    {
        //                                        DEPTCODE = e.DEPTCODE,
        //                                        DEPTNAME = e.DEPTNAME,
        //                                        DEPTPARENT = e.DEPTPARENT,
        //                                        SYS_EMPID = e.SYS_EMPID,
        //                                        isChild = a.Where(obj => obj.DEPTPARENT == e.DEPTCODE).FirstOrDefault() != null,
        //                                        GEOREPORTCD = e.GEOREPORTCD
        //                                    }).ToList();
        //        a.RemoveAll(obj => obj.isChild == false && string.IsNullOrEmpty(obj.GEOREPORTCD));
        //        count++;
        //    }
        //    var result = a.Distinct(new GeoComparer<GeoDeptViewModel>());
        //    return result.ToList();
        //}
        public static List <GeoDeptViewModel> getTreeGeoDepts(string deptCode)
        {
            var data = getGeoDeptReports();
            List <GeoDeptViewModel> deptList = new List <GeoDeptViewModel>();
            List <GeoDeptViewModel> result   = new List <GeoDeptViewModel>();
            GeoDeptViewModel        org      = data.Where(p => p.DEPTPARENT == null || p.DEPTPARENT == string.Empty).FirstOrDefault();
            GeoDeptViewModel        geo      = Recursive(org, data, ref result);

            if (geo != null)
            {
                deptList.Add(geo);
                result.Add(geo);
            }
            return(result);
        }
Example #4
0
        //Version 2.0 for improving performance.
        public static List <GeoDeptViewModel> getTreeGeoDepts()
        {
            var geoReports = getGeoDeptReportsRegistered();//Lay all GeoReport.

            if (geoReports == null || geoReports.Count == 0)
            {
                return(new List <GeoDeptViewModel>());
            }
            var data = getGeoDeptReports();

            List <GeoDeptViewModel> result = new List <GeoDeptViewModel>();
            GeoDeptViewModel        root   = new GeoDeptViewModel();

            foreach (GeoDeptViewModel geo in geoReports)
            {
                GeoDeptViewModel geoTemp = geo;
                geo.isChild = false;
                while (geoTemp != null && geoTemp.DEPTPARENT != null && !string.IsNullOrEmpty(geoTemp.DEPTPARENT))
                {
                    if (result.Where(r => r.DEPTCODE == geoTemp.DEPTCODE).FirstOrDefault() == null)
                    {
                        result.Add(geoTemp);
                    }
                    geoTemp = data.Where(g => g.DEPTCODE == geoTemp.DEPTPARENT).FirstOrDefault();
                    if (geoTemp != null)
                    {
                        geoTemp.isChild = true;
                        root            = geoTemp;
                    }
                }
            }
            if (result.Where(r => r.DEPTCODE == root.DEPTCODE).FirstOrDefault() == null)
            {
                result.Add(root);
            }
            List <GeoDeptViewModel> finalResult = new List <GeoDeptViewModel>();
            GeoDeptViewModel        geoRoot     = GeoRecursive(root, result);

            if (geoRoot != null)
            {
                finalResult.Add(geoRoot);
            }
            return(finalResult);
        }
Example #5
0
        //Version 2.0 for improving performance.
        public static List <GeoDeptViewModel> getGeoDeptReportsRegistered()
        {
            List <GeoDeptViewModel> geoReports = new List <GeoDeptViewModel>();
            GeoReportAccess         access     = new GeoReportAccess();
            DataTable dtResult = access.GetTreeGeoReportsRegistered();

            foreach (DataRow dtr in dtResult.Rows)
            {
                GeoDeptViewModel item = new GeoDeptViewModel
                {
                    GEOREPORTCD = dtr["GEOREPORTCD"].ToString(),
                    DEPTNAME    = dtr["DEPTNAME"].ToString(),
                    DEPTCODE    = dtr["DEPTCODE"].ToString(),
                    DEPTPARENT  = dtr["DEPTPARENT"].ToString()
                };
                geoReports.Add(item);
            }
            return(geoReports);
        }