public static int espacoLivre(int IDdoArmazem)
        {
            try
            {
                ArmazemRepository armazemRepository = new ArmazemRepository();
                TamanhoArmazemRepository tamanhoArmazemRepository = new TamanhoArmazemRepository();

                int tamanhoTotalOcupado = 0;
                int tamanhoTotalDoArmazem = tamanhoArmazemRepository.Buscar(IDdoArmazem).tamanhoArmazem;
                foreach (var partesDoArmazem in armazemRepository.Listar().Where(x => x.tamanhoArmazemId == IDdoArmazem))
                {
                    tamanhoTotalOcupado += partesDoArmazem.usadoArmazem;
                }
                return tamanhoTotalDoArmazem - tamanhoTotalOcupado;
            }
            catch (Exception ex)
            {
                return -1;
            }
        }
        public static bool armazemTemEspacoPraIsso(int qtd, int IDdoArmazem)
        {
            try
            {
                ArmazemRepository armazemRepository = new ArmazemRepository();
                TamanhoArmazemRepository tamanhoArmazemRepository = new TamanhoArmazemRepository();

                int tamanhoTotalOcupado = 0;
                foreach (var partesDoArmazem in armazemRepository.Listar().Where(x=>x.tamanhoArmazemId == IDdoArmazem))
                {
                    tamanhoTotalOcupado += partesDoArmazem.usadoArmazem;
                }
                if (tamanhoTotalOcupado + qtd <= tamanhoArmazemRepository.Buscar(IDdoArmazem).tamanhoArmazem)
                    return true;
                else
                    return false;
            }
            catch(Exception ex)
            {
                return false;
            }
        }
        public ActionResult Simulacao(string produto, string classe, string subclasse, string armazenagem, int idarmazem, int qtdarmazem,
            DateTime dtInicio, DateTime dtFim)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(classe) || string.IsNullOrWhiteSpace(subclasse) || string.IsNullOrWhiteSpace(subclasse) || string.IsNullOrWhiteSpace(armazenagem) || string.IsNullOrWhiteSpace(produto))
                {
                    TempData["erro"] = "Nao deixe espacos em branco!";
                    return View();
                }
                if (DateTime.Now.Ticks > dtInicio.Ticks)
                {
                    TempData["erro"] = "A data de inicio nao pode ser menor que a data de hoje!";
                    return View();
                }
                if (dtFim.Ticks <= dtInicio.Ticks)
                {
                    TempData["erro"] = "A data de Fim nao pode ser menor ou igual a data de Inicio!";
                    return View();
                }
                if (qtdarmazem <= 0)
                {
                    TempData["erro"] = "Quantidade de espaco nao pode ser zero ou vazia!";
                    return View();
                }
                if (Negocio.armazemTemEspacoPraIsso(qtdarmazem, idarmazem))
                {
                    var dias = Negocio.retornaDiferencaEntreDuasDatas(dtFim, dtInicio);
                    decimal valorTotal = Convert.ToInt32(((dias * 10) * qtdarmazem) + 1000);

                    if (Session["User"] != null)
                    {
                        PedidoRepository pedidoRepository = new PedidoRepository();
                        ArmazemRepository armazemRepository = new ArmazemRepository();
                        Armazem armazem = new Armazem();

                        var nome = ((Cliente)(Session["User"])).nome;
                        var email = ((Cliente)(Session["User"])).email;
                        var clienteID = ((Cliente)(Session["User"])).clienteId;

                        armazem.clienteId = clienteID;
                        armazem.usadoArmazem = qtdarmazem;
                        armazem.tamanhoArmazemId = idarmazem;
                        //armazemRepository.Add(armazem);

                        Pedido pedido = new Pedido()
                        {
                            clienteId = clienteID,
                            classeId = Convert.ToInt32(classe),
                            subclasseId = Convert.ToInt32(subclasse),
                            armazenagemId = Convert.ToInt32(armazenagem),
                            produto = produto,
                            armazem = armazem,
                            dtInicio = dtInicio,
                            dtFim = dtFim,
                            valorTotal = valorTotal,
                            ckstatus = false
                        };

                        pedidoRepository.Add(pedido);

                        string msg = "Valor total a ser pago e: " + valorTotal + "\nOs dados do seu pedido, serao enviados para o seu e-mail.\nVerifique sua caixa de entrada.";
                        EnviarMensagem em = new EnviarMensagem("*****@*****.**", email, "Vindo do Sistema de Armazem", String.Format("Olá {0},\n\nObrigado por realizar o pedido em nosso sistema!\n\nOs dados do seu pedido são,\nCliente: {0}\nProduto: {8}\nClasse Prod: {1}\nSubClasse Prod: {2}\nID do Armazem: {3}\nData de Início: {4}\nData de Fim: {5}\nValor total a ser pago: {6}\nStatus do pedido: {7}", nome, classe, subclasse, idarmazem, dtInicio, dtFim, valorTotal, "Não pago",produto), "Daniel");
                        em.SubmeterEmail();
                        TempData["certo"] = msg;
                        return View("PaineldeControleUsuario");
                    }
                    else
                    {
                        dias = Negocio.retornaDiferencaEntreDuasDatas(dtFim, dtInicio);
                        valorTotal = Convert.ToInt32(((dias * 10) * qtdarmazem) + 1000);
                        string msg = "Valor total a ser pago e: " + valorTotal;
                        TempData["certo"] = msg;
                        return View();
                    }

                }
                else
                {
                    TempData["erro"] = "Falha na simulacao! Voce selecionou mais espaco que o disponivel.";
                    return View();
                }

            }
            catch (Exception ex)
            {
                TempData["erro"] = "Falha na simulação. Erro: " + ex.Message;
                return View();
            }
        }