Ejemplo n.º 1
0
        /// <summary>
        /// calcula, baseado na quantidade de horas por dia e quantidade de dias úteis do mês, a quantidade de horas previstas nesse mês
        /// </summary>
        /// <param name="ano">int - ano</param>
        /// <param name="mes">int - mes</param>
        /// <param name="calendariosvc">ICalendarioServices - instância de um serviço de calendário para calcular se o dia é útil ou não</param>
        /// <returns>TimeSpan - horas previstas para o mês de referência dado</returns>
        public virtual TimeSpan GetPrevisto(int ano, int mes, ICalendarioServices calendariosvc)
        {
            var calendario = calendariosvc.GetCalendarioMes(ano, mes);

            TimeSpan result = new TimeSpan(8 * calendario.Where(d => d.Value).Count(), 0, 0);

            return(result);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// baseado no ano, mês e um serviço de calendário, calcula as horas previstas do mês
        /// </summary>
        /// <param name="ano">int - ano de referência</param>
        /// <param name="mes">it - mês de referência</param>
        /// <param name="calendariosvc">ICalendarioServices - instância de um serviço de calendário para calcular se o dia é útil ou não</param>
        /// <returns>TimeSpan - horas previstas até o dia atual</returns>
        public virtual TimeSpan GetPrevistoCorrente(int ano, int mes, ICalendarioServices calendariosvc)
        {
            var calendario = calendariosvc.GetCalendarioMes(ano, mes);

            TimeSpan result = new TimeSpan(8 * calendario.Where(d => d.Value && d.Key < DateTime.Today.AddDays(1)).Count(), 0, 0);

            return(result);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// baseado no primeio dia do mês, calcula as horas previstas do mês, horas realizadas
        /// captura o saldo do mês anterior
        /// se não estiver fechado calcula o previsto corrente
        /// efeta todos os cálculos de negócio para todas as propriedades desta classe
        /// calcular
        /// </summary>
        /// <param name="dataBase">DateTime - data inicial do mês de referência para sincronizar atividades</param>
        /// <param name="calSvc">ICalendarioServices - instância de um serviço de calendário para calcular se o dia é útil ou não</param>
        public void SincronizaAtividades(DateTime dataBase, ICalendarioServices calSvc)
        {
            DateTime dtFim = dataBase.AddMonths(1).AddSeconds(-1);

            DateTime mesAnterior = dataBase.AddDays(-1);

            Referencia anterior = (from r in this.Usuario.Referencias
                                   where r.Ano == mesAnterior.Year && r.Mes == mesAnterior.Month
                                   select r).FirstOrDefault();


            TimeSpan saldoAnterior = anterior != null ? anterior.Saldo : new TimeSpan(0);

            if ((this.Previsto == null || this.Previsto == TimeSpan.Zero) && !this.Fechado)
            {
                this.Previsto = this.GetPrevisto(dataBase.Year, dataBase.Month, calSvc);
            }

            if (!this.Fechado)
            {
                this.PrevistoCorrente = this.GetPrevistoCorrente(dataBase.Year, dataBase.Month, calSvc);
            }

            if (this.PrevistoCorrente > this.Previsto)
            {
                this.PrevistoCorrente = this.Previsto;
            }

            if ((dtFim <= DateTime.Today) && (this.Previsto != this.PrevistoCorrente))
            {
                this.PrevistoCorrente = this.Previsto;
            }

            this.Realizado  = this.GetRealizado(dataBase.Year, dataBase.Month);
            this.SaldoDoMes = this.Previsto - this.Realizado;
            this.Saldo      = saldoAnterior - this.SaldoDoMes;
            if (this.Fechado)
            {
                this.BancoDeHoras = saldoAnterior - (this.Previsto - this.Realizado);
            }
            else
            {
                this.BancoDeHoras = saldoAnterior - (this.PrevistoCorrente - this.Realizado);
            }
        }
 public CalendarioController(ICalendarioServices calendarioServices, IHubContext <CalendarioHub> calendarHubContext)
 {
     _calendarioServices = calendarioServices;
     _calendarHubContext = calendarHubContext;
 }
Ejemplo n.º 5
0
 /// <summary>
 /// calcula, baseado na quantidade de horas por dia e quantidade de dias úteis do mês corrente (declarado na classe), a quantidade de horas previstas nesse mês
 /// </summary>
 /// <param name="calendariosvc">ICalendarioServices - instância de um serviço de calendário para calcular se o dia é útil ou não</param>
 /// <returns>TimeSpan - horas previstas para o mês corrente</returns>
 public virtual TimeSpan GetPrevisto(ICalendarioServices calendariosvc)
 {
     return(this.GetPrevisto(this.Ano, this.Mes, calendariosvc));
 }
Ejemplo n.º 6
0
 /// <summary>
 /// baseado no ano e mês CORRENTES declarado na classe, obtém  total de horas até o dia atual
 /// </summary>
 /// <param name="calendariosvc">ICalendarioServices - instância de um serviço de calendário para calcular se o dia é útil ou não</param>
 /// <returns>TimeSpan - total de horas previstas até o dia de hoje</returns>
 public virtual TimeSpan GetPrevistoAteHoje(ICalendarioServices calendariosvc)
 {
     return(this.GetPrevistoCorrente(this.Ano, this.Mes, calendariosvc));
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Sincroniza as atividades construindo a data base a partir do Ano e Mes declarados na classe
 /// </summary>
 /// <param name="calSvc">ICalendarioServices - instância de um serviço de calendário para calcular se o dia é útil ou não</param>
 public void SincronizaAtividades(ICalendarioServices calSvc)
 {
     this.SincronizaAtividades(new DateTime(this.Ano, this.Mes, 1), calSvc);
 }