예제 #1
0
        public ActionResult Eliminar(int id)
        {
            string rutaLog = HttpContext.Server.MapPath("/App_Data/Log.txt");
            //Utilerias.EscribirLog(rutaLog, "Usuario: " + Sesion.Current.Usuario.Nombre + " quiere eliminar archivo con id: " + id + ".");

            var str   = new StringBuilder();
            var error = "";

            str.Append("{");
            str.Append("\"Eliminado\":");

            try
            {
                // Crear carpeta eliminados si no existe.
                string rutaEliminados = UtilSVN.ObtenerRutaCopiaTrabajo() + @"\Eliminados";
                bool   creado         = Utilerias.CrearRuta(rutaEliminados);

                // Obtener el usuario logueado
                var usr = Sesion.Current.Usuario;

                // Si se acaba de crear hacer un commit indicándolo.
                if (creado)
                {
                    UtilSVN.AgregarArchivo(@"\Eliminados", usr.Nombre);
                }

                if (id > 0)
                {
                    var       pd            = new PerDocumento();
                    Documento doc           = pd.Obtener(id);
                    string    rutaCarpetas  = @"\" + doc.Departamento.Nombre + @"\" + doc.Area.Nombre;
                    string    rutaEliminado = rutaEliminados + rutaCarpetas;

                    // Crear carpetas de departamento y area dentro de eliminados, y agregarlas al SVN.
                    Utilerias.CrearRuta(rutaEliminado);
                    UtilSVN.AgregarArchivo(@"\Eliminados" + rutaCarpetas, usr.Nombre);

                    rutaEliminado = rutaEliminado + @"\" + doc.Nombre;

                    // Commit eliminación.
                    string msjEliminarArchivo = UtilSVN.EliminarArchivo(doc.Ruta, rutaEliminado, rutaCarpetas + @"\" + doc.Nombre, usr.Nombre);

                    if (msjEliminarArchivo == "Exito")
                    {
                        long revEliminado = UtilSVN.ObtenerUltimaRevision();
                        Debug.WriteLine("revEliminado: " + revEliminado);

                        // Desactivar el registro de la base.
                        pd.Eliminar(id, rutaEliminado, revEliminado);

                        str.Append("1");
                    }
                    else
                    {
                        str.Append("0");
                        error += msjEliminarArchivo;
                    }
                }
                else
                {
                    str.Append("0");
                    error += "Error al eliminar el archivo: Id = 0";
                }
            }
            catch (Exception ex)
            {
                error += "Error al eliminar el archivo: " + ex.Message;
                Debug.WriteLine(ex.ToString());
                //Utilerias.EscribirLog(rutaLog, ex.ToString());

                str.Append("0");
            }

            str.Append(",");
            str.Append("\"Error\":");
            str.Append("\"" + error + "\"");
            str.Append("}");

            Debug.WriteLine("str: " + str.ToString());

            return(Json(str.ToString(), JsonRequestBehavior.AllowGet));
        }
예제 #2
0
        public ActionResult Nuevo(Documento doc, HttpPostedFileBase archivo)
        {
            string rutaLog = HttpContext.Server.MapPath("/App_Data/Log.txt");

            //Utilerias.EscribirLog(rutaLog, "Usuario: " + Sesion.Current.Usuario.Nombre + " quiere crear un nuevo archivo.");

            ViewBag.Departamento = new PerDepartamento().ObtenerActivos();
            ViewBag.Area         = null;

            ActionResult ar = RedirectToAction("Index");

            var job = new JObject();

            job["Error"]   = true;
            job["Clase"]   = this.GetType().Name;
            job["Metodo"]  = System.Reflection.MethodBase.GetCurrentMethod().Name;
            job["Mensaje"] = "";

            if (archivo == null || archivo.ContentLength == 0)
            {
                job["Mensaje"]    += "Error al subir el archivo: El archivo esta vacío";
                ViewBag.validacion = job;
                ar = View(doc);

                return(ar);
            }

            string nombreArchivo = Path.GetFileName(archivo.FileName);

            if (doc != null)
            {
                var error = false;

                // Checar si no existe un documento con el mismo nombre en esta area y departamento.
                var lst = new PerDocumento().ObtenerTodosArea(doc.IdArea.GetValueOrDefault());

                foreach (var documento in lst)
                {
                    if (documento.Nombre == nombreArchivo)
                    {
                        error = true;
                        break;
                    }
                }

                if (error)
                {
                    job["Mensaje"]    += "El nombre de archivo ya existe en esta área.";
                    ViewBag.validacion = job;
                    ar = View(doc);

                    return(ar);
                }

                try
                {
                    // Crear carpetas si no existen.
                    Departamento depa = new PerDepartamento().Obtener(doc.IdDepartamento.GetValueOrDefault());
                    Area         area = new PerArea().Obtener(doc.IdArea.GetValueOrDefault());

                    string depaArea = @"\" + depa.Nombre + @"\" + area.Nombre;
                    string ruta     = UtilSVN.ObtenerRutaCopiaTrabajo() + depaArea;
                    Utilerias.CrearRuta(ruta);

                    // Guardar en el servidor.
                    ruta = Path.Combine(ruta, nombreArchivo);
                    Debug.WriteLine("ruta al guardar archivo: " + ruta);
                    archivo.SaveAs(ruta);

                    // Obtener el usuario logueado
                    var usr = Sesion.Current.Usuario;

                    // Agregar archivo en el SVN.
                    string msjAgregarArchivo = UtilSVN.AgregarArchivo(depaArea + nombreArchivo, usr.Nombre);

                    if (msjAgregarArchivo == "Exito")
                    {
                        doc.Nombre = nombreArchivo;
                        doc.Ruta   = ruta;

                        // Crear UID.
                        int    conta;
                        string uid = Utilerias.CrearUID(doc.IdDepartamento.GetValueOrDefault(), doc.IdArea.GetValueOrDefault(), out conta);

                        doc.UID         = uid;
                        doc.ContadorUID = conta;

                        // Agregar registro a la BD.
                        new PerDocumento().Insertar(doc);

                        job["Error"] = false;
                    }
                    else
                    {
                        job["Mensaje"] += msjAgregarArchivo;
                    }
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.ToString());
                    //Utilerias.EscribirLog(rutaLog, ex.ToString());

                    job["Mensaje"] += "Error al subir el archivo: " + ex.Message;

                    if (ex.InnerException != null)
                    {
                        job["Mensaje"] += " " + ex.InnerException.Message;
                    }

                    ViewBag.validacion = job;
                    ar = View(doc);
                }
            }

            return(ar);
        }