/// <summary> /// Get Bank Accounts List which is not in BankAccountsAccessList /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task <List <BankAccountAccessListUnitDto> > GetBankAccountList(GetUserSecuritySettingsInputUnit input) { List <BankAccountCacheItem> bankAccountCacheItems; AutoSearchInput cacheInput = new AutoSearchInput() { OrganizationUnitId = input.OrganizationUnitId }; var values = Enum.GetValues(typeof(TypeOfBankAccount)).Cast <TypeOfBankAccount>().Select(x => x) .ToDictionary(u => u.ToDescription(), u => (int)u).Where(u => u.Value >= 1 && u.Value <= 10) .Select(u => u.Key).ToArray(); var strTypeOfbankAccount = string.Join(",", values); var user = await _userManager.GetUserByIdAsync(input.UserId); var organizationUnits = await _organizationExtendedUnitManager.GetExtendedOrganizationUnitsAsync(user, input.EntityClassificationId); var bankAccountCache = await _bankAccountCache.GetBankAccountCacheItemAsync( CacheKeyStores.CalculateCacheKey(CacheKeyStores.BankAccountKey, Convert.ToInt32(_customAppSession.TenantId))); if (!ReferenceEquals(input.Filters, null)) { Func <BankAccountCacheItem, bool> multiRangeExp = null; Func <BankAccountCacheItem, bool> filterCondition = null; var multiRangeFilters = input.Filters.Where(u => u.IsMultiRange == true).ToList(); if (multiRangeFilters.Count != 0) { multiRangeExp = ExpressionBuilder.GetExpression <BankAccountCacheItem>(Helper.GetMultiRangeFilters(multiRangeFilters), SearchPattern.Or).Compile(); input.Filters.RemoveAll(u => u.IsMultiRange == true); } var otherFilters = input.Filters.Where(u => u.IsMultiRange == false).ToList(); if (otherFilters.Count != 0) { filterCondition = ExpressionBuilder.GetExpression <BankAccountCacheItem>(otherFilters).Compile(); } bankAccountCacheItems = bankAccountCache.ToList().Where(u => strTypeOfbankAccount.Contains(u.TypeOfBankAccountId.ToString())) .WhereIf(multiRangeFilters.Count != 0, multiRangeExp) .WhereIf(otherFilters.Count != 0, filterCondition) .Where(p => !organizationUnits.Any(p2 => p2.Id == p.OrganizationUnitId)).ToList(); } else { bankAccountCacheItems = bankAccountCache.ToList() .Where(p => !organizationUnits.Any(p2 => p2.Id == p.OrganizationUnitId)).ToList(); } return(bankAccountCacheItems.Select(item => { var dto = new BankAccountAccessListUnitDto(); dto.BankAccountNumber = item.BankAccountNumber; dto.BankName = item.Description; dto.AccountName = item.BankAccountName; dto.OrganizationUnitId = item.OrganizationUnitId; dto.BankAccountId = item.BankAccountId; return dto; }).ToList()); }
/// <summary> /// Get Project/Division AccessList By UserId /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task <List <ProjectAccessListUnitDto> > GetProjectAccessList(GetUserSecuritySettingsInputUnit input) { List <DivisionCacheItem> divisionCacheItems = new List <DivisionCacheItem>(); AutoSearchInput cacheInput = new AutoSearchInput() { OrganizationUnitId = input.OrganizationUnitId }; var divisionCache = await _divisionCache.GetDivisionCacheItemAsync( CacheKeyStores.CalculateCacheKey(CacheKeyStores.DivisionKey, Convert.ToInt32(_customAppSession.TenantId))); var user = await _userManager.GetUserByIdAsync(input.UserId); var organizationUnits = await _organizationExtendedUnitManager.GetExtendedOrganizationUnitsAsync(user, input.EntityClassificationId); var organizationUnitIds = organizationUnits.Select(ou => ou.Id); var strOrgIds = string.Join(",", organizationUnitIds.ToArray()); if (!string.IsNullOrEmpty(strOrgIds)) { if (ReferenceEquals(input.Filters, null)) { input.Filters = new List <Filters>(); } var orgfilter = new Filters() { Property = "OrganizationUnitId", Comparator = 6,//In Operator SearchTerm = strOrgIds, DataType = DataTypes.Text }; input.Filters.Add(orgfilter); } if (!ReferenceEquals(input.Filters, null)) { Func <DivisionCacheItem, bool> multiRangeExp = null; var multiRangeFilters = input.Filters.Where(u => u.IsMultiRange == true).ToList(); if (multiRangeFilters.Count != 0) { multiRangeExp = ExpressionBuilder.GetExpression <DivisionCacheItem>(Helper.GetMultiRangeFilters(multiRangeFilters), SearchPattern.Or).Compile(); input.Filters.RemoveAll(u => u.IsMultiRange == true); } var filterCondition = ExpressionBuilder.GetExpression <DivisionCacheItem>(input.Filters).Compile(); divisionCacheItems = divisionCache.ToList() .WhereIf(multiRangeFilters.Count != 0, multiRangeExp) .Where(filterCondition).ToList(); } return(divisionCacheItems.Select(item => { var dto = new ProjectAccessListUnitDto(); dto.JobNumber = item.JobNumber; dto.Caption = item.Caption; dto.OrganizationUnitId = item.OrganizationUnitId; dto.JobId = item.JobId; return dto; }).ToList()); }
/// <summary> /// Get Credit Card Access List By UserId /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task <List <CreditAccessListUnitDto> > GetCreditCardAccessList(GetUserSecuritySettingsInputUnit input) { var user = await _userManager.GetUserByIdAsync(input.UserId); var organizationUnits = await _organizationExtendedUnitManager.GetExtendedOrganizationUnitsAsync(user, input.EntityClassificationId); var organizationUnitIds = organizationUnits.Select(ou => ou.Id); var strOrgIds = string.Join(",", organizationUnitIds.ToArray()); var typeOfbankList = Enum.GetValues(typeof(TypeOfBankAccount)).Cast <TypeOfBankAccount>().Select(x => x) .ToDictionary(u => u.ToDescription(), u => (int)u).Where(u => u.Value >= 13 && u.Value <= 18) .Select(u => u.Key).ToArray(); var strTypeOfbankAC = string.Join(",", typeOfbankList); var query = from creditCard in _creditCardUnitRepository.GetAll().Where(u => strOrgIds.Contains(u.OrganizationUnitId.Value.ToString())) join bankAccount in _bankAccountUnitRepository.GetAll().Where(u => strTypeOfbankAC.Contains(u.TypeOfBankAccountId.ToString())) on creditCard.BankAccountId equals bankAccount.Id select new { CardHolderName = bankAccount.Description, CardNumber = bankAccount.BankAccountNumber, OrganizationUnitId = creditCard.OrganizationUnitId, AccountingDocumentId = creditCard.Id }; if (!ReferenceEquals(input.Filters, null)) { var multiRageFilters = input.Filters.Where(u => u.IsMultiRange == true).ToList(); if (multiRageFilters.Count != 0) { SearchTypes mapSearchFilters = Helper.MappingFilters(Helper.GetMultiRangeFilters(multiRageFilters)); if (!ReferenceEquals(mapSearchFilters, null)) { query = Helper.CreateFilters(query, mapSearchFilters, SearchPattern.Or); } input.Filters.RemoveAll(u => u.IsMultiRange == true); } var otherFilters = input.Filters.Where(u => u.IsMultiRange == false).ToList(); if (otherFilters.Count != 0) { SearchTypes mapSearchFilters = Helper.MappingFilters(otherFilters); if (!ReferenceEquals(mapSearchFilters, null)) { query = Helper.CreateFilters(query, mapSearchFilters); } } } var creditCardAccessList = await query.ToListAsync(); return(creditCardAccessList.Select(item => { var dto = new CreditAccessListUnitDto(); dto.CardNumber = item.CardNumber; dto.CardHolderName = item.CardHolderName; dto.OrganizationUnitId = item.OrganizationUnitId; dto.AccountingDocumentId = item.AccountingDocumentId; return dto; }).ToList()); }
/// <summary> /// Get Accounts/Lines List which is not in AccountAccessList /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task <List <AccountAccessListUnitDto> > GetAccountList(GetUserSecuritySettingsInputUnit input) { List <AccountCacheItem> accountCacheItems = new List <AccountCacheItem>(); AutoSearchInput cacheInput = new AutoSearchInput() { OrganizationUnitId = input.OrganizationUnitId }; var user = await _userManager.GetUserByIdAsync(input.UserId); var organizationUnits = await _organizationExtendedUnitManager.GetExtendedOrganizationUnitsAsync(user, input.EntityClassificationId); var accountCache = await _accountCache.GetAccountCacheItemAsync( CacheKeyStores.CalculateCacheKey(CacheKeyStores.AccountKey, Convert.ToInt32(_customAppSession.TenantId))); if (!ReferenceEquals(input.Filters, null)) { Func <AccountCacheItem, bool> multiRangeExp = null; Func <AccountCacheItem, bool> filterCondition = null; var multiRangeFilters = input.Filters.Where(u => u.IsMultiRange == true).ToList(); if (multiRangeFilters.Count != 0) { multiRangeExp = ExpressionBuilder.GetExpression <AccountCacheItem>(Helper.GetMultiRangeFilters(multiRangeFilters), SearchPattern.Or).Compile(); input.Filters.RemoveAll(u => u.IsMultiRange == true); } var otherFilters = input.Filters.Where(u => u.IsMultiRange == false).ToList(); if (otherFilters.Count != 0) { filterCondition = ExpressionBuilder.GetExpression <AccountCacheItem>(otherFilters).Compile(); } accountCacheItems = accountCache.ToList() .Where(u => u.ChartOfAccountId == input.ChartOfAccountId) .WhereIf(multiRangeFilters.Count != 0, multiRangeExp) .WhereIf(otherFilters.Count != 0, filterCondition) .Where(p => !organizationUnits.Any(p2 => p2.Id == p.OrganizationUnitId)).ToList(); } else { accountCacheItems = accountCache.ToList().Where(u => u.ChartOfAccountId == input.ChartOfAccountId) .Where(p => !organizationUnits.Any(p2 => p2.Id == p.OrganizationUnitId)).ToList(); } return(accountCacheItems.Select(item => { var dto = new AccountAccessListUnitDto(); dto.AccountId = item.AccountId; dto.AccountNumber = item.AccountNumber; dto.Caption = item.Caption; dto.OrganizationUnitId = item.OrganizationUnitId; return dto; }).ToList()); }
/// <summary> /// Get Bank Accounts Access List By UserId /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task <List <BankAccountAccessListUnitDto> > GetBankAccountAccessList(GetUserSecuritySettingsInputUnit input) { List <BankAccountCacheItem> bankAccountCacheItems = new List <BankAccountCacheItem>(); AutoSearchInput cacheInput = new AutoSearchInput() { OrganizationUnitId = input.OrganizationUnitId }; var bankAccountCache = await _bankAccountCache.GetBankAccountCacheItemAsync( CacheKeyStores.CalculateCacheKey(CacheKeyStores.BankAccountKey, Convert.ToInt32(_customAppSession.TenantId))); var user = await _userManager.GetUserByIdAsync(input.UserId); var organizationUnits = await _organizationExtendedUnitManager.GetExtendedOrganizationUnitsAsync(user, input.EntityClassificationId); var organizationUnitIds = organizationUnits.Select(ou => ou.Id); var strOrgIds = string.Join(",", organizationUnitIds.ToArray()); var values = Enum.GetValues(typeof(TypeOfBankAccount)).Cast <TypeOfBankAccount>().Select(x => x) .ToDictionary(u => u.ToDescription(), u => (int)u).Where(u => u.Value >= 1 && u.Value <= 10) .Select(u => u.Key).ToArray(); var strTypeOfbankAC = string.Join(",", values); if (!string.IsNullOrEmpty(strOrgIds)) { if (ReferenceEquals(input.Filters, null)) { input.Filters = new List <Filters>(); } var orgfilter = new Filters() { Property = "OrganizationUnitId", Comparator = 6,//In Operator SearchTerm = strOrgIds, DataType = DataTypes.Text }; input.Filters.Add(orgfilter); } if (!ReferenceEquals(input.Filters, null)) { Func <BankAccountCacheItem, bool> multiRangeExp = null; var multiRangeFilters = input.Filters.Where(u => u.IsMultiRange == true).ToList(); if (multiRangeFilters.Count != 0) { multiRangeExp = ExpressionBuilder.GetExpression <BankAccountCacheItem>(Helper.GetMultiRangeFilters(multiRangeFilters), SearchPattern.Or).Compile(); input.Filters.RemoveAll(u => u.IsMultiRange == true); } var filterCondition = ExpressionBuilder.GetExpression <BankAccountCacheItem>(input.Filters).Compile(); bankAccountCacheItems = bankAccountCache.ToList() .Where(u => strTypeOfbankAC.Contains(u.TypeOfBankAccountId.ToString())) .WhereIf(multiRangeFilters.Count != 0, multiRangeExp) .Where(filterCondition).ToList(); } return(bankAccountCacheItems.Select(item => { var dto = new BankAccountAccessListUnitDto { BankAccountNumber = item.BankAccountNumber, BankName = item.Description, AccountName = item.BankAccountName, OrganizationUnitId = item.OrganizationUnitId, BankAccountId = item.BankAccountId }; return dto; }).ToList()); }