コード例 #1
0
        /// <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;
            }
        }