public AvaliacaoHelper(Entities.Avaliacao avaliacao)
 {
     Id          = avaliacao.Id;
     Estrelas    = avaliacao.Estrelas;
     Comentario  = avaliacao.Comentario;
     DataCriacao = avaliacao.DataCriacao;
     Usuario     = new UsuarioHelper(avaliacao.Usuario);
 }
        public async Task <Response> Handle(AvaliarRestauranteRequest request, CancellationToken cancellationToken)
        {
            if (request == null)
            {
                AddNotification("Resquest", "Preencha as informações da avaliação");
                return(new Response(this));
            }

            var usuario = _repositoryUsuario.ObterPorId(request.FkUsuario.Value);
            var empresa = _repositoryEmpresa.ObterPorId(request.FkEmpresa.Value);

            Entities.Avaliacao avaliacao = new Entities.Avaliacao(request.Estrelas, request.Comentario, empresa, usuario);
            if (IsInvalid())
            {
                return(new Response(this));
            }

            avaliacao = _repositoryAvaliacao.Adicionar(avaliacao);

            empresa.AdicionarAvaliacao(avaliacao);
            _repositoryEmpresa.Editar(empresa);

            usuario.AdicionarAvaliacao(avaliacao);
            _repositoryUsuario.Editar(usuario);
            try
            {
                _unitOfWork.SaveChanges();
            }
            catch (Exception ex)
            {
                this.AddNotification("Avaliar Empresa", "Erro ao persistir dados: " + ex.Message);
            }

            var result = new
            {
                Id         = avaliacao.Id,
                Estrelas   = avaliacao.Estrelas,
                Comentario = avaliacao.Comentario,
                Usuario    = new { Id = avaliacao.Usuario.Id, Nome = avaliacao.Usuario.Nome, Foto = avaliacao.Usuario.Foto }
            };

            var response = new Response(this, result);

            return(await Task.FromResult(response));
        }
 /// <summary>
 /// Maps an entity to a model.
 /// </summary>
 /// <param name="entity">The entity.</param>
 /// <returns></returns>
 public static Models.Avaliacao ToModel(this Entities.Avaliacao entity)
 {
     return(Mapper.Map <Models.Avaliacao>(entity));
 }