public static List<Data.Models.Usuario> GetAll() { using (var db = new Data.Context.AppContext()) { return db.Usuario.ToList(); } }
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 Data.Models.Usuario Get(int id) { using (var db = new Data.Context.AppContext()) { return db.Usuario.Include("Pessoa").Where(c => c.Id == id).FirstOrDefault(); } }
public static Data.Models.Usuario Get(int id) { using (var db = new Data.Context.AppContext()) { return db.Usuario.Find(id); } }
public static List<string> GetCommaSeparatedUserRole(int id) { using (var db = new Data.Context.AppContext()) { return db.UsuarioPerfil.Include("Perfil").Include("Usuario").Where(x => x.UsuarioId == id) .Select(c => c.Perfil.Nome).ToList(); } }
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 Data.Models.Usuario ValidateLogin(string usuario, string senha) { using (var db = new Data.Context.AppContext()) { return db.Usuario .Include("Pessoa") .Where(x => x.Login == usuario && x.Senha == senha && x.Ativo == true).FirstOrDefault(); } }
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 List<Data.Models.EstoqueMovimento> GetMovimentacaoProduto(int produtoId) { using (var db = new Data.Context.AppContext()) { return db.EstoqueMovimento .Where(x => x.ProdutoId == produtoId && x.Ativo == true) .OrderByDescending(x => x.Id).ToList(); } }
/// <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(); } } } } }
public static Data.Models.Produto Get(int id) { var model = new Data.Models.Produto(); using(var db = new Data.Context.AppContext()) { model = db.Produto.Where(e => e.Id == id).FirstOrDefault(); } return model; }
public static int GetSaldoAtualProduto(int produtoId) { using (var db = new Data.Context.AppContext()) { int saldoProduto = db.EstoqueMovimento.Where(x => x.ProdutoId == produtoId && x.Ativo == true) .Sum(x => (x.Quantidade * x.MovimentoTipo)); return saldoProduto; } }
public static Data.Models.EstoqueMovimento Get(int id) { var model = new Data.Models.EstoqueMovimento(); using(var db = new Data.Context.AppContext()) { model = db.EstoqueMovimento.Include("Produto").Include("Estoque").Where(e => e.Id == id).FirstOrDefault(); } return model; }
public static Data.Models.Pessoa Get(int id) { var model = new Data.Models.Pessoa(); using (var db = new Data.Context.AppContext()) { model = db.Pessoa.Where(x => x.Id == id).FirstOrDefault(); } return model; }
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 List<Data.Models.Produto> GetAll(bool orderBy = false) { var model = new List<Data.Models.Produto>(); using (var db = new Data.Context.AppContext()) { model = db.Produto.ToList(); if (orderBy) model = model.OrderByDescending(c => c.Id).ToList(); } return model; }
public static Data.Models.VeiculoUtilizacao Get(int id) { var model = new Data.Models.VeiculoUtilizacao(); using(var db = new Data.Context.AppContext()) { model = db.VeiculoUtilizacao.Include("Pessoa") .Include("Veiculo") .Include("VeiculoUtilizacaoStatus").Where(e => e.Id == id).FirstOrDefault(); } return model; }
public static Data.Models.Veiculo Get(int id) { var model = new Data.Models.Veiculo(); using (var db = new Data.Context.AppContext()) { model = db.Veiculo.Include("VeiculoAlerta").Where(e => e.Id == id).FirstOrDefault(); var veiculoQuilometragemAtual = db.VeiculoUtilizacao.Where(x => x.VeiculoId == model.Id && x.VeiculoUtilizacaoStatusId == 3).OrderByDescending(c => c.Id).FirstOrDefault(); model.KmAtual = veiculoQuilometragemAtual.KmFinal; } return model; }
public static List<Data.Models.EstoqueMovimento> GetAll(bool orderBy = false) { var model = new List<Data.Models.EstoqueMovimento>(); using (var db = new Data.Context.AppContext()) { model = db.EstoqueMovimento.Include("Produto").Include("Estoque").ToList(); if (orderBy) model = model.OrderByDescending(c => c.Id).ToList(); } return model; }
public static Data.Models.Obra Get(int id) { var model = new Data.Models.Obra(); using(var db = new Data.Context.AppContext()) { model = db.Obra.Include("Cliente") .Include("Encarregado") .Include("ObraStatus") .Include("Notificacao").Where(e => e.Id == id).FirstOrDefault(); } return model; }
public static List<Data.Models.Obra> GetAll(bool orderBy = false) { var model = new List<Data.Models.Obra>(); using (var db = new Data.Context.AppContext()) { model = db.Obra.Include("Cliente") .Include("Encarregado") .Include("ObraStatus") .Include("Notificacao").ToList(); if (orderBy) model = model.OrderByDescending(c => c.Id).ToList(); } return model; }
public static List<Data.Models.VeiculoUtilizacao> GetAll(bool orderBy = false) { var model = new List<Data.Models.VeiculoUtilizacao>(); using (var db = new Data.Context.AppContext()) { model = db.VeiculoUtilizacao.Include("Pessoa") .Include("Veiculo") .Include("VeiculoUtilizacaoStatus").ToList(); if (orderBy) model = model.OrderByDescending(c => c.Id).ToList(); } return model; }
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> /// Enviar e-mail para a direção da empresa /// </summary> /// <param name="nome">Remetente</param> /// <param name="assunto">Assunto.</param> /// <param name="corpo">Corpo da mensagem</param> public static void EmailDiretoria(string nome, string assunto, string corpo) { 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 = "[Engefibra]["+ nome +"] Fale com a Direção: " + assunto; mailer.destinatarios = destinatarios; mailer.tipoEnvioEmail = MailerSendType.Outros; mailer.corpo = "Enviado por: <br />" + nome + "<br />" + corpo; mailer.corpoHtml = true; mailer.Send(); } }
/// <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(); } } } }
public static List<Data.Models.Veiculo> GetAll(bool orderBy = false) { var model = new List<Data.Models.Veiculo>(); using (var db = new Data.Context.AppContext()) { model = db.Veiculo.Include("VeiculoAlerta").ToList(); foreach (var item in model) { var veiculoQuilometragemAtual = db.VeiculoUtilizacao.Where(x => x.VeiculoId == item.Id && x.VeiculoUtilizacaoStatusId == 3).OrderByDescending(c => c.Id).FirstOrDefault(); item.KmAtual = veiculoQuilometragemAtual.KmFinal; } if (orderBy) model = model.OrderByDescending(c => c.Id).ToList(); } return model; }
public InDbCategoryProvider(Data.Context.AppContext context, IMapper mapper) { this.context = context; this.mapper = mapper; }
/// <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> /// Dispara a notificação do produto que o saldo está abaixo do parametro configurado /// </summary> /// <param name="produtoId">Identificador do produto</param> public static void NotificacaoSaldoProduto(int produtoId) { using (var db = new Data.Context.AppContext()) { var produto = db.Produto.Find(produtoId); var destinatarios = db.Pessoa.Where(x => x.ObraNotificacao == true).Select(x => x.Email).ToList(); var mailer = new Mailer(); mailer.assunto = "[Estoque] Situação de estoque abaixo do mínimo: " + produto.Nome; mailer.destinatarios = destinatarios; mailer.tipoEnvioEmail = MailerSendType.Produtos; mailer.corpo = "Após um resumo das últimas movimentações, foi constatado que este produto está abaixo da quantidade minima de estoque [" + Configuration.GetValue("QuantidadeEstoqueMinima") + "] unidades.<br />" + "O produto: " + produto.Nome + " de cód. fornecedor [" + produto.CodFornecedor + "] possui saldo [" + EstoqueMovimento.GetSaldoAtualProduto(produtoId) + "] no sistema, por favor verificar.<br /><br />" + "<strong>Fornecedor:</strong> " + produto.Fornecedor + ", entre em contato para consultar preços especiais.<br/>" + "<strong>Observações:</strong> " + produto.Observacao; mailer.corpoHtml = true; mailer.Send(); } }
public InDbTodoItemTagProvider(Data.Context.AppContext context, IMapper mapper) { this.context = context; this.mapper = mapper; }