Exemple #1
0
        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);
        }