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; }
public static void Alter(Data.Models.Pessoa model) { using (var db = new Data.Context.AppContext()) { db.Entry(model).State = EntityState.Modified; db.SaveChanges(); } }
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(); } }
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); } } }
/// <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(); } } } }
/// <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(); } } }
/// <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(); } } } } }