Example #1
0
        /// <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());
        }
Example #2
0
        /// <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());
        }
Example #3
0
        /// <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());
        }
Example #4
0
        /// <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());
        }
Example #5
0
        /// <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());
        }