Exemple #1
0
        public void GetValorBonus_CaminhoFeliz_RetornoOk()
        {
            Funcionario f = funcionarios[0];

            double valorBonus = 0;
            int    PFS        = RegraNegocio.GetPesoPorFaixaSalarial(f);

            valorBonus  = f.salarioBruto * RegraNegocio.GetPesoPorTempoDeAdmissao(f);
            valorBonus += f.salarioBruto * RegraNegocio.GetPesoPorAreaDeAtuacao(f);
            valorBonus  = (valorBonus / PFS);
            int nmeses = RegraNegocio.GetQtdMesesTrabalhadosAnoAnterior(f);

            valorBonus = valorBonus * nmeses;

            // Pelas regras estabelecidas a fórmula para se chegar ao bônus de cada funcionário é:
            //                        (SB* PTA) + (SB* PAA)
            //                    ______________________________  * 12 (Meses do Ano)
            //                                (PFS)
            //   Legenda SB: Salário Bruto
            //        PTA: Peso por tempo de admissão
            //        PAA: Peso por aréa de atuação
            //        PFS: Peso por faixa salarial
            //
            //valorBonus = 989.0 * 1 = 989.0
            //valorBonus = 989.0 + 989.0 * 5 = 5934.0
            //valorBonus = (5934.0 / 1) = 5934.0
            //valorBonus = 5934.0 * 4 = 23736.0
            double resultado = RegraNegocio.GetValorBonus(f);

            Assert.Equal((double)23736.0d, resultado);
        }
Exemple #2
0
        public void GetPesoPorAreaDeAtuacao_ServicosGerais_Retorno3()//peso por area de atuacao
        {
            Funcionario f = funcionarios[0];

            f.area = "Serviços Gerais";
            Assert.Equal(3, RegraNegocio.GetPesoPorAreaDeAtuacao(f));
        }
Exemple #3
0
        public void GetPesoPorFaixaSalarial_Estagiario_Retorno1()
        {
            Funcionario f = funcionarios[0];

            f.cargo = "Estagiário";
            Assert.Equal(1, RegraNegocio.GetPesoPorFaixaSalarial(f));
        }
Exemple #4
0
        public void GetPesoPorAreaDeAtuacao_RelacionamentoCliente_Retorno5()//peso por area de atuacao
        {
            Funcionario f = funcionarios[0];

            f.area = "Relacionamento com o Cliente";
            Assert.Equal(5, RegraNegocio.GetPesoPorAreaDeAtuacao(f));
        }
Exemple #5
0
        public void GetPesoPorAreaDeAtuacao_Tecnologia_Retorno2()
        {
            Funcionario f3 = funcionarios[0];

            f3.area = "Tecnologia";
            Assert.Equal(2, RegraNegocio.GetPesoPorAreaDeAtuacao(f3));
        }
Exemple #6
0
        public void GetPesoPorAreaDeAtuacao_Financeiro_Retorno2()
        {
            Funcionario f2 = funcionarios[0];

            f2.area = "Financeiro";
            Assert.Equal(2, RegraNegocio.GetPesoPorAreaDeAtuacao(f2));
        }
Exemple #7
0
        public void GetPesoPorAreaDeAtuacao_Contabilidade_Retorno2()
        {
            Funcionario f1 = funcionarios[0];

            f1.area = "Contabilidade";
            Assert.Equal(2, RegraNegocio.GetPesoPorAreaDeAtuacao(f1));
        }
