public async static Task AbreFechaCasa(bool aberta)
        {
            BrasaoContext _contexto = new BrasaoContext();

            var parCasaAberta = _contexto.ParametrosSistema.Where(p => p.CodParametro == CodigosParametros.COD_PARAMETRO_CASA_ABERTA).FirstOrDefault();

            if (parCasaAberta != null)
            {
                parCasaAberta.ValorParametro = (aberta ? "1" : "0");

                await _contexto.SaveChangesAsync();
            }
        }
        public static double GetTaxaEntrega()
        {
            BrasaoContext _contexto = new BrasaoContext();

            var par = _contexto.ParametrosSistema.Where(p => p.CodParametro == CodigosParametros.COD_PARAMETRO_TAXA_ENTREGA).FirstOrDefault();

            if (par != null)
            {
                return(Convert.ToDouble(par.ValorParametro));
            }

            return(3.5);
        }
        public static async Task AlteraTempoMedioEspera(int tempo)
        {
            BrasaoContext _contexto = new BrasaoContext();

            var parTempo = _contexto.ParametrosSistema.Where(p => p.CodParametro == CodigosParametros.COD_PARAMETRO_TEMPO_MEDIO_ESPERA).FirstOrDefault();

            if (parTempo != null)
            {
                parTempo.ValorParametro = tempo.ToString();

                await _contexto.SaveChangesAsync();
            }
        }
        public static int GetTempoMedioEspera()
        {
            BrasaoContext _contexto = new BrasaoContext();

            var par = _contexto.ParametrosSistema.Where(p => p.CodParametro == CodigosParametros.COD_PARAMETRO_TEMPO_MEDIO_ESPERA).FirstOrDefault();

            if (par != null)
            {
                return(Convert.ToInt32(par.ValorParametro));
            }

            return(0);
        }
        public ActionResult Listar()
        {
            var context = new BrasaoContext();

            var classes = context.Classes.Include(c => c.Itens)
                          .Include(c => c.Itens.Select(i => i.Classe))
                          .Include(c => c.Itens.Select(i => i.Complemento))
                          .Where(c => c.Itens.Where(a => a.Ativo).Count() > 0)
                          .ToList();

            ViewBag.Classes = classes;

            return(View());
        }
        public static HorarioFuncionamento GetHorarioAbertura()
        {
            BrasaoContext _contexto = new BrasaoContext();

            var diaSemana = (int)DateTime.Now.DayOfWeek;

            var abertura = _contexto.FuncionamentosEstabelecimento.Where(p => p.DiaSemana >= diaSemana && p.TemDelivery).OrderBy(p => p.Abertura).FirstOrDefault();

            HorarioFuncionamento horario = new HorarioFuncionamento();

            horario.Abertura   = Convert.ToDateTime(DateTime.Now.ToString("dd/MM/yyyy") + " " + abertura.Abertura);
            horario.Fechamento = Convert.ToDateTime(DateTime.Now.ToString("dd/MM/yyyy") + " " + abertura.Fechamento);

            horario.DiaSemana = new CultureInfo("pt-BR").DateTimeFormat.GetDayName((DayOfWeek)abertura.DiaSemana);

            return(horario);
        }
        public static string GetEnderecoImpressoraComanda()
        {
            BrasaoContext _contexto = new BrasaoContext();

            var par = _contexto.ParametrosSistema.Where(p => p.CodParametro == CodigosParametros.COD_PARAMETRO_CODIGO_IMPRESSORA_COMANDA).FirstOrDefault();

            if (par != null)
            {
                int codImpressora = Convert.ToInt32(par.ValorParametro);

                if (codImpressora > 0)
                {
                    var impressora = _contexto.ImpressorasProducao.Find(codImpressora);

                    if (impressora != null)
                    {
                        return(impressora.Porta);
                    }
                }
            }

            return("");
        }
        public static bool CasaAberta()
        {
            BrasaoContext _contexto = new BrasaoContext();

            var parCasaAberta = _contexto.ParametrosSistema.Where(p => p.CodParametro == CodigosParametros.COD_PARAMETRO_CASA_ABERTA).FirstOrDefault();

            if (parCasaAberta != null)
            {
                var casaAberta = Convert.ToInt32(parCasaAberta.ValorParametro);

                if (casaAberta <= 0)
                {
                    return(false);
                }
            }

            var diaSemana = (int)DateTime.Now.DayOfWeek;

            var horarios = _contexto.FuncionamentosEstabelecimento.Where(p => p.DiaSemana == diaSemana && p.TemDelivery).OrderBy(p => p.Abertura).ToList();

            if (horarios != null)
            {
                foreach (var horario in horarios)
                {
                    var abertura   = Convert.ToDateTime(DateTime.Now.ToString("dd/MM/yyyy") + " " + horario.Abertura);
                    var fechamento = Convert.ToDateTime(DateTime.Now.ToString("dd/MM/yyyy") + " " + horario.Fechamento);

                    if (horario.TemDelivery && DateTime.Now >= abertura && DateTime.Now <= fechamento)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
 public PedidoRepository()
 {
     _contexto = new BrasaoContext();
 }
 public CardapioRepository()
 {
     _contexto = new BrasaoContext();
 }
        public async Task <List <String> > ExecutaIntegracaoTronSolution(List <ItemCardapioViewModel> itensTron, List <ClasseItemCardapioViewModel> classesTron)
        {
            String urlBase = "";

            if (ConfigurationManager.AppSettings["URLServicosInternos"] != null)
            {
                urlBase = ConfigurationManager.AppSettings["URLServicosInternos"].ToString();
            }

            List <String> lista = new List <string>();

            List <ClasseItemCardapioViewModel> classesBrasao = _contexto.Classes.Select(i => new ClasseItemCardapioViewModel {
                CodClasse = i.CodClasse, DescricaoClasse = i.DescricaoClasse, CodImpressoraPadrao = i.CodImpressoraPadrao
            }).ToList();

            if (classesTron != null && classesTron.Count > 0)
            {
                List <ClasseItemCardapioViewModel> classesNovas    = new List <ClasseItemCardapioViewModel>();
                List <ClasseItemCardapioViewModel> classesAlterar  = new List <ClasseItemCardapioViewModel>();
                List <ClasseItemCardapioViewModel> classesInativar = new List <ClasseItemCardapioViewModel>();

                classesNovas = (from t in classesTron
                                where !classesBrasao.Any(b => (b.CodClasse == t.CodClasse))
                                select t).ToList();

                classesInativar = (from b in classesBrasao
                                   where !classesTron.Any(t => (b.CodClasse == t.CodClasse))
                                   select b).ToList();

                classesAlterar = (from t in classesTron
                                  where classesBrasao.Any(b => (b.CodClasse == t.CodClasse && b.DescricaoClasse.Trim().ToUpper() != t.DescricaoClasse.Trim().ToUpper()))
                                  select t).ToList();

                if (classesNovas.Count > 0)
                {
                    foreach (var nova in classesNovas)
                    {
                        var classe = new ClasseItemCardapio();
                        classe.CodClasse       = nova.CodClasse;
                        classe.DescricaoClasse = nova.DescricaoClasse;
                        _contexto.Classes.Add(classe);
                    }

                    await _contexto.SaveChangesAsync();

                    lista.Add(classesNovas.Count + " classe(s) de cardápio incluídas.");
                }

                if (classesAlterar.Count > 0)
                {
                    foreach (var diferente in classesAlterar)
                    {
                        var classe = _contexto.Classes.Find(diferente.CodClasse);
                        if (classe != null)
                        {
                            classe.DescricaoClasse = diferente.DescricaoClasse;
                        }
                    }

                    await _contexto.SaveChangesAsync();

                    lista.Add(classesAlterar.Count + " classe(s) de cardápio alteradas.");
                }

                if (classesInativar.Count > 0)
                {
                    var qtd = 0;
                    foreach (var inativada in classesInativar)
                    {
                        if (_contexto.ItensCardapio.Where(i => i.CodClasse == inativada.CodClasse).Count() == 0)
                        {
                            var classe = _contexto.Classes.Find(inativada.CodClasse);
                            if (classe != null)
                            {
                                _contexto.Classes.Remove(classe);
                                qtd += 1;
                            }
                        }
                    }

                    if (qtd > 0)
                    {
                        await _contexto.SaveChangesAsync();

                        lista.Add(classesInativar.Count + " classe(s) de cardápio excluídas.");
                    }
                }
            }

            if (itensTron != null && itensTron.Count > 0)
            {
                List <ItemCardapioViewModel> itensBrasao = _contexto.ItensCardapio.Select(i => new ItemCardapioViewModel {
                    Ativo = i.Ativo, CodItemCardapio = i.CodItemCardapio, CodClasse = i.CodClasse, Nome = i.Nome, Preco = i.Preco
                }).ToList();

                List <ItemCardapioViewModel> itensNovos    = new List <ItemCardapioViewModel>();
                List <ItemCardapioViewModel> itensAlterar  = new List <ItemCardapioViewModel>();
                List <ItemCardapioViewModel> itensInativar = new List <ItemCardapioViewModel>();

                itensNovos = (from t in itensTron
                              where !itensBrasao.Any(b => (b.CodItemCardapio == t.CodItemCardapio))
                              select t).ToList();

                itensInativar = (from b in itensBrasao
                                 where b.Ativo && !itensTron.Any(t => (b.CodItemCardapio == t.CodItemCardapio))
                                 select b).ToList();

                itensInativar.AddRange((from b in itensBrasao
                                        where itensTron.Any(t => (b.CodItemCardapio == t.CodItemCardapio && !t.Ativo && b.Ativo))
                                        select b).ToList());

                itensAlterar = (from t in itensTron
                                where t.Ativo && itensBrasao.Any(b => (b.CodItemCardapio == t.CodItemCardapio && (!b.Ativo || b.Nome.Trim().ToUpper() != t.Nome.Trim().ToUpper() || b.CodClasse != t.CodClasse || b.Preco != t.Preco)))
                                select t).ToList();

                if (itensNovos.Count > 0)
                {
                    foreach (var novo in itensNovos)
                    {
                        var item = new ItemCardapio();
                        item.CodItemCardapio = novo.CodItemCardapio;
                        item.Ativo           = true;
                        item.CodClasse       = novo.CodClasse;
                        item.Nome            = novo.Nome;
                        item.Preco           = novo.Preco;
                        _contexto.ItensCardapio.Add(item);

                        var classe = classesBrasao.Where(c => c.CodClasse == novo.CodClasse).FirstOrDefault();
                        if (classe != null && classe.CodImpressoraPadrao != null && classe.CodImpressoraPadrao.Value > 0)
                        {
                            ItemCardapioImpressora imp = new ItemCardapioImpressora();
                            imp.CodItemCardapio = novo.CodItemCardapio;
                            imp.CodImpressora   = classe.CodImpressoraPadrao.Value;
                            _contexto.ImpressorasItens.Add(imp);
                        }
                    }
                    await _contexto.SaveChangesAsync();

                    lista.Add(itensNovos.Count + " iten(s) de cardápio incluídos.");
                }

                if (itensInativar.Count > 0)
                {
                    foreach (var inativo in itensInativar)
                    {
                        var item = _contexto.ItensCardapio.Find(inativo.CodItemCardapio);
                        if (item != null)
                        {
                            item.Ativo = false;
                        }
                    }

                    await _contexto.SaveChangesAsync();

                    lista.Add(itensInativar.Count + " iten(s) de cardápio inativados.");
                }


                if (itensAlterar.Count > 0)
                {
                    foreach (var alterado in itensAlterar)
                    {
                        var item = _contexto.ItensCardapio.Find(alterado.CodItemCardapio);
                        if (item != null)
                        {
                            item.CodItemCardapio = alterado.CodItemCardapio;
                            item.CodClasse       = alterado.CodClasse;
                            item.Nome            = alterado.Nome;
                            item.Preco           = alterado.Preco;
                            item.Ativo           = alterado.Ativo;
                        }
                    }

                    await _contexto.SaveChangesAsync();

                    lista.Add(itensAlterar.Count + " iten(s) de cardápio alterados.");
                }
            }

            if (lista.Count == 0)
            {
                lista.Add("Nenhuma alteração foi necessária.");
            }

            _contexto.Dispose();
            _contexto = null;

            return(lista);
        }