public List <SubSiteBankFeeConfigDTO> BankFee(Guid Id)
 {
     try
     {
         List <SubSiteBankFeeConfigDTO> SubSiteBankFeeConfigDTOList = new List <SubSiteBankFeeConfigDTO>();
         var SubSiteFeeConfig = db.SubSiteFeeConfigs.Where(o => o.emp_CustomerInformation_ID == Id).ToList();
         foreach (var item in SubSiteFeeConfig)
         {
             SubSiteBankFeeConfigDTO      SubSiteBankFeeConfig     = new SubSiteBankFeeConfigDTO();
             List <SubSiteBankFeesConfig> SubSiteBankFeeConfigList = new List <SubSiteBankFeesConfig>();
             SubSiteBankFeeConfigList = db.SubSiteBankFeesConfigs.Where(o => o.emp_CustomerInformation_ID == Id && o.SubSiteFeeConfig_ID == item.ID).ToList();
             foreach (var BankFees in SubSiteBankFeeConfigList)
             {
                 SubSiteBankFeeConfig.AmountDSK = BankFees.BankMaxFees;
             }
             SubSiteBankFeeConfig.ServiceorTransmitter = item.ServiceorTransmission == 1 ? (int)EMPConstants.FeesFor.SVBFees : (int)EMPConstants.FeesFor.TransmissionFees;
             SubSiteBankFeeConfigDTOList.Add(SubSiteBankFeeConfig);
         }
         return(SubSiteBankFeeConfigDTOList);
     }
     catch (Exception ex)
     {
         EMPPortal.Core.Utilities.ExceptionLogger.LogException(ex.ToString(), "CustomerPaymentOptionsService/BankFee", Id);
         return(new List <SubSiteBankFeeConfigDTO>());
     }
 }
        /// <summary>
        /// This Method is used to Get the Sub Site Bank Fee Configuration details by ID
        /// </summary>
        /// <param name="userid"></param>
        /// <returns></returns>
        public IQueryable <SubSiteBankFeeConfigDTO> GetSubSiteBankFeeById(Guid userid)
        {
            try
            {
                db = new DatabaseEntities();
                var data = (from cu in db.SubSiteBankFeesConfigs where cu.emp_CustomerInformation_ID == userid select cu).ToList();

                List <SubSiteBankFeeConfigDTO> lstsbsubsiteBankFee = new List <SubSiteBankFeeConfigDTO>();

                foreach (var itm in data)
                {
                    SubSiteBankFeeConfigDTO subsiteBFDTO = new SubSiteBankFeeConfigDTO();
                    subsiteBFDTO.RefId  = itm.emp_CustomerInformation_ID.ToString();
                    subsiteBFDTO.BankID = itm.BankMaster_ID.ToString();
                    subsiteBFDTO.ServiceorTransmitter = itm.ServiceOrTransmitter ?? 0;
                    subsiteBFDTO.AmountDSK            = itm.BankMaxFees;
                    subsiteBFDTO.AmountMSO            = itm.BankMaxFees_MSO ?? 0;
                    subsiteBFDTO.QuestionID           = itm.QuestionID.ToString();
                    lstsbsubsiteBankFee.Add(subsiteBFDTO);
                }
                return(lstsbsubsiteBankFee.AsQueryable());
            }
            catch (Exception ex)
            {
                EMPPortal.Core.Utilities.ExceptionLogger.LogException(ex.ToString(), "CustomerPaymentOptionsService/GetSubSiteBankFeeById", userid);
                return(null);
            }
        }
        public IQueryable <SubSiteBankFeeConfigDTO> SubSiteOfficeBankFee(Guid UserId)
        {
            try
            {
                DropDownService           ddService           = new DropDownService();
                List <EntityHierarchyDTO> EntityHierarchyDTOs = new List <EntityHierarchyDTO>();
                EntityHierarchyDTOs = ddService.GetEntityHierarchies(UserId);

                Guid ParentId          = Guid.Empty;
                Guid FeeSourceParentId = Guid.Empty;

                if (EntityHierarchyDTOs.Count > 0)
                {
                    var TopFromHierarchy = EntityHierarchyDTOs.OrderByDescending(o => o.Customer_Level).FirstOrDefault();
                    ParentId = TopFromHierarchy.CustomerId ?? Guid.Empty;
                }

                db = new DatabaseEntities();
                List <int> FeeFor = new List <int>();
                FeeFor.Add((int)EMPConstants.FeesFor.SVBFees);
                FeeFor.Add((int)EMPConstants.FeesFor.TransmissionFees);
                List <SubSiteBankFeeConfigDTO> ListDTO = new List <SubSiteBankFeeConfigDTO>();

                if (EntityHierarchyDTOs.Count <= 1)
                {
                    var data = (from fee in db.FeeMasters
                                                                        //join cust in db.CustomerAssociatedFees on fee.Id equals cust.FeeMaster_ID
                                where FeeFor.Contains(fee.FeesFor ?? 0) //&& cust.emp_CustomerInformation_ID == ParentId
                                select new { fee.FeesFor, fee.Amount }).ToList();

                    var dataa = (from s in data
                                 group s by s.FeesFor into g
                                 select new
                    {
                        feesfor = g.Key,
                        Amount = g.Sum(x => x.Amount)
                    }).ToList();



                    foreach (var itm in dataa.ToList())
                    {
                        SubSiteBankFeeConfigDTO SubSiteBankFeeConfig = new SubSiteBankFeeConfigDTO();
                        SubSiteBankFeeConfig.ServiceorTransmitter = itm.feesfor ?? 0;
                        SubSiteBankFeeConfig.AmountDSK            = itm.Amount ?? 0;
                        ListDTO.Add(SubSiteBankFeeConfig);
                    }
                }
                else
                {
                    var data = (from fee in db.FeeMasters
                                join cust in db.CustomerAssociatedFees on fee.Id equals cust.FeeMaster_ID
                                where FeeFor.Contains(fee.FeesFor ?? 0) && cust.emp_CustomerInformation_ID == ParentId
                                select new { fee.FeesFor, cust.Amount }).ToList();

                    var dataa = (from s in data
                                 group s by s.FeesFor into g
                                 select new
                    {
                        feesfor = g.Key,
                        Amount = g.Sum(x => x.Amount)
                    }).ToList();



                    foreach (var itm in dataa.ToList())
                    {
                        SubSiteBankFeeConfigDTO SubSiteBankFeeConfig = new SubSiteBankFeeConfigDTO();
                        SubSiteBankFeeConfig.ServiceorTransmitter = itm.feesfor ?? 0;
                        SubSiteBankFeeConfig.AmountDSK            = itm.Amount;
                        ListDTO.Add(SubSiteBankFeeConfig);
                    }
                }

                return(ListDTO.AsQueryable());
            }
            catch (Exception ex)
            {
                EMPPortal.Core.Utilities.ExceptionLogger.LogException(ex.ToString(), "CustomerPaymentOptionsService/SubSiteOfficeBankFee", UserId);
                return(null);
            }
        }