Пример #1
0
        public async Task <ActionResult <SalPermisoLista> > PutUsuarioMuro(EntPermisoRelacion permisoRelacion)
        {
            permisoRelacion.Correo = permisoRelacion.Correo.Trim();

            // Se valida que el muro pertenezca al usuario que inició sesión...
            UsuarioMuro usuarioMuro = await _context.UsuarioMuro
                                      .SingleOrDefaultAsync(um =>
                                                            um.IdMuro == permisoRelacion.IdMuro &&
                                                            um.IdDuenno == Conectado.ID(this) &&
                                                            um.Permiso == 1
                                                            );

            if (usuarioMuro == null)
            {
                ModelState.AddModelError(
                    nameof(permisoRelacion.IdMuro),
                    "El muro ingresado no existe, o no te pertenece.");
                return(ValidationProblem());
            }

            // Se valida que exista la relación que se está tratando de modificar...
            usuarioMuro = await _context.UsuarioMuro
                          .Include(um => um.IdDuennoNavigation)
                          .SingleOrDefaultAsync(um =>
                                                um.IdDuennoNavigation.Correo == permisoRelacion.Correo &&
                                                um.IdMuro == permisoRelacion.IdMuro &&
                                                um.Permiso != 1
                                                );

            if (usuarioMuro == null)
            {
                ModelState.AddModelError(
                    nameof(permisoRelacion.Correo),
                    "El permiso que se quiere modificar no existe.");
                return(ValidationProblem());
            }

            // Se cambia el permiso de la relación...
            usuarioMuro.Permiso = permisoRelacion.Permiso;
            await _context.SaveChangesAsync();

            SalPermisoLista salida = new SalPermisoLista()
            {
                IdUsuario     = usuarioMuro.IdDuenno,
                NombreUsuario = usuarioMuro.IdDuennoNavigation.Nombre,
                CorreoUsuario = usuarioMuro.IdDuennoNavigation.Correo,
                Permiso       = usuarioMuro.Permiso
            };

            return(salida);
        }
Пример #2
0
        public async Task <ActionResult <SalPermisoLista> > PostUsuarioMuro(EntPermisoRelacion permisoRelacion)
        {
            permisoRelacion.Correo = permisoRelacion.Correo.Trim();

            // Se valida que el muro pertenezca al usuario que inició sesión...
            UsuarioMuro usuarioMuro = await _context.UsuarioMuro
                                      .SingleOrDefaultAsync(um =>
                                                            um.IdMuro == permisoRelacion.IdMuro &&
                                                            um.IdDuenno == Conectado.ID(this) &&
                                                            um.Permiso == 1
                                                            );

            if (usuarioMuro == null)
            {
                ModelState.AddModelError(
                    nameof(permisoRelacion.IdMuro),
                    "El muro ingresado no existe, o no te pertenece.");
                return(ValidationProblem());
            }

            // Se valida que el correo ingresado este registrado, y no sea el mismo del usuario que inició sesión...
            Usuario usuario = await _context.Usuario.SingleOrDefaultAsync(u =>
                                                                          u.Correo == permisoRelacion.Correo &&
                                                                          u.Id != Conectado.ID(this));

            if (usuario == null)
            {
                ModelState.AddModelError(
                    nameof(permisoRelacion.Correo),
                    "El correo ingresado no es válido.");
                return(ValidationProblem());
            }

            // Se valida que la relación Muro/Usuario no existiese de antes...
            usuarioMuro = await _context.UsuarioMuro
                          .SingleOrDefaultAsync(um =>
                                                um.IdMuro == permisoRelacion.IdMuro &&
                                                um.IdDuenno == usuario.Id
                                                );

            if (usuarioMuro != null)
            {
                ModelState.AddModelError(
                    nameof(permisoRelacion.Correo),
                    "El usuario ingresado ya tiene permisos sobre el muro.");
                return(ValidationProblem());
            }

            // Se crea la nueva relación...
            usuarioMuro = new UsuarioMuro {
                IdDuenno = usuario.Id,
                IdMuro   = permisoRelacion.IdMuro,
                Permiso  = permisoRelacion.Permiso
            };
            await _context.UsuarioMuro.AddAsync(usuarioMuro);

            await _context.SaveChangesAsync();

            SalPermisoLista salida = new SalPermisoLista()
            {
                IdUsuario     = usuarioMuro.IdDuenno,
                NombreUsuario = usuario.Nombre,
                CorreoUsuario = usuario.Correo,
                Permiso       = usuarioMuro.Permiso
            };

            return(salida);
        }