/// <summary>
        /// Delete Dynamic Parent Items Status by pageId and roleId
        /// </summary>
        /// <param name="pageId">Int32:pageId</param>
        /// <param name="roleId">Int32:roleId</param>
        public void DeleteDynamicParentItemsStatus(int pageId, int roleId)
        {
            PageInfoDTO page = GetPageDetailsByPageId(pageId);

            if (pageId != 0)
            {
                List<PageInfoDTO> lstPageInfoDTO = new List<PageInfoDTO>();
                List<PagesInRoleDTO> lstPageInRole = new List<PagesInRoleDTO>();

                AutoMapper.Mapper.Map(ESalesUnityContainer.Container.Resolve<IGenericRepository<pagesinrole>>().GetQuery().Where(item => item.Page_Role_IsActive == true
                   && item.Page_Role_IsDeleted == false && item.Page_Role_RoleId == roleId && item.Page_Role_PageId != pageId), lstPageInRole);

                List<pageinfo> lstPageInfoEntity = ESalesUnityContainer.Container.Resolve<IGenericRepository<pageinfo>>().GetQuery()
                     .Where(item => item.Page_ParentPageLevelId == page.Page_ParentPageLevelId && item.Page_IsActive == true && item.Page_IsDeleted == false)
                     .OrderBy(item => item.Page_Level).ToList();
                AutoMapper.Mapper.Map(lstPageInfoEntity, lstPageInfoDTO);


                List<pageinfo> result = new List<pageinfo>();
                result = (from pg in lstPageInfoEntity
                          where (from role in lstPageInRole select role.Page_Role_PageId).Contains(pg.Page_Id)
                          select pg).ToList();

                if (result.Count == 0)
                {
                    PagesInRoleDTO pageRoleDetails = GetPageDetailsByParentPageIdNRoleId(page.Page_ParentPageLevelId, roleId);
                    pageRoleDetails.Page_Role_IsDeleted = true;
                    pageRoleDetails.Page_Role_LastUpdatedDate = DateTime.Now;
                    pagesinrole pageInRoleEntity = new pagesinrole();
                    AutoMapper.Mapper.Map(pageRoleDetails, pageInRoleEntity);
                    ESalesUnityContainer.Container.Resolve<IGenericRepository<pagesinrole>>().Update(pageInRoleEntity);
                    DeleteDynamicParentItemsStatus(page.Page_ParentPageLevelId, roleId);
                }

            }
        }
        /// <summary>
        /// Delete Pages From Role by pageRoleId and loggedInUserId
        /// </summary>
        /// <param name="pageRoleId">int32:pageRoleId</param>
        /// <param name="loggedInUserId">int32:loggedInUserId</param>
        public void DeletePagesFromRole(int pageRoleId, int loggedInUserId)
        {
            PagesInRoleDTO pageRoleDTO = GetPageRoleDetailsByPageRoleId(pageRoleId);
            pageRoleDTO.Page_Role_IsDeleted = true;
            pageRoleDTO.Page_Role_CreatedBy = loggedInUserId;
            pageRoleDTO.Page_Role_CreatedDate = DateTime.Now;

            pagesinrole pageRoleEntity = new pagesinrole();
            AutoMapper.Mapper.Map(pageRoleDTO, pageRoleEntity);

            ESalesUnityContainer.Container.Resolve<IGenericRepository<pagesinrole>>().Update(pageRoleEntity);
            DeleteDynamicParentItemsStatus(pageRoleDTO.Page_Role_PageId, pageRoleDTO.Page_Role_RoleId);
        }
        /// <summary>
        /// Add Dynamic Parent Items by pageId,roleId and isActive
        /// </summary>
        /// <param name="pageId">Int32:pageId</param>
        /// <param name="roleId">Int32:roleId</param>
        /// <param name="isActive">Bool:isActive</param>
        private void AddDynamicParentItems(int pageId, int roleId,bool isActive)
        {
            PageInfoDTO page = GetPageDetailsByPageId(pageId);

            if (page.Page_ParentPageLevelId > 0)
            {
                PagesInRoleDTO pageRoleDetails = GetPageDetailsByParentPageIdNRoleId(page.Page_ParentPageLevelId, roleId);
                PagesInRoleDTO parentPagesDetails = new PagesInRoleDTO();
                pagesinrole parentPagesEntity = new pagesinrole();
                parentPagesDetails.Page_Role_PageId = page.Page_ParentPageLevelId;
                parentPagesDetails.Page_Role_IsActive = isActive;
                parentPagesDetails.Page_Role_RoleId = roleId;
                parentPagesDetails.Page_Role_CreatedDate = DateTime.Now;

                AutoMapper.Mapper.Map(parentPagesDetails, parentPagesEntity);
                if (pageRoleDetails.Page_Role_PageId == 0)
                {                    
                    ESalesUnityContainer.Container.Resolve<IGenericRepository<pagesinrole>>().Save(parentPagesEntity);
                }

                AddDynamicParentItems(page.Page_ParentPageLevelId, roleId,page.Page_IsActive);
                UpdateDynamicParentItemsStatus(pageId, roleId, isActive);
            }
        }
        /// <summary>
        /// Update Page Status by pageId,loggedInUserId,roleId and isPageActive
        /// </summary>
        /// <param name="pageId">Int32:pageId</param>
        /// <param name="loggedInUserId">int32:loggedInUserId</param>
        /// <param name="roleId">int32:roleId</param>
        /// <param name="isPageActive">bool:isPageActive</param>
        public void UpdatePageStatus(int pageId, int loggedInUserId, int roleId, bool isPageActive)
        {
            PagesInRoleDTO pageInRoleDetails = GetPageDetailsByParentPageIdNRoleId(pageId, roleId);
            pageInRoleDetails.Page_Role_IsActive = isPageActive;
            pageInRoleDetails.Page_Role_CreatedBy = loggedInUserId;
            pageInRoleDetails.Page_Role_CreatedDate= DateTime.Now;

            pagesinrole pageInRoleEntity = new pagesinrole();
            AutoMapper.Mapper.Map(pageInRoleDetails, pageInRoleEntity);

            ESalesUnityContainer.Container.Resolve<IGenericRepository<pagesinrole>>().Update(pageInRoleEntity);
            UpdateDynamicParentItemsStatus (pageId, roleId, isPageActive);
        }
        /// <summary>
        /// Add Pages To Roles
        /// </summary>
        /// <param name="pagesInRolesDetails"></param>
        public void AddPagesToRoles(PagesInRoleDTO pagesInRolesDetails)
        {
            using (TransactionScope transactionScope = new TransactionScope())
            {
                pagesinrole pagesInRoleEntity = new pagesinrole();
                AutoMapper.Mapper.Map(pagesInRolesDetails, pagesInRoleEntity);
                ESalesUnityContainer.Container.Resolve<IGenericRepository<pagesinrole>>().Save(pagesInRoleEntity);

                AddDynamicParentItems(pagesInRolesDetails.Page_Role_PageId, pagesInRolesDetails.Page_Role_RoleId, pagesInRolesDetails.Page_Role_IsActive);

                transactionScope.Complete();
            }
        }