private void EditarHora(HorasFuncionario horas)
        {
            EditarHorasWindow editarUltimo = new EditarHorasWindow(horas, Func);

            editarUltimo.ShowDialog();
            RefreshList(Func).ConfigureAwait(true);
        }
Beispiel #2
0
 /// <summary>
 /// Janela de edição do último registro de hora adicionado
 /// </summary>
 public EditarHorasWindow(HorasFuncionario horasFuncionario, Funcionario funcionario)
 {
     Horas = horasFuncionario;
     Func  = funcionario;
     InitializeComponent();
     RegistroParaAlterar();
 }
 private void PreecncheTxtBox(HorasFuncionario horasFuncionario)
 {
     txtEntrada.Text       = horasFuncionario.Entrada.ToString();
     txtSaidaAlmoco.Text   = horasFuncionario.HoraSaidaAlmoco.ToString();
     txtRetornoAlmoco.Text = horasFuncionario.HoraRetornoAlmoco.ToString();
     txtSaida.Text         = horasFuncionario.Saida.ToString();
     txtExtras.Text        = horasFuncionario.Extras.ToString();
 }
 /// <summary>
 /// Janela de confirmação de horas adicionadas
 /// </summary>
 /// <param name="horasFuncionario">Objeto hora funcionário para adição</param>
 /// <param name="funcionario">Objeto hora funcionário ao qual pertence as horas</param>
 public ConfirmacaoWindow(HorasFuncionario horasFuncionario, Funcionario funcionario)
 {
     InitializeComponent();
     Horas = horasFuncionario;
     if (Horas != null)
     {
         PreecncheTxtBox(Horas);
     }
     Func = funcionario;
 }
Beispiel #5
0
        public ActionResult Update(string id, HorasFuncionario employeeHoursIn)
        {
            var hours = _employeeHoursService.Get(id);

            if (hours == null)
            {
                return(NotFound());
            }

            _employeeHoursService.Update(employeeHoursIn);

            return(NoContent());
        }
Beispiel #6
0
        /// <summary>
        /// Deleta um registro de horas de um funcionário
        /// </summary>
        /// <param name="employeeHoursToDelete">Objeto horas funcionario a ser deletado</param>
        /// <returns>Retorna o codigo http com o status da transação</returns>
        public static async Task <HttpStatusCode> DeleteEmployeeHoursAsync(HorasFuncionario employeeHoursToDelete)
        {
            if (employeeHoursToDelete == null)
            {
                return(HttpStatusCode.NotFound);
            }

            Uri uri = new Uri(httpClient.BaseAddress + $"api/employeeHours/{employeeHoursToDelete.Id}");

            HttpResponseMessage response = await httpClient.DeleteAsync(uri).ConfigureAwait(true);

            return(response.StatusCode);
        }
Beispiel #7
0
        /// <summary>
        /// Atualiza um registro de horas de um funcionário.
        /// </summary>
        /// <param name="horasFuncionarioIn">Objeto horas funcionário alterado</param>
        /// <returns>Retorna um objeto funconário com as alterações feitas</returns>
        public static async Task <HorasFuncionario> UpdateEmployeeHoursAsync(HorasFuncionario horasFuncionarioIn)
        {
            if (horasFuncionarioIn == null)
            {
                return(null);
            }

            HttpResponseMessage response = await httpClient.PutAsJsonAsync($"api/employeeHours/{horasFuncionarioIn.Id}", horasFuncionarioIn).ConfigureAwait(true);

            response.EnsureSuccessStatusCode();

            horasFuncionarioIn = await response.Content.ReadAsAsync <HorasFuncionario>().ConfigureAwait(true);

            return(horasFuncionarioIn);
        }
Beispiel #8
0
        /// <summary>
        /// Otem um resgitro de horas.
        /// </summary>
        /// <param name="id">Id do registro de horas</param>
        /// <returns>Retorna um objeto horas funcionário</returns>
        public static async Task <HorasFuncionario> GetEmployeeHoursAsync(string id)
        {
            HorasFuncionario employeeHours = null;

            Uri uri = new Uri(httpClient.BaseAddress + $"api/employeeHours/{id}");

            HttpResponseMessage response = await httpClient.GetAsync(uri).ConfigureAwait(true);

            if (response.IsSuccessStatusCode)
            {
                employeeHours = await response.Content.ReadAsAsync <HorasFuncionario>().ConfigureAwait(true);
            }

            return(employeeHours);
        }
 private async Task AddMarcacaoPonto(HorasFuncionario horas)
 {
     if (horas.Extras.Minutes != 0 || horas.Extras.Hours != 0)
     {
         BancoDeHoras bancoDeHoras = new BancoDeHoras(horas.Extras, "Horas Extras", horas.DataRegistro, Func.Registro);
         await AddBancoDeHoras(bancoDeHoras).ConfigureAwait(true);
     }
     try
     {
         await ClientApi.CreateEmployeeHoursAsync(horas).ConfigureAwait(true);
     }
     catch (HttpRequestException e)
     {
         MessageBox.Show(e.Message);
     }
 }
Beispiel #10
0
        /// <summary>
        /// Adiciona um registro de horas a um funcionário
        /// </summary>
        /// <param name="employeeHoursIn">Objeto horas funcionário a ser adicionado</param>
        /// <returns>Retorna uma tarefa</returns>
        public static async Task CreateEmployeeHoursAsync(HorasFuncionario employeeHoursIn)
        {
            HttpResponseMessage response = await httpClient.PostAsJsonAsync("api/employeeHours/", employeeHoursIn).ConfigureAwait(true);

            try
            {
                response.EnsureSuccessStatusCode();

                Console.WriteLine(response.Headers.Location);
            }
            catch (HttpRequestException e)
            {
                Console.WriteLine(e.Message);
                throw;
            }
        }
        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!");
                }
            }
        }
Beispiel #12
0
        public ActionResult Create(HorasFuncionario employeeHours)
        {
            _employeeHoursService.Create(employeeHours);

            return(CreatedAtRoute("GetById", new { id = employeeHours.Id }, employeeHours));
        }
        /// <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);
            }
        }
 public void Update(HorasFuncionario employeerHours) => _employeeHoras.ReplaceOne(empHours => empHours.Funcionario == employeerHours.Funcionario && empHours.DataRegistro == employeerHours.DataRegistro, employeerHours);
 public void Create(HorasFuncionario employeerHours) => _employeeHoras.InsertOne(employeerHours);