/// <summary> /// Atualiza os campos da janela. /// </summary> /// <param name="func">Objeto do tipo Funcionario recuperado do BD.</param> private async Task RefreshList(Funcionario func) { DateTime selecionada = DPdata.SelectedDate.Value; int fechamento = Empre.DiaFechamento; List <HorasFuncionario> horas; DateTime selecionadaBuscaInicio; DateTime selecionadaBuscaFim; if (selecionada.Day >= fechamento) { if (selecionada.Month == 12) { selecionadaBuscaInicio = new DateTime(selecionada.Year, selecionada.Month, fechamento); selecionadaBuscaFim = new DateTime(selecionada.Year + 1, 1, fechamento); } else { selecionadaBuscaInicio = new DateTime(selecionada.Year, selecionada.Month, fechamento); selecionadaBuscaFim = new DateTime(selecionada.Year, selecionada.Month + 1, fechamento); } } else { if (selecionada.Month == 1) { selecionadaBuscaInicio = new DateTime(selecionada.Year - 1, 12, fechamento); selecionadaBuscaFim = new DateTime(selecionada.Year, selecionada.Month, fechamento); } else { selecionadaBuscaInicio = new DateTime(selecionada.Year, selecionada.Month - 1, fechamento); selecionadaBuscaFim = new DateTime(selecionada.Year, selecionada.Month, fechamento); } } horas = await ClientApi.GetEmployeeHoursAsync(func, selecionadaBuscaFim, selecionadaBuscaInicio).ConfigureAwait(true); List <BancoDeHoras> bancoDeHoras = await ClientApi.GetBankHoursAsync(func).ConfigureAwait(true); Listhoras.ItemsSource = horas; TimeSpan totalHoraAlmoco = func.HoraRetornoAlmoco.Subtract(func.HoraSaidaAlmoco); TimeSpan horaTrabalho = func.HoraTermino.Subtract(func.HoraInicio).Subtract(totalHoraAlmoco); TimeSpan totalHorasFolga = new TimeSpan(); TimeSpan totalHoras = new TimeSpan(horas.Sum(h => h.Extras.Ticks)); TimeSpan totalBancoHoras = new TimeSpan(bancoDeHoras.Sum(b => b.HorasExtras.Ticks)); lblBancoHoras.Content = totalBancoHoras; lblTotalExtras.Content = totalHoras.ToString(); if (totalBancoHoras >= horaTrabalho) { while (totalBancoHoras >= horaTrabalho) { totalHorasFolga = totalHorasFolga.Add(new TimeSpan(1, 0, 0, 0)); totalBancoHoras = totalBancoHoras.Subtract(horaTrabalho); } } else if (totalBancoHoras <= -horaTrabalho) { while (totalBancoHoras <= -horaTrabalho) { totalHorasFolga = totalHorasFolga.Subtract(new TimeSpan(1, 0, 0, 0)); totalBancoHoras = totalBancoHoras.Add(horaTrabalho); } } lblHoraFolga.Content = $"{totalHorasFolga.Days} Dia(s) e {totalBancoHoras.Hours} Horas"; if (totalHorasFolga.Days >= 0 && totalHorasFolga.Hours >= 0) { lblHoraFolga.Foreground = Brushes.LightGreen; } else { lblHoraFolga.Foreground = Brushes.IndianRed; } }