public static IList <TabelaAtributo> TrataSubstituicoes(this PosicaoTL posicao, DateTime referencia, object baseObject, IList <TabelaAtributo> modelAsAttributes) { var eventos = posicao.GetMarco(referencia).Eventos.Clone(); //Trata eventos permanentes if (posicao.ExisteEventoNoPassado(referencia, enumTipoEvento.Admissao)) { eventos.Add(enumTipoEvento.Admissao); } if (posicao.ExisteEventoNoPassado(referencia, enumTipoEvento.Demissao)) { eventos.Add(enumTipoEvento.Demissao); } var qtd = posicao.ObtemQtdOcorrenciasEventoNoPassado(referencia, enumTipoEvento.SubirCargo); for (int i = 1; i <= qtd; i++) { eventos.Add(enumTipoEvento.SubirCargo); } // if (eventos == null || eventos.Count() == 0) { return(modelAsAttributes); } object localBaseObject = baseObject; foreach (var evento in eventos) { switch (evento.Tipo) { case enumTipoEvento.Admissao: modelAsAttributes.Single(a => a.AtributoId == 7).Valor = referencia; break; case enumTipoEvento.Demissao: modelAsAttributes.Single(a => a.AtributoId == 8).Valor = referencia; break; case enumTipoEvento.SubirCargo: var func = (Funcionario)localBaseObject; func = func.Clone(); func.Cargo = func.Cargo.ObterCargoSuperior(); localBaseObject = func; modelAsAttributes.Single(a => a.AtributoId == 12).Valor = func.Cargo.SalarioBase; break; case enumTipoEvento.AlteraQtdPool: modelAsAttributes.Single(a => a.AtributoId == 9).Valor = 320; break; default: break; } } return(modelAsAttributes); }
public static int ObtemQtdOcorrenciasEventoNoPassado(this PosicaoTL posicao, DateTime referencia, enumTipoEvento tipo) { return((posicao.IsPool ? posicao.Marcos : posicao.FuncionarioUnico.Marcos) .Where(m => m.Referencia < referencia) .SelectMany(m => m.Eventos) .Count(x => x.Tipo == tipo)); }
public static double Calcular(this PosicaoTL posicao, DateTime referencia, out ResultDictionary results) { IList <TabelaAtributo> modelAsAttributes = null; IList <Regra> regras = null; object baseObject = null; using (var context = new Context()) { if (posicao.IsPool) { modelAsAttributes = posicao.GetModelAsAttributes(); baseObject = posicao; regras = context.Regra.Where(r => r.Id == 5).ToList(); } else { modelAsAttributes = posicao.FuncionarioUnico.GetModelAsAttributes(); baseObject = posicao.FuncionarioUnico; regras = context.Regra.Where(r => r.Id < 5).ToList(); } } var finalModel = posicao.TrataSubstituicoes(referencia, baseObject, modelAsAttributes); var parameters = new CalculatorParams(finalModel, regras); var result = new Calculator(parameters).Calculate(out results); return(result); }
public static bool ExisteEventoNoPassado(this PosicaoTL posicao, DateTime referencia, enumTipoEvento tipo) { return((posicao.IsPool ? posicao.Marcos : posicao.FuncionarioUnico.Marcos) .Where(m => m.Referencia < referencia) .SelectMany(m => m.Eventos) .Any(x => x.Tipo == tipo)); }
private void SetCellStyle(PosicaoTL posicao, DateTime referencia, DataGridViewCellStyle cellStyle) { var marco = posicao.GetMarco(referencia); if (_cenario.AplicarCores && marco.Eventos.Any(x => x.Tipo == enumTipoEvento.Admissao)) { cellStyle.BackColor = Color.Green; } else if (_cenario.AplicarCores && marco.Eventos.Any(x => x.Tipo == enumTipoEvento.Demissao)) { cellStyle.BackColor = Color.Red; } else if (_cenario.AplicarCores && marco.Eventos.Any(x => x.Tipo == enumTipoEvento.SubirCargo)) { cellStyle.BackColor = Color.Blue; } else if (_cenario.AplicarCores && marco.Eventos.Any(x => x.Tipo == enumTipoEvento.AlteraQtdPool)) { cellStyle.BackColor = Color.Yellow; } else { cellStyle.BackColor = Color.White; } }
private IList <TabelaAtributo> TrataSubstituicoes(PosicaoTL posicao, DateTime referencia, IList <TabelaAtributo> modelAsAttributes) { var marcos = posicao.IsPool ? posicao.Marcos : posicao.FuncionarioUnico.Marcos; var eventos = marcos.Where(x => x.Referencia == referencia).SelectMany(x => x.Eventos); if (eventos == null || eventos.Count() == 0) { return(modelAsAttributes); } foreach (var evento in eventos) { switch (evento.Tipo) { case enumTipoEvento.Admissao: modelAsAttributes.Single(a => a.AtributoId == 7).Valor = referencia; break; case enumTipoEvento.Demissao: modelAsAttributes.Single(a => a.AtributoId == 8).Valor = referencia; break; case enumTipoEvento.AlteraQtdPool: modelAsAttributes.Single(a => a.AtributoId == 9).Valor = 320; break; default: break; } } return(modelAsAttributes); }
private double Calcular(PosicaoTL posicao, DateTime referencia) { IList <TabelaAtributo> modelAsAttributes = null; IList <Regra> regras = null; using (var context = new Context()) { if (posicao.IsPool) { modelAsAttributes = posicao.GetModelAsAttributes(); regras = context.Regra.Where(r => r.Id == 3).ToList(); } else { modelAsAttributes = posicao.FuncionarioUnico.GetModelAsAttributes(); regras = context.Regra.Where(r => r.Id < 3).ToList(); } } var finalModel = TrataSubstituicoes(posicao, referencia, modelAsAttributes); var parameters = new CalculatorParams(finalModel, regras); var result = new Calculator(parameters).Calculate(); return(result); }
private List <Marco> GetMarcos(PosicaoTL posicao) { var result = new List <Marco>(); for (DateTime i = xDateTimePickerMonth1.Value; i <= xDateTimePickerMonth2.Value; i = i.AddMonths(1)) { result.Add(new Marco(i, posicao)); } return(result); }
private void xButton1_Click(object sender, EventArgs e) { GeraColunasTimeLine(); var source = new List <PosicaoTL>(); using (var context = new Context()) { for (int i = 0; i < context.Posicao.Count; i++) { var posicao = context.Posicao[i]; /* * var modelAsAttributes = posicao.GetModelAsAttributes(); * var parameters = new CalculatorParams(modelAsAttributes, context.Regra); * var result = new Calculator(parameters).Calculate(); */ var p = new PosicaoTL() { Id = posicao.Id, Nome = posicao.Nome, }; if (posicao.IsPool) { p.QtdHoras = posicao.QtdHoras; p.Marcos = GetMarcos(p); } else { p.Funcionarios = new[] { new FuncionarioTL() { Id = context.Funcionario[i].Id, Nome = context.Funcionario[i].Nome, Nascimento = context.Funcionario[i].Nascimento, Sexo = context.Funcionario[i].Sexo, Salario = context.Funcionario[i].Salario, Admissao = context.Funcionario[i].Admissao, Rescisao = context.Funcionario[i].Rescisao } }.ToList(); p.FuncionarioUnico.Marcos = GetMarcos(p); } source.Add(p); } } xDataGridView1.DataSource = source; }
public static void FillPositions(this Cenario calcParams) { calcParams.Posicoes = new List <PosicaoTL>(); using (var context = new Context()) { for (int i = 0; i < context.Posicao.Count; i++) { var posicao = context.Posicao[i]; /* * var modelAsAttributes = posicao.GetModelAsAttributes(); * var parameters = new CalculatorParams(modelAsAttributes, context.Regra); * var result = new Calculator(parameters).Calculate(); */ var p = new PosicaoTL() { Id = posicao.Id, Nome = posicao.Nome, }; if (posicao.IsPool) { p.QtdHoras = posicao.QtdHoras; p.Marcos = calcParams.GetMarcos(p); } else { p.Funcionarios = new[] { new FuncionarioTL() { Id = context.Funcionario[i].Id, Nome = context.Funcionario[i].Nome, Nascimento = context.Funcionario[i].Nascimento, Sexo = context.Funcionario[i].Sexo, Salario = context.Funcionario[i].Salario, Cargo = context.Funcionario[i].Cargo, Admissao = context.Funcionario[i].Admissao, Rescisao = context.Funcionario[i].Rescisao } }.ToList(); p.FuncionarioUnico.Marcos = calcParams.GetMarcos(p); } calcParams.Posicoes.Add(p); } } }
public static Marco GetMarco(this PosicaoTL posicao, DateTime referencia) { var marcos = posicao.IsPool ? posicao.Marcos : posicao.FuncionarioUnico.Marcos; return(marcos.Single(m => m.Referencia == referencia)); }
public static double Calcular(this PosicaoTL posicao, DateTime referencia) { return(posicao.Calcular(referencia, out ResultDictionary results)); }
private static List <Marco> GetMarcos(DateTime dataInicial, DateTime dataFinal, PosicaoTL posicao) { var result = new List <Marco>(); for (DateTime i = dataInicial; i <= dataFinal; i = i.AddMonths(1)) { result.Add(new Marco(i, posicao)); } return(result); }
private static List <Marco> GetMarcos(this Cenario calcParams, PosicaoTL posicao) { return(GetMarcos(calcParams.DataInicial, calcParams.DataFinal, posicao)); }