public IHttpActionResult GetRegistroControlPorConciliar([FromUri] PagingRegistroControlModel pagingparametermodel) { var catalagoServ = new CatalogoService(); var estatusList = catalagoServ.GetAll(c => c.CA_TABLA == "sax_estatus_carga", null, c => c.SAX_CATALOGO_DETALLE).FirstOrDefault(); var ltsTipoOperacion = catalagoServ.GetAll(c => c.CA_TABLA == "sax_tipo_operacion", null, c => c.SAX_CATALOGO_DETALLE).FirstOrDefault(); int porConciliar = Convert.ToInt16(BusinessEnumerations.EstatusCarga.POR_APROBAR); int manual = Convert.ToInt16(BusinessEnumerations.EstatusCarga.MANUAL); int activo = Convert.ToInt16(BusinessEnumerations.Estatus.ACTIVO); var userId = User.Identity.GetUserId(); //Extraer areas operativas del usuario List <int> listUserArea = usuarioAreaService.Query(d => d.US_ID_USUARIO == userId).Select(y => y.CA_ID_AREA).ToList(); List <AreaOperativaModel> listArea = areaOperativaService.GetAll().ToList(); List <int> listAreaUsuario = listArea.Where(x => listUserArea.Contains(x.CA_ID_AREA)).Select(a => a.CA_ID_AREA).ToList(); //Extraer empresas del usuario List <int> list_CE_ID_EMPRESA = usuarioEmpService.Query(x => x.US_ID_USUARIO == userId).Select(y => y.CE_ID_EMPRESA).ToList(); if (list_CE_ID_EMPRESA != null && list_CE_ID_EMPRESA.Count() == 0) { return(BadRequest("El usuario actualmente no tiene empresas asignadas. Es necesario tener por lo menos una empresa asignada para poder aprobar el registro.")); } List <string> empresas = empresaService.Query(x => list_CE_ID_EMPRESA.Contains(x.CE_ID_EMPRESA) && x.CE_ESTATUS == activo.ToString()).Select(y => y.CE_COD_EMPRESA).ToList(); if (empresas != null && empresas.Count() == 0) { return(BadRequest("No se encontraron empresas para su usuario.")); } var source = service.Query(c => c.TC_ESTATUS == porConciliar && (pagingparametermodel.lote == null ? c.TC_COD_COMPROBANTE == c.TC_COD_COMPROBANTE : c.TC_COD_COMPROBANTE == (pagingparametermodel.lote.Trim())) && (pagingparametermodel.idCapturador == null ? c.TC_USUARIO_CREACION == c.TC_USUARIO_CREACION : c.TC_USUARIO_CREACION == pagingparametermodel.idCapturador)).OrderBy(c => c.TC_ID_COMPROBANTE); if (source.Count() > 0) { source = source.Where(c => listAreaUsuario.Contains(c.CA_ID_AREA)).OrderBy(c => c.TC_ID_COMPROBANTE); } if (source.Count() > 0) { source = source.Where(x => (x.SAX_COMPROBANTE_DETALLE.Where(z => empresas.Contains(z.SAX_PARTIDAS.PA_COD_EMPRESA)).Count() > 0)).OrderBy(c => c.TC_ID_COMPROBANTE); // var partidas= comprobanteDetalle.Select(c=>c.) //var partEmpresa= partidas.Where(x=>empresas.Contains(x.Select(y=>y.PA_COD_EMPRESA))) } int count = source.Count(); int CurrentPage = pagingparametermodel.pageNumber; int PageSize = pagingparametermodel.pageSize; int TotalCount = count; int TotalPages = (int)Math.Ceiling(count / (double)PageSize); var items = source.Skip((CurrentPage - 1) * PageSize).Take(PageSize).ToList(); var previousPage = CurrentPage > 1 ? "Yes" : "No"; var nextPage = CurrentPage < TotalPages ? "Yes" : "No"; var listItem = items.Select(x => new { RC_REGISTRO_CONTROL = x.TC_ID_COMPROBANTE, RC_COD_OPERACION = GetNameTipoOperacion(x.TC_COD_OPERACION, ref ltsTipoOperacion), RC_COD_PARTIDA = x.TC_COD_COMPROBANTE, RC_ARCHIVO = string.Empty, RC_TOTAL_REGISTRO = x.TC_TOTAL_REGISTRO, RC_TOTAL_DEBITO = x.TC_TOTAL_DEBITO, RC_TOTAL_CREDITO = x.TC_TOTAL_CREDITO, RC_TOTAL = x.TC_TOTAL, COD_ESTATUS_LOTE = x.TC_ESTATUS, RC_ESTATUS_LOTE = GetStatusRegistroControl(x.TC_ESTATUS, estatusList), RC_FECHA_CREACION = x.TC_FECHA_CREACION != null ? x.TC_FECHA_CREACION.ToString("M/d/yyyy") : string.Empty, RC_HORA_CREACION = x.TC_FECHA_CREACION != null ? x.TC_FECHA_CREACION.ToString("hh:mm:tt") : string.Empty, RC_COD_USUARIO = UserName(x.TC_USUARIO_CREACION), SELETED = false }); var paginationMetadata = new { totalCount = TotalCount, pageSize = PageSize, currentPage = CurrentPage, totalPages = TotalPages, previousPage, nextPage, data = listItem }; return(Ok(paginationMetadata)); }