public Task<HttpResponseMessage> CriarVenda(VendaModel model)
        {
            HttpResponseMessage response;
            try
            {
                var venda = Mapper.Map<Venda>(model);
                var usuario = new Usuario
                {
                    UsuarioCodigo = ObterCodigoUsuarioLogado()
                };
                venda.Usuario = usuario;
                _vendaService.CriarVenda(venda);
                response = ReturnSuccess();
            }
            catch (DbEntityValidationException e)
            {
                response = ReturnError(e);
            }
            catch (Exception ex)
            {
                response = ReturnError(ex);
            }

            var tsc = new TaskCompletionSource<HttpResponseMessage>();
            tsc.SetResult(response);
            return tsc.Task;
        }
        public Task<HttpResponseMessage> AlterarSenha(UsuarioModel model)
        {
            HttpResponseMessage response;
            try
            {
                var identity = (ClaimsPrincipal) Thread.CurrentPrincipal;
                var usuarioNome = identity.Claims.Where(c => c.Type == ClaimTypes.GivenName)
                    .Select(c => c.Value).SingleOrDefault();
                var usuario = new Usuario
                {
                    UsuarioNome = usuarioNome,
                    Senha = model.Senha
                };
                _usuarioService.AlterarSenha(usuario);
                response = ReturnSuccess();
            }
            catch (Exception ex)
            {
                response = ReturnError(ex);
            }

            var tsc = new TaskCompletionSource<HttpResponseMessage>();
            tsc.SetResult(response);
            return tsc.Task;
        }
 public void AlterarSenha(Usuario usuario)
 {
     AssertionConcern.AssertArgumentNotEmpty(usuario.UsuarioNome, Erros.InvalidUserName);
     var usuarioAtual = _usuarioRepository.ObterComPermissoesPorUsuarioNome(usuario.UsuarioNome);
     usuarioAtual.Senha = PasswordAssertionConcern.Encrypt(usuario.Senha);
     usuarioAtual.Validar();
     _usuarioRepository.Atualizar(usuarioAtual);
 }
        public Task<HttpResponseMessage> CriarCompra(CompraModel model)
        {
            HttpResponseMessage response;
            try
            {
                var compra = Mapper.Map<Compra>(model);
                var usuario = new Usuario
                {
                    UsuarioCodigo = ObterCodigoUsuarioLogado()
                };
                compra.Usuario = usuario;
                _compraService.CriarCompra(compra);
                response = ReturnSuccess();
            }
            catch (Exception ex)
            {
                response = ReturnError(ex);
            }

            var tsc = new TaskCompletionSource<HttpResponseMessage>();
            tsc.SetResult(response);
            return tsc.Task;
        }
 public void EditarUsuario(Usuario usuario)
 {
     var usuarioAtual = _usuarioRepository.ObterPorCodigoComPermissoesEGrupo(usuario.UsuarioCodigo);
     AssertionConcern.AssertArgumentNotNull(usuarioAtual, Erros.UserDoesNotExist);
     //var grupoAtual = _grupoPermissaoRepository.ObterPorCodigoComPermissao(usuarioAtual.GrupoPermissao.GrupoPermissaoCodigo);
     var grupoAtual = usuarioAtual.GrupoPermissao;
     var novoGrupo =
         _grupoPermissaoRepository.ObterPorCodigoComPermissao(usuario.GrupoPermissao.GrupoPermissaoCodigo);
     AssertionConcern.AssertArgumentNotNull(novoGrupo, Erros.GroupDoesNotExist);
     var permissoes = usuarioAtual.Permissoes.ToList();
     permissoes.RemoveAll(x => grupoAtual.Permissoes.Any(a => a.PermissaoId.Equals(x.PermissaoId)));
     novoGrupo.Permissoes.ToList().ForEach(x =>
     {
         permissoes.Add(x);
     });
     usuarioAtual.Ativo = usuario.Ativo;
     usuarioAtual.UsuarioNome = usuario.UsuarioNome;
     usuarioAtual.Permissoes.Clear();
     usuarioAtual.Permissoes = permissoes;
     usuarioAtual.GrupoPermissao = null;
     usuarioAtual.GrupoPermissao = novoGrupo;
     if (!string.IsNullOrEmpty(usuario.Senha))
     {
         usuarioAtual.Senha = PasswordAssertionConcern.Encrypt(usuario.Senha);
     }
     _usuarioRepository.Atualizar(usuarioAtual);
 }
        public void Registrar(string nome, string senha, string confimaSenha, int codigoGrupo)
        {
            AssertionConcern.AssertArgumentNotEmpty(nome, Erros.InvalidUserName);
            var temUsuario = _usuarioRepository.ObterPorUsuarioNome(nome.ToLower());
            if (temUsuario != null)
            {
                throw new Exception(Erros.DuplicateUserName);
            };
            var temGrupo = _grupoPermissaoRepository.ObterPorCodigoComPermissao(codigoGrupo);
            AssertionConcern.AssertArgumentNotEquals(temGrupo, null, Erros.GroupDoesNotExist);
            var listaPermissao = temGrupo.Permissoes;
            if (!listaPermissao.Any())
            {
                throw new Exception(Erros.PermissionsNotRegistered);
            }

            var usuario = new Usuario()
            {
                UsuarioNome = nome.ToLower(),
                Senha = PasswordAssertionConcern.Encrypt(senha),
                Ativo = true,
                Permissoes = listaPermissao,
                GrupoPermissao = temGrupo
            };

            usuario.Validar();
            _usuarioRepository.Criar(usuario);
        }
 public void Deletar(Usuario usuario)
 {
     _context.Usuarios.Remove(usuario);
     _context.SaveChanges();
 }
 public void Criar(Usuario usuario)
 {
     _context.Usuarios.Add(usuario);
     _context.SaveChanges();
 }
 public void Atualizar(Usuario usuario)
 {
     _context.Entry(usuario).State = System.Data.Entity.EntityState.Modified;
     _context.SaveChanges();
 }
 public void EditarUsuario(Usuario usuario)
 {
     var usuarioAtual = _usuarioRepository.ObterPorCodigoComPermissoesEGrupo(usuario.UsuarioCodigo);
     AssertionConcern.AssertArgumentNotNull(usuarioAtual, Erros.UserDoesNotExist);
     if (usuarioAtual.GrupoPermissao.GrupoPermissaoCodigo != usuario.GrupoPermissao.GrupoPermissaoCodigo)
     {
         var novoGrupo =
         _grupoPermissaoRepository.ObterPorCodigoComPermissoes(usuario.GrupoPermissao.GrupoPermissaoCodigo);
         AssertionConcern.AssertArgumentNotNull(novoGrupo, Erros.GroupDoesNotExist);
         usuarioAtual.GrupoPermissao = novoGrupo;
     }
     usuarioAtual.Ativo = usuario.Ativo;
     usuarioAtual.UsuarioNome = usuario.UsuarioNome;
     if (!string.IsNullOrEmpty(usuario.Senha))
     {
         usuarioAtual.Senha = PasswordAssertionConcern.Encrypt(usuario.Senha);
     }
     _usuarioRepository.Atualizar(usuarioAtual);
 }