Exemple #8
0
        /// <summary>
        /// Feito esse metodo de verificao externo para nao poluir o construtor com verificacoes
        /// </summary>
        private string verificaErros(int matricula, string nome, string area, string cargo, string salarioBrutoReais, DateTime dataAdmissao)
        {
            double salarioBruto;

            if (salarioBrutoReais == null || !salarioBrutoReais.Equals(""))
            {
                salarioBruto = RegraNegocio.RealEmDouble(salarioBrutoReais);
            }
            else
            {
                return("Erro ao processar o funcionario matricula: " + matricula.ToString() + " nome: " + nome + ". Salario bruto nao pode ser vazio ou nulo");
            }

            if (nome == null || area == null || cargo == null || matricula < 0 || nome.Equals("") || area.Equals("") || cargo.Equals(""))
            {
                return("Erro ao processar o funcionario matricula: " + matricula.ToString() + " nome: " + nome + ", area: " + area + ", cargo: " + cargo + ". Existem campos sem preenchimento adequado");
            }

            if (dataAdmissao > DateTime.Today)
            {
                return("Erro ao processar o funcionario matricula: " + matricula.ToString() + " nome: " + nome + ". Data de admissao nao pode ser maior do que a data atual.");
            }

            if (salarioBruto < 0)
            {
                return("Erro ao processar o funcionario matricula: " + matricula.ToString() + " nome: " + nome + ". Seu salario eh nao pode ser negativo.");
            }

            return("");
        }
Exemple #9
0
        public void GetPesoPorFaixaSalarial_MenosDe3Salarios_Retorno1()
        {
            Funcionario f             = funcionarios[0];
            double      salarioMinimo = RegraNegocio.GetSalarioMinimo();

            f.salarioBruto = salarioMinimo * 3 - 1;
            Assert.Equal(1, RegraNegocio.GetPesoPorFaixaSalarial(f));
        }
Exemple #10
0
        public void GetPesoPorFaixaSalarial_3a5salarios_Retorno2()
        {
            Funcionario f             = funcionarios[0];
            double      salarioMinimo = RegraNegocio.GetSalarioMinimo();

            f.salarioBruto = salarioMinimo * 3 + 1;
            Assert.Equal(2, RegraNegocio.GetPesoPorFaixaSalarial(f));
        }
Exemple #11
0
        public Participacao(int matricula, string nome, double valorParticipacao)
        {
            this.matricula         = matricula.ToString("D7");
            this.nome              = nome;
            this.valorParticipacao = valorParticipacao;

            this.valorParticipacaoReais = RegraNegocio.DoubleEmReal(valorParticipacao);
        }
Exemple #12
0
        public void GetPesoPorAreaDeAtuacao_Diretoria_Retorno1()//peso por area de atuacao
        {
            Funcionario f = funcionarios[0];

            f.area = "Diretoria";

            Assert.Equal(1, RegraNegocio.GetPesoPorAreaDeAtuacao(f));
        }
Exemple #13
0
        public DistribuicaoLucros(IEnumerable <Funcionario> l, double totalDisponibilizado, bool enforceBudget = false)
        {
            double totalDistribuido = 0;

            total_de_funcionarios = l.Count();
            participacoes         = new List <Participacao>();

            if (total_de_funcionarios == 0)
            {
                throw new Exception("Não existem funcionarios para distribuir o lucro!");
            }

            if (totalDisponibilizado <= 0)
            {
                throw new Exception("Não há lucro a ser distribuído!");
            }

            foreach (Funcionario f in l)
            {
                try
                {
                    Participacao p = new Participacao(f.matricula, f.nome, RegraNegocio.GetValorBonus(f));
                    participacoes.Add(p);
                    totalDistribuido += p.valorParticipacao;
                }
                catch
                {
                    throw new Exception("Erro ao processar o funcionario " + f.ToString());
                }
            }

            if (enforceBudget)
            {
                //tendo o que eh definido pela regra, agora eh necessario caber dentro do budget
                if (totalDistribuido > 0) //divisao por zero nao rola
                {
                    double proporcao = totalDisponibilizado / totalDistribuido;

                    totalDistribuido = 0;
                    foreach (Participacao p in participacoes)
                    {
                        p.valorParticipacao      = p.valorParticipacao * proporcao;
                        p.valorParticipacaoReais = RegraNegocio.DoubleEmReal(p.valorParticipacao);
                        totalDistribuido        += p.valorParticipacao;
                    }
                }
                else
                {
                    throw new Exception("Erro ao calcular o valor da participação");
                }
            }
            total_disponibilizado       = RegraNegocio.DoubleEmReal(totalDisponibilizado);
            total_distribuido           = RegraNegocio.DoubleEmReal(totalDistribuido);
            saldo_total_disponibilizado = RegraNegocio.DoubleEmReal(totalDisponibilizado - totalDistribuido);
        }
        /// <summary>
        // Metodo utilizado para passar parametro do arquivo de log que será gerar,
        // A comando utilizado para gerar o arquivo esta no metodo GravaLog.
        // parameter msg é utliza para criar a linha dentro do arquivo log
        // parameter fileName é utilizado para definir o nome do arquivo de log.
        /// </summary>
        public void Log(string msg, string fileName)
        {
            RegraNegocio rNeg = new RegraNegocio();

            string filePath = System.Configuration.ConfigurationManager.AppSettings["PathLog"];

            if (!filePath.EndsWith("\\"))
            {
                filePath += "\\";
            }
            rNeg.SaveLog(filePath, fileName, msg);
        }
