public async Task CreateConAutores(IdeaInnovadora model, List <AutoresIdea> listaAutores)
        {
            try
            {
                dbGI.DbSetIdeaInnovadora.Add(model);
                await dbGI.SaveChangesAsync();

                try
                {
                    if (listaAutores != null && listaAutores.Count > 0)
                    {
                        await autores.CreateAllSetIdeaInnovadoraId(listaAutores, model.IdeaInnovadoraId);
                    }
                }
                catch (Exception err)
                {
                    dbGI = new GI_Context();
                    var _model = await dbGI.DbSetIdeaInnovadora.FirstOrDefaultAsync(e => e.IdeaInnovadoraId == model.IdeaInnovadoraId);

                    dbGI.DbSetIdeaInnovadora.Remove(_model);
                    await dbGI.SaveChangesAsync();

                    throw err;
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
        public async Task UpdateEstado(IdeaInnovadora model)
        {
            try
            {
                //if (model.EstadoFlujoId == 10)
                //{
                //    model.FechaValidacion = DateTime.Now;
                //}
                var _model = await dbGI.DbSetIdeaInnovadora.FirstOrDefaultAsync(e => e.IdeaInnovadoraId == model.IdeaInnovadoraId);

                if (_model != null)
                {
                    _model.EstadoFlujoId = model.EstadoFlujoId;
                    _model.TipoAcceso    = model.TipoAcceso;
                    if (model.EstadoFlujoId == 10)
                    {
                        _model.FechaValidacion = DateTime.Now;
                    }
                    await dbGI.SaveChangesAsync();

                    if (model.TipoAcceso == 1 && model.EstadoFlujoId == 10)
                    {
                        NuevoOCRepository nuevo = new NuevoOCRepository();
                        await nuevo.Create(new NuevoOC("GI", "II", _model.NombreIdea,
                                                       "indexGI.html#/buscarIdeaInnovadoraDetalles/" + _model.IdeaInnovadoraId,
                                                       _model.IdeaInnovadoraId.ToString()
                                                       ));
                    }
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
Esempio n. 3
0
        public async Task <IHttpActionResult> GetConsultaIdeas(IdeaInnovadora p)
        {
            try
            {
                var entities = await _repo.GetConsultaIdeas(p);

                return(Ok(entities));
            }
            catch (Exception e)
            {
                return(InternalServerError(e));
            }
        }
Esempio n. 4
0
        public async Task <IHttpActionResult> UpdateTipoAcceso(IdeaInnovadora model)
        {
            try
            {
                await _repo.UpdateTipoAcceso(model);

                return(Ok("Tipo acceso actualizado exitosamente!"));
            }
            catch (Exception e)
            {
                return(InternalServerError(e));
            }
        }
        public async Task UpdateTipoAcceso(IdeaInnovadora model)
        {
            try
            {
                var _model = await dbGI.DbSetIdeaInnovadora.FirstOrDefaultAsync(e => e.IdeaInnovadoraId == model.IdeaInnovadoraId);

                if (_model != null)
                {
                    _model.TipoAcceso   = model.TipoAcceso;
                    _model.TipoAccesoGI = null;
                    await dbGI.SaveChangesAsync();
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
        public async Task Update(IdeaInnovadora model, List <AutoresIdea> listaAutores)
        {
            //throw new Exception("foo");
            try
            {
                var _model = await dbGI.DbSetIdeaInnovadora.FirstOrDefaultAsync(e => e.IdeaInnovadoraId == model.IdeaInnovadoraId);

                if (_model.AdjuntoId != null)
                {
                    var id = _model.AdjuntoId;
                    _model.AdjuntoId = null;
                    await dbGI.SaveChangesAsync();

                    await new AdjuntoRepository().Delete(id);
                }
                if (model.Adjunto != null)
                {
                    Adjunto key = await _adjuntoRepo.CreateAd(model.Adjunto);

                    model.AdjuntoId         = key.AdjuntoId;
                    model.Adjunto.AdjuntoId = key.AdjuntoId;
                }
                else
                {
                    model.AdjuntoId = null;
                }

                if (model.EstadoFlujoId == 14)
                {
                    model.FechaRegistro = DateTime.Now;
                }
                ;


                if (_model != null)
                {
                    dbGI.Entry(_model).CurrentValues.SetValues(model);
                    await dbGI.SaveChangesAsync();
                }
                try
                {
                    if (listaAutores.Count > 0)
                    {
                        foreach (var autor in listaAutores)
                        {
                            if (autor.Persona.Equals("eliminar"))
                            {
                                var _proponenteExist = await dbGI.DbSetAutoresIdea.FirstOrDefaultAsync(e => e.Id == autor.Id);

                                if (_proponenteExist != null)
                                {
                                    dbGI.DbSetAutoresIdea.Remove(_proponenteExist); await dbGI.SaveChangesAsync();
                                }
                            }
                            if (autor.IdeaInnovadoraId == 0)
                            {
                                autor.ContribucionProponente = null;
                                autor.IdeaInnovadoraId       = model.IdeaInnovadoraId;
                                var result = dbGI.DbSetAutoresIdea.Add(autor);
                                await dbGI.SaveChangesAsync();
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    throw new Exception(e.Message, e);
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
        public async Task <IEnumerable <Object> > GetConsultaIdeas(IdeaInnovadora parametros)
        {
            try
            {
                var entities = dbGI.DbSetIdeaInnovadora
                               .Include(e => e.EstadoFlujo)
                               .AsNoTracking();

                if (entities != null)
                {
                    /***Seccion [Buscar idea innovadora]**/
                    if (!String.IsNullOrEmpty(parametros.busqueda))//busqueda en general (seccion buscar 'idea innovadora')
                    {
                        entities = entities.Where(e => e.EstadoFlujoId == 10);
                    }
                    /***Seccion [Mis ideas innovadoras]**/
                    if (!String.IsNullOrEmpty(parametros.ClavePersona))//busqueda por los registros de la persona
                    {
                        var fksautores = await dbGI.DbSetAutoresIdea.Where(e => e.ClavePersona == parametros.ClavePersona).AsNoTracking().Select(x => x.IdeaInnovadoraId).ToListAsync();

                        entities = entities.Where(e => fksautores.Contains(e.IdeaInnovadoraId) || e.ClavePersona == parametros.ClavePersona);
                    }

                    /***Criterios de busqueda en general de ambos formularios**/
                    if (!String.IsNullOrEmpty(parametros.NombreIdea))//busqueda por el nombre de la idea innovadora
                    {
                        var fksideas = await GetIdeasLikeNombreLatin1(parametros.NombreIdea);

                        entities = entities.Where(e => fksideas.Contains(e.IdeaInnovadoraId));
                    }
                    if (!String.IsNullOrEmpty(parametros.busquedaFecha))  //busqueda por fechas
                    {
                        entities = entities.Where(e => (DbFunctions.TruncateTime(e.FechaRegistro) >= DbFunctions.TruncateTime(parametros.fechaInicioComparacion) && DbFunctions.TruncateTime(e.FechaRegistro) <= DbFunctions.TruncateTime(parametros.fechaFinalComparacion)));
                    }
                    if (!String.IsNullOrEmpty(parametros.proponenteNombre))  //busqueda por proponentes
                    {
                        PersonasRepository p = new PersonasRepository();
                        var claves           = await p.GetAllClavesByLikeNombreLatin1(parametros.proponenteNombre);

                        var fksproponentes = await dbGI.DbSetAutoresIdea.Where(e => claves.Contains(e.ClavePersona) && e.ContribucionProponenteId == 0).AsNoTracking().Select(x => x.IdeaInnovadoraId).ToListAsync();

                        entities = entities.Where(x => fksproponentes.Contains(x.IdeaInnovadoraId));
                    }
                    if (!String.IsNullOrEmpty(parametros.PalabrasClave))//busqueda por las palabras clave de las ideas innovadoras
                    {
                        var fkspalabras = await GetIdeasByPalabrasClaveLikeNombreLatin1(parametros.PalabrasClave);

                        entities = entities.Where(e => fkspalabras.Contains(e.IdeaInnovadoraId));
                    }

                    var datos = entities.ToList();

                    foreach (var item in datos)
                    {
                        AutoresIdea proponente = await autores.getProponentePrincipalById(item.IdeaInnovadoraId);

                        if (proponente != null)
                        {
                            Personas autor = await _personaRepo.GetByClave(proponente.ClavePersona);

                            item.proponenteNombre         = autor.NombreCompleto;
                            item.ClaveProponentePrincipal = proponente.ClavePersona;
                        }
                        if (item.TipoAcceso == 1)
                        {
                            item.AccesoPublico = true;
                        }
                        else
                        {
                            item.AccesoPublico = false;
                        }
                    }

                    return(datos);
                }

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