示例#1
0
        /// <summary>
        /// Actualiza un registro de la tabla asociaciones
        /// </summary>
        /// <param name="asociaciones">objeto de tipo asociaciones que contiene los datos para actualizar </param>
        /// <returns></returns>
        public async Task Update(Asociaciones asociaciones)
        {
            try
            {
                var _asociaciones = await _ctx.Asociaciones.FirstOrDefaultAsync(e => e.AsociacionesId == asociaciones.AsociacionesId);

                if (_asociaciones != null)
                {
                    if (asociaciones.Adjunto != null)
                    {
                        AdjuntoRepository _adjuntoRepo = new AdjuntoRepository();
                        //Eliminar archivo
                        if (asociaciones.Adjunto.nombre == "eliminar")
                        {
                            var id = asociaciones.Adjunto.AdjuntoId;
                            _asociaciones.AdjuntoId = null;
                            asociaciones.AdjuntoId  = null;
                            await _ctx.SaveChangesAsync();

                            await _adjuntoRepo.Delete(id);

                            //formacionacademica.Adjunto = null;
                            //await _faRepo.Update(formacionacademica);
                        }
                        ///Agregar archivo al editar
                        if (asociaciones.Adjunto.AdjuntoId == 0)
                        {
                            if (_asociaciones.AdjuntoId != null)
                            {
                                var id = _asociaciones.AdjuntoId;
                                _asociaciones.AdjuntoId = null;
                                await _ctx.SaveChangesAsync();

                                await _adjuntoRepo.Delete(id);
                            }
                            Adjunto key = await _adjuntoRepo.CreateAd(asociaciones.Adjunto);

                            asociaciones.AdjuntoId = key.AdjuntoId;
                        }
                    }
                    _ctx.Entry(_asociaciones).CurrentValues.SetValues(asociaciones);
                    await _ctx.SaveChangesAsync();
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
示例#2
0
        public async Task Update(MapasRuta model)
        {
            try
            {
                var _model = await _db.DbSetMapasRutas.FirstOrDefaultAsync(e => e.MapaId == model.MapaId);

                if (_model != null)
                {
                    //Cuando se elimina el adjunto en modo edicion
                    if (model.AdjuntoId != null)
                    {
                        int id = Convert.ToInt32(model.AdjuntoId);
                        model.AdjuntoId = null;
                        _db.Entry(_model).CurrentValues.SetValues(model);
                        await _db.SaveChangesAsync();

                        await _adjuntoRepo.Delete(id);
                    }
                    //Cuando se agrega un nuevo archivo
                    if (model.Adjunto != null && model.AdjuntoId == null)
                    {
                        Adjunto key = await _adjuntoRepo.CreateAd(model.Adjunto);

                        model.AdjuntoId         = key.AdjuntoId;
                        model.Adjunto.AdjuntoId = key.AdjuntoId;
                    }
                    if (model.claveAutores != null)
                    {
                        var autoresRegistro = await _db.DbSetAutores.Where(e => e.idOC == 1 && e.ContenidoId == model.MapaId).AsNoTracking().ToListAsync();

                        //Eliminacion de autores
                        AutoresCPRepository autoresRepo = new AutoresCPRepository();
                        foreach (var c in autoresRegistro)
                        {
                            await autoresRepo.Delete(c.AutorId);
                        }

                        Autores autor = new Autores();
                        foreach (var clave in model.claveAutores)
                        {
                            autor.clave         = clave;
                            autor.ContenidoId   = model.MapaId;
                            autor.idOC          = 1;
                            autor.FechaRegistro = DateTime.Now;
                            _db.DbSetAutores.Add(autor);
                            await _db.SaveChangesAsync();
                        }
                    }

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

                    await cambiaEstadoPublicacion(_model);
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
                                                              public async Task <IHttpActionResult> Delete(int id)
                                                              {
                                                                  try{ log.Info(new MDCSet(this.ControllerContext.RouteData), new InfoException(id));
                                                                       await _repository.Delete(id);

                                                                       return(Ok("Registro eliminado correctamente")); }
                                                                  catch (Exception e) { log.Error(new MDCSet(this.ControllerContext.RouteData), e);
                                                                                        throw new Exception(e.Message, e); }
                                                              }
        public async Task <IHttpActionResult> Update(BecarioDirigido Obj)
        {
            try
            {
                log.Info(new MDCSet(this.ControllerContext.RouteData));
                if (Obj.Adjunto != null)
                {
                    //Elimar archivo
                    if (Obj.Adjunto.nombre == "eliminar")
                    {
                        int id = Convert.ToInt32(Obj.AdjuntoId);
                        Obj.AdjuntoId = null;
                        await _repository.Update(Obj);

                        await _adjuntoRepo.Delete(id);

                        return(Ok());
                    }
                    ///Agregar archivo al editar
                    if (Obj.Adjunto.AdjuntoId == 0)
                    {
                        Adjunto key = await _adjuntoRepo.CreateAd(Obj.Adjunto);

                        Obj.AdjuntoId         = key.AdjuntoId;
                        Obj.Adjunto.AdjuntoId = key.AdjuntoId;
                        await _repository.Update(Obj);

                        return(Ok(key));
                    }
                }
                //solución de ALAN replicada
                if (Obj.Adjunto != null)
                {
                    Obj.AdjuntoId = Obj.Adjunto.AdjuntoId;
                }
                await _repository.Update(Obj);

                ////Agregar a OC
                if (Obj.EstadoFlujoId == 3)
                {
                    await new NuevoOCRepository().Create(
                        new NuevoOC("CH",
                                    "BecarioDirigido",
                                    Obj.NombreEstancia,
                                    "IndexCH.html#/detallesbecariodirigido/" + Obj.BecarioDirigidoId + "/",
                                    Obj.BecarioDirigidoId + ""
                                    ));
                }
                return(Ok(Obj));
            }
            catch (Exception e)
            {
                log.Error(new MDCSet(this.ControllerContext.RouteData), e);

                return(InternalServerError(e));
            }
        }
示例#5
0
        public async Task Update(Avance model)
        {
            try
            {
                var _model = await _db.DbSetAvance.FirstOrDefaultAsync(e => e.AvanceId == model.AvanceId);

                if (_model != null)
                {
                    if (model.AdjuntoId != null)
                    {
                        int id = Convert.ToInt32(model.AdjuntoId);
                        model.AdjuntoId = null;
                        _db.Entry(_model).CurrentValues.SetValues(model);
                        await _db.SaveChangesAsync();

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

                        model.AdjuntoId         = key.AdjuntoId;
                        model.Adjunto.AdjuntoId = key.AdjuntoId;
                    }
                    if (model.avances != null)
                    {
                        //Se eliminan los anteriores para crear un nuevo registro de los agregados
                        var Autores = await _db.DbSetAvanceMiembros.Where(e => e.AvanceId == model.AvanceId).
                                      Select(x => x.AvanceMiembroId).ToListAsync();

                        AvanceMiembrosRepository av = new AvanceMiembrosRepository();
                        foreach (var aut in Autores)
                        {
                            await av.Delete(aut);
                        }

                        //Ahora se crean los nuevos autores
                        foreach (var c in model.avances)
                        {
                            c.AvanceId      = model.AvanceId;
                            c.FechaRegistro = DateTime.Now;;
                            await av.Create(c);
                        }
                    }

                    _db.Entry(_model).CurrentValues.SetValues(model);
                    await _db.SaveChangesAsync();
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
        public async Task <IHttpActionResult> DeleteDoc(int Id)
        {
            try{ log.Info(new MDCSet(this.ControllerContext.RouteData), new InfoException(Id));
                 await _adjuntoRepo.Delete(Id);

                 return(Ok("Archivo eliminado exitosamente!")); }
            catch (Exception e)
            {
                log.Error(new MDCSet(this.ControllerContext.RouteData), e);
                return(InternalServerError(e));
            }
        }
        public async Task <Comunidad> Update(Comunidad model)
        {
            try
            {
                var _model = await _db.DbSetComunidades.FirstOrDefaultAsync(e => e.ComunidadId == model.ComunidadId);

                if (_model != null)
                {
                    //Cuando se elimina el adjunto en modo edicion
                    if (model.idAjunto != null)
                    {
                        int id = Convert.ToInt32(model.idAjunto);
                        model.idAjunto = null;
                        _db.Entry(_model).CurrentValues.SetValues(model);
                        await _db.SaveChangesAsync();

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

                        model.idAjunto          = key.AdjuntoId;
                        model.Adjunto.AdjuntoId = key.AdjuntoId;
                        String file    = string.Empty;
                        var    archivo = model.Adjunto.RutaCompleta;
                        try
                        {
                            Byte[] bytes = File.ReadAllBytes(archivo);
                            file            = Convert.ToBase64String(bytes);
                            model.Adjunto64 = file;
                        }
                        catch (Exception e)
                        {
                            model.Adjunto64 = null;
                        }
                    }
                    _db.Entry(_model).CurrentValues.SetValues(model);
                    await _db.SaveChangesAsync();
                }
                return(model);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
示例#8
0
                                                             public async Task <IHttpActionResult> Update(EstudiosMercado Obj)
                                                             {
                                                                 try { log.Info(new MDCSet(this.ControllerContext.RouteData));
                                                                       if (Obj.Adjunto != null)
                                                                       {
                                                                           //Elimar archivo
                                                                           if (Obj.Adjunto.nombre == "eliminar")
                                                                           {
                                                                               int id = Convert.ToInt32(Obj.AdjuntoId);
                                                                               Obj.AdjuntoId = null;
                                                                               await _repository.Update(Obj);

                                                                               await _adjuntoRepo.Delete(id);

                                                                               return(Ok());
                                                                           }
                                                                           ///Agregar archivo al editar
                                                                           if (Obj.Adjunto.AdjuntoId == 0)
                                                                           {
                                                                               Adjunto key = await _adjuntoRepo.CreateAd(Obj.Adjunto);

                                                                               Obj.AdjuntoId         = key.AdjuntoId;
                                                                               Obj.Adjunto.AdjuntoId = key.AdjuntoId;
                                                                               await _repository.Update(Obj);

                                                                               return(Ok(key));
                                                                           }
                                                                       }
                                                                       //solución de ALAN replicada
                                                                       if (Obj.Adjunto != null)
                                                                       {
                                                                           Obj.AdjuntoId = Obj.Adjunto.AdjuntoId;
                                                                       }
                                                                       await _repository.Update(Obj);

                                                                       return(Ok(Obj)); }
                                                                 catch (Exception e) { log.Error(new MDCSet(this.ControllerContext.RouteData), e);

                                                                                       return(InternalServerError(e)); }
                                                             }
        public async Task DeleteOCWithAutores(int id)
        {
            try
            {
                AutoresCPRepository autor = new AutoresCPRepository();
                var _model = await _db.DbSetTemasInnovacion.FirstOrDefaultAsync(e => e.TemaId == id);

                if (_model != null)
                {
                    var idadjunto = _model.AdjuntoId;
                    //Removemos los autores aociados a ese OC
                    await autor.DeleteAllAutoresByOC(1, _model.TemaId);

                    var infoAgregada = await _genContext.dbSetNuevoOC.Where(e => e.descripcion.Equals(_model.Nombre)).FirstOrDefaultAsync();

                    if (infoAgregada != null)
                    {
                        await repo.Delete(infoAgregada.NuevoOCId);
                    }


                    //Removemos el OC
                    _db.DbSetTemasInnovacion.Remove(_model);
                    await _db.SaveChangesAsync();

                    //Removemos el adjunto asociado
                    if (idadjunto != null)
                    {
                        AdjuntoRepository adjuntoRepository = new AdjuntoRepository();
                        await adjuntoRepository.Delete(idadjunto);
                    }
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
示例#10
0
        public async Task Update(Lineamientos model)
        {
            try
            {
                var _model = await _db.DbSetLineamientos.FirstOrDefaultAsync(e => e.LineamientoId == model.LineamientoId);

                if (_model != null)
                {
                    if (model.Adjunto != null)
                    {
                        if (_model.AdjuntoId != null)
                        {
                            var id = _model.AdjuntoId;
                            _model.AdjuntoId = null;
                            await _db.SaveChangesAsync();

                            await _adjuntoRepo.Delete(id);
                        }

                        Adjunto key = await _adjuntoRepo.CreateAd(model.Adjunto);

                        model.AdjuntoId = key.AdjuntoId;
                    }
                    else
                    {
                        model.AdjuntoId = null;
                    }
                    _db.Entry(_model).CurrentValues.SetValues(model);
                    await _db.SaveChangesAsync();
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
示例#11
0
                                                         public async Task Update(TesisDirigida TD)// UpdateSolicitud
                                                         {
                                                             try
                                                             {
                                                                 if (TD.EstadoFlujoId == 1 && TD.BecarioDirigidoId != null)
                                                                 {
                                                                     var becario = await _ctx.BecarioDirigido.FirstOrDefaultAsync(e => e.BecarioDirigidoId == TD.BecarioDirigidoId);

                                                                     if (becario != null)
                                                                     {
                                                                         becario.EstadoFlujoId = 2;
                                                                         await _ctx.SaveChangesAsync();
                                                                     }
                                                                 }
                                                                 if (TD.EstadoFlujoId == 3 && TD.BecarioDirigidoId != null)
                                                                 {
                                                                     var becario = await _ctx.BecarioDirigido.FirstOrDefaultAsync(e => e.BecarioDirigidoId == TD.BecarioDirigidoId);

                                                                     if (becario != null)
                                                                     {
                                                                         becario.EstadoFlujoId   = 3;
                                                                         becario.AdjuntoId       = TD.AdjuntoId;
                                                                         becario.NombreBecario   = TD.Autor;
                                                                         becario.TesisDirigidaId = TD.TesisDirigidaId;
                                                                         becario.ClavePersona    = TD.ClavePersona;
                                                                         becario.FechaInicio     = TD.FechaInicio;
                                                                         becario.FechaTermino    = TD.FechaTermino;
                                                                         //becario.FechaTermino = TD.FechaTermino;
                                                                         becario.TipoBecaId      = TD.GradoAcademicoId;
                                                                         becario.NombreEstancia  = TD.Titulo;
                                                                         becario.FechaValidacion = TD.FechaValidacion;
                                                                         await _ctx.SaveChangesAsync();
                                                                     }
                                                                 }

                                                                 ////Agregar a OC
                                                                 if (TD.EstadoFlujoId == 3)
                                                                 {
                                                                     await new NuevoOCRepository().Create(
                                                                         new NuevoOC("CH",
                                                                                     "TesisDirigida",
                                                                                     TD.Titulo,
                                                                                     "IndexCH.html#/detallestesisdirigida/" + TD.TesisDirigidaId + "/",
                                                                                     TD.TesisDirigidaId + ""
                                                                                     ));
                                                                 }
                                                                 /////////////////

                                                                 var result = await _ctx.TesisDirigida.FirstOrDefaultAsync(e => e.TesisDirigidaId == TD.TesisDirigidaId);

                                                                 if (TD.EstadoFlujoId == 1 && result.EstadoFlujoId == 3)
                                                                 {
                                                                     await new NuevoOCRepository().DeleteId("TesisDirigida", TD.TesisDirigidaId + "");
                                                                 }
                                                                 if (result != null)
                                                                 {
                                                                     if (TD.Adjunto != null)
                                                                     {
                                                                         //Eliminar archivo
                                                                         AdjuntoRepository adjuntoRepo = new AdjuntoRepository();
                                                                         if (TD.Adjunto.nombre == "eliminar")
                                                                         {
                                                                             int id = Convert.ToInt32(TD.Adjunto.AdjuntoId);
                                                                             result.AdjuntoId = null;
                                                                             await _ctx.SaveChangesAsync();

                                                                             await adjuntoRepo.Delete(id);
                                                                         }
                                                                         ///Agregar archivo al editar
                                                                         if (TD.Adjunto.AdjuntoId == 0)
                                                                         {
                                                                             if (result.AdjuntoId != null)
                                                                             {
                                                                                 var id = result.AdjuntoId;
                                                                                 result.AdjuntoId = null;
                                                                                 await _ctx.SaveChangesAsync();

                                                                                 await adjuntoRepo.Delete(id);
                                                                             }
                                                                             Adjunto key = await adjuntoRepo.CreateAd(TD.Adjunto);

                                                                             TD.AdjuntoId         = key.AdjuntoId;
                                                                             TD.Adjunto.AdjuntoId = key.AdjuntoId;
                                                                         }
                                                                     }
                                                                     _ctx.Entry(result).CurrentValues.SetValues(TD);

                                                                     await _ctx.SaveChangesAsync();
                                                                 }

                                                                 PersonasRepository prep = new PersonasRepository();
                                                                 Personas           p    = await prep.GetByClave(TD.ClavePersona);

                                                                 p.ultimaActualizacion = DateTime.Now;
                                                                 await prep.Update(p);
                                                             }
                                                             catch (Exception e)
                                                             {
                                                                 throw new Exception(e.Message, e);
                                                             }
                                                         }
示例#12
0
                                                                      public async Task Update(CapacitacionYcertificacion Obj)// UpdateSolicitud
                                                                      {
                                                                          try
                                                                          {
                                                                              var result = await _ctx.dbSetCapacitacionYcertificacion.FirstOrDefaultAsync(e => e.CapacitacionYcertificacionId == Obj.CapacitacionYcertificacionId);

                                                                              if (result != null)
                                                                              {
                                                                                  if (Obj.Adjunto != null)
                                                                                  {
                                                                                      AdjuntoRepository _adjuntoRepo = new AdjuntoRepository();
                                                                                      //Elimar archivo
                                                                                      if (Obj.Adjunto.nombre == "eliminar")
                                                                                      {
                                                                                          int id = Convert.ToInt32(Obj.AdjuntoId);
                                                                                          result.AdjuntoId = null;
                                                                                          Obj.AdjuntoId    = null;
                                                                                          await _ctx.SaveChangesAsync();

                                                                                          await _adjuntoRepo.Delete(id);
                                                                                      }
                                                                                      ///Agregar archivo al editar
                                                                                      if (Obj.Adjunto.AdjuntoId == 0)
                                                                                      {
                                                                                          if (result.AdjuntoId != null)
                                                                                          {
                                                                                              var id = result.AdjuntoId;
                                                                                              result.AdjuntoId = null;
                                                                                              await _ctx.SaveChangesAsync();

                                                                                              await _adjuntoRepo.Delete(id);
                                                                                          }
                                                                                          Adjunto key = await _adjuntoRepo.CreateAd(Obj.Adjunto);

                                                                                          Obj.AdjuntoId = key.AdjuntoId;
                                                                                      }
                                                                                  }

                                                                                  _ctx.Entry(result).CurrentValues.SetValues(Obj);

                                                                                  await _ctx.SaveChangesAsync();


                                                                                  PersonasRepository prep = new PersonasRepository();
                                                                                  Personas           p    = await prep.GetByClave(Obj.ClavePersona);

                                                                                  p.ultimaActualizacion = DateTime.Now;
                                                                                  await prep.Update(p);
                                                                              }
                                                                          }
                                                                          catch (Exception e)
                                                                          {
                                                                              throw new Exception(e.Message, e);
                                                                          }
                                                                      }
示例#13
0
        public async Task Update(Publicacion Obj)// UpdateSolicitud
        {
            try
            {
                var result = await _ctx.Publicacion.FirstOrDefaultAsync(e => e.PublicacionId == Obj.PublicacionId);

                // if(await ValidarDuplicados(Obj))
                // {
                //     throw new ApplicationException("Intente cambiar la revista asociada, la fecha de publicación o el número de páginas");
                // }
                if (Obj.EstadoFlujoId == 1 && result.EstadoFlujoId == 3)
                {
                    await new NuevoOCRepository().DeleteId("ArtículoCH", result.PublicacionId + "");
                }
                if (result != null)
                {
                    if (Obj.Adjunto != null)
                    {
                        AdjuntoRepository _adjuntoRepo = new AdjuntoRepository();
                        if (Obj.Adjunto.nombre == "eliminar")
                        {
                            int id = Convert.ToInt32(Obj.Adjunto.AdjuntoId);
                            Obj.AdjuntoId = null;
                            _ctx.Entry(result).CurrentValues.SetValues(Obj);
                            await _ctx.SaveChangesAsync();

                            await _adjuntoRepo.Delete(id);
                        }
                        ///Agregar archivo al editar
                        if (Obj.Adjunto.AdjuntoId == 0)
                        {
                            if (result.AdjuntoId != null)
                            {
                                var id = result.AdjuntoId;
                                Obj.AdjuntoId = null;
                                _ctx.Entry(result).CurrentValues.SetValues(Obj);
                                await _ctx.SaveChangesAsync();

                                await _adjuntoRepo.Delete(id);
                            }
                            Adjunto key = await _adjuntoRepo.CreateAd(Obj.Adjunto);

                            Obj.AdjuntoId = key.AdjuntoId;
                        }
                    }

                    _ctx.Entry(result).CurrentValues.SetValues(Obj);

                    await _ctx.SaveChangesAsync();
                }

                //if (Obj.EstadoFlujoId == 3)
                //{
                //    await new NuevoOCRepository().Create(
                //    new NuevoOC("MT",
                //               "ARTÍCULO",
                //    Obj.TituloPublicacion,
                //    "indexMT.html#/PublicacionDetails/" + Obj.PublicacionId
                //        ));
                //}


                PersonasRepository prep = new PersonasRepository();
                Personas           p    = await prep.GetByClave(Obj.ClavePersona);

                p.ultimaActualizacion = DateTime.Now;
                await prep.Update(p);
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
                                                              public async Task <IHttpActionResult> Update(PersonalProyecto model)
                                                              {
                                                                  if (!ModelState.IsValid)
                                                                  {
                                                                      return(BadRequest(ModelState));
                                                                  }

                                                                  try { log.Info(new MDCSet(this.ControllerContext.RouteData));
                                                                        if (model.Adjunto != null)
                                                                        {
                                                                            //Elimar archivo
                                                                            if (model.Adjunto.nombre == "eliminar")
                                                                            {
                                                                                int id = Convert.ToInt32(model.AdjuntoId);
                                                                                model.AdjuntoId = null;
                                                                                await _entityRepo.Update(model);

                                                                                await _adjuntoRepo.Delete(id);

                                                                                return(Ok());
                                                                            }
                                                                            ///Agregar archivo al editar
                                                                            if (model.Adjunto.AdjuntoId == 0)
                                                                            {
                                                                                Adjunto key = await _adjuntoRepo.CreateAd(model.Adjunto);

                                                                                model.AdjuntoId         = key.AdjuntoId;
                                                                                model.Adjunto.AdjuntoId = key.AdjuntoId;
                                                                                await _entityRepo.Update(model);

                                                                                return(Ok(key));
                                                                            }
                                                                        }
                                                                        //solución de ALAN replicada
                                                                        if (model.Adjunto != null)
                                                                        {
                                                                            model.AdjuntoId = model.Adjunto.AdjuntoId;
                                                                        }
                                                                        await _entityRepo.Update(model);

                                                                        return(Ok(model)); }
                                                                  catch (Exception e) { log.Error(new MDCSet(this.ControllerContext.RouteData), e);
                                                                                        return(InternalServerError(e)); }
                                                              }
示例#15
0
        public async Task Update(Capitulos model)
        {
            try
            {
                var _model = await _db.dbSetCapitulos.FirstOrDefaultAsync(e => e.CapitulosId == model.CapitulosId);

                if (_model != null)
                {
                    foreach (var item in model.EditoresCapitulo)
                    {
                        if (item.EditoresCapituloId == 0)
                        {
                            var result = _db.dbSetEditoresCapitulo.Add(item);
                            await _db.SaveChangesAsync();
                        }
                        else
                        {
                            if (item.Editor_Nombre.Equals("eliminar"))
                            {
                                var result = await _db.dbSetEditoresCapitulo.FirstOrDefaultAsync(e => e.EditoresCapituloId == item.EditoresCapituloId);

                                if (result != null)
                                {
                                    _db.dbSetEditoresCapitulo.Remove(result);
                                    await _db.SaveChangesAsync();
                                }
                            }
                        }
                    }

                    foreach (var item in model.AutorExternoCapitulo)
                    {
                        if (item.AutorExternoCapituloId == 0)
                        {
                            var result = _db.dbSetAutorExternoCapitulo.Add(item);
                            await _db.SaveChangesAsync();
                        }
                        else
                        {
                            if (item.Nombre.Equals("eliminar"))
                            {
                                var result = await _db.dbSetAutorExternoCapitulo.FirstOrDefaultAsync(e => e.AutorExternoCapituloId == item.AutorExternoCapituloId);

                                if (result != null)
                                {
                                    _db.dbSetAutorExternoCapitulo.Remove(result);
                                    await _db.SaveChangesAsync();
                                }
                            }
                        }
                    }

                    foreach (var item in model.AutorInternoCapitulo)
                    {
                        if (item.AutorInternoCapituloId == 0)
                        {
                            var result = _db.dbSetAutorInternoCapitulo.Add(item);
                            await _db.SaveChangesAsync();
                        }
                        else
                        {
                            if (item.NombreCompleto.Equals("eliminar"))
                            {
                                var result = await _db.dbSetAutorInternoCapitulo.FirstOrDefaultAsync(e => e.AutorInternoCapituloId == item.AutorInternoCapituloId);

                                if (result != null)
                                {
                                    _db.dbSetAutorInternoCapitulo.Remove(result);
                                    await _db.SaveChangesAsync();
                                }
                            }
                        }
                    }


                    if (model.Adjunto != null)
                    {
                        try
                        {
                            AdjuntoRepository adjuntoRepo = new AdjuntoRepository();

                            if (_model.AdjuntoId != null)  //Elimina el adjunto anterior (el que esta en la base de datos)
                            {
                                var id = _model.AdjuntoId;
                                _model.AdjuntoId = null;

                                await _db.SaveChangesAsync();

                                await adjuntoRepo.Delete(id);

                                await _dbGen.SaveChangesAsync();
                            }

                            var adjunto = await adjuntoRepo.CreateAd(model.Adjunto);

                            model.AdjuntoId = adjunto.AdjuntoId;
                            //await _dbGen.SaveChangesAsync();

                            if (model.EstadoFlujoId == 3)
                            {
                                await new NuevoOCRepository().Create(
                                    new NuevoOC("MT", "CAPITULO", model.TituloCapitulo,
                                                "indexMT.html#/CapituloDetails/" + model.CapitulosId
                                                ));
                            }
                        }
                        catch (Exception e)
                        {
                            throw new Exception(e.Message, e);
                        }
                    }
                    _db.Entry(_model).CurrentValues.SetValues(model);
                    await _db.SaveChangesAsync();


                    PersonasRepository prep = new PersonasRepository();
                    Personas           p    = await prep.GetByClave(model.ClavePersona);

                    p.ultimaActualizacion = DateTime.Now;
                    await prep.Update(p);
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }