/// <summary> /// Metodo para popular os itens do comboBox /// </summary> private async void Button_Click(object sender, RoutedEventArgs e) { if (!VerificaPreenchimento()) { MessageBox.Show("Existem campos não preechidos"); return; } TimeSpan entrada = new TimeSpan(timePickerEntrada.SelectedTime.Value.Hour, timePickerEntrada.SelectedTime.Value.Minute, 0); TimeSpan saida = new TimeSpan(timePickerSaida.SelectedTime.Value.Hour, timePickerSaida.SelectedTime.Value.Minute, 0); TimeSpan saidaAlmoco = new TimeSpan(timePickerSaidaAlmoco.SelectedTime.Value.Hour, timePickerSaidaAlmoco.SelectedTime.Value.Minute, 0); TimeSpan retornoAlmoco = new TimeSpan(timePickerRetornoAlmoco.SelectedTime.Value.Hour, timePickerRetornoAlmoco.SelectedTime.Value.Minute, 0); TimeSpan totalHoraAlmoco = retornoAlmoco.Subtract(saidaAlmoco); TimeSpan horaTrabalho = Func.HoraTermino.Subtract(Func.HoraInicio).Subtract(totalHoraAlmoco); if (Horas.Extras != (new TimeSpan(0, 0, 0))) { BancoDeHoras removerDoBancoDeHoras = new BancoDeHoras(-Horas.Extras, "Horas extras removidas por edição de horas", Horas.DataRegistro, Func.Registro); await ClientApi.CreateBankHoursAsync(removerDoBancoDeHoras).ConfigureAwait(true); } Horas.Entrada = entrada; Horas.Saida = saida; Horas.HoraSaidaAlmoco = saidaAlmoco == new TimeSpan(0, 0, 0) ? Func.HoraSaidaAlmoco : saidaAlmoco; Horas.HoraRetornoAlmoco = retornoAlmoco == new TimeSpan(0, 0, 0) ? Func.HoraRetornoAlmoco : retornoAlmoco; Horas.CalculaExtras(horaTrabalho); if (Horas.Extras <= new TimeSpan(0, 10, 0) && Horas.Extras >= new TimeSpan(0, -10, 0)) { Horas.Extras = new TimeSpan(0, 0, 0); } string justificativa = txtBoxJustificativa.Text; if (justificativa.Length < 20) { MessageBox.Show("A alteração só pode ser feita com uma justificativa de mínimo 20 caracteres."); return; } BancoDeHoras bancoDeHoras = new BancoDeHoras(Horas.Extras, justificativa, DateTime.Now, Func.Registro); try { await ClientApi.CreateBankHoursAsync(bancoDeHoras).ConfigureAwait(true); await ClientApi.UpdateEmployeeHoursAsync(Horas).ConfigureAwait(true); } catch (HttpRequestException ex) { MessageBox.Show(ex.Message); } Close(); }
private static async Task AddBancoDeHoras(BancoDeHoras banco) { try { await ClientApi.CreateBankHoursAsync(banco).ConfigureAwait(true); } catch (HttpRequestException e) { MessageBox.Show(e.Message); } }
private async void BtnDeletar_Click(object sender, RoutedEventArgs e) { HorasFuncionario horas = (HorasFuncionario)Listhoras.SelectedItem; HorasFuncionario horasFuncionario = await ClientApi.GetEmployeeHoursAsync(horas.Id).ConfigureAwait(true); if (MessageBox.Show("Deseja realmente deletar?", "Confirmar", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { if (horasFuncionario != null) { if (horasFuncionario.Extras != (new TimeSpan(0, 0, 0))) { BancoDeHoras removerDoBancoDeHoras = new BancoDeHoras(-horasFuncionario.Extras, "Registro deletado", horasFuncionario.DataRegistro, Func.Registro); await ClientApi.CreateBankHoursAsync(removerDoBancoDeHoras).ConfigureAwait(true); } else { BancoDeHoras JustificativaBancoDeHoras = new BancoDeHoras(new TimeSpan(0, 0, 0), "Registro deletado", horasFuncionario.DataRegistro, Func.Registro); await ClientApi.CreateBankHoursAsync(JustificativaBancoDeHoras).ConfigureAwait(true); } await ClientApi.DeleteEmployeeHoursAsync(horas).ConfigureAwait(true); await RefreshList(Func).ConfigureAwait(true); horasFuncionario = await ClientApi.GetEmployeeHoursAsync(horas.Id).ConfigureAwait(true); if (horasFuncionario == null) { MessageBox.Show("Registro deletado com sucesso!"); } } else { MessageBox.Show("Não há registros na data selecionada!"); } } }
/// <summary> /// Evento click do botão adicionar, esse é o principal botão da interface /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void BtnAdicionar_Click(object sender, RoutedEventArgs e) { try { DateTime dataSelecionada = DPdata.SelectedDate.Value; await RefreshList(Func).ConfigureAwait(true); if (timePickerExtras.SelectedTime.HasValue) { TimeSpan HorasExtras = new TimeSpan(timePickerExtras.SelectedTime.Value.Hour, timePickerExtras.SelectedTime.Value.Minute, 0); switch (MessageBox.Show("Deseja incluir hora extra manualmente? \nSelecione Sim para INCLUIR \nSelecione Não para REMOVER", "Confirmar Inclusão de Horas", MessageBoxButton.YesNoCancel, MessageBoxImage.Question)) { case MessageBoxResult.Yes: await ClientApi.CreateBankHoursAsync(new BancoDeHoras(HorasExtras, "Hora adicionada manualmente", dataSelecionada, Func.Registro)).ConfigureAwait(true); break; case MessageBoxResult.No: HorasExtras = -HorasExtras; await ClientApi.CreateBankHoursAsync(new BancoDeHoras(HorasExtras, "Hora removida manualmente", dataSelecionada, Func.Registro)).ConfigureAwait(true); break; } await RefreshList(Func).ConfigureAwait(true); return; } TimeSpan entrada; if (!timePickerEntrada.SelectedTime.HasValue) { entrada = new TimeSpan(0, 0, 0); } else { entrada = new TimeSpan(timePickerEntrada.SelectedTime.Value.Hour, timePickerEntrada.SelectedTime.Value.Minute, 0); } TimeSpan saida; if (!timePickerSaida.SelectedTime.HasValue) { saida = new TimeSpan(0, 0, 0); } else { saida = new TimeSpan(timePickerSaida.SelectedTime.Value.Hour, timePickerSaida.SelectedTime.Value.Minute, 0); } TimeSpan almocoSaida; if (!timePickerSaidaAlmoco.SelectedTime.HasValue) { almocoSaida = Func.HoraSaidaAlmoco; } else { almocoSaida = new TimeSpan(timePickerSaidaAlmoco.SelectedTime.Value.Hour, timePickerSaidaAlmoco.SelectedTime.Value.Minute, 0); } TimeSpan retornoAlmoco; if (!timePickerRetornoAlmoco.SelectedTime.HasValue) { retornoAlmoco = Func.HoraRetornoAlmoco; } else { retornoAlmoco = new TimeSpan(timePickerRetornoAlmoco.SelectedTime.Value.Hour, timePickerRetornoAlmoco.SelectedTime.Value.Minute, 0); } TimeSpan totalHoraAlmoco = Func.HoraRetornoAlmoco.Subtract(Func.HoraSaidaAlmoco); TimeSpan horaTrabalho = Func.HoraTermino.Subtract(Func.HoraInicio).Subtract(totalHoraAlmoco); HorasFuncionario horas = new HorasFuncionario(entrada, saida, almocoSaida, retornoAlmoco, Func.Registro, dataSelecionada); HorasFuncionario horaAlterar = null; if (Listhoras.ItemsSource != null) { foreach (HorasFuncionario b1 in Listhoras.ItemsSource) { if (b1.DataRegistro.ToShortDateString() == dataSelecionada.ToShortDateString()) { horaAlterar = b1; } } } if (horaAlterar != null) { if (MessageBox.Show("Já existe registro com essa data, deseja alterar?", "Hora Existente", MessageBoxButton.YesNo) == MessageBoxResult.Yes) { EditarHora(horaAlterar); return; } } else if (dataSelecionada.DayOfWeek.ToString().ToUpper(CultureInfo.InvariantCulture).Equals("SATURDAY", StringComparison.InvariantCulture) || dataSelecionada.DayOfWeek.ToString().ToUpper(CultureInfo.InvariantCulture).Equals("SUNDAY", StringComparison.InvariantCulture)) { if (MessageBox.Show($"Proximo registro é { (dataSelecionada.DayOfWeek.ToString() == "Saturday" ? "Sabado" : "Domingo") } confirma a inclusão?", "Confirmar", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { if (entrada == new TimeSpan(0, 0, 0)) { almocoSaida = new TimeSpan(0, 0, 0); retornoAlmoco = new TimeSpan(0, 0, 0); } horas = new HorasFuncionario(entrada, saida, almocoSaida, retornoAlmoco, Func.Registro, dataSelecionada); horas.CalculaExtras(new TimeSpan(0, 0, 0)); //Horario de trabalho em branco pois não há expediente normal. ConfirmacaoWindow confirmacaoWindow = new ConfirmacaoWindow(horas, Func); confirmacaoWindow.ShowDialog(); } else { horas = new HorasFuncionario(new TimeSpan(0, 0, 0), new TimeSpan(0, 0, 0), new TimeSpan(0, 0, 0), new TimeSpan(0, 0, 0), Func.Registro, dataSelecionada); horas.CalculaExtras(new TimeSpan(0, 0, 0)); ConfirmacaoWindow confirmacaoWindow = new ConfirmacaoWindow(horas, Func); confirmacaoWindow.ShowDialog(); } } else { if (!timePickerEntrada.SelectedTime.HasValue && !timePickerSaida.SelectedTime.HasValue) { switch (MessageBox.Show("Não foi informado hora de entrada e saida para esse funcionario.\nSelecione Sim para marcar como falta total.\nSelecione Não para falta justificada.", "Verificar Falta", MessageBoxButton.YesNoCancel, MessageBoxImage.Question)) { case MessageBoxResult.Yes: horas.HoraSaidaAlmoco = new TimeSpan(0, 0, 0); horas.HoraRetornoAlmoco = new TimeSpan(0, 0, 0); horas.CalculaExtras(horaTrabalho); break; case MessageBoxResult.No: horas.HoraSaidaAlmoco = new TimeSpan(0, 0, 0); horas.HoraRetornoAlmoco = new TimeSpan(0, 0, 0); TimeSpan extras = horas.CalculaExtras(new TimeSpan(0, 0, 0)); await ClientApi.CreateBankHoursAsync(new BancoDeHoras(extras, $"Falta abonada em {DateTime.Now.ToShortDateString()}", dataSelecionada, Func.Registro)).ConfigureAwait(true); break; case MessageBoxResult.Cancel: return; } } else if (!timePickerEntrada.SelectedTime.HasValue) { if (MessageBox.Show("Não foi informado hora de entrada para esse funcionario.\nDeseja marcar como falta parcial?", "Verificar Falta", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { if (horas.HoraRetornoAlmoco != new TimeSpan(0, 0, 0)) { horas.HoraSaidaAlmoco = new TimeSpan(0, 0, 0); horas.CalculaExtras(horaTrabalho); } else { MessageBox.Show("Existe campos em branco!"); return; } } else { return; } } else if (!timePickerSaida.SelectedTime.HasValue) { if (MessageBox.Show("Não foi informado hora de saida para esse funcionario\nDeseja marcar como falta parcial?", "Verificar Falta", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { if (horas.HoraSaidaAlmoco != new TimeSpan(0, 0, 0)) { horas.HoraRetornoAlmoco = new TimeSpan(0, 0, 0); horas.CalculaExtras(horaTrabalho); } else { MessageBox.Show("Existe campos em branco!"); return; } } else { return; } } else { horas.CalculaExtras(horaTrabalho); if (horas.Extras <= new TimeSpan(0, 10, 0) && horas.Extras >= new TimeSpan(0, -10, 0)) { horas.Extras = new TimeSpan(0, 0, 0); } } ConfirmacaoWindow confirmacaoWindow = new ConfirmacaoWindow(horas, Func); confirmacaoWindow.ShowDialog(); } await RefreshList(Func).ConfigureAwait(true); DPdata.SelectedDate = dataSelecionada.AddDays(1); } catch (FormatException ex) { MessageBox.Show(ex.Message); } }