public void EnviaEmailContato(Fechamento fechamento)
        {
            string toMailAddress = fechamento.Parametro.EmailContato;
            string toContact = fechamento.Parametro.NomeContato;
            decimal valorTotalPedido = 0;

            StringBuilder message = new StringBuilder();

            message.Append("Olá " + toContact + ", \n\n");

            if (fechamento.PossuiTeleEntrega)
            {
                message.Append("Segue pedido do pessoal da Voiza para Tele-Entrega na Voiza:\n\n");
                message.Append("FORMA PAGAMENTO: \n Visa e Visa Vale \n\n");
                message.Append("TELE ENTREGA: R$" + fechamento.Parametro.ValorTeleEntrega + "\n\n");

                valorTotalPedido += (decimal)fechamento.Parametro.ValorTeleEntrega;

                if (fechamento.PossuiBebida)
                {
                    message.Append("BEBIDAS:\n");

                    BebidaService bebidaService = new BebidaService();

                    for (short i = 0; i < fechamento.PedidoIdBebidas.Length; i++)
                    {
                        if (fechamento.PedidoQuantidadeBebidas[i] > 0)
                        {
                            message.Append(" - " + fechamento.PedidoQuantidadeBebidas[i] + " " + bebidaService.GetName(fechamento.PedidoIdBebidas[i]) + " - R$" + fechamento.PedidoQuantidadeBebidas[i] * bebidaService.GetValor(fechamento.PedidoIdBebidas[i]) + "\n");
                            valorTotalPedido += fechamento.PedidoQuantidadeBebidas[i] * bebidaService.GetValor(fechamento.PedidoIdBebidas[i]);
                        }
                    }
                    message.Append("\n");
                }

                message.Append("LANCHES: \n\n");

                foreach (var pedido in fechamento.Pedidos)
                {
                    message.Append(pedido.Usuario.Nome.ToUpper() + " -> " + pedido.Lanche.Nome.ToUpper() + " - R$" + pedido.ValorLanche + "\n");

                    foreach (Opcional opcional in pedido.Opcionais)
                        message.Append(" - Com " + opcional.Nome + "\n");

                    if (!String.IsNullOrWhiteSpace(pedido.Observacao))
                        message.Append(" Obs: " + pedido.Observacao + "\n");

                    valorTotalPedido += (decimal)pedido.ValorLanche;

                    message.Append("\n\n");
                }

                message.Append("VALOR TOTAL DO PEDIDO: R$" + valorTotalPedido + "\n\n");
                message.Append("Muito Obrigado!\n\n");
                message.Append("*** NÃO RESPONDER ESTE EMAIL - MENSAGEM GERADA AUTOMATICAMENTE - SextaNerdApplication ***");

                //Envia email
                Mail.SendMail(toMailAddress, "Pedido Voiza - Tele-Entrega", message.ToString());
            }
            else
            {
                message.Append("Segue pedido do pessoal da Voiza para comer no Restaurante:\n\n");

                message.Append("LANCHES: \n\n");

                foreach (var pedido in fechamento.Pedidos)
                {
                    message.Append(pedido.Usuario.Nome.ToUpper() + " -> " + pedido.Lanche.Nome.ToUpper() + "\n");

                    foreach (Opcional opcional in pedido.Opcionais)
                        message.Append(" - Com " + opcional.Nome + "\n");

                    if (!String.IsNullOrWhiteSpace(pedido.Observacao))
                        message.Append(" Obs: " + pedido.Observacao + "\n");

                    valorTotalPedido += (decimal)pedido.ValorLanche;

                    message.Append("\n\n");
                }

                message.Append("Muito Obrigado!\n\n");
                message.Append("*** NÃO RESPONDER ESTE EMAIL - MENSAGEM GERADA AUTOMATICAMENTE - SextaNerdApplication ***");

                //Envia email
                Mail.SendMail(toMailAddress, "Pedido Voiza - Restaurante", message.ToString());
            }
        }
        public void FechaPedido(Fechamento fechamento)
        {
            // Calcula o valor da tele-entrega

            if (fechamento.PossuiTeleEntrega)
            {
                decimal parcelaTeleEntrega = Decimal.Round((fechamento.Parametro.ValorTeleEntrega / fechamento.Pedidos.Count()), 2);

                foreach (Pedido pedido in fechamento.Pedidos)
                {
                    pedido.ValorEntrega = parcelaTeleEntrega;
                }

                // Calcula o valor das bebidas

                if (fechamento.PossuiBebida)
                {
                    BebidaService bebidaService = new BebidaService();

                    decimal totalBebida = 0;
                    decimal parcelaBebida;

                    for (short i = 0; i < fechamento.PedidoIdBebidas.Length; i++)
                    {
                        totalBebida += fechamento.PedidoQuantidadeBebidas[i] * bebidaService.GetValor(fechamento.PedidoIdBebidas[i]);
                    }

                    parcelaBebida = Decimal.Round((totalBebida / fechamento.Pedidos.Where(p => p.BebidaId != null).Count()), 2);

                    foreach (Pedido pedido in fechamento.Pedidos)
                    {
                        if(pedido.BebidaId != null)
                            pedido.ValorBebida = parcelaBebida;
                    }
                }
            }

            // Atualiza o valor de todos os pedidos em aberto

            PedidoService pedidoService = new PedidoService();

            foreach (Pedido pedido in fechamento.Pedidos)
            {
                pedido.Valor = pedido.Valor + (pedido.ValorBebida != null ? pedido.ValorBebida.Value : 0) + (pedido.ValorEntrega != null ? pedido.ValorEntrega.Value : 0);

                // Marca o pedido como atendido
                pedido.Atendido = 1;

                pedidoService.UpdateSimple(pedido);
            }
        }