public async Task <IHttpActionResult> GetConsultaCompendio(ProductoGI p)
        {
            try
            {
                var entities = await _repo.GetConsultaCompendio(p);

                return(Ok(entities));
            }
            catch (Exception e)
            {
                return(InternalServerError(e));
            }
        }
示例#2
0
        public async Task <IHttpActionResult> Update([FromBody] ProductoGI model)
        {
            try
            {
                var clavePersona  = SimpleSessionPersister.PersonaId;
                var nombrePersona = SimpleSessionPersister.nombreUsuario;
                if (String.IsNullOrEmpty(clavePersona) || String.IsNullOrEmpty(nombrePersona))
                {
                    throw new Exception("No se identifica al usuario");
                }
                await _repo.Update(model, clavePersona, nombrePersona);

                return(Ok("Registro actualizado exitosamente!"));
            }
            catch (Exception e)
            {
                return(InternalServerError(e));
            }
        }
示例#3
0
        public async Task <IHttpActionResult> RegistrarMovimiento([FromBody] ProductoGI model)
        {
            try
            {
                var clavePersona  = SimpleSessionPersister.PersonaId;
                var nombrePersona = SimpleSessionPersister.nombreUsuario;
                if (String.IsNullOrEmpty(clavePersona) || String.IsNullOrEmpty(nombrePersona))
                {
                    throw new Exception("No se identifica al usuario");
                }
                if (String.IsNullOrEmpty(model.Movimiento))
                {
                    throw new Exception("No se especificó el movimiento");
                }
                await _repo.RegistrarMovimiento(model, clavePersona, nombrePersona);

                return(Ok("Factor de innovación actualizado exitosamente!"));
            }
            catch (Exception e)
            {
                return(InternalServerError(e));
            }
        }
        public async Task <IEnumerable <Object> > GetConsultaCompendio(ProductoGI parametros)
        {
            try
            {
                var fechaActual = DateTime.Now;

                var entities = dbGI.DbSetProductoGI
                               .Where(e => e.EstadoFlujoComite == 18)
                               .Where(e => e.VoBoDuenio == true)
                               .AsNoTracking()
                               .Include(x => x.FactorInnovacion)
                               .Include(x => x.Proyecto);

                if (entities != null)
                {
                    if (!String.IsNullOrEmpty(parametros.JefeProyecto))    //busqueda por jefe de proyecto
                    {
                        PersonasRepository persona = new PersonasRepository();
                        var fkspersonas            = await persona.GetAllClavesByLikeNombreLatin1(parametros.JefeProyecto);

                        entities = entities.Where(e => fkspersonas.Contains(e.Proyecto.NumjefeProyecto)); ////<====== Revisar
                    }
                    if (!String.IsNullOrEmpty(parametros.ProyectoId))                                     //busqueda por numero de proyecto
                    {
                        entities = entities.Where(e => e.ProyectoId == parametros.ProyectoId);
                    }
                    if (!String.IsNullOrEmpty(parametros.UnidadOrganizacionalId))  //busqueda por gerencia
                    {
                        entities = entities.Where(e => e.UnidadOrganizacionalId == parametros.UnidadOrganizacionalId);
                    }
                    if (!String.IsNullOrEmpty(parametros.ClaveFactorInnovacion))  //busqueda por clave de factor de innovacion
                    {
                        var id = Convert.ToInt32(parametros.ClaveFactorInnovacion);
                        entities = entities.Where(e => e.FactorInnovacionId == id);
                    }
                    if (parametros.Periodo != 0)  //busqueda por periodo
                    {
                        var fechaMinComparacion = new DateTime(parametros.Periodo, 1, 1);
                        var fechaMaxComparacion = new DateTime(parametros.Periodo, 12, 31);
                        var fksproductos        = await dbGI.DbSetProductoGISolicitud.Where(e => DbFunctions.TruncateTime(e.FechaRegistro) >= DbFunctions.TruncateTime(fechaMinComparacion) &&
                                                                                            DbFunctions.TruncateTime(e.FechaRegistro) <= DbFunctions.TruncateTime(fechaMaxComparacion))
                                                  .AsNoTracking().Select(x => x.ProductoId).ToListAsync();

                        entities = entities.Where(e => fksproductos.Contains(e.ProductoId));
                    }

                    var datos = entities.Select(x => new {
                        ProductoId       = x.ProductoId,
                        ClavePersona     = x.ClavePersona,
                        FactorInnovacion = x.FactorInnovacion.Descripcion,
                        FechaRegistro    = dbGI.DbSetProductoGISolicitud.Where(ps => ps.ProductoId == x.ProductoId).Select(ps => ps.FechaRegistro).FirstOrDefault(),
                        NombreTecnico    = x.NombreTecnico,
                        ProyectoId       = x.ProyectoId,
                        Proyecto         = x.Proyecto.Nombre,
                        JefeProyecto     = x.Proyecto.NombreJefeProyecto,
                        CveJefeProyecto  = x.Proyecto.NumjefeProyecto,

                        UnidadOrganizacional =
                            (from unidad in dbGI.DbSetUnidadOrganizacional
                             where x.UnidadOrganizacionalId.Equals(unidad.ClaveUnidad) &&
                             unidad.FechaEfectiva == dbGI.DbSetUnidadOrganizacional.Where(
                                 p => p.FechaEfectiva <= fechaActual &&
                                 p.ClaveUnidad == unidad.ClaveUnidad
                                 ).Max(e => e.FechaEfectiva)
                             select unidad.NombreUnidad).FirstOrDefault()
                    })
                                .ToList();

                    return(datos);
                }

                return(entities);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }