public async Task <IHttpActionResult> Update([FromBody] ProductoGISolicitud model)
        {
            try
            {
                await _repo.Update(model);

                return(Ok("Registro actualizado exitosamente!"));
            }
            catch (Exception e)
            {
                return(InternalServerError(e));
            }
        }
        public async Task Create(ProductoGISolicitud model)
        {
            try
            {
                if (model.ProductoId < 1)
                {
                    throw new Exception("No se recuperó ProductoId");
                }

                var fecha = DateTime.Now;
                if (model != null && model.ProductoGISolicitudArchivosInnovacion != null && model.ProductoGISolicitudArchivosInnovacion.Count() > 0)
                {
                    foreach (var a in model.ProductoGISolicitudArchivosInnovacion)
                    {
                        a.Fecha = fecha;
                    }
                }

                if (model != null && model.ProductoGISolicitudArchivosFase != null && model.ProductoGISolicitudArchivosFase.Count() > 0)
                {
                    foreach (var a in model.ProductoGISolicitudArchivosFase)
                    {
                        a.Fecha = fecha;
                    }
                }

                if (model != null && model.ProductoGISolicitudArchivosSuperior != null && model.ProductoGISolicitudArchivosSuperior.Count() > 0)
                {
                    foreach (var a in model.ProductoGISolicitudArchivosSuperior)
                    {
                        a.Fecha = fecha;
                    }
                }
                model.FechaRegistro = fecha;
                dbGI.DbSetProductoGISolicitud.Add(model);
                await dbGI.SaveChangesAsync();

                ProductoGIRepository repoProducto = new ProductoGIRepository(dbGI);
                var producto = await repoProducto.GetById(model.ProductoId);

                if (producto != null)
                {
                    await repoProducto.UpdateEstadoComite(producto, 16);
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
        private async Task UpdateArchivosInnovacion(ProductoGISolicitud model)
        {
            try
            {
                var _model = await dbGI.DbSetProductoGISolicitud
                             .Where(e => e.Id == model.Id)
                             .Include(x => x.ProductoGISolicitudArchivosInnovacion)
                             .FirstOrDefaultAsync();

                if (_model != null)
                {
                    if (model.ProductoGISolicitudArchivosInnovacion != null && model.ProductoGISolicitudArchivosInnovacion.Count() > 0)
                    {
                        ProductoGISolicitudArchivosInnovacionRepository gerDB = new ProductoGISolicitudArchivosInnovacionRepository(dbGI);
                        var fecha = DateTime.Now;
                        foreach (var e in model.ProductoGISolicitudArchivosInnovacion)
                        {
                            if (e.Id < 1)//nuevo
                            {
                                e.Fecha = fecha;
                                e.ProductoGISolicitudId = model.Id;
                                await gerDB.Create(e);
                            }
                            else
                            {
                                if (e.Adjunto != null && e.Adjunto.nombre.Equals("eliminar"))
                                {
                                    await gerDB.Delete(e.Id);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }
        public async Task Update(ProductoGISolicitud model)
        {
            try
            {
                var _model = await dbGI.DbSetProductoGISolicitud.FirstOrDefaultAsync(e => e.Id == model.Id);

                if (_model != null)
                {
                    dbGI.Entry(_model).CurrentValues.SetValues(model);
                    await dbGI.SaveChangesAsync();

                    await this.UpdateArchivosSuperior(model);

                    await this.UpdateArchivosFase(model);

                    await this.UpdateArchivosInnovacion(model);
                }
            }
            catch (Exception e)
            {
                throw new Exception(e.Message, e);
            }
        }