public List <Model.Reimburse> GetReimburseByCondition(Account loginUser, string employeename, int departmentid, ReimburseStatusEnum statusEnum, int reimburseCategoriesEnumID, decimal?totalcostfrom, decimal?totalcostto, DateTime?applydateFrom, DateTime?applydateTo, DateTime?billtimeFrom, DateTime?billtimeTo, int companyID, int auth, int finishStatus) { List <Model.Reimburse> reimburses = new List <Model.Reimburse>(); if (departmentid != -1) { reimburses = _DalReimburse.GetReimburseByCondition(departmentid, statusEnum, reimburseCategoriesEnumID, totalcostfrom, totalcostto, applydateFrom, applydateTo, billtimeFrom, billtimeTo, companyID, finishStatus); List <Department> departments = _IGetDepartment.GetChildDeptList(departmentid); foreach (Department department in departments) { reimburses.AddRange( _DalReimburse.GetReimburseByCondition(department.Id, statusEnum, reimburseCategoriesEnumID, totalcostfrom, totalcostto, applydateFrom, applydateTo, billtimeFrom, billtimeTo, companyID, finishStatus)); } } else { reimburses = _DalReimburse.GetReimburseByCondition(departmentid, statusEnum, reimburseCategoriesEnumID, totalcostfrom, totalcostto, applydateFrom, applydateTo, billtimeFrom, billtimeTo, companyID, finishStatus); } List <Account> accounts = BllInstance.AccountBllInstance.GetAccountByBaseCondition(employeename, departmentid, -1, null, true, null); accounts = Tools.RemoteUnAuthAccount(accounts, AuthType.HRMIS, loginUser, auth); for (int i = reimburses.Count - 1; i >= 0; i--) { if (!IsContainsAccount(accounts, reimburses[i].ApplierID)) { reimburses.RemoveAt(i); } else { Account account = BllInstance.AccountBllInstance.GetAccountById(reimburses[i].ApplierID); reimburses[i].ApplerName = account.Name; reimburses[i].Department.DepartmentName = account.Dept.DepartmentName; } } return(reimburses); }