コード例 #1
0
        internal static void CalculoFaturacaoOperadoresMensal(Projeto_Lab_WebContext bd)
        {
            DateTime hoje        = DateTime.Today;
            DateTime mespassado  = hoje.AddMonths(-1);
            int      mes         = mespassado.Month;
            int      ano         = mespassado.Year;
            decimal  lucromensal = 0;

            DateTime primeirodiamespassado             = new DateTime(ano, mes, 1);
            DateTime primeirodiamescorrente            = new DateTime(hoje.Year, hoje.Month, 1);
            List <FaturacaoOperadores> faturacaomensal = new List <FaturacaoOperadores>();

            foreach (var item in bd.FaturacaoOperadores)
            {
                if (item.Mes == mes && item.Ano == ano)
                {
                    faturacaomensal.Add(item);
                }
            }
            if (faturacaomensal.Count == 0)
            {
                List <FaturacaoOperadores> faturacaoOperadores = new List <FaturacaoOperadores>();

                List <Utilizadores> operadores = new List <Utilizadores>();
                foreach (var item in bd.Utilizadores)
                {
                    if (item.Role == "Operador")
                    {
                        operadores.Add(item);
                    }
                }

                foreach (var operador in operadores)
                {
                    foreach (var contrato in bd.Contratos)
                    {
                        if (contrato.DataInicio >= primeirodiamespassado && contrato.DataInicio < primeirodiamescorrente)
                        {
                            if (contrato.FuncionarioId == operador.UtilizadorId)
                            {
                                lucromensal += contrato.PrecoFinal;
                            }
                        }
                    }
                    faturacaoOperadores.Add(new FaturacaoOperadores()
                    {
                        UtilizadorId = operador.UtilizadorId, TotalFaturacao = lucromensal, Mes = mes, Ano = ano, NomeMes = NomesDoMes(mes)
                    });
                    lucromensal = 0;
                }

                foreach (var item in faturacaoOperadores)
                {
                    bd.FaturacaoOperadores.Add(item);
                }
                bd.SaveChanges();
            }
        }
コード例 #2
0
        internal static void CalculoFaturacaoOperadoresTeste(Projeto_Lab_WebContext bd)
        {
            if (bd.FaturacaoOperadores.Any())
            {
                return;
            }

            List <Contratos> contratos = new List <Contratos>();

            List <Utilizadores> operadores = new List <Utilizadores>();

            foreach (var item in bd.Contratos)
            {
                contratos.Add(item);
            }

            foreach (var item in bd.Utilizadores)
            {
                if (item.Role == "Operador")
                {
                    operadores.Add(item);
                }
            }

            List <Contratos> contratosOrdenados = contratos
                                                  .OrderBy(p => p.DataInicio)
                                                  .ToList();


            DateTime primeirocontrato = contratosOrdenados[0].DataInicio;
            DateTime hoje             = DateTime.Today;

            List <FaturacaoOperadores> faturacaoOperadores = new List <FaturacaoOperadores>();

            int primeiroano = primeirocontrato.Year;
            int anocorrente = hoje.Year;

            decimal lucromensal = 0;


            foreach (var operador in operadores)
            {
                for (int ano = primeiroano; ano <= anocorrente; ano++)
                {
                    for (int mes = 1; mes <= 12; mes++)
                    {
                        DateTime primeirodia = new DateTime(ano, mes, 1);
                        DateTime ultimodia   = new DateTime();

                        try
                        {
                            ultimodia = new DateTime(ano, mes, 31);
                        }
                        catch (Exception)
                        {
                            try
                            {
                                ultimodia = new DateTime(ano, mes, 30);
                            }
                            catch (Exception)
                            {
                                try
                                {
                                    ultimodia = new DateTime(ano, mes, 29);
                                }
                                catch (Exception)
                                {
                                    ultimodia = new DateTime(ano, mes, 28);;
                                }
                            }
                        }
                        foreach (var contrato in contratos)
                        {
                            if (contrato.DataInicio >= primeirodia && contrato.DataInicio <= ultimodia)
                            {
                                if (contrato.FuncionarioId == operador.UtilizadorId)
                                {
                                    lucromensal += contrato.PrecoFinal;
                                }
                            }
                        }
                        faturacaoOperadores.Add(new FaturacaoOperadores()
                        {
                            UtilizadorId = operador.UtilizadorId, TotalFaturacao = lucromensal, Mes = mes, Ano = ano, NomeMes = NomesDoMes(mes)
                        });
                        lucromensal = 0;
                    }
                }
            }
            foreach (var item in faturacaoOperadores)
            {
                bd.FaturacaoOperadores.Add(item);
            }
            bd.SaveChanges();
        }
コード例 #3
0
 public EnvioEmails(Projeto_Lab_WebContext context, IEmailSender emailSender)
 {
     bd           = context;
     _emailSender = emailSender;
 }
コード例 #4
0
 public EnvioEmails(Projeto_Lab_WebContext context)
 {
     bd = context;
 }