Exemple #15
0
        public void GetQtdMesesTrabalhadosAnoAnterior_CaminhoFeliz_RetornoOk()
        {
            Funcionario f = funcionarios[0];

            if (f.dataAdmissao.Year == DateTime.Today.Year) //entrou esse ano
            {
                Assert.Equal(0, RegraNegocio.GetQtdMesesTrabalhadosAnoAnterior(f));
            }

            if (f.dataAdmissao.Year < DateTime.Today.Year - 1) //entrou antes do ano passado
            {
                Assert.Equal(12, RegraNegocio.GetQtdMesesTrabalhadosAnoAnterior(f));
            }
            Assert.Equal((13 - f.dataAdmissao.Month), RegraNegocio.GetQtdMesesTrabalhadosAnoAnterior(f));
        }
Exemple #16
0
        public Funcionario(int matricula, string nome, string area, string cargo, string salarioBrutoReais, DateTime dataAdmissao)
        {
            string erro = verificaErros(matricula, nome, area, cargo, salarioBrutoReais, dataAdmissao);

            if (!erro.Equals(""))
            {
                throw new Exception(erro);
            }
            this.matricula         = matricula;
            this.nome              = nome;
            this.area              = area;
            this.cargo             = cargo;
            this.dataAdmissao      = dataAdmissao;
            this.salarioBrutoReais = salarioBrutoReais;
            this.salarioBruto      = RegraNegocio.RealEmDouble(salarioBrutoReais);
        }
Exemple #17
0
        public void GetPesoPorTempoDeAdmissao_CaminhoFeliz_RetornoOk()
        {
            Funcionario f = funcionarios[0];
            TimeSpan    d = DateTime.Today - f.dataAdmissao;

            int anos = (int)(DateTime.Today.Subtract(f.dataAdmissao).Days / 365.2425);

            if (anos > 8)
            {
                Assert.Equal(5, RegraNegocio.GetPesoPorTempoDeAdmissao(f));
            }
            if (anos > 3)
            {
                Assert.Equal(3, RegraNegocio.GetPesoPorTempoDeAdmissao(f));
            }
            if (anos > 1)
            {
                Assert.Equal(2, RegraNegocio.GetPesoPorTempoDeAdmissao(f));
            }
            Assert.Equal(1, RegraNegocio.GetPesoPorTempoDeAdmissao(f));
        }
Exemple #18
0
        public void DoubleEmReal_CaminhoFeliz_RetornoOk()
        {
            double valor = 100000.01d;

            Assert.Equal("R$ 100.000,01", RegraNegocio.DoubleEmReal(valor));
        }
        public ActionResult Amigos(string nome)
        {
            List <Pessoa> lista = new RegraNegocio().Amigos("");

            return(View(lista));
        }
        // GET: BirthDay
        public ActionResult BirthDay()
        {
            List <Pessoa> lista = new RegraNegocio().BirthDay("");

            return(View(lista));
        }
        // GET: Pessoa
        public ActionResult Index(string nome)
        {
            List <Pessoa> lista = new RegraNegocio().Aniversariantes("");

            return(View(lista));
        }
 public ValorDisponibilizado(string valorDisponibilizadoReais)
 {
     this.valorDisponibilizadoReais = valorDisponibilizadoReais ?? throw new ArgumentNullException(nameof(valorDisponibilizadoReais));
     this.valorDisponibilizado      = RegraNegocio.RealEmDouble(valorDisponibilizadoReais);
 }
        public ListaAmigos Get(Int64 id)
        {
            #region clases/variaveis
            /// <summary>
            /// Variaveis e classes utilizadas
            /// </summary>
            string msg;
            Crypt  vlToken = new Crypt();
            Dictionary <double, Amigos> lisFriendOrder = new Dictionary <double, Amigos>();
            BaseDados    dbData     = new BaseDados();
            RegraNegocio rn         = new RegraNegocio();
            Amigos       friendTime = null;
            Amigos       friend     = null;
            #endregion

            #region retornoGet
            /// <summary>
            ///Identifica e guarda o amigo que esta fazendo a solicitação
            /// </summary>
            try
            {
                friendTime = dbData.Busca(id);
            }
            catch
            {
                // Registrar uma linha de erro no log caso falhe o acesso pelo Token.
                msg = string.Empty;
                msg = "Token invalid: " + id;
                Log(msg, "CalculoHistoricoLog");
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized));
            }
            /// <summary>
            /// Essa rotina ira calcular a distancia de todos amigos diferente do amigo que solicitou a busca
            /// </summary>
            int tot = dbData.totalDados();
            int i   = 1;
            while (i <= tot)
            {
                try
                {
                    friend = dbData.Busca2(i);
                }
                catch
                {
                    msg = string.Empty;
                    msg = "Error at find a friend";
                    Log(msg, "CalculoHistoricoLog");
                    throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized));
                }
                if (friend.Token != vlToken.EncDec(id.ToString(), true).ToString())
                {
                    double distancia = rn.DistanciaAmigos(friendTime.latitude, friendTime.longitude, friend.latitude, friend.longitude);
                    lisFriendOrder.Add(distancia, friend);
                    msg = string.Empty;
                    msg = "Calculo de distancia entro o " + friendTime.Name + " com o " + friend.Name + ", total of : " + distancia.ToString() + " KM";
                    Log(msg, "CalculoHistoricoLog");
                }
                i++;
            }
            /// <summary>
            /// Lista que retona apenas os 3 amigos mais proximos, baseado no calculo de distancia.
            /// </summary>
            int         c        = 1;
            ListaAmigos liFriend = new ListaAmigos();
            liFriend.AfProximos = "Your next friends";
            foreach (KeyValuePair <double, Amigos> liRemove in lisFriendOrder.OrderBy(key => key.Key))
            {
                if (c > 3)
                {
                    lisFriendOrder.Remove(liRemove.Key);
                }
                else
                {
                    liFriend.Amigos.Add(liRemove.Value);
                }

                c++;
            }

            return(liFriend);

            #endregion
        }
Exemple #24
0
        public void GetSalarioMinimo_CaminhoFeliz_RetornaValor()
        {
            double valorAtualSalarioMinimo = 998.0;

            Assert.Equal(valorAtualSalarioMinimo, RegraNegocio.GetSalarioMinimo());
        }
Exemple #25
0
        public void RealEmDouble_CaminhoFeliz_RetornoOk()
        {
            string real = "R$ 100.000,01";

            Assert.Equal(RegraNegocio.RealEmDouble(real), (double)100000.01);
        }
 public String Get()
 {
     return("Webservice desafio." + Environment.NewLine + " O valor Disponibilizado atualmente é de " + RegraNegocio.DoubleEmReal(ArmazenaValorDisponibilizado.valorDisponibilizado));
 }