protected string ListaArchivos(int cuentaActivaId, int mes, int año, int etapa, int etapa2 = -1)
        {
            EtapasModel       modelEtapas       = new EtapasModel();
            CuentaActivaModel modelCuentaActiva = new CuentaActivaModel();
            MantenedorModel   modelMantenedor   = new MantenedorModel();

            List <Archivo> archivos = modelEtapas.obtenerArchivosPorCuentaActiva(cuentaActivaId, mes, año);
            CuentaActiva   cuenta   = modelCuentaActiva.obtenerCuentaActivaPorId(cuentaActivaId, mes, año);

            string html = "";

            foreach (var archivo in archivos)
            {
                if (archivo.Estado != 1)
                {
                    Usuario usuarioArchivo = modelMantenedor.ObtenerUsuarioPorId(archivo.UsuarioCreacion);
                    string  img            = string.Format("<img src='/Content/Free-file-icons/512px/{0}.png' onclick='descargar({1}, {2})'>", archivo.Extension, archivo.Id, archivo.Version);
                    var     btnEditar      = "";
                    //var botones = "";
                    //botones = ' <a class="btn btn-info blue " onclick="agregarArchivo()">Agregar Archivo</a>< a class="btn btn-info blue " onclick="prepararEnviar()">Enviar a Validaci&oacute;n</a>';

                    if (cuenta.cuentaActivaEstado == etapa || cuenta.cuentaActivaEstado == etapa2)
                    {
                        btnEditar += "<span class='fa fa-edit spanSize'  onclick='obtenerArchivo({3}, {5});'></span> ";
                        btnEditar += "<span class='fa fa-remove spanSizeR'  onclick='eliminarArchivo({3}, {5},  \"{4}\");'></span> ";
                        btnEditar += "<span class='fa fa-files-o spanSizeC' onclick='copiarArchivo({3}, {5})'></span>";
                    }
                    string file = string.Format("{0} " + btnEditar + " <br>{1} <span class='archivoThumbSm'>(v{2})</span>", img, archivo.Nombre, archivo.Version, archivo.Id, archivo.Nombre, archivo.Version);
                    string data = string.Format("{0}<br><span class='archivoThumbSm'>Subido por {2} el {1}</span>", archivo.Comentario, StringHelper.fechaDMA(archivo.Fecha), usuarioArchivo.nombre);
                    html += "<div class='col-sm-4 archivoThumb'><div class='archivoThumbBorder'>";
                    html += "     <div class='archivoThumbFile'>" + file + "</div>";
                    html += "     <div class='archivoThumbData'>" + data + "</div>";
                    html += "</div></div>";
                }
            }


            return(html);
        }
        protected string TimeLine(int cuentaActivaId, int mes, int año)
        {
            EtapasModel       modelEtapas       = new EtapasModel();
            CuentaActivaModel modelCuentaActiva = new CuentaActivaModel();
            MantenedorModel   modelMantenedor   = new MantenedorModel();

            ListaOrdenablePorFecha listaOrden = new ListaOrdenablePorFecha();

            CuentaActiva   cuenta   = modelCuentaActiva.obtenerCuentaActivaPorId(cuentaActivaId, mes, año);
            List <Log>     Logs     = modelEtapas.obtenerLogsPorCuentaActiva(cuenta.cuentaActivaId, mes, año);
            List <Archivo> archivos = modelEtapas.obtenerArchivosVersionPorCuentaActiva(cuenta.cuentaActivaId, mes, año);

            foreach (var archivo in archivos)
            {
                listaOrden.Add(archivo.Fecha, archivo);
            }
            foreach (var log in Logs)
            {
                listaOrden.Add(log.Fecha, log);
            }
            string html   = "";
            string patron = "<li class='timeline-{3}'>";

            patron += "<div class='timeline-icon'><i class='fa {4}'></i></div>";
            patron += "<div class='timeline-body'><div class='timeline-text'>";
            patron += "<div> {0} ({1}) </div>";
            patron += "<div> {2} </div>";
            patron += "</div></div></li>";

            foreach (var objeto in listaOrden.Descendente())
            {
                if (objeto is Archivo)
                {
                    Archivo a = (Archivo)objeto;
                    Usuario u = modelMantenedor.ObtenerUsuarioPorId(a.UsuarioCreacion);
                    if (a.Version == 1)
                    {
                        html += string.Format(patron,
                                              a.Nombre + " (ver." + a.Version + ")",
                                              StringHelper.fechaDMA(a.Fecha),
                                              "Archivo Agregado por " + u.nombre,
                                              "yellow",
                                              "fa-plus"
                                              );
                    }
                    else
                    {
                        html += string.Format(patron,
                                              a.Nombre + " (ver." + a.Version + ")",
                                              StringHelper.fechaDMA(a.Fecha),
                                              "Archivo Actualizado por " + u.nombre,
                                              "purple",
                                              "fa-files-o"
                                              );
                    }
                }
                if (objeto is Log)
                {
                    Log l = (Log)objeto;
                    //Usuario u = modelMantenedor.ObtenerUsuarioPorId();
                    string titulo      = "";
                    string color       = "";
                    string icono       = "";
                    string texto       = "";
                    string descripcion = StringHelper.StripTags(l.Descripcion.Replace("<br>", " "));
                    if (descripcion.Length > 100)
                    {
                        descripcion = descripcion.Substring(0, 97) + "...";
                    }
                    switch (l.EstadoId)
                    {
                    case 1:
                        titulo = "Cuenta Rechazada desde Validaci&oacute;n";
                        color  = "red";
                        icono  = "fa-close";
                        texto  = "Validador: " + cuenta.validador.nombre;
                        break;

                    case 2:
                        titulo = "Cuenta Enviada a Validaci&oacute;n";
                        color  = "green";
                        icono  = "fa-send";
                        texto  = "Analista: " + cuenta.analista.nombre;
                        break;

                    case 4:
                        titulo = "Cuenta Enviada a Validaci&oacute;n";
                        color  = "green";
                        icono  = "fa-send";
                        texto  = "Certificador: " + cuenta.certificador.nombre;
                        break;

                    case 3:
                        titulo = "Cuenta Enviada a Certificación";
                        color  = "green";
                        icono  = "fa-send";
                        texto  = "Validador: " + cuenta.validador.nombre;
                        break;

                    case 5:
                        titulo = "Cuenta Finalizada";
                        color  = "green";
                        icono  = "fa-send";
                        texto  = "Certificador: " + cuenta.certificador.nombre;
                        break;
                    }
                    html += string.Format(patron,
                                          titulo,
                                          StringHelper.fechaDMA(l.Fecha),
                                          texto + "<br>Comentario: " + descripcion,
                                          color,
                                          icono
                                          );
                }
            }

            html += string.Format(patron,
                                  cuenta.nombre + " - " + cuenta.numero,
                                  StringHelper.fechaDMA(cuenta.cuentaActivaFecha),
                                  "Cuenta Asignada a " + cuenta.analista.nombre,
                                  "blue timeline-noline",
                                  "fa-check-square-o"
                                  );

            return(html);
        }