/*
         * [HttpGet]
         * public ActionResult GetFormas_de_PagoAll()
         * {
         * try
         * {
         * if (!_tokenManager.GenerateToken())
         *  return Json(null, JsonRequestBehavior.AllowGet);
         * _IFormas_de_PagoApiConsumer.SetAuthHeader(_tokenManager.Token);
         * var result = _IFormas_de_PagoApiConsumer.SelAll(false).Resource;
         *
         * return Json(result.OrderBy(m => m.).Select(m => new SelectListItem
         * {
         *   Text = CultureHelper.GetTraductionNew(Convert.ToString(m.Clave), "Formas_de_Pago", m.),
         *   Value = Convert.ToString(m.Clave)
         * }).ToArray(), JsonRequestBehavior.AllowGet);
         * }
         * catch (ServiceException ex)
         * {
         * return Json(null, JsonRequestBehavior.AllowGet);
         * }
         * }
         */
        /// <summary>
        /// Get List of Formas_de_Pago from Web API.
        /// </summary>
        /// <param name="draw"></param>
        /// <param name="start"></param>
        /// <param name="length"></param>
        /// <returns>Return List of Formas_de_Pago Entity</returns>
        public ActionResult GetFormas_de_PagoList(UrlParametersModel param)
        {
            int sEcho          = param.sEcho;
            int iDisplayStart  = param.iDisplayStart;
            int iDisplayLength = param.iDisplayLength;

            string where = param.where;
            string order = param.order;

            where = HttpUtility.UrlEncode(where);
            int    sortColumn    = -1;
            string sortDirection = "asc";

            if (iDisplayLength == -1)
            {
                //length = TOTAL_ROWS;
                iDisplayLength = Int32.MaxValue;
            }
            // note: we only sort one column at a time
            if (param.sortColumn != null)
            {
                sortColumn = int.Parse(param.sortColumn);
            }
            if (param.sortDirection != null)
            {
                sortDirection = param.sortDirection;
            }


            if (!_tokenManager.GenerateToken())
            {
                return(null);
            }
            _IFormas_de_PagoApiConsumer.SetAuthHeader(_tokenManager.Token);


            NameValueCollection filter = HttpUtility.ParseQueryString(param.filters);

            var configuration = new GridConfiguration()
            {
                OrderByClause = "", WhereClause = ""
            };

            if (filter != null)
            {
                configuration = GridQueryHelper.GetDataTableConfigurationNew(param, new Formas_de_PagoPropertyMapper());
            }

            if (!String.IsNullOrEmpty(where))
            {
                configuration.WhereClause = configuration.WhereClause == "" ? where : "(" + configuration.WhereClause + " AND " + where + ")";
            }
            if (!String.IsNullOrEmpty(order))
            {
                configuration.OrderByClause = order;
            }
            //Adding Advance Search
            if (param.AdvanceSearch != null && param.AdvanceSearch == true && Session["AdvanceSearch"] != null)
            {
                if (Session["AdvanceSearch"].GetType() == typeof(Formas_de_PagoAdvanceSearchModel))
                {
                    var advanceFilter =
                        (Formas_de_PagoAdvanceSearchModel)Session["AdvanceSearch"];
                    configuration.WhereClause = configuration.WhereClause == "" ? GetAdvanceFilter(advanceFilter) : configuration.WhereClause + " AND " + GetAdvanceFilter(advanceFilter);
                }
                else
                {
                    Session.Remove("AdvanceSearch");
                }
            }

            Formas_de_PagoPropertyMapper oFormas_de_PagoPropertyMapper = new Formas_de_PagoPropertyMapper();

            if (String.IsNullOrEmpty(order))
            {
                if (sortColumn != -1)
                {
                    configuration.OrderByClause = oFormas_de_PagoPropertyMapper.GetPropertyName(param.columns[sortColumn].name) + " " + sortDirection;
                }
            }

            var pageSize  = iDisplayLength;
            var pageIndex = (iDisplayStart / iDisplayLength) + 1;
            var result    = _IFormas_de_PagoApiConsumer.ListaSelAll((pageIndex * pageSize) - pageSize + 1, pageSize + ((pageIndex * pageSize) - pageSize), configuration.WhereClause, configuration.OrderByClause ?? "").Resource;

            if (result.Formas_de_Pagos == null)
            {
                result.Formas_de_Pagos = new List <Formas_de_Pago>();
            }

            return(Json(new
            {
                aaData = result.Formas_de_Pagos.Select(m => new Formas_de_PagoGridModel
                {
                    Clave = m.Clave
                    , Nombre = m.Nombre
                }).ToList(),
                iTotalRecords = result.RowCount,
                iTotalDisplayRecords = result.RowCount,
                sEcho = sEcho
            }, JsonRequestBehavior.AllowGet));
        }
        public void Export(string format, int pageIndex, int pageSize, string iSortCol, string sSortDir, string where, string order, dynamic columnsVisible)
        {
            var exportFormatType = (ExportFormatType)Enum.Parse(
                typeof(ExportFormatType), format, true);

            string[] arrayColumnsVisible = ((string[])columnsVisible)[0].ToString().Split(',');

            where = HttpUtility.UrlEncode(where);
            if (!_tokenManager.GenerateToken())
            {
                return;
            }

            _IFormas_de_PagoApiConsumer.SetAuthHeader(_tokenManager.Token);

            NameValueCollection filter = Request.QueryString;
            var configuration          = new GridConfiguration()
            {
                OrderByClause = "", WhereClause = ""
            };

            if (filter != null)
            {
                configuration = GridQueryHelper.GetDataTableConfiguration(filter, new Formas_de_PagoPropertyMapper());
            }

            if (!String.IsNullOrEmpty(where))
            {
                configuration.WhereClause = configuration.WhereClause == "" ? where : "(" + configuration.WhereClause + " AND " + where + ")";
            }
            if (!String.IsNullOrEmpty(order))
            {
                configuration.OrderByClause = order;
            }
            //Adding Advance Search
            if (Session["AdvanceSearch"] != null && pageSize != 0)
            {
                var advanceFilter =
                    (Formas_de_PagoAdvanceSearchModel)Session["AdvanceSearch"];
                configuration.WhereClause = configuration.WhereClause == "" ? GetAdvanceFilter(advanceFilter) : configuration.WhereClause + " AND " + GetAdvanceFilter(advanceFilter);
            }
            string sortDirection = "asc";

            Formas_de_PagoPropertyMapper oFormas_de_PagoPropertyMapper = new Formas_de_PagoPropertyMapper();

            if (Request.QueryString["sSortDir"] != null)
            {
                sortDirection = Request.QueryString["sSortDir"];
            }
            configuration.OrderByClause = oFormas_de_PagoPropertyMapper.GetPropertyName(iSortCol) + " " + sortDirection;
            pageSize = pageSize == 0 ? int.MaxValue : pageSize;

            var result = _IFormas_de_PagoApiConsumer.ListaSelAll((pageIndex * pageSize) - pageSize + 1, pageSize + ((pageIndex * pageSize) - pageSize), configuration.WhereClause, configuration.OrderByClause ?? "").Resource;

            if (result.Formas_de_Pagos == null)
            {
                result.Formas_de_Pagos = new List <Formas_de_Pago>();
            }

            var data = result.Formas_de_Pagos.Select(m => new Formas_de_PagoGridModel
            {
                Clave    = m.Clave
                , Nombre = m.Nombre
            }).ToList();

            switch (exportFormatType)
            {
            case ExportFormatType.PDF:
                PdfConverter.ExportToPdf(data.ToDataTable(44402, arrayColumnsVisible), "Formas_de_PagoList_" + DateTime.Now.ToString());
                break;

            case ExportFormatType.EXCEL:
                ExcelConverter.ExportToExcel(data.ToDataTable(44402, arrayColumnsVisible), "Formas_de_PagoList_" + DateTime.Now.ToString());
                break;

            case ExportFormatType.CSV:
                CsvConverter.ExportToCSV(data.ToDataTable(44402, arrayColumnsVisible), "Formas_de_PagoList_" + DateTime.Now.ToString());
                break;
            }
        }
        //[ObjectAuth(ObjectId = ModuleObjectId.EMPLEADOS_OBJECT, PermissionType = PermissionTypes.Export)]
        public ActionResult Print(string format, int pageIndex, int pageSize, string iSortCol, string sSortDir, string where, string order)
        {
            var exportFormatType = (ExportFormatType)Enum.Parse(
                typeof(ExportFormatType), format, true);

            where = HttpUtility.UrlEncode(where);

            if (!_tokenManager.GenerateToken())
            {
                return(null);
            }

            _IFormas_de_PagoApiConsumer.SetAuthHeader(_tokenManager.Token);

            NameValueCollection filter = Request.QueryString;

            var configuration = new GridConfiguration()
            {
                OrderByClause = "", WhereClause = ""
            };

            if (filter != null)
            {
                configuration = GridQueryHelper.GetDataTableConfiguration(filter, new Formas_de_PagoPropertyMapper());
            }


            if (!String.IsNullOrEmpty(where))
            {
                configuration.WhereClause = configuration.WhereClause == "" ? where : "(" + configuration.WhereClause + " AND " + where + ")";
            }
            if (Session["AdvanceSearch"] != null && pageSize != 0)
            {
                var advanceFilter =
                    (Formas_de_PagoAdvanceSearchModel)Session["AdvanceSearch"];
                configuration.WhereClause = configuration.WhereClause == "" ? GetAdvanceFilter(advanceFilter) : configuration.WhereClause + " AND " + GetAdvanceFilter(advanceFilter);
            }

            string sortDirection = "asc";

            Formas_de_PagoPropertyMapper oFormas_de_PagoPropertyMapper = new Formas_de_PagoPropertyMapper();

            if (Request.QueryString["sSortDir"] != null)
            {
                sortDirection = Request.QueryString["sSortDir"];
            }
            configuration.OrderByClause = oFormas_de_PagoPropertyMapper.GetPropertyName(iSortCol) + " " + sortDirection;

            if (!String.IsNullOrEmpty(order))
            {
                configuration.OrderByClause = order;
            }
            pageSize = pageSize == 0 ? int.MaxValue : pageSize;

            var result = _IFormas_de_PagoApiConsumer.ListaSelAll((pageIndex * pageSize) - pageSize + 1, pageSize + ((pageIndex * pageSize) - pageSize), configuration.WhereClause, configuration.OrderByClause ?? "").Resource;

            if (result.Formas_de_Pagos == null)
            {
                result.Formas_de_Pagos = new List <Formas_de_Pago>();
            }

            var data = result.Formas_de_Pagos.Select(m => new Formas_de_PagoGridModel
            {
                Clave    = m.Clave
                , Nombre = m.Nombre
            }).ToList();

            return(PartialView("_Print", data));
        }