/// <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); }
/// <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); }
/// <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; }
/// <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)); }
/// <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)); }
/// <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); }