public ServicesResponse <IEnumerable <InvoiceHeaderReponseModel> > GetAllDataByFilterV1(InvoiceHeaderRequestModel request)
        {
            try
            {
                StringBuilder query;
                var           parms = new DynamicParameters();
                if (request.InvoiceNo.IsNullOrEmpty() && request.CustomerNo.IsNullOrEmpty() && request.StartDate.IsNullOrEmpty() && request.EndDate.IsNullOrEmpty())
                {
                    query = GetSelectQuery();
                }
                else
                {
                    query = GetWhereQuery(ref parms, request.InvoiceNo, request.CustomerNo, request.StartDate, request.EndDate);
                }

                var returnData = dbFacorty.GetData <InvoiceHeaderReponseModel>(query, parms);
                if (returnData == null && returnData.Count() <= 0)
                {
                    return(GlobalHelper.CreateServicesErrorResponse <IEnumerable <InvoiceHeaderReponseModel> >(ExceptionMessageHelper.DataNotFound, ErrorTypeEnum.WarningException));
                }

                return(GlobalHelper.CreateServicesResponse(returnData));
            }
            catch (FattalDbException ex)
            {
                return(GlobalHelper.CreateServicesErrorResponse <IEnumerable <InvoiceHeaderReponseModel> >(ex.ExceptionMessageProp));
            }
            catch (KnownException ex)
            {
                return(GlobalHelper.CreateServicesErrorResponse <IEnumerable <InvoiceHeaderReponseModel> >(ex.ExceptionMessageProp));
            }
            catch (Exception ex)
            {
                return(GlobalHelper.CreateServicesErrorResponse <IEnumerable <InvoiceHeaderReponseModel> >());
            }
        }
        public ServicesResponse <IEnumerable <InvoiceHeaderReponseModel> > GetAllDataByFilterV2(InvoiceHeaderRequestModel requestModel)
        {
            var methodName = MethodBase.GetCurrentMethod().GetMethodName();

            try
            {
                var invoiceHeaders = connectionFactory.CreateConnection().GetAll <InvoiceHeaderEntity>().AsQueryable();
                var customers      = customerInfoManager.GetAllDataByFilter(null, requestModel.CustomerNo).ResultData;
                var users          = usersInfoManager.GetAllData().ResultData;

                #region Filter Condition
                var predicate = PredicateBuilderHelper.True <InvoiceHeaderEntity>();
                if (!requestModel.InvoiceNo.IsNullOrLessOrEqToZero())
                {
                    predicate = predicate.Or(q => q.InvoiceNo == requestModel.InvoiceNo);
                }

                if (!requestModel.CustomerNo.IsNullOrLessOrEqToZero())
                {
                    var cus = customers.FirstOrDefault(q => q.CustomerNo == requestModel.CustomerNo);
                    if (cus != null)
                    {
                        predicate = predicate.Or(q => q.CustomerId == cus.Id);
                    }
                }
                if (requestModel.StartDate.HasValue && requestModel.EndDate.HasValue)
                {
                    predicate = predicate.Or(q => q.CreatedDate >= requestModel.StartDate.Value && q.CreatedDate <= requestModel.EndDate.Value);
                }
                #endregion

                var result = invoiceHeaders.Where(predicate).Select(q => new InvoiceHeaderReponseModel
                {
                    Currency    = q.Currency,
                    Address     = customers.FirstOrDefault(p => p.Id == q.Id).CutomerCity,
                    CustomerNo  = customers.FirstOrDefault(p => p.Id == q.Id).CustomerNo,
                    GrandTotal  = q.GrandTotal,
                    InvoiceNo   = q.InvoiceNo,
                    CreatedDate = q.CreatedDate,
                    CreatedBy   = users.FirstOrDefault(p => p.Id == q.CreatedUser).UserNo
                }).AsEnumerable();

                return(GlobalHelper.CreateServicesResponse(result));
            }
            catch (FattalDbException ex)
            {
                logger.AddErrorLog(LogTypeEnum.Error, methodName, null, ex.ExceptionMessageProp, ex);
                return(GlobalHelper.CreateServicesErrorResponse <IEnumerable <InvoiceHeaderReponseModel> >(ex.ExceptionMessageProp, ex.ErrorTypeProp));
            }
            catch (KnownException ex)
            {
                return(GlobalHelper.CreateServicesErrorResponse <IEnumerable <InvoiceHeaderReponseModel> >(ex.ExceptionMessageProp, ex.ErrorTypeProp));
            }
            catch (Exception ex)
            {
                logger.AddErrorLog(LogTypeEnum.Error, methodName, null, ex.Message, ex);
                return(GlobalHelper.CreateServicesErrorResponse <IEnumerable <InvoiceHeaderReponseModel> >());
            }
        }