예제 #1
0
        /// <summary>
        /// Método responsável, em retornar imagens referente a Cor selececionada.
        /// </summary>
        /// <param name="corId"></param>
        /// <returns></returns>
        public JsonResult ObterImagem(int corId)
        {
            var estoque = new Estoque();

            var query = (from i in _db.ProdutoImagens.Where(c => c.ProdutoCorId == corId).ToList()
                         select new
            {
                porcent = AvaliacaoPorcentual(i.ProdutoCor.ProdutosMontado.First()).ToHtmlString(),
                notaEstrelas = NotaEstrelas(i.ProdutoCor.ProdutosMontado.First()).ToHtmlString(),
                codReferencia = Convert.ToInt32(i.ProdutoCor.ProdutosMontado.First().Id),
                i.ProdutoCorId,
                i.ProdutoCor.ProdutoTamanho.ProdutoId,
                i.ProdutoCor.ProdutoTamanhoId,
                i.Imagem,
                i.Id,
                disponibilidade = estoque.AvaliaDisponibilidade(i.ProdutoCor.ProdutosMontado.First().Id) > 0,
                quantidadeEstoque = ((i.ProdutoCor.ProdutosMontado.First().TetoEstoque >=
                                      estoque.AvaliaDisponibilidade(i.ProdutoCor.ProdutosMontado.First().Id)) ? estoque.AvaliaDisponibilidade(i.ProdutoCor.ProdutosMontado.First().Id)
                             : i.ProdutoCor.ProdutosMontado.First().TetoEstoque),
                i.Imagem2,
                i.TipoArquivo,
                ProdutoMontadoId = i.ProdutoCor.ProdutosMontado.First().Id
            }).ToList();

            return(Json(query, JsonRequestBehavior.AllowGet));
            //
        }
예제 #2
0
        //Adicionar
        public void AdicionarItem(ProdutoMontado produtoMontado)
        {
            ItemCarrinho item;

            if (_userId == null)
            {
                item = _db.ItemCarrinhos
                       .FirstOrDefault(p => p.ProdutoMontado.Id == produtoMontado.Id && p.AnonymousId == _userAnonymonusId);
            }
            else
            {
                item = _db.ItemCarrinhos
                       .FirstOrDefault(p => p.ProdutoMontado.Id == produtoMontado.Id && p.ApplicationUserId == _userId);
            }

            if (_estoque.AvaliaDisponibilidade(produtoMontado.Id) <= 0)
            {
                throw new Exception("Item sem disponibilidade no estoque");
            }

            var promocao = _db.PromocaoItems.FirstOrDefault(c => c.ProdutoMontadoId == produtoMontado.Id && c.Promocao.Ativo);

            if (promocao != null && !PromotionsController.VerificaPromocao(promocao.Promocao))
            {
                promocao = null;
            }

            if (item == null)
            {
                item = new ItemCarrinho
                {
                    PromocaoId          = promocao?.PromocaoId,
                    Data                = DateTime.Now,
                    ProdutoMontadoId    = produtoMontado.Id,
                    QuantidadeTotalItem = 1,
                    ApplicationUserId   = _userId,
                    AnonymousId         = _userAnonymonusId,
                    TabelaPrecoId       = produtoMontado.TabelaPrecos.First().Id,
                    Status              = Status.Alocado
                };
                _db.ItemCarrinhos.Add(item);
            }
            else
            {
                item.QuantidadeTotalItem += 1;
                _db.Entry(item).State     = System.Data.Entity.EntityState.Modified;
            }

            var localLoja  = _db.Parametros.First().local_loja;
            var movEstoque = _db.Estoques.First(c => c.ProdutoMontadoId == produtoMontado.Id && c.LocalId == localLoja);

            movEstoque.SaldoAlocado    += 1;
            _db.Entry(movEstoque).State = System.Data.Entity.EntityState.Modified;
            _db.SaveChanges();
        }
예제 #3
0
        public void AvisoDisponibilidade()
        {
            var produtos = _db.AvisoDisponibilidade.ToList();
            var estoque  = new Estoque();

            foreach (var item in produtos)
            {
                var result = estoque.AvaliaDisponibilidade(item.ProdutoMontadoId) > 0;
                if (result)
                {
                    // Plug in your email service here to send an email.
                    const string @from = "*****@*****.**"; // E-mail de remetente cadastrado no painel
                    var          to    = item.Email;                   // E-mail do destinatário
                    const string user  = "******"; // Usuário de autenticação do servidor SMTP
                    const string pass  = "******";            // Senha de autenticação do servidor SMTP

                    WebClient wc = new WebClient();
                    wc.Encoding = System.Text.Encoding.UTF8;

                    //Obtendo o conteúdo do template
                    string sTemplate = wc.DownloadString(
                        "http://www.famaraonline.com.br/ProdutoVitrine/AvisoDisponibilidadeTemplate");

                    var subject = "Famara Online | Produto disponível " + item.ProdutoMontado.Descricao;

                    var body = subject;
                    body = sTemplate.Replace("##Produdo##", item.ProdutoMontado.Descricao);
                    body = body.Replace("##CodProduto##", item.ProdutoMontado.Id);
                    body = body.Replace("##Imagem##", @"http://www.famaraonline.com.br" + item.ProdutoMontado.ProdutoCor.ProdutoImagens.First().Imagem);

                    var msg = new MailMessage(from, to, subject, body)
                    {
                        From       = new MailAddress(@from, "Farama Online - Loja Virtual"),
                        IsBodyHtml = true
                    };

                    using (var smtp = new SmtpClient("email-ssl.com.br", 587))
                    {
                        smtp.EnableSsl             = true;
                        smtp.UseDefaultCredentials = false;
                        smtp.Credentials           = new NetworkCredential(user, pass);
                        try
                        {
                            smtp.Send(msg);
                            _db.AvisoDisponibilidade.Remove(item);
                            _db.SaveChanges();
                        }
                        catch (Exception)
                        {
                        }
                    }
                }
            }
        }
예제 #4
0
        /// <summary>
        /// Monta o panel completo do produto
        /// </summary>
        /// <param name="produto"></param>
        /// <returns></returns>
        public MvcHtmlString PanelProdutoFor(Produto produto)
        {
            // Panel
            _tagDivPanel = new TagBuilder("div");
            _tagDivPanel.AddCssClass("panel");
            _tagDivPanel.AddCssClass(Convert.ToString(produto.Id));
            _tagDivPanel.MergeAttribute("Id", Convert.ToString(produto.Id));
            _tagDivPanel.MergeAttribute("control-value", Convert.ToString(produto.Id));

            // Panel Heading
            _tagDivHeading = new TagBuilder("div");
            _tagDivHeading.AddCssClass("panel-heading");
            _tagDivHeading.InnerHtml = produto.Descricao;

            // Panel Body
            _tagDivPanelBody = new TagBuilder("div");
            _tagDivPanelBody.AddCssClass("panel-body");

            // Panel Footer
            _tagDivPanelFooter = new TagBuilder("div");
            _tagDivPanelFooter.AddCssClass("panel-footer");

            // Descrição do Produto
            _tagDivDescricao = new TagBuilder("div");
            _tagDivDescricao.MergeAttribute("Id", "div-descricao-produto");
            _tagDescricao = new TagBuilder("label");
            _tagDescricao.MergeAttribute("Id", "label-descricao-produto");
            _tagDescricao.InnerHtml = produto.ProdutosMontado.FirstOrDefault(C => C.Publica == 1).Descricao1 == "" ? produto.Descricao : produto.ProdutosMontado.FirstOrDefault().Descricao1;
            var tagBr = new TagBuilder("br");

            _tagDivDescricao.InnerHtml  = _tagDescricao.ToString();
            _tagDivDescricao.InnerHtml += tagBr.ToString();
            //_tagDivPanelFooter.InnerHtml = _tagDivDescricao.ToString();

            // Valor do Produto
            _tagDivValor = new TagBuilder("div");
            _tagDivValor.MergeAttribute("Id", "div-valor-produto");
            var _tagValorOrigem = new TagBuilder("label");

            _tagValorOrigem.MergeAttribute("Id", "origemlabel-valor-produto" + produto.Id);
            _tagValor = new TagBuilder("label");
            _tagValor.MergeAttribute("Id", "label-valor-produto" + produto.Id);
            _tagValor.AddCssClass("valor-produto");
            _tagValorOrigem.AddCssClass("text-muted valor-origem");

            produto.ProdutosMontado = produto.ProdutosMontado
                                      .Where(c => c.ProdutoTamanhoId.HasValue &&
                                             c.ProdutoCorId.HasValue &&
                                             c.ProdutoId.HasValue &&
                                             c.ProdutoTamanho.ProdutoCores.Any() &&
                                             c.ProdutoCor.ProdutoImagens.Any()).ToList();

            var promocaoItem = produto
                               .ProdutosMontado.FirstOrDefault(c => c.Publica == 1)
                               .PromocaoItems
                               .FirstOrDefault(c => c.Promocao.Ativo && c.Promocao.TipoExibicao != TipoDeExibicao.CupomDesconto);

            var valorAtual = produto
                             .ProdutosMontado
                             .First(c => c.Publica == 1)
                             .TabelaPrecos
                             .LastOrDefault(c => c.OptLoja == 1).Valor.Value;

            if (promocaoItem != null && PromotionsController.VerificaPromocao(promocaoItem.Promocao))
            {
                var valorPromocional = promocaoItem.TabelaDePreco.Valor.Value;
                valorPromocional = promocaoItem.Promocao.TipoValor == TipoValor.Porcentual ?
                                   valorPromocional - ((valorPromocional / 100) * promocaoItem.Promocao.Valor) :
                                   (valorPromocional - promocaoItem.Promocao.Valor);

                var desconto = promocaoItem.Promocao.TipoValor == TipoValor.Porcentual ?
                               promocaoItem.Promocao.Valor :
                               Convert.ToInt32((valorPromocional / promocaoItem.Promocao.Valor) * 100);

                _tagValorOrigem.SetInnerText("De: " + promocaoItem.TabelaDePreco.Valor.Value.ToString("C"));

                _tagValor.SetInnerText("Por: " + valorPromocional.ToString("C"));
                _tagDivPanelBody.InnerHtml = "<span class= 'valor-desconto text-center' title='Promoção válida apenas para tamanho e cor selecionado!'>" + desconto + "% <br/>Off</span>";
            }
            else
            {
                _tagValor.InnerHtml = valorAtual.ToString("C");
            }

            _tagDivValor.InnerHtml       += _tagValorOrigem + "<br/>";
            _tagDivValor.InnerHtml       += _tagValor.ToString();
            _tagDivPanelFooter.InnerHtml += _tagDivValor;

            var disponibilidade = _estoque.AvaliaDisponibilidade(produto.ProdutoTamanhos.First().ProdutoCores.First().ProdutosMontado.First().Id) > 0;

            if (disponibilidade)
            {
                //Formulário para envio ao carrinho
                Formulario(produto, "ProdutoVitrine", "Details", "Comprar", "btn-success");
            }
            else
            {
                //Formulário para envio de e-mail
                Formulario(produto, "ProdutoVitrine", "Details", "Produto indisponível avise-me !", "btn-warning open-modal", disponibilidade: true);
            }

            // Tamanhos do produto
            _tagDivPanelFooter.InnerHtml += Tipos(produto, "", "", 0, 0, false);


            // Cores do Produto
            _tagDivPanelFooter.InnerHtml += _tagDivCores == null ? "" : _tagDivCores.ToString() ?? "";

            _tagDivPanelFooter.InnerHtml += _tagDivFormulario.ToString();

            _tagDivPanel.InnerHtml += _tagDivHeading.ToString();
            _tagDivPanel.InnerHtml += _tagDivPanelBody.ToString();
            _tagDivPanel.InnerHtml += _tagDivPanelFooter.ToString();

            _resultado.Append(_tagDivPanel);
            return(MvcHtmlString.Create(Convert.ToString(_resultado)));
        }