private bool ValidarCronograma(CronogramaPactoViewModel model) { _cronogramaService.ValidarCronograma(model); setModelError(model.ValidationResult); return(model.ValidationResult.IsValid); }
public List <CronogramaViewModel> CalcularInclusaoSuspensao(CronogramaPactoViewModel cronogramaPactoReferencia, DateTime dataInicioSuspensao, string cpfSolicitante, UsuarioViewModel usuarioLogado, DateTime?dataFimSuspensao = null, TimeSpan?horasConsideradasNaDataSuspensao = null) { List <CronogramaViewModel> diasAjustados = cronogramaPactoReferencia.Cronogramas.TakeWhile(c => c.DataCronograma.Date < dataInicioSuspensao.Date).ToList(); if (dataFimSuspensao.HasValue && dataFimSuspensao.Value > DateTime.MinValue) { var horasRestantes = cronogramaPactoReferencia.HorasTotais - diasAjustados.Sum(c => c.HorasCronograma.TotalHours); var listaPactosConcorrentes = _pactoService.GetPactosConcorrentes(dataInicioSuspensao, DateTime.Now.AddDays(365), cronogramaPactoReferencia.CPFUsuario, cronogramaPactoReferencia.IdPacto); diasAjustados.AddRange(GerarCronogramas(dataInicio: dataInicioSuspensao, cargaHorariaTotalPacto: TimeSpan.FromHours(horasRestantes), cargaHorariaDiaria: cronogramaPactoReferencia.HorasDiarias, cpfSolicitante: cpfSolicitante, usuarioLogado: usuarioLogado, dataInicioSuspensao: dataInicioSuspensao, dataFimSuspensao: dataFimSuspensao, listaPactosConcorrentes: listaPactosConcorrentes, quantidadeHorasDiasSuspensao: horasConsideradasNaDataSuspensao, idPacto: cronogramaPactoReferencia.IdPacto)); } else { var diasSuspensos = cronogramaPactoReferencia.Cronogramas.Where(c => c.DataCronograma.Date >= dataInicioSuspensao.Date).ToList(); diasSuspensos.ForEach(c => { c.Suspenso = true; c.HorasCronograma = c.DataCronograma.Date == dataInicioSuspensao.Date && horasConsideradasNaDataSuspensao.HasValue ? horasConsideradasNaDataSuspensao.Value : TimeSpan.Zero; }); diasAjustados.AddRange(diasSuspensos); } return(diasAjustados); }
public List <CronogramaViewModel> CalcularDiminuicaoCargaHoraria(CronogramaPactoViewModel cronogramaPactoReferencia, double novaCargaHoraria, List <Pacto> listaPactosConcorrentes, string cpfSolicitante, UsuarioViewModel usuarioLogado, bool podeEditarDiasPassados = false) { List <CronogramaViewModel> lista = new List <CronogramaViewModel>(); double totalHorasTemp = 0; double horasRestantes = 0; lista = cronogramaPactoReferencia.Cronogramas.TakeWhile(c => (totalHorasTemp += c.HorasCronograma.TotalHours) <= novaCargaHoraria).ToList(); while (lista.Sum(c => c.HorasCronograma.TotalHours) < novaCargaHoraria && (!cronogramaPactoReferencia.DataInicioSuspensao.HasValue || cronogramaPactoReferencia.DataFimSuspensao.HasValue)) //testando se o cronograma nao esta suspenso. { horasRestantes = novaCargaHoraria - lista.Sum(c => c.HorasCronograma.TotalHours); var cronogramVM = CriarDiaCronograma( dataCronograma: lista.Last().DataCronograma.AddDays(1), cargaHorariaRestantePacto: TimeSpan.FromHours(horasRestantes), cargaHorariaDiaria: cronogramaPactoReferencia.HorasDiarias, dataInicioSuspensao: cronogramaPactoReferencia.DataInicioSuspensao, dataFimSuspensao: cronogramaPactoReferencia.DataFimSuspensao, pactosConcorrentes: listaPactosConcorrentes, usuarioLogado: usuarioLogado, cpfSolicitante: cpfSolicitante); lista.Add(cronogramVM); } return(lista); }
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 PartialViewResult AdicionarDia(CronogramaPactoViewModel model) { AdicionarDiaCronograma(model); model.PodeRemoverDias = PodeRemoverDia(model); return(PartialView("_CronogramasPartial", model)); }
private static void RemoverDiaCronograma(CronogramaPactoViewModel model) { var listaCronogramas = model.Cronogramas; if (listaCronogramas.Count > 0) { listaCronogramas.RemoveAt(listaCronogramas.Count - 1); } }
public void ValidarCronograma(CronogramaPactoViewModel cronogramaPactoVM) { var cronogramaPacto = Mapper.Map <CronogramaPactoViewModel, CronogramaPacto>(cronogramaPactoVM); var pactosConcorrentes = _pactoService.GetPactosConcorrentes(cronogramaPacto.DataInicial, DateTime.Now.AddYears(1), cronogramaPacto.CPFUsuario, cronogramaPacto.IdPacto); _cronogramaService.ValidarCronograma(cronogramaPacto, pactosConcorrentes, cronogramaPactoVM.ValidarHorasADistribuir); cronogramaPactoVM.ValidationResult = cronogramaPacto.ValidationResult; }
public PartialViewResult SalvarCronograma(CronogramaPactoViewModel model) { if (ValidarCronograma(model)) { ModelState.Clear(); _cronogramaService.LimparDiasZerados(model.Cronogramas); TempData[PactoController.GetNomeVariavelTempData("Cronogramas", model.IdPacto)] = model; } return(PartialView("_CronogramasPartial", model)); }
public JsonResult AtualizarCronograma(CronogramaPactoViewModel modelCronograma) { var pacto = _pactoService.BuscarPorId(modelCronograma.IdPacto); CronogramaPactoViewModel cronogramaExistente; if (modelCronograma.CalcularCronogramaAPartirBanco && pacto != null) { cronogramaExistente = new CronogramaPactoViewModel() { DataInicial = pacto.DataPrevistaInicio, Cronogramas = pacto.Cronogramas, HorasTotais = Convert.ToDouble(pacto.CargaHorariaTotal), HorasDiarias = pacto.CargaHorariaDiaria, DataInicioSuspensao = pacto.SuspensoAPartirDe, DataFimSuspensao = DateTime.Today, IdPacto = pacto.IdPacto, CPFUsuario = pacto.CpfUsuario }; } else { cronogramaExistente = (CronogramaPactoViewModel)TempData[PactoController.GetNomeVariavelTempData("Cronogramas", modelCronograma.IdPacto)]; } if (pacto == null || pacto.IdSituacaoPacto != (int)eSituacaoPacto.Interrompido) { modelCronograma.Cronogramas = _cronogramaService.CalcularCronogramas( modelCronograma.HorasTotais, modelCronograma.HorasDiarias, modelCronograma.DataInicial, modelCronograma.CPFUsuario, getUserLogado(), modelCronograma.IdPacto, modelCronograma.DataInicioSuspensao, modelCronograma.DataFimSuspensao, cronogramaExistente, modelCronograma.QuantidadeHorasDiasSuspensao); } else { modelCronograma.Cronogramas = pacto.Cronogramas; } modelCronograma.PodeRemoverDias = PodeRemoverDia(modelCronograma); //Só de abrir, já tenho que salvar TempData[PactoController.GetNomeVariavelTempData("Cronogramas", modelCronograma.IdPacto)] = modelCronograma; return(Json(new { Mensagem = "Cronograma atualizado com sucesso", DataTermino = modelCronograma.Cronogramas.OrderBy(c => c.DataCronograma).LastOrDefault()?.DataString ?? "" })); }
private void AdicionarDiaCronograma(CronogramaPactoViewModel model) { var listaCronogramas = model.Cronogramas; var ultimoDia = listaCronogramas.LastOrDefault(); var dataDiaCronograma = ultimoDia != null?ultimoDia.DataCronograma.AddDays(1) : model.DataInicial; var pactosConcorrentes = _pactoService.GetPactosConcorrentes(dataDiaCronograma, DateTime.Now.AddYears(1), model.CPFUsuario, model.IdPacto); var cronogramVM = _cronogramaService.CriarDiaCronograma(dataDiaCronograma, TimeSpan.Zero, TimeSpan.Zero, pactosConcorrentes, cpfSolicitante: model.CPFUsuario, usuarioLogado: getUserLogado()); listaCronogramas.Add(cronogramVM); }
private bool PodeRemoverDia(CronogramaPactoViewModel modelCronograma) { DateTime?dataReferenciaUltimoDia = modelCronograma.Cronogramas.LastOrDefault()?.DataCronograma; if (dataReferenciaUltimoDia.HasValue) { bool podeEditarDiasPassados = modelCronograma.IdPacto == 0 || modelCronograma.CPFUsuario == getUserLogado().CPF; var pacto = _pactoService.ObterPorId(modelCronograma.IdPacto); return(podeEditarDiasPassados || !pacto.DataPrevistaTermino.HasValue || dataReferenciaUltimoDia.Value.Date > pacto.DataPrevistaTermino.Value.Date); } else { return(false); } }
public List <CronogramaViewModel> CalcularAumentoCargaHoraria(CronogramaPactoViewModel cronogramaPactoReferencia, double novaCargaHoraria, List <Pacto> listaPactosConcorrentes, string cpfSolicitante, UsuarioViewModel usuarioLogado) { List <CronogramaViewModel> lista = new List <CronogramaViewModel>(); //Descontando o ultimo dia pra preencher de novo com horas full. DateTime ultimoDiaPreenchido = cronogramaPactoReferencia.Cronogramas.LastOrDefault().DataCronograma; lista.AddRange(cronogramaPactoReferencia.Cronogramas.Take(cronogramaPactoReferencia.Cronogramas.Count - 1)); double horasAAcrescentar = novaCargaHoraria - lista.Sum(c => c.HorasCronograma.TotalHours); lista.AddRange(GerarCronogramas(dataInicio: ultimoDiaPreenchido, cargaHorariaTotalPacto: TimeSpan.FromHours(horasAAcrescentar), cargaHorariaDiaria: cronogramaPactoReferencia.HorasDiarias, cpfSolicitante: cpfSolicitante, usuarioLogado: usuarioLogado, dataInicioSuspensao: cronogramaPactoReferencia.DataInicioSuspensao, dataFimSuspensao: cronogramaPactoReferencia.DataFimSuspensao, listaPactosConcorrentes: listaPactosConcorrentes, idPacto: cronogramaPactoReferencia.IdPacto)); return(lista); }
public PartialViewResult ExibirCronograma(CronogramaPactoViewModel modelCronograma) { AtualizarCronograma(modelCronograma); return(PartialView("_CronogramasPartial", modelCronograma)); }
public PartialViewResult FecharCronograma(CronogramaPactoViewModel model) { ModelState.Clear(); return(PartialView("_CronogramasPartial", model)); }
public PartialViewResult AtualizarVisualizacao(CronogramaPactoViewModel model) { return(PartialView("_CronogramasPartial", model)); }