Exemplo n.º 1
0
        public List <CronogramaViewModel> CalcularCronogramas(double horasTotais, TimeSpan horasDiarias,
                                                              DateTime dataInicial, string CPFUsuario, UsuarioViewModel usuarioLogado, int idPacto = 0,
                                                              DateTime?dataInicioSuspensao = null, DateTime?dataFimSuspensao = null,
                                                              CronogramaPactoViewModel cronogramaExistente = null, TimeSpan?quantidadeHorasDiasSuspensao = null)
        {
            List <CronogramaViewModel> cronogramas;

            var listaPactosConcorrentes = _pactoService.GetPactosConcorrentes(dataInicial, DateTime.Now.AddDays(365), CPFUsuario, idPacto);

            if (cronogramaExistente != null && cronogramaExistente.Cronogramas.Count > 0 &&
                cronogramaExistente.DataInicial.Date == dataInicial.Date &&
                horasDiarias == cronogramaExistente.HorasDiarias &&
                cronogramaExistente.QuantidadeHorasDiasSuspensao == quantidadeHorasDiasSuspensao &&
                cronogramaExistente.DataFimSuspensao.GetValueOrDefault().ToShortDateString() == dataFimSuspensao.GetValueOrDefault().ToShortDateString() &&
                cronogramaExistente.DataInicioSuspensao.GetValueOrDefault().ToShortDateString() == dataInicioSuspensao.GetValueOrDefault().ToShortDateString())

            {
                //Se cronograma existente e usuario tentando alterar carga horaria.
                if (horasTotais != cronogramaExistente.HorasTotais)
                {
                    //Se é preciso acrescentar carga horária
                    if (horasTotais > cronogramaExistente.HorasTotais)
                    {
                        cronogramas = CalcularAumentoCargaHoraria(cronogramaExistente, horasTotais, listaPactosConcorrentes: listaPactosConcorrentes, cpfSolicitante: CPFUsuario, usuarioLogado: usuarioLogado);
                    }
                    //Se é preciso retirar horas da carga anterior
                    else
                    {
                        cronogramas = CalcularDiminuicaoCargaHoraria(cronogramaExistente, horasTotais, listaPactosConcorrentes: listaPactosConcorrentes, cpfSolicitante: CPFUsuario, usuarioLogado: usuarioLogado);
                    }
                }
                else
                {
                    //Mantem o que está no tempdata sem recalcular
                    cronogramas = cronogramaExistente.Cronogramas;
                }
            }
            else
            {
                //Calcula do zero
                if (dataInicioSuspensao.HasValue)
                {
                    cronogramas = CalcularInclusaoSuspensao(cronogramaExistente, dataInicioSuspensao: dataInicioSuspensao.GetValueOrDefault(), dataFimSuspensao: dataFimSuspensao.GetValueOrDefault(), horasConsideradasNaDataSuspensao: quantidadeHorasDiasSuspensao, cpfSolicitante: CPFUsuario, usuarioLogado: usuarioLogado);
                }
                else
                {
                    cronogramas = GerarCronogramas(dataInicio: dataInicial,
                                                   cargaHorariaTotalPacto: TimeSpan.FromHours(horasTotais),
                                                   cargaHorariaDiaria: horasDiarias,
                                                   dataInicioSuspensao: dataInicioSuspensao,
                                                   dataFimSuspensao: dataFimSuspensao,
                                                   quantidadeHorasDiasSuspensao: quantidadeHorasDiasSuspensao,
                                                   listaPactosConcorrentes: listaPactosConcorrentes,
                                                   cpfSolicitante: CPFUsuario, usuarioLogado: usuarioLogado, idPacto: idPacto);
                }
            }

            return(cronogramas);
        }
Exemplo n.º 2
0
 public List <PactoViewModel> GetPactosConcorrentes(DateTime dataInicio, DateTime dataFinal, string cpfUsuario, int idPacto)
 {
     return(Mapper.Map <List <Pacto>, List <PactoViewModel> >(_pactoService.GetPactosConcorrentes(dataInicio, dataFinal, cpfUsuario, idPacto)));
 }