示例#1
0
        public ActionResult Edit(HttpPostedFileBase file, Institucion escuela)
        {
            if (!esAdmin() || escuela == null) // -TODO- Agregar validacion para usuarios
            {
                RedirectTo(Pagina.HOME);
            }

            limpiarErroresViewBag();

            if (!esAdmin() && !revisaCaptcha())
            {
                ViewBag.errorCaptcha = true;
                return(View(escuela));
            }

            if (!ModelState.IsValid)
            {
                return(View(escuela));
            }

            // Validaciones logo
            if (file != null)
            {
                Utilities.Archivos.ResultadoImagen resultado = Utilities.Archivos.esImagenValida(file);
                if (resultado != Utilities.Archivos.ResultadoImagen.VALIDA)
                {
                    ViewBag.errorImagen = resultado.ToString().ToLower();
                    return(View(escuela));
                }
                escuela.logo = Utilities.Archivos.guardaArchivo(file, Path.GetFileNameWithoutExtension(file.FileName) + ".png");
            }

            // Se guardan los datos
            if (escuela.guardar(generarPeticiones: !esAdmin()))
            {
                if (esAdmin())
                {
                    if (file != null)
                    {
                        Utilities.Archivos.copiarArchivo(escuela.logo, Utilities.Archivos.Folder.TEMPORAL,
                                                         escuela.clave.ToString(), Utilities.Archivos.Folder.ESCUELAS);
                        Utilities.Archivos.eliminarArchivo(escuela.logo, Utilities.Archivos.Folder.TEMPORAL);
                    }

                    guardarParams(Pagina.SAVED_ESCUELA, OK);
                    return(RedirectTo(Pagina.SAVED_ESCUELA, escuela.nombreURL));
                }

                guardarParams(Pagina.SAVED_ESCUELA, ADMIN);
                return(RedirectTo(Pagina.SAVED_ESCUELA, escuela.nombreURL));
            }
            else
            {
                guardarParams(Pagina.SAVED_ESCUELA, ERROR);
                return(RedirectTo(Pagina.SAVED_ESCUELA, escuela.nombreURL));
            }
        }
示例#2
0
        public ActionResult Edit(Olimpiada omi, string clave, string poster, HttpPostedFileBase fileLogo, HttpPostedFileBase filePoster)
        {
            if (!esAdmin() || omi == null)
            {
                return(RedirectTo(Pagina.HOME));
            }

            Olimpiada o = Olimpiada.obtenerOlimpiadaConClave(clave, omi.tipoOlimpiada);

            if (o == null)
            {
                return(RedirectTo(Pagina.ERROR, 404));
            }

            limpiarErroresViewBag();
            ViewBag.clave  = clave;
            ViewBag.poster = poster;
            omi.poster     = poster;

            omi.copiarDatosPrecalculados(o);

            if (!ModelState.IsValid)
            {
                return(View(omi));
            }

            if (omi.numero.Trim().Length == 0 || omi.numero == Olimpiada.TEMP_CLAVE)
            {
                ViewBag.errorOMI = true;
                return(View(omi));
            }

            Estado e = Estado.obtenerEstadoConClave(omi.claveEstado);

            if (e == null)
            {
                ViewBag.errorEstado = true;
                return(View(omi));
            }

            if (fileLogo != null)
            {
                Utilities.Archivos.ResultadoImagen resultadoLogo = Utilities.Archivos.esImagenValida(fileLogo);
                if (resultadoLogo != Utilities.Archivos.ResultadoImagen.VALIDA)
                {
                    ViewBag.errorImagen = resultadoLogo.ToString().ToLower();
                    return(View(omi));
                }
            }

            if (filePoster != null)
            {
                Utilities.Archivos.ResultadoImagen resultadoPoster = Utilities.Archivos.esImagenValida(filePoster, allowContainer: true);
                if (resultadoPoster != Utilities.Archivos.ResultadoImagen.VALIDA)
                {
                    ViewBag.errorInfo = resultadoPoster.ToString().ToLower();
                    return(View(omi));
                }
                omi.poster = filePoster.FileName;
            }

            if (!omi.guardarDatos(clave: clave))
            {
                ViewBag.errorGuardar = true;
                return(View(omi));
            }

            if (fileLogo != null)
            {
                Utilities.Archivos.guardaArchivo(fileLogo, omi.numero + ".png",
                                                 Utilities.Archivos.Folder.OLIMPIADAS);
            }

            if (filePoster != null)
            {
                Utilities.Archivos.guardaArchivo(filePoster, filePoster.FileName,
                                                 Utilities.Archivos.Folder.POSTERS);
            }

            ViewBag.guardado = true;
            Log.add(Log.TipoLog.ADMIN, o.tipoOlimpiada + " " + o.año + " actualizada por admin " + getUsuario().nombreCompleto);

            return(View(omi));
        }
示例#3
0
        public ActionResult Edit(HttpPostedFileBase file, Estado estado)
        {
            if (!estaLoggeado() || estado == null)
            {
                RedirectTo(Pagina.HOME);
            }

            Estado e = Estado.obtenerEstadoConClave(estado.clave);

            if (e == null)
            {
                return(RedirectTo(Pagina.ERROR, 404));
            }

            Persona p = getUsuario();

            if (!(esAdmin() || p.clave == e.claveDelegado))
            {
                RedirectTo(Pagina.HOME);
            }

            limpiarErroresViewBag();

            if (!String.IsNullOrEmpty(estado.nombreDelegado) || !String.IsNullOrEmpty(estado.mailDelegado))
            {
                ViewBag.delegadoModificado = true;
                if (String.IsNullOrEmpty(estado.nombreDelegado))
                {
                    ViewBag.errorUsuario = ERROR;
                    return(View(estado));
                }
                if (String.IsNullOrEmpty(estado.mailDelegado))
                {
                    ViewBag.errorMail = ERROR;
                    return(View(estado));
                }
            }
            else
            {
                ViewBag.delegadoModificado = false;
            }

            if (!ModelState.IsValid)
            {
                return(View(estado));
            }

            // Validaciones logo
            if (file != null)
            {
                Utilities.Archivos.ResultadoImagen resultado = Utilities.Archivos.esImagenValida(file);
                if (resultado != Utilities.Archivos.ResultadoImagen.VALIDA)
                {
                    ViewBag.errorImagen = resultado.ToString().ToLower();
                    return(View(estado));
                }
            }

            if (ViewBag.delegadoModificado)
            {
                estado.delegado = Persona.obtenerPersonaConNombre(estado.nombreDelegado);
                if (estado.delegado == null)
                {
                    estado.delegado = new Persona();
                    estado.delegado.breakNombre(estado.nombreDelegado);
                    estado.delegado.correo = estado.mailDelegado;
                    estado.delegado.nuevoUsuario(Utilities.Archivos.FotoInicial.DOMI);

                    Peticion pe = new Peticion();
                    pe.tipo    = Peticion.TipoPeticion.USUARIO;
                    pe.usuario = estado.delegado;
                }
            }
            else
            {
                estado.delegado = null;
            }

            // Regresando los valores que solo super usuarios deberían de poder modificar
            // * JUST IN CASE *
            if (!getUsuario().esSuperUsuario())
            {
                estado.nombre = e.nombre;
                estado.ISO    = e.ISO;
            }

            if (!estado.guardar())
            {
                return(RedirectTo(Pagina.ERROR, 500));
            }

            if (file != null)
            {
                Utilities.Archivos.guardaArchivo(file, e.clave + ".png", Utilities.Archivos.Folder.ESTADOS);
            }

            ViewBag.guardado = true;
            return(View(estado));
        }