//Metodos
        public IHttpActionResult Get([FromUri] AprobacionParametrosModel model)
        {
            var estatusList = catalogoService.GetAll(c => c.CA_TABLA == "sax_frecuencia", null, c => c.SAX_CATALOGO_DETALLE);


            if (model == null)
            {
                model = new AprobacionParametrosModel();
                model.FechaCreacion   = null;
                model.UsuarioCreacion = null;
            }
            int      yyyy = 0;
            int      mm   = 0;
            int      dd   = 0;
            DateTime dt   = DateTime.Today;

            if (model.FechaCreacion != null)
            {
                mm   = Convert.ToInt32(model.FechaCreacion.ToString().Substring(0, 2));
                dd   = Convert.ToInt32(model.FechaCreacion.ToString().Substring(3, 2));
                yyyy = Convert.ToInt32(model.FechaCreacion.ToString().Substring(6, 4));
                dt   = new DateTime(yyyy, mm, dd);
                dt   = dt.AddDays(1);
            }

            var objParamService = paramService.GetAll(c =>
                                                      c.PA_FECHA_CREACION >= (model.FechaCreacion == null ? c.PA_FECHA_CREACION : model.FechaCreacion) &&
                                                      c.PA_FECHA_CREACION <= (model.FechaCreacion == null ? c.PA_FECHA_CREACION : dt) &&
                                                      c.PA_USUARIO_CREACION == (model.UsuarioCreacion == null ? c.PA_USUARIO_CREACION : model.UsuarioCreacion), null, includes: c => c.AspNetUsers);

            if (objParamService == null)
            {
                return(BadRequest("No se encontraron registros para la consulta realizada."));
            }
            return(Ok(objParamService.Select(c => new
            {
                PA_ID_PARAMETRO = c.PA_ID_PARAMETRO,
                PA_FECHA_PROCESO = c.PA_FECHA_PROCESO,
                PA_FRECUENCIA = c.PA_FRECUENCIA,
                PA_FRECUENCIA_DESC = c.PA_FRECUENCIA != 0 ? estatusList.FirstOrDefault().SAX_CATALOGO_DETALLE.FirstOrDefault(k => k.CD_ID_CATALOGO_DETALLE == c.PA_FRECUENCIA).CD_VALOR : null,
                PA_HORA_EJECUCION = c.PA_HORA_EJECUCION,
                PA_RUTA_CONTABLE = c.PA_RUTA_CONTABLE,
                PA_RUTA_TEMPORAL = c.PA_RUTA_TEMPORAL,
                PA_FRECUENCIA_LIMPIEZA = c.PA_FRECUENCIA_LIMPIEZA,
                PA_FRECUENCIA_LIMPIEZA_DESC = c.PA_FRECUENCIA_LIMPIEZA != 0 ? estatusList.FirstOrDefault().SAX_CATALOGO_DETALLE.FirstOrDefault(k => k.CD_ID_CATALOGO_DETALLE == c.PA_FRECUENCIA_LIMPIEZA).CD_VALOR : null,
                PA_ESTATUS = c.PA_ESTATUS,
                PA_FECHA_CREACION = c.PA_FECHA_CREACION,
                PA_USUARIO_CREACION = c.PA_USUARIO_CREACION,
                PA_USUARIO_CREACION_NOMBRE = c.AspNetUsers.FirstName,
                PA_FECHA_MOD = c.PA_FECHA_MOD,
                PA_USUARIO_MOD = c.PA_USUARIO_MOD,
                PA_USUARIO_MOD_NOMBRE = c.AspNetUsers2 != null ? c.AspNetUsers2.FirstName : null,
                PA_FECHA_APROBACION = c.PA_FECHA_APROBACION,
                PA_USUARIO_APROBADOR = c.PA_USUARIO_APROBADOR,
                PA_CUENTA_LIMPIEZA = c.PA_CUENTA_LIMPIEZA,
                PA_CENTRO_COSTO_LIMPIEZA = c.PA_CENTRO_COSTO_LIMPIEZA,
                PA_USUARIO_APROBADOR_NOMBRE = c.AspNetUsers1 != null ? c.AspNetUsers1.FirstName : null
            })));
        }
        public IHttpActionResult GetTemp([FromUri] AprobacionParametrosModel model)
        {
            var estatusList = catalogoService.GetAll(c => c.CA_TABLA == "sax_frecuencia", null, c => c.SAX_CATALOGO_DETALLE);

            if (model == null)
            {
                model = new AprobacionParametrosModel();
                model.FechaCreacion   = null;
                model.UsuarioCreacion = null;
            }


            var objParametroTempService = paramTempService.GetAll(c => c.PA_ESTATUS == 2 &&
                                                                  c.PA_FECHA_CREACION == (model.FechaCreacion == null ? c.PA_FECHA_CREACION : model.FechaCreacion) &&
                                                                  c.PA_USUARIO_CREACION == (model.UsuarioCreacion == null ? c.PA_USUARIO_CREACION : model.UsuarioCreacion), null, includes: c => c.AspNetUsers);

            if (objParametroTempService == null)
            {
                return(NotFound());
            }
            return(Ok(objParametroTempService.Select(c => new
            {
                PA_ID_PARAMETRO = c.PA_ID_PARAMETRO,
                PA_FECHA_PROCESO = c.PA_FECHA_PROCESO,
                PA_FRECUENCIA = c.PA_FRECUENCIA,
                PA_FRECUENCIA_DESC = c.PA_FRECUENCIA != 0 ? estatusList.FirstOrDefault().SAX_CATALOGO_DETALLE.FirstOrDefault(k => k.CD_ID_CATALOGO_DETALLE == c.PA_FRECUENCIA).CD_VALOR : null,
                PA_HORA_EJECUCION = c.PA_HORA_EJECUCION,
                PA_RUTA_CONTABLE = c.PA_RUTA_CONTABLE,
                PA_RUTA_TEMPORAL = c.PA_RUTA_TEMPORAL,
                PA_FRECUENCIA_LIMPIEZA = c.PA_FRECUENCIA_LIMPIEZA,
                PA_FRECUENCIA_LIMPIEZA_DESC = c.PA_FRECUENCIA_LIMPIEZA != 0 ? estatusList.FirstOrDefault().SAX_CATALOGO_DETALLE.FirstOrDefault(k => k.CD_ID_CATALOGO_DETALLE == c.PA_FRECUENCIA_LIMPIEZA).CD_VALOR : null,
                PA_ESTATUS = c.PA_ESTATUS,
                PA_FECHA_CREACION = c.PA_FECHA_CREACION,
                PA_USUARIO_CREACION = c.PA_USUARIO_CREACION,
                PA_USUARIO_CREACION_NOMBRE = c.AspNetUsers.FirstName,
                PA_FECHA_MOD = c.PA_FECHA_MOD,
                PA_USUARIO_MOD = c.PA_USUARIO_MOD,
                PA_USUARIO_MOD_NOMBRE = c.AspNetUsers2 != null ? c.AspNetUsers2.FirstName : null,
                PA_FECHA_APROBACION = c.PA_FECHA_APROBACION,
                PA_USUARIO_APROBADOR = c.PA_USUARIO_APROBADOR,
                PA_USUARIO_APROBADOR_NOMBRE = c.AspNetUsers1 != null ? c.AspNetUsers1.FirstName : null,
                PA_CUENTA_LIMPIEZA = c.PA_CUENTA_LIMPIEZA,
                PA_CENTRO_COSTO_LIMPIEZA = c.PA_CENTRO_COSTO_LIMPIEZA
            })));
        }
        //Metodos
        public async Task <IHttpActionResult> Get([FromUri] AprobacionParametrosModel model)
        {
            if (model == null)
            {
                model = new AprobacionParametrosModel();
                model.FechaCreacion   = null;
                model.UsuarioCreacion = null;
            }

            /*int yyyy = 0;
             * int mm = 0;
             * int dd = 0;
             * DateTime dt = DateTime.Today;
             * if (model.FechaCreacion != null)
             * {
             *  mm = Convert.ToInt32(model.FechaCreacion.ToString().Substring(0, 2));
             *  dd = Convert.ToInt32(model.FechaCreacion.ToString().Substring(3, 2));
             *  yyyy = Convert.ToInt32(model.FechaCreacion.ToString().Substring(6, 4));
             *  dt = new DateTime(yyyy, mm, dd);
             *  dt = dt.AddDays(1);
             * }*/
            IdentityUser user = await UserManager.FindByIdAsync(User.Identity.GetUserId());

            var objUsuarioArea = usuarioEmpresaService.GetAll(c => c.US_ID_USUARIO == user.Id, null, includes: c => c.SAX_EMPRESA);

            string[] listEmpresa = new string[objUsuarioArea.Count()];
            for (int i = 0; i < objUsuarioArea.Count(); i++)
            {
                listEmpresa[i] = objUsuarioArea[i].CE_ID_EMPRESA.ToString();
            }

            IList <SupervisorModel> objSupervisorService = supervisorService.GetAll(
                //c => c.CE_ID_EMPRESA == objUsuarioArea.CE_ID_EMPRESAf
                c => listEmpresa.Contains(c.CE_ID_EMPRESA.ToString()) &&
                c.SV_ESTATUS != 3
                //&& c.SV_FECHA_CREACION >= (model.FechaCreacion == null ? c.SV_FECHA_CREACION : model.FechaCreacion)
                //&& c.SV_FECHA_CREACION <= (model.FechaCreacion == null ? c.SV_FECHA_CREACION : dt)
                && c.SV_FECHA_CREACION == (model.FechaCreacion == null ? c.SV_FECHA_CREACION : model.FechaCreacion) &&
                c.AspNetUsers3.Estatus == 1 &&
                c.SV_USUARIO_CREACION == (model.UsuarioCreacion == null ? c.SV_USUARIO_CREACION : model.UsuarioCreacion), null, includes: c => c.SAX_AREA_OPERATIVA);

            if (objSupervisorService == null)
            {
                return(BadRequest("No se encontraron registros para la consulta realizada."));
            }

            return(Ok(objSupervisorService.Select(c => new
            {
                SV_ID_SUPERVISOR = c.SV_ID_SUPERVISOR,
                CE_ID_EMPRESA = c.CE_ID_EMPRESA,
                CE_NOMBRE_EMPRESA = c.SAX_EMPRESA.CE_COD_EMPRESA + '-' + c.SAX_EMPRESA.CE_NOMBRE,
                SV_COD_SUPERVISOR = c.SV_COD_SUPERVISOR,
                SV_NOMBRE_SUPERVISOR = c.AspNetUsers3.FirstName,
                SV_LIMITE_MINIMO = c.SV_LIMITE_MINIMO,
                SV_LIMITE_SUPERIOR = c.SV_LIMITE_SUPERIOR,
                SV_ESTATUS = c.SV_ESTATUS,
                SV_FECHA_CREACION = c.SV_FECHA_CREACION,
                SV_USUARIO_CREACION = c.SV_USUARIO_CREACION,
                SV_USUARIO_CREACION_NOMBRE = c.AspNetUsers1.FirstName,
                SV_FECHA_MOD = c.SV_FECHA_MOD,
                SV_USUARIO_MOD = c.SV_USUARIO_MOD,
                SV_FECHA_APROBACION = c.SV_FECHA_APROBACION,
                SV_FECHA_APROBACION_NOMBRE = c.AspNetUsers != null ? c.AspNetUsers.FirstName : null,
                SV_USUARIO_APROBADOR = c.SV_USUARIO_APROBADOR,
                SV_USUARIO_APROBADOR_NOMBRE = c.AspNetUsers2 != null ? c.AspNetUsers2.FirstName : null,
                SV_ID_AREA = c.SV_ID_AREA,
                SV_NOMBRE_AREA = c.SAX_AREA_OPERATIVA.CA_COD_AREA.ToString() + '-' + c.SAX_AREA_OPERATIVA.CA_NOMBRE
            })));
        }
        public async Task <IHttpActionResult> GetTemp([FromUri] AprobacionParametrosModel model)
        {
            try
            {
                if (model == null)
                {
                    model = new AprobacionParametrosModel();
                    model.FechaCreacion   = null;
                    model.UsuarioCreacion = null;
                }

                /*fechaModel = model.FechaCreacion == null ? null : model.FechaCreacion.ToString();
                 *
                 * int yyyy = 0;
                 * int mm = 0;
                 * int dd = 0;
                 */
                /*DateTime dt = DateTime.Today;
                 *
                 * DateTime dtND = DateTime.Today;
                 *
                 *
                 * String[] dateArray;
                 * string separator = "-";
                 *
                 *
                 * dt = DateTime.Parse(fechaModel);
                 *
                 * if (model.FechaCreacion != null)
                 * {
                 *
                 *  if (model.FechaCreacion.ToString().Contains("/"))
                 *  {
                 *      separator = "/";
                 *  }
                 *  dateArray = model.FechaCreacion.ToString().Split(Convert.ToChar(separator));
                 *  mm = Convert.ToInt32(dateArray[0]);
                 *  dd = Convert.ToInt32(dateArray[1]);
                 *  yyyy = Convert.ToInt32(dateArray[2]);
                 *
                 *  mm = Convert.ToInt32(model.FechaCreacion.ToString().Substring(0, 2));
                 *  dd = Convert.ToInt32(model.FechaCreacion.ToString().Substring(3, 2));
                 *  yyyy = Convert.ToInt32(model.FechaCreacion.ToString().Substring(6, 4));
                 *
                 *  dt = new DateTime(yyyy, mm, dd);
                 *
                 *
                 *  dtND = dt.AddDays(1);
                 * }
                 */


                IdentityUser user = await UserManager.FindByIdAsync(User.Identity.GetUserId());

                var      objUsuarioArea = usuarioEmpresaService.GetAll(c => c.US_ID_USUARIO == user.Id, null, includes: c => c.SAX_EMPRESA);
                string[] listEmpresa    = new string[objUsuarioArea.Count()];
                for (int i = 0; i < objUsuarioArea.Count(); i++)
                {
                    listEmpresa[i] = objUsuarioArea[i].CE_ID_EMPRESA.ToString();
                }

                var objSupervisorTempService = supervisorTempService.GetAll(c => c.SV_ESTATUS == 2
                                                                            //&& c.CE_ID_EMPRESA == objUsuarioArea[0].CE_ID_EMPRESA
                                                                            && listEmpresa.Contains(c.CE_ID_EMPRESA.ToString())
                                                                            //&& c.SV_FECHA_CREACION >= (model.FechaCreacion == null ? c.SV_FECHA_CREACION : dt)
                                                                            //&& c.SV_FECHA_CREACION <= (model.FechaCreacion == null ? c.SV_FECHA_CREACION : dtND)
                                                                            && c.SV_FECHA_CREACION == (model.FechaCreacion == null ? c.SV_FECHA_CREACION : model.FechaCreacion) &&
                                                                            c.SV_USUARIO_CREACION == (model.UsuarioCreacion == null ? c.SV_USUARIO_CREACION : model.UsuarioCreacion), null, includes: c => c.AspNetUsers);

                if (objSupervisorTempService == null)
                {
                    return(BadRequest("No se encontraron registros para la consulta realizada."));
                }

                return(Ok(objSupervisorTempService.Select(c => new
                {
                    SV_ID_SUPERVISOR = c.SV_ID_SUPERVISOR,
                    CE_ID_EMPRESA = c.CE_ID_EMPRESA,
                    CE_NOMBRE_EMPRESA = c.SAX_EMPRESA.CE_COD_EMPRESA + '-' + c.SAX_EMPRESA.CE_NOMBRE,
                    SV_COD_SUPERVISOR = c.SV_COD_SUPERVISOR,
                    SV_NOMBRE_SUPERVISOR = c.AspNetUsers3.FirstName,
                    SV_LIMITE_MINIMO = c.SV_LIMITE_MINIMO,
                    SV_LIMITE_SUPERIOR = c.SV_LIMITE_SUPERIOR,
                    SV_ESTATUS = c.SV_ESTATUS,
                    SV_FECHA_CREACION = c.SV_FECHA_CREACION,
                    SV_USUARIO_CREACION = c.SV_USUARIO_CREACION,
                    SV_USUARIO_CREACION_NOMBRE = c.AspNetUsers1.FirstName,
                    SV_FECHA_MOD = c.SV_FECHA_MOD,
                    SV_USUARIO_MOD = c.SV_USUARIO_MOD,
                    SV_FECHA_APROBACION = c.SV_FECHA_APROBACION,
                    SV_FECHA_APROBACION_NOMBRE = c.AspNetUsers != null ? c.AspNetUsers.FirstName : null,
                    SV_USUARIO_APROBADOR = c.SV_USUARIO_APROBADOR,
                    SV_USUARIO_APROBADOR_NOMBRE = c.AspNetUsers2 != null ? c.AspNetUsers2.FirstName : null,
                    SV_ID_AREA = c.SV_ID_AREA,
                    SV_NOMBRE_AREA = c.SAX_AREA_OPERATIVA.CA_COD_AREA.ToString() + '-' + c.SAX_AREA_OPERATIVA.CA_NOMBRE
                })));
            }
            catch (Exception ex)
            {
                return(BadRequest("Data: " + model.FechaCreacion.ToString() + "Error: " + ex.ToString()));
            }
        }
        public IHttpActionResult GetReporteAprobaciones([FromUri] AprobacionParametrosModel model)
        {
            try
            {
                List <CatalogoModel> estatusList = catalogoService.GetAll(c => c.CA_TABLA == "sax_evento_estatus", null, c => c.SAX_CATALOGO_DETALLE).ToList();

                if (model == null)
                {
                    model = new AprobacionParametrosModel();
                    model.FechaCreacion   = null;
                    model.UsuarioCreacion = null;
                }

                int estado = Convert.ToInt16(BusinessEnumerations.Estatus.ACTIVO);
                IList <ParametroTempModel> objParametroList
                    = paramTempService.GetAll(f => // f.PA_ESTATUS == estado &&
                                              f.PA_FECHA_CREACION == (model.FechaCreacion == null ? f.PA_FECHA_CREACION : model.FechaCreacion)
                                                   //&& f.PA_FECHA_CREACION <= (model.FechaCreacion == null ? f.PA_FECHA_CREACION : dt)
                                              && f.PA_USUARIO_CREACION == (model.UsuarioCreacion == null ? f.PA_USUARIO_CREACION : model.UsuarioCreacion),
                                              null, includes: c => c.AspNetUsers);

                var listParam = objParametroList.Select(c => new
                {
                    Tipo                    = "Parametro Sistema",
                    Descripcion             = "Parametro No. " + c.PA_ID_PARAMETRO,
                    Estado                  = estatusList.FirstOrDefault().SAX_CATALOGO_DETALLE.FirstOrDefault(k => k.CD_ESTATUS == c.PA_ESTATUS).CD_VALOR,
                    FechaCreacion           = c.PA_FECHA_CREACION.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture),
                    UsuarioCreacion         = c.PA_USUARIO_CREACION,
                    UsuarioCreacion_Nombre  = c.AspNetUsers.FirstName,
                    FechaAprobacion         = c.PA_FECHA_APROBACION == null ? string.Empty:Convert.ToDateTime(c.PA_FECHA_APROBACION.Value).ToString("MM/dd/yyyy", CultureInfo.InvariantCulture),
                    UsuarioAprobador        = c.PA_USUARIO_APROBADOR,
                    UsuarioAprobador_Nombre = c.AspNetUsers1 != null ? c.AspNetUsers1.FirstName : null
                });


                IList <EventosTempModel> objEventosList
                    = eventService.GetAll(f => //f.EV_ESTATUS == estado &&
                                          f.EV_FECHA_CREACION == (model.FechaCreacion == null ? f.EV_FECHA_CREACION : model.FechaCreacion)
                                               // && f.EV_FECHA_CREACION <= (model.FechaCreacion == null ? f.EV_FECHA_CREACION : dt)
                                          && f.EV_USUARIO_CREACION == (model.UsuarioCreacion == null ? f.EV_USUARIO_CREACION : model.UsuarioCreacion),
                                          null, includes: c => c.AspNetUsers);

                var listEvento = objEventosList.Select(c => new
                {
                    Tipo                    = "Evento",
                    Descripcion             = c.EV_DESCRIPCION_EVENTO, //"Evento No. " + c.EV_COD_EVENTO,
                    Estado                  = estatusList.FirstOrDefault().SAX_CATALOGO_DETALLE.FirstOrDefault(k => k.CD_ESTATUS == c.EV_ESTATUS).CD_VALOR,
                    FechaCreacion           = Convert.ToDateTime(c.EV_FECHA_CREACION).ToString("MM/dd/yyyy", CultureInfo.InvariantCulture),
                    UsuarioCreacion         = c.EV_USUARIO_CREACION,
                    UsuarioCreacion_Nombre  = c.AspNetUsers.FirstName,
                    FechaAprobacion         = c.EV_FECHA_APROBACION == null?string.Empty:Convert.ToDateTime(c.EV_FECHA_APROBACION).ToString("MM/dd/yyyy", CultureInfo.InvariantCulture),
                    UsuarioAprobador        = c.EV_USUARIO_APROBADOR,
                    UsuarioAprobador_Nombre = c.AspNetUsers2 != null ? c.AspNetUsers2.FirstName : null
                });


                IList <SupervisorTempModel> objSupervisorList
                    = supervisorService.GetAll(f => //f.SV_ESTATUS == estadov&&
                                               f.SV_FECHA_CREACION == (model.FechaCreacion == null ? f.SV_FECHA_CREACION : model.FechaCreacion)
                                                    //&& f.SV_FECHA_CREACION <= (model.FechaCreacion == null ? f.SV_FECHA_CREACION : dt)
                                               && f.SV_USUARIO_CREACION == (model.UsuarioCreacion == null ? f.SV_USUARIO_CREACION : model.UsuarioCreacion),
                                               null, includes: c => c.AspNetUsers);

                var listSupervisor = objSupervisorList.Select(c => new
                {
                    Tipo                    = "Supervisor",
                    Descripcion             = c.AspNetUsers3 != null ? c.AspNetUsers3.FirstName : "Supervisor No. " + c.SV_ID_SUPERVISOR,
                    Estado                  = estatusList.FirstOrDefault().SAX_CATALOGO_DETALLE.FirstOrDefault(k => k.CD_ESTATUS == c.SV_ESTATUS).CD_VALOR,
                    FechaCreacion           = Convert.ToDateTime(c.SV_FECHA_CREACION).ToString("MM/dd/yyyy", CultureInfo.InvariantCulture),
                    UsuarioCreacion         = c.SV_USUARIO_CREACION,
                    UsuarioCreacion_Nombre  = c.AspNetUsers1.FirstName,
                    FechaAprobacion         = c.SV_FECHA_APROBACION == null?string.Empty: Convert.ToDateTime(c.SV_FECHA_APROBACION).ToString("MM/dd/yyyy", CultureInfo.InvariantCulture),
                    UsuarioAprobador        = c.SV_USUARIO_APROBADOR,
                    UsuarioAprobador_Nombre = c.AspNetUsers != null ? c.AspNetUsers.FirstName : null
                });

                var listFinal = listParam.Concat(listEvento).Concat(listSupervisor);


                if (listFinal == null)
                {
                    return(BadRequest("No se encontraron registros para la consulta realizada."));
                }

                return(Ok(listFinal.Select(c => new
                {
                    Tipo = c.Tipo,
                    Descripcion = c.Descripcion,
                    Estado = c.Estado,
                    FechaCreacion = c.FechaCreacion,
                    UsuarioCreacion = c.UsuarioCreacion,
                    UsuarioCreacion_Nombre = c.UsuarioCreacion_Nombre,
                    FechaAprobacion = c.FechaAprobacion,
                    UsuarioAprobador = c.UsuarioAprobador,
                    UsuarioAprobador_Nombre = c.UsuarioAprobador_Nombre
                })));
            }
            catch (Exception ex)
            {
                return(BadRequest("Un problema en los datos no permite gestionar el reporte. Comuníquese con el administrador de la aplicación."));
            }
        }