Exemplo n.º 1
0
        public async Task <IHttpActionResult> Update([FromBody] TecnologiaLicenciada model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            try
            {
                var clavePersona  = SimpleSessionPersister.PersonaId;
                var nombrePersona = SimpleSessionPersister.nombreUsuario;
                if (String.IsNullOrEmpty(clavePersona) || String.IsNullOrEmpty(nombrePersona))
                {
                    throw new Exception("No se identifica al usuario");
                }
                else
                {
                    await _repo.Update(model, clavePersona, nombrePersona);

                    return(Ok("Registro actualizado exitosamente!"));
                }
            }
            catch (Exception e)
            {
                return(InternalServerError(e));
            }
        }
Exemplo n.º 2
0
        public async Task <IHttpActionResult> GetAllConsultaParametrizadaTecnologia(TecnologiaLicenciada p)
        {
            try
            {
                var entities = await _repo.GetAllConsultaParametrizadaTecnologia(p);

                return(Ok(entities));
            }
            catch (Exception e)
            {
                return(InternalServerError(e));
            }
        }
Exemplo n.º 3
0
        public async Task Update(TecnologiaLicenciada model, String clavePersona, String nombrePersona)
        {
            try
            {
                var _model = await dbGI.DbSetTecnologiaLicenciada.FirstOrDefaultAsync(e => e.TecnologiaLicenciadaId == model.TecnologiaLicenciadaId);

                if (_model != null)
                {
                    if (model.Gerencias.Count > 0)
                    { //Se remueven las viejas gerencias
                        var oldGerencias = await dbGI.DbSetTecnologiaLicenciadaGerencia.Where(e => e.TecnologiaLicenciadaId == model.TecnologiaLicenciadaId).ToListAsync();

                        if (oldGerencias.Count > 0)
                        {
                            dbGI.DbSetTecnologiaLicenciadaGerencia.RemoveRange(oldGerencias);
                        }
                        dbGI.DbSetTecnologiaLicenciadaGerencia.AddRange(model.Gerencias);
                    }

                    //Verificamos la existencia de una notificacion como nuevo OC
                    var infoAgregada = await dbGEN.dbSetNuevoOC.Where(e => e.descripcion.Equals(_model.NombreTecnologiaLic)).FirstOrDefaultAsync();

                    if (infoAgregada != null && model.EstadoLicenciamientoId != 1)
                    {
                        NuevoOCRepository repo = new NuevoOCRepository();
                        await repo.Delete(infoAgregada.NuevoOCId);
                    }
                    if (infoAgregada == null && model.EstadoLicenciamientoId == 1)  //En caso de estar vigente la tecnologia se crea una notificacion de nuevo OC
                    {
                        NuevoOCRepository nuevo = new NuevoOCRepository();
                        await nuevo.Create(new NuevoOC("GI", "STL", model.NombreTecnologiaLic,
                                                       "indexGI.html#/detallestecnologiaLicenciada/" + model.TecnologiaLicenciadaId,
                                                       model.TecnologiaLicenciadaId.ToString()
                                                       ));
                    }

                    dbGI.Entry(_model).CurrentValues.SetValues(model);
                    await dbGI.SaveChangesAsync();

                    await this.AddBitacoraMovimiento(model, clavePersona, nombrePersona, "Actualización de STL");
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
Exemplo n.º 4
0
        public async Task UpdateProyecto(TecnologiaLicenciada model, String clavePersona, String nombrePersona)
        {
            try
            {
                var _model = await dbGI.DbSetTecnologiaLicenciada.FirstOrDefaultAsync(e => e.TecnologiaLicenciadaId == model.TecnologiaLicenciadaId);

                if (_model != null)
                {
                    _model.ProyectoId = model.ProyectoId;
                    _model.Proyecto   = null;
                    await dbGI.SaveChangesAsync();

                    await this.AddBitacoraMovimiento(model, clavePersona, nombrePersona, "Actualización del proyecto");
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
Exemplo n.º 5
0
        public async Task Create(TecnologiaLicenciada model, string clavePersona, string nombrePersona)
        {
            try
            {
                dbGI.DbSetTecnologiaLicenciada.Add(model);
                await dbGI.SaveChangesAsync();

                await this.AddBitacoraMovimiento(model, clavePersona, nombrePersona, "Creación del registro");

                if (model.EstadoLicenciamientoId == 1) //En caso de estar vigente la tecnologia se crea una notificacion de nuevo OC
                {
                    NuevoOCRepository nuevo = new NuevoOCRepository();
                    await nuevo.Create(new NuevoOC("GI", "STL", model.NombreTecnologiaLic,
                                                   "indexGI.html#/detallestecnologiaLicenciada/" + model.TecnologiaLicenciadaId,
                                                   model.TecnologiaLicenciadaId.ToString()
                                                   ));
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
Exemplo n.º 6
0
        private async Task AddBitacoraMovimiento(TecnologiaLicenciada model,
                                                 String clavePersona, String nombrePersona, String movimiento)
        {
            try
            {
                if (model != null)
                {
                    var fecha = DateTime.Now;

                    BitacoraMovimientosGI bita = new BitacoraMovimientosGI();
                    bita.Fecha        = fecha;
                    bita.ClavePersona = clavePersona;
                    bita.Movimiento   = movimiento;
                    bita.OcsId        = "STL";
                    bita.RegistroId   = model.TecnologiaLicenciadaId;
                    dbGI.DbSetBitacoraMovimientosGI.Add(bita);
                    await dbGI.SaveChangesAsync();
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
Exemplo n.º 7
0
        /// <summary>
        /// Retorna los registros donde el empleado es jefe de proyecto de los prooyectos asociados a los registros
        /// o es gerente dada la unidad organizacional de los proyectos
        /// </summary>
        /// <param name="claveEmpleado"></param>
        /// <param name="unidadOrganizacionalId"></param>
        /// <returns></returns>
        public async Task <IEnumerable <Object> > GetConsultaByEmpleado(TecnologiaLicenciada parametros)
        {
            try
            {
                var fechaActual = DateTime.Now;
                //Unidades como gerente
                var unidadeComoGerente = await dbGI.DbSetUnidadOrganizacional.AsNoTracking()
                                         .Where(x => x.ClaveResponsable.Equals(parametros.claveEmpleado) &&
                                                x.FechaEfectiva == dbGI.DbSetUnidadOrganizacional
                                                .Where(f => f.FechaEfectiva <= fechaActual &&
                                                       f.ClaveUnidad == x.ClaveUnidad)
                                                .Max(f => f.FechaEfectiva)
                                                )
                                         .Select(x => x.ClaveUnidad)
                                         .ToListAsync();

                var unidadesId = new List <String>();
                var STLIDs     = new List <int>();

                if (unidadeComoGerente != null && unidadeComoGerente.Count() > 0)
                {
                    unidadesId = unidadeComoGerente;
                }

                //Tipos de pi
                var listaTipoPI = await dbPI.TipoPropiedadIndustrial.Where(e => e.Estado == true).Select(x => new
                {
                    idTipo = x.TipoPropiedadIndustrialId,
                    nombre = x.DescripcionCorta
                }).AsNoTracking().ToListAsync();

                var entities = dbGI.DbSetTecnologiaLicenciada
                               .Include(x => x.EstadoLicenciamiento)
                               .Include(x => x.Gerencias)
                               .Include(x => x.Proyecto)
                               .Where(x => x.Proyecto.NumjefeProyecto.Equals(parametros.claveEmpleado) ||
                                      x.TecnologiaLicenciadaId ==
                                      dbGI.DbSetTecnologiaLicenciadaGerencia.Where(g =>
                                                                                   unidadesId.Contains(g.ClaveUnidad) && g.TecnologiaLicenciadaId == x.TecnologiaLicenciadaId)
                                      .Select(s => s.TecnologiaLicenciadaId).FirstOrDefault() ||
                                      unidadesId.Contains(x.Proyecto.UnidadOrganizacionalId)
                                      )
                               .AsNoTracking();

                if (entities != null)
                {
                    if (!String.IsNullOrEmpty(parametros.NombreTecnologiaLic)) //busqueda por nombre de la tecnologia licenciada
                    {
                        var listaFK = await GetTecnologiasLikeNombreLatin1(parametros.NombreTecnologiaLic);

                        entities = entities.Where(e => listaFK.Contains(e.TecnologiaLicenciadaId));
                    }
                    if (!String.IsNullOrEmpty(parametros.NombreReceptor))  //busqueda por el nombre del receptor
                    {
                        var listaFK = await GetReceptoresTecnologiaLikeNombreLatin1(parametros.NombreReceptor);

                        entities = entities.Where(e => listaFK.Contains(e.TecnologiaLicenciadaId));
                    }
                    if (!String.IsNullOrEmpty(parametros.ClaveUnidad))  //busqueda por clave de unidad
                    {
                        var fks = await(from pi in dbGI.DbSetTecnologiaLicenciadaGerencia.AsNoTracking()
                                        where pi.ClaveUnidad == parametros.ClaveUnidad
                                        select pi.TecnologiaLicenciadaId).ToListAsync();

                        entities = entities.Where(e => fks.Contains(e.TecnologiaLicenciadaId));
                    }
                    if (!String.IsNullOrEmpty(parametros.estado))  //busqueda por estado del licenciamiento
                    {
                        var id = Convert.ToInt32(parametros.estado);
                        entities = entities.Where(e => e.EstadoLicenciamientoId == id);
                    }
                    if (parametros.TipoPropiedadIndustrialId != 0 && parametros.TipoPropiedadIndustrialId != 9999) //busqueda por tipo de propiedad industrial
                    {
                        //Entity framework no soporta joins entre diferentes contextos de aplicacion, por eso la consulta se hace de la siguiente forma

                        //propiedad industrial que sea del tipo pi buscado
                        var fksPI = await(from pi in dbPI.PropiedadIndustrial.AsNoTracking()
                                          where pi.EsPropiedadInstituto == true &&
                                          pi.TipoPropiedadIndustrialId == parametros.TipoPropiedadIndustrialId
                                          select pi.PropiedadIndustrialId).ToListAsync();


                        var registros = await(from gi in dbGI.DbSetTecnologiaLicenciadaPIPIndustrial.AsNoTracking()
                                              where fksPI.Contains(gi.PropiedadIndustrialId)
                                              select gi.TecnologiaLicenciadaId).ToListAsync();

                        entities = entities.Where(e => registros.Contains(e.TecnologiaLicenciadaId));
                    }
                    if (parametros.TipoPropiedadIndustrialId == 9999)  //busqueda por derechos de autor
                    {
                        var clavesDA = await(from da in dbGI.DbSetTecnologiaLicenciadaPIDA.AsNoTracking()
                                             select da.TecnologiaLicenciadaId).ToListAsync();
                        entities = entities.Where(e => clavesDA.Contains(e.TecnologiaLicenciadaId));
                    }

                    List <BusquedaTecnologiaLicenciada> datos = entities.Select(x => new BusquedaTecnologiaLicenciada
                    {
                        TecnologiaLicenciadaId = x.TecnologiaLicenciadaId,
                        NombreTecnologiaLic    = x.NombreTecnologiaLic,
                        Numero = x.Numero + "",
                        EstadoLicenciamientoId = x.EstadoLicenciamientoId,
                        EstadoLicenciamiento   = x.EstadoLicenciamiento.Descripcion,
                        NombreReceptor         = x.NombreReceptor,
                        GerenciasNombre        = (from unidad in dbGI.DbSetUnidadOrganizacional
                                                  where x.Gerencias.Select(g => g.ClaveUnidad).ToList().Contains(unidad.ClaveUnidad) &&
                                                  unidad.FechaEfectiva == dbGI.DbSetUnidadOrganizacional.Where(
                                                      p => p.FechaEfectiva <= fechaActual &&
                                                      p.ClaveUnidad == unidad.ClaveUnidad
                                                      ).Max(e => e.FechaEfectiva)
                                                  select unidad.NombreUnidad).ToList()
                    }).ToList();


                    //propiedad industrial que sea del tipo pi buscado

                    foreach (var c in datos)
                    {
                        //lista de propiedad industrial relacionada a tecnologia licenciada
                        var listaFKPITecnologia = await(from g in dbGI.DbSetTecnologiaLicenciadaPIPIndustrial.AsNoTracking() where g.TecnologiaLicenciadaId == c.TecnologiaLicenciadaId select g.PropiedadIndustrialId).ToListAsync();
                        if (listaFKPITecnologia.Count() > 0)
                        {
                            var listaPI = await(from p in dbPI.PropiedadIndustrial.AsNoTracking() where listaFKPITecnologia.Contains(p.PropiedadIndustrialId) select p.TipoPropiedadIndustrialId).ToListAsync();
                            c.TipoPi = listaTipoPI.Where(e => listaPI.Contains(e.idTipo)).Select(e => e.nombre).ToList();
                        }
                        var listaFKDATecnologia = await(from d in dbGI.DbSetTecnologiaLicenciadaPIDA.AsNoTracking() where d.TecnologiaLicenciadaId == c.TecnologiaLicenciadaId select d.DerechosAutorId).ToListAsync();
                        if (listaFKDATecnologia.Count() > 0)
                        {
                            if (c.TipoPi != null)
                            {
                                c.TipoPi.Add("Derechos de autor");
                            }
                            else
                            {
                                List <string> lista = new List <string>();
                                lista.Add("Derechos de autor");
                                c.TipoPi = lista;
                            }
                        }
                    }

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