Olá, estou com problemas na hora de fazer o Binding Confirmado. Apesar de funcionar na hora de avisar o usuário se foi feito o agendamento com sucesso, estranhamente na hora de fazer o Binding, ele só retorna False, mesmo que tenha dado True. O que estou fazendo de errado?
public class AgendamentoViewModel : BaseViewModel
{
const string URL_POST_AGENDAMENTO = "https://aluracar.herokuapp.com/salvaragendamento";
public Agendamento Agendamento { get; set; }
public string Modelo
{
get
{
return this.Agendamento.Modelo;
}
set
{
this.Agendamento.Modelo = value;
}
}
public decimal Preco
{
get
{
return this.Agendamento.Preco;
}
set
{
this.Agendamento.Preco = value;
}
}
public string Nome
{
get
{
return this.Agendamento.Nome;
}
set
{
this.Agendamento.Nome = value;
OnPropertyChanged();
((Command)AgendarCommand).ChangeCanExecute();
}
}
public string Fone
{
get
{
return this.Agendamento.Fone;
}
set
{
this.Agendamento.Fone = value;
OnPropertyChanged();
((Command)AgendarCommand).ChangeCanExecute();
}
}
public string Email
{
get
{
return this.Agendamento.Email;
}
set
{
this.Agendamento.Email = value;
OnPropertyChanged();
((Command)AgendarCommand).ChangeCanExecute();
}
}
public DateTime DataAgendamento
{
get
{
return Agendamento.DataAgendamento;
}
set
{
Agendamento.DataAgendamento = value;
}
}
public TimeSpan HoraAgendamento
{
get
{
return Agendamento.HoraAgendamento;
}
set
{
Agendamento.HoraAgendamento = value;
}
}
public AgendamentoViewModel(Veiculo veiculo, Usuario usuario)
{
this.Agendamento = new Agendamento(usuario.Nome,usuario.Telefone,usuario.Email,veiculo.Nome,veiculo.Preco);
AgendarCommand = new Command(() =>
{
MessagingCenter.Send<Agendamento>(Agendamento, "Agendar");
}, ()=>
{
return !string.IsNullOrEmpty(this.Nome) &&
!string.IsNullOrEmpty(this.Fone) &&
!string.IsNullOrEmpty(this.Email);
});
}
public ICommand AgendarCommand { get; set; }
public async void SalvarAgendamento()
{
HttpClient cliente = new HttpClient();
var DataHoraAgendamento = new DateTime(DataAgendamento.Year, DataAgendamento.Month, DataAgendamento.Day,
HoraAgendamento.Hours, HoraAgendamento.Minutes, HoraAgendamento.Seconds);
var json = JsonConvert.SerializeObject(new
{
nome = Nome,
fone = Fone,
email = Email,
carro = Modelo,
preco = Preco,
dataAgendamento = DataHoraAgendamento
});
StringContent conteudo = new StringContent(json, Encoding.UTF8, "application/json");
var resposta = await cliente.PostAsync(URL_POST_AGENDAMENTO, conteudo);
this.Agendamento.Confirmado = resposta.IsSuccessStatusCode;
SalvarAgendamentoDB();
if (this.Agendamento.Confirmado)
{
MessagingCenter.Send<Agendamento>(this.Agendamento, "SucessoAgendamento");
}
else
{
MessagingCenter.Send<ArgumentException>(new ArgumentException(), "FalhaAgendamento");
}
}
private void SalvarAgendamentoDB()
{
using (var conexao = DependencyService.Get<ISQlite>().PegarConexao())
{
AgendamentoDAO dao = new AgendamentoDAO(conexao);
dao.Salvar(new Agendamento(Nome, Fone, Email, Modelo, Preco, DataAgendamento, HoraAgendamento));
}
}
}