Example #1
0
File: CNE.cs Project: marciopmm/CNE
		public App ()
		{
			SetStyles ();
			
			Current = this;
			var service = new RestService ();
			var loginResponse = UserData.Load ();

			if (loginResponse == null) {
				loginResponse = Properties.ContainsKey("Session") ? (LoginResponse)Properties ["Session"] : null;
			}

			if (loginResponse != null) {
				// Verifica a sessao na API
				if (service.CheckSession (loginResponse.Token)) {
					// Se estiver OK, inicia normalmente
					Properties["Session"] = loginResponse;
					ShowMainPage(loginResponse);
				} else {
					MainPage = new LoginPage ();
				}
			}
			else
				MainPage = new LoginPage ();			
		}
Example #2
0
		public LoginPage ()
		{
			InitializeComponent ();

			btnLogin.Clicked += async (sender, e) => {
				if (IsValid()) {
					var service = new RestService();

					// Obter o ID da nova sessão do Usuário
					var result = service.Login (txtEmail.Text.ToLower(), txtSenha.Text);

					// Se Login OK
					if (result != null) {
						App.Current.Properties["Session"] = result;
						App.Current.ShowMainPage();
					} else {
						await DisplayAlert("Ops... :(", "Email e/ou senha inválidos.", "OK");
					}
				}
			};

			btnEsqueci.Clicked += async (sender, e) => {
				if (EmailIsValid())
				{
					string email = txtEmail.Text.Trim();
					var result = await DisplayAlert("Alteração de Senha", "Tem certeza que deseja alterar a senha para o usuário " + email + " ?", "Sim", "Não");
					if (result) {
						RestService rest = new RestService();
						var restResult = await rest.ChangePassword(email);
						if (restResult.IsSuccess)
						{
							await DisplayAlert("Pronto!", "Foi enviado um email com as instruções para troca de senha no endereço " + email, "OK");
							App.Current.ShowMainPage();
						} else {
							await DisplayAlert("Ops... :(", restResult.Message, "OK");
						}
					}
				}
				else {
					await DisplayAlert("Atenção", "Digite um email válido.", "OK");
				}
			};

			btnCriarConta.Clicked += async (sender, e) => {
				await Navigation.PushModalAsync(new RegisterPage1());
			};
		}
Example #3
0
		public SearchPage (string cep, int tipo, int distancia) : this()
		{
			// Chamar os dados da API CNE passando estes 3 parametros 
			var service = new RestService ();
			var empregadosList = service.List (cep, tipo, distancia);

			lstPesquisa.ItemsSource = empregadosList;
			lstPesquisa.ItemTemplate = new DataTemplate (typeof(TextCell));
			lstPesquisa.ItemTemplate.SetBinding (TextCell.TextProperty, "Nome"); 
			lstPesquisa.ItemTemplate.SetBinding (TextCell.DetailProperty, "TextoEspecialidades"); 
			
			lstPesquisa.ItemSelected += async (object sender, SelectedItemChangedEventArgs e) => {
				Empregado empregado = (Empregado)e.SelectedItem;
				await new RestService().SetVisualization(empregado.IdUsuario);
				await Navigation.PushAsync(new DetailsPage(empregado));
			};
		}
Example #4
0
File: CNE.cs Project: marciopmm/CNE
		public void ShowMainPage (LoginResponse loginResponse)
		{
			if (loginResponse != null) {
				UserData.Save (loginResponse);

				if (loginResponse.AlterarSenha) {
					MainPage = new ChangePasswordPage ();
				} else if (loginResponse.IsEmpregado) {
					RestService rest = new RestService ();
					Empregado empregado = rest.GetEmployee (loginResponse.Token);
					MainPage = new EmployeeMainPage (empregado, loginResponse.QtdVisualizacoes);
				}
				else {
					MainPage = new NavigationPage (new CNE.MainPage ());
				}
			} else {
				MainPage = new LoginPage ();
			}
		}
		public EmployerRegisterPage2 (string email, string senha)
		{
			InitializeComponent ();

			_email = email;
			_senha = senha;

			pckSexo.Items.Add ("Masculino");
			pckSexo.Items.Add ("Feminino");

			pckDtNasc.Date = DateTime.Now.AddYears (-20);

			btnRegistrar.Clicked += async (sender, e) => {
				if (IsValid()) {
					try 
					{
						if (_user == null)
							_user = new Usuario();

						_user.Nome = txtNome.Text.Trim();
						_user.Sobrenome = txtSobrenome.Text.Trim();
						_user.Cpf = txtCpf.Text.Trim();
						_user.DataNascimento = pckDtNasc.Date;
						_user.Email = _email;
						_user.Senha = _senha;
						_user.IdPerfil = 1; // Contratante

						// Chamar o método para gravar na API
						RestService service = new RestService();
						await service.RegisterEmployerAsync(_user);

						await DisplayAlert("Parabéns", "Seu registro foi efetuado!", "OK");
						App.Current.ShowMainPage();
					}
					catch (Exception ex)
					{
						await DisplayAlert("Ops ... :(", "Occoreu um problema durante o registro: " + ex.Message, "OK");
					}
				}
			};
		}
Example #6
0
		public EvaluationPage (Empregado empregado)
		{
			InitializeComponent ();

			_empregado = empregado;

			lblNome.Text = empregado.Nome;
			sldEstrelas.Minimum = 0;
			sldEstrelas.Maximum = 5;
			sldEstrelas.Value = empregado.Estrelas;
			imgEstrelas.Source = string.Format ("star{0:N0}.png", empregado.Estrelas);
			//TODO: Obter avaliação anterior, se existente.

			btnEnviar.Clicked += async (sender, e) => {
				try 
				{
					var rest = new RestService();
					var result = await rest.SendEvaluation(
						empregado.IdEmpregado,
						swtContrataria.IsToggled,
						Convert.ToInt32(sldEstrelas.Value),
						txtComentario.Text);

					empregado.Estrelas = result.Estrelas;
					empregado.QtdAvalicaoes = result.QtdAvaliacoes;
					empregado.Comentarios = result.Comentarios;

					await DisplayAlert("Pronto!", "Sua avaliação foi enviada com sucesso!", "OK");
					var page = await Navigation.PopAsync();
					Navigation.RemovePage(page);
				}
				catch (Exception ex)
				{
					await DisplayAlert("Ops... :(", "Não foi possível salvar sua avaliação devido a um problema: " + ex.Message, "OK");
				}
			};

			sldEstrelas.ValueChanged += (sender, e) => {
				imgEstrelas.Source = string.Format ("star{0:N0}.png", e.NewValue);
			};
		}
Example #7
0
		private async Task<bool> IsValid()
		{
			bool valid = true;
			string msg = null;

			if (string.IsNullOrWhiteSpace (txtEmail.Text)) {
				valid = false;
				msg += "Digite um email válido." + Environment.NewLine;
			} else if (!Regex.IsMatch (txtEmail.Text, "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}$", RegexOptions.IgnoreCase)) {
				valid = false;
				msg += "Digite um email válido." + Environment.NewLine;
			} else {
				// Verificar se o email já está em uso
				RestService service = new RestService();
				bool disponivel = await service.VerificarEmailDisponivel (txtEmail.Text.ToLower());
				if (!disponivel) {
					valid = false;
					msg += "Este email já está sendo utilizado. Por favor escolha outro email.";
				}
			}

			if (string.IsNullOrWhiteSpace (txtSenha.Text)) {
				valid = false;
				msg += "Digite uma senha." + Environment.NewLine;
			} else if (txtSenha.Text.Length < 6) {
				valid = false;
				msg += "Digite uma senha com um mínimo de 6 caracteres.";
			}

			if (!string.IsNullOrWhiteSpace (msg)) {
				msg = msg.Trim ();
				if (msg.Length > 0)
					await DisplayAlert ("Atenção", msg, "OK");
			}

			return valid;
		}
Example #8
0
		public ChangePasswordPage ()
		{
			InitializeComponent ();

			btnOK.Clicked += async (sender, e) => {
				try
				{
					RestService rest = new RestService();

					if (IsValid()) {
						await rest.SetNewPassword(txtConfSenha.Text);
						await DisplayAlert("Beleza!", "Sua senha foi alterada.", "OK");

						var session = (LoginResponse)App.Current.Properties["Session"];
						session.AlterarSenha = false;
						App.Current.Properties["Session"] = session;
						App.Current.ShowMainPage();
					}
				}
				catch (Exception ex) {
					await DisplayAlert("Erro", "Houve um erro durante a chamada ao servidor (" + ex.Message + ")", "OK");
				}
			};
		}
		public EmployeeRegisterPage2 (Empregado empregado)
		{
			InitializeComponent ();

			_especialidades = ListarEspecialidades ();

			pckSexo.Items.Add ("Masculino");
			pckSexo.Items.Add ("Feminino");

			pckDtNasc.Date = DateTime.Now.AddYears (-20);
			pckDtNasc.MaximumDate = DateTime.Now.AddYears (-16);

			int row = 0;

			foreach (var espec in _especialidades) {
				gridEspecialidades.RowDefinitions.Add (new RowDefinition () {
					Height = GridLength.Auto
				});

				var label = new Label ();

				var swt = new Switch ();
				if (empregado != null)
					swt.IsToggled = empregado.Especialidades.Any (X => X.TipoEspecialidade == espec.Key);

				label.Text = espec.Key;
				label.HorizontalOptions = LayoutOptions.EndAndExpand;
				label.VerticalOptions = LayoutOptions.CenterAndExpand;

				gridEspecialidades.Children.Add (label, 0, row);
				gridEspecialidades.Children.Add (swt, 1, row);
				row++;
			}

			if (empregado != null)
				Fill (empregado);

			btnCancelar.Clicked += (sender, e) => {
				App.Current.ShowMainPage();
			};

			btnRegistrar.Clicked += async (sender, e) => {				
				try
				{
					if (IsValid ()) {
						empregado.Nome = celNome.Text;
						empregado.Sobrenome = celSobrenome.Text;
						empregado.Sexo = pckSexo.SelectedIndex == 0 ? 'M' : 'F';
						empregado.Cpf = celCpf.Text;
						empregado.IdPerfil = 2; // Fixo para empregado
						empregado.DataNascimento = pckDtNasc.Date;
						empregado.Email = empregado.Email.ToLower();
						empregado.Senha = empregado.Senha;

						empregado.Sobre = celMiniCV.Text;
						empregado.TelCelular = celCelular.Text;
						empregado.TelResidencial = celTelefone.Text;
						empregado.AceitaDormir = swtAceitaDormir.IsToggled;

						if  (empregado.Endereco == null)
							empregado.Endereco = new Endereco();
						
						empregado.Endereco.Cep = celCep.Text;
						empregado.Endereco.Logradouro = celRua.Text;
						empregado.Endereco.Complemento = celComplemento.Text;
						empregado.Endereco.Bairro = celBairro.Text;
						empregado.Endereco.Cidade = celCidade.Text;
						empregado.Endereco.Estado = celUF.Text;
						empregado.Endereco.Numero = celNumero.Text;

						string label = "";
						var especs = new List<Especialidade>();
						// Carrega a lista de Especialidades
						for(int i = 0; i < gridEspecialidades.Children.Count; i++)
						{
							var element = gridEspecialidades.Children[i];

							if(element is Label) {
								label = ((Label)element).Text;
							}
							else if (element is Switch) {
								var s = (Switch)element;
								if (s.IsToggled)
								especs.Add(new Especialidade(){
									IdTipoEspecialidade = _especialidades[label],
									TipoEspecialidade = label
								});
							}
						}

						empregado.Especialidades = especs;

						RestService service = new RestService();
						await service.RegisterEmployeeAsync(empregado);

						await DisplayAlert("Pronto", "Seus dados foram salvos com sucesso.", "OK");
						App.Current.Logout();
					}
				}
				catch (Exception ex)
				{
					await DisplayAlert("Ops... :(", "Não foi possível registrar seu usuário devido a um problema (" + ex.Message + ").", "OK");
				}
			};

			celCep.Completed += async (sender, e) => {
				try
				{
					RestService service = new RestService();
					CepApiResponse endereco = await service.GetAddressFromApi(celCep.Text);

					if (!endereco.Ativo) {
						await DisplayAlert("Atenção", "CEP não encontrado.", "OK");
						return;
					}

					celCep.Text = endereco.Cep;
					celRua.Text = endereco.Logradouro;
					celBairro.Text = endereco.Bairro;
					celCidade.Text = endereco.Cidade;
					celUF.Text = endereco.UF;
				}
				catch (Exception ex)
				{
					await DisplayAlert("Ops ... :(", "Não foi possível obter os dados do CEP fornecido devido a um problema (" + ex.Message + ").", "OK");
				}
			};
		}