public static bool Add(Data.Models.EstoqueMovimento model)
        {
            bool sucesso = true;

            using (var db = new Data.Context.AppContext())
            {
                // Caso a movimentação de saida seja maior que o Saldo Atual, não deixar que ela ocorra, futuramente, retornar mensagem de erro
                if(model.MovimentoTipo == -1)
                {
                    var produtoSaldo = Bll.EstoqueMovimento.GetSaldoAtualProduto(model.ProdutoId);
                    if(produtoSaldo + (model.Quantidade * model.MovimentoTipo) < 0)
                    {
                        //TODO: Mensagem de erro
                        return false;
                    }
                }

                db.EstoqueMovimento.Add(model);
                db.SaveChanges();

                var saldoAtualProduto = Bll.EstoqueMovimento.GetSaldoAtualProduto(model.ProdutoId);
                if (saldoAtualProduto < Convert.ToInt32(Configuration.GetValue("QuantidadeEstoqueMinima")))
                {
                    Bll.EstoqueMovimento.NotificacaoSaldoProduto(model.ProdutoId);
                }
            }
            return sucesso;
        }
Example #2
0
 public static void Alter(Data.Models.Pessoa model)
 {
     using (var db = new Data.Context.AppContext())
     {
         db.Entry(model).State = EntityState.Modified;
         db.SaveChanges();
     }
 }
Example #3
0
 public static void Delete(int id)
 {
     using (var db = new Data.Context.AppContext())
     {
         Data.Models.Obra model = db.Obra.Find(id);
         db.Obra.Remove(model);
         db.SaveChanges();
     }
 }
 public static void Delete(int id)
 {
     using (var db = new Data.Context.AppContext())
     {
         Data.Models.VeiculoUtilizacao model = db.VeiculoUtilizacao.Find(id);
         db.VeiculoUtilizacao.Remove(model);
         db.SaveChanges();
     }
 }
Example #5
0
        public static bool Add(Data.Models.Obra model)
        {
            bool sucesso = true;

            using (var db = new Data.Context.AppContext())
            {
                db.Obra.Add(model);
                db.SaveChanges();
            }
            return sucesso;
        }
        public static bool Add(Data.Models.VeiculoUtilizacao model)
        {
            bool sucesso = true;

            using (var db = new Data.Context.AppContext())
            {
                db.VeiculoUtilizacao.Add(model);
                db.SaveChanges();
            }
            return sucesso;
        }
        public static void Delete(int id)
        {
            using (var db = new Data.Context.AppContext())
            {
                Data.Models.EstoqueMovimento model = db.EstoqueMovimento.Find(id);
                db.EstoqueMovimento.Remove(model);
                db.SaveChanges();

                var saldoAtualProduto = Bll.EstoqueMovimento.GetSaldoAtualProduto(model.ProdutoId);
                if (saldoAtualProduto < Convert.ToInt32(Configuration.GetValue("QuantidadeEstoqueMinima")))
                {
                    Bll.EstoqueMovimento.NotificacaoSaldoProduto(model.ProdutoId);
                }
            }
        }
Example #8
0
        /// <summary>
        /// Notificação sobre obras agendadas
        /// </summary>
        public static void NotificarObrasAgendadas()
        {
            var obrasAgendadas = GetAll().Where(x => x.ObraStatusId == 1).ToList();

            foreach (var item in obrasAgendadas)
            {
                var dataAtual = DateTime.Now;
                var dataMinimaNotificacao = item.DataAgendamento.AddDays(-2);
                var dataMaximaNotificacao = item.DataAgendamento.AddDays(2);

                if(dataAtual >= dataMinimaNotificacao && dataAtual <= dataMaximaNotificacao)
                {
                    using (var db = new Data.Context.AppContext())
                    {
                        var destinatarios = db.Pessoa.Where(x => x.ObraNotificacao == true).Select(x => x.Email).ToList();

                        var mailer = new Mailer();

                        mailer.assunto = "[Obra] " + item.Nome + ", agendada para " + item.DataAgendamento.ToString("dd/MM/yyyy") + " aguarda uma interação!";
                        mailer.destinatarios = destinatarios;
                        mailer.tipoEnvioEmail = MailerSendType.Obras;

                        mailer.corpo =
                            "A obra " + item.Nome + ", do cliente " + item.Cliente.Nome + " está em AGENDAMENTO para a data " + item.DataAgendamento.ToString("dd/MM/yyyy") + ".<br /><br />" +
                            "<strong>Encarregado:</strong> " + item.Encarregado.Nome + "<br/>" +
                            "<strong>Pendencias:</strong> " + item.Pendencias + "<br/>" +
                            "<strong>Observações:</strong> " + item.Observacao + "<br/>" +
                            "<strong>Endereço:</strong> " + item.Endereco + " - " + item.Cep + ", " + item.Cidade + "<br/><br />" +
                            "Para não receber notificações, atualize a situação da Obra, ou encerre a mesma caso não tiver outra opção.";
                        mailer.corpoHtml = true;

                        mailer.Send();

                        db.ObraNotificacao.Add(new Data.Models.ObraNotificacao
                        {
                            ObraId = item.Id,
                            Ativo = true,
                            DataCriacao = DateTime.Now,
                            DataAlteracao = DateTime.Now
                        });
                        db.SaveChanges();
                    }
                }
            }
        }
Example #9
0
        /// <summary>
        /// Notificação sobre obras com Situação "Pendência" ou Campo "Pendência" preenchido
        /// </summary>
        public static void NotificarObrasComPendencia()
        {
            var obrasPendencia = GetAll().Where(x => x.ObraStatusId == 3 || !String.IsNullOrEmpty(x.Pendencias)).ToList();
            foreach (var item in obrasPendencia)
            {
                using (var db = new Data.Context.AppContext())
                {
                    var destinatarios = db.Pessoa.Where(x => x.ObraNotificacao == true).Select(x => x.Email).ToList();

                    var mailer = new Mailer();

                    mailer.assunto = "[Obra] " + item.Nome + ", com situação PENDENCIA! [IMPORTANTE]";
                    mailer.destinatarios = destinatarios;
                    mailer.tipoEnvioEmail = MailerSendType.Obras;

                    mailer.corpo =
                        "A obra " + item.Nome + ", do cliente " + item.Cliente.Nome + " está com PENDENCIAS que precisam ser resolvidas para normalização da obra.<br /><br />" +
                        "<strong>Situação:</strong> " + item.ObraStatus.Nome + "<br/>" +
                        "<strong>Encarregado:</strong> " + item.Encarregado.Nome + "<br/>" +
                        "<strong>Pendencias:</strong> " + item.Pendencias + "<br/>" +
                        "<strong>Observações:</strong> " + item.Observacao + "<br/>" +
                        "<strong>Endereço:</strong> " + item.Endereco + " - " + item.Cep + ", " + item.Cidade + "<br/><br />" +
                        "Para não receber notificações, atualize a situação da Obra, ou encerre a mesma caso não tiver outra opção.";
                    mailer.corpoHtml = true;

                    mailer.Send();

                    db.ObraNotificacao.Add(new Data.Models.ObraNotificacao
                    {
                        ObraId = item.Id,
                        Ativo = true,
                        DataCriacao = DateTime.Now,
                        DataAlteracao = DateTime.Now
                    });
                    db.SaveChanges();
                }
            }
        }
Example #10
0
        /// <summary>
        /// Notificar todos os veiculos que possuem KmAtual maior do que a estabelecida para manutenção
        /// </summary>
        public static void NotificarAlertasManutencao()
        {
            using (var db = new Data.Context.AppContext())
            {
                var veiculos = GetAll();

                foreach (var item in veiculos)
                {
                    var ultimaManutencao = db.VeiculoManutencaoHistorico
                                             .Where(x => x.VeiculoId == item.Id && x.ManutencaoRealizada == true)
                                             .OrderByDescending(x => x.Id).FirstOrDefault();
                    var kmInicialConsideracao = (ultimaManutencao != null ? ultimaManutencao.KmAtual : item.KmInicial);

                    // Caso a Km Atual - Km Inicial for igual ou maior a estabelecida no alerta, toca lenha
                    var quilometragemManutencao = db.VeiculoAlertas.Where(c => c.Id == item.VeiculoAlertaId).FirstOrDefault();

                    if ((item.KmAtual - kmInicialConsideracao) >= quilometragemManutencao.KmManutencao)
                    {
                        var destinatarios = db.Pessoa.Where(x => x.VeiculoNotificacao == true).Select(x => x.Email).ToList();

                        var mailer = new Mailer();

                        mailer.assunto = "[Veiculo] Programar manutenção para: " + item.Placa + " - " + item.Modelo;
                        mailer.destinatarios = destinatarios;
                        mailer.tipoEnvioEmail = MailerSendType.Veiculos;

                        mailer.corpo =
                            "Foi constatado que o veiculo (" + item.Placa + " - " + item.Modelo + ") rodou (" + (item.KmAtual - item.KmInicial) + " kms) após a última manutenção, e foi chegado o momento de realizar uma nova manutenção no mesmo.<br /><br />" +
                            "<strong>Plano de manutenção escolhido:</strong> " + quilometragemManutencao.Nome + " - manutenção programada a cada " + quilometragemManutencao.KmManutencao + " kms.<br/>" +
                            "<strong>Quilometragem ultima manutenção:</strong> " + kmInicialConsideracao + "<br/>" +
                            "<strong>Quilometragem atual:</strong> " + item.KmAtual + "<br/>" +
                            "<strong>Dados veiculo:</strong> " + item.Placa + " - " + item.Modelo + ", " + item.Cor + "/" + item.AnoFabricacao + "<br/><br />" +
                            "Para não receber notificações, encerre a manutenção pendente no sistema, no menu <strong>Veiculos >> Histórico de manutenção de veiculos</strong>";
                        mailer.corpoHtml = true;

                        mailer.Send();

                        // Caso não possua nenhuma manutenção pendente, inserir, para aguardar a interação do administrador
                        if (db.VeiculoManutencaoHistorico.Where(x => x.VeiculoId == item.Id && x.ManutencaoRealizada == false).Count() == 0)
                        {
                            db.VeiculoManutencaoHistorico.Add(new Data.Models.VeiculoManutencaoHistorico
                            {
                                VeiculoId = item.Id,
                                KmAtual = item.KmAtual,
                                DataNotificacao = DateTime.Now,
                                DataConfirmacao = DateTime.Now,
                                ManutencaoRealizada = false,
                                UsuarioAlteracao = 0,
                                UsuarioCriacao = 0
                            });
                            db.SaveChanges();
                        }
                    }
                }
            }
        }