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