public override List <DTO.PriceListDTO> GetDataWithFilter(Hashtable filters, int pageSize, int pageIndex, string orderBy, string orderDirection, out int totalRows, out Library.DTO.Notification notification)
        {
            List <DTO.PriceListDTO> data = new List <DTO.PriceListDTO>();

            notification = new Library.DTO.Notification()
            {
                Type = Library.DTO.NotificationType.Success
            };
            totalRows = 0;

            string articleCode = string.Empty;
            string description = string.Empty;

            if (filters.ContainsKey("articleCode"))
            {
                articleCode = filters["articleCode"].ToString();
            }
            if (filters.ContainsKey("description"))
            {
                description = filters["description"].ToString();
            }

            try
            {
                using (PriceListEntities context = CreateContext())
                {
                    totalRows = context.PriceListMng_function_SearchPriceList(orderBy, orderDirection, articleCode, description).Count();
                    var result = context.PriceListMng_function_SearchPriceList(orderBy, orderDirection, articleCode, description);
                    data = converter.DB2DTO_PriceListSearch(result.Skip(pageSize * (pageIndex - 1)).Take(pageSize).ToList());
                }
                return(data);
            }
            catch (Exception ex)
            {
                notification.Type    = Library.DTO.NotificationType.Error;
                notification.Message = ex.Message;
                notification.DetailMessage.Add(ex.Message);
                if (ex.GetBaseException() != null)
                {
                    notification.DetailMessage.Add(ex.GetBaseException().Message);
                }
                return(new List <DTO.PriceListDTO>());
            }
        }