public ActionResult EditarUsuario(int?Id)
        {
            if (Id == null)
            {
                return(View("UsuarioNoEncontrado"));
            }

            int ClienteId = GetClienteSeleccionado();

            Usuario usuario             = usuarioRepository.GetUsuarioInClientById((int)Id, ClienteId);
            List <ReportingRoles> roles = usuarioRepository.GetRolesDeCliente(ClienteId);

            if (usuario != null)
            {
                ConfUsuarioVM model = new ConfUsuarioVM()
                {
                    Apellido   = usuario.Apellido,
                    Nombre     = usuario.Nombre,
                    Email      = usuario.Email,
                    Id         = usuario.IdUsuario,
                    Telefono   = usuario.Telefono,
                    EsCheckPos = usuario.esCheckPos,
                    Imagenb64  = usuario.imagen,
                    PermiteModificarCalendario = usuario.PermiteModificarCalendario
                };

                var usucliente = usuario.Usuario_Cliente.FirstOrDefault(uc => uc.IdCliente == ClienteId);

                if (usucliente != null && usucliente.Rol != null)
                {
                    model.RolId = usucliente.Rol.id;
                }

                model.RoleList.Add(new SelectListItem()
                {
                    Text  = Resources.Configuracion.seleccionUnRol,
                    Value = "0"
                });

                foreach (var r in roles)
                {
                    model.RoleList.Add(new SelectListItem()
                    {
                        Text  = r.nombre,
                        Value = r.id.ToString()
                    });
                }

                return(View(model));
            }
            else
            {
                return(View("UsuarioNoEncontrado"));
            }
        }
        public ActionResult EditarUsuario(ConfUsuarioVM model)
        {
            try
            {
                var validImageTypes = new string[]
                {
                    "image/gif",
                    "image/jpeg",
                    "image/jpg",
                    "image/pjpeg",
                    "image/png",
                    "image/bmp"
                };


                if (model.Imagen != null && !validImageTypes.Contains(model.Imagen.ContentType))
                {
                    ModelState.AddModelError("Err_Imagen_FileType", Resources.Configuracion.errFormatoImagen);
                }

                if (model.Imagen != null && model.Imagen.InputStream.Length > 512000)
                {
                    ModelState.AddModelError("Err_Imagen_FileSize", Resources.Configuracion.errImagenSize);
                }

                int ClienteId = GetClienteSeleccionado();
                List <ReportingRoles> roles = usuarioRepository.GetRolesDeCliente(ClienteId);
                model.RoleList.Add(new SelectListItem()
                {
                    Text  = Resources.Configuracion.seleccionUnRol,
                    Value = "0"
                });
                foreach (var r in roles)
                {
                    model.RoleList.Add(new SelectListItem()
                    {
                        Text  = r.nombre,
                        Value = r.id.ToString()
                    });
                }


                if (ModelState.IsValid)
                {
                    Usuario usuario = usuarioRepository.GetUsuarioById(model.Id);

                    usuario.Nombre     = model.Nombre;
                    usuario.Apellido   = model.Apellido;
                    usuario.Telefono   = model.Telefono;
                    usuario.esCheckPos = model.EsCheckPos;
                    usuario.PermiteModificarCalendario = model.PermiteModificarCalendario;

                    if (model.Imagen != null)
                    {
                        byte[] binaryData = new byte[model.Imagen.InputStream.Length];
                        long   bytesRead  = model.Imagen.InputStream.Read(binaryData, 0, (int)model.Imagen.InputStream.Length);
                        model.Imagen.InputStream.Close();
                        string b64 = Convert.ToBase64String(binaryData, 0, binaryData.Length);

                        if (!string.IsNullOrEmpty(b64))
                        {
                            usuario.imagen  = b64;
                            model.Imagenb64 = b64;
                        }
                    }

                    if (usuarioRepository.EdicionUsuarioPerfil(ClienteId, usuario, model.RolId))
                    {
                        ViewBag.Success = true;
                        return(View(model));
                    }
                    else
                    {
                        ViewBag.Error        = true;
                        ViewBag.ErrorMessage = Resources.Configuracion.reviseSiDatosSonCorrectos;
                        return(View(model));
                    }
                }
                else
                {
                    ViewBag.Error        = true;
                    ViewBag.ErrorMessage = Resources.Configuracion.reviseSiDatosSonCorrectos;
                    return(View(model));
                }
            }
            catch
            {
                return(View("Error"));
            }
        }