Exemple #1
0
        /// <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);
            }
        }