public async Task <IActionResult> CompanyChild(string id) { var currentUser = _currentUserService.CurrentUser; id ??= currentUser?.CompanyInfo?.CompanyCode; var list = _companiesService.FindAllChild(id)?.ToDictionary(c => c.Code) ?? new Dictionary <string, Company>(); int totalCount = list.Count; var manageCount = 0; if (currentUser != null && (new List <string>() { null, "", "root" }.Contains(id))) { var mymanage_result = await _usersService.InMyManage(currentUser); manageCount = mymanage_result.Item2; var uc = currentUser.CompanyInfo.Company; list[uc.Code] = uc; manageCount -= AddCompanyList(list, mymanage_result.Item1.ToList()); var permissionCompanies = _companiesService.PermissionViewCompanies(currentUser); manageCount += permissionCompanies.Count; manageCount -= AddCompanyList(list, permissionCompanies); } return(new JsonResult(new AllChildViewModel() { Data = new EntitiesListDataModel <CompanyChildDataModel>() { List = list.Values.OrderByDescending(c => c.Priority).Select(c => c.ToCompanyModel()), TotalCount = totalCount + manageCount } })); }