/// <summary>
        /// Returns a view with the Details of a client
        /// </summary>
        /// <param name="idCliente"></param>
        /// <returns></returns>
        public ActionResult Detalhes(int id)
        {
            ClientePedidoModel cPedModel = new ClientePedidoModel();

            Ecommerce_Cliente cliente = new ClienteService().GetById(id);

            if (cliente != null)
            {
                cPedModel.Cliente = cliente;

                Ecommerce_Cliente_Endereco clienteEndereco = new EnderecoService().GetDefaultShippingAddress(id);

                List<Ecommerce_Pedido> listaPedidos = new PedidoService().GetOrdersByIdCliente(cliente.IdCliente);

                if (clienteEndereco != null)
                {
                    cPedModel.ClienteEndereco = clienteEndereco;
                }

                if (listaPedidos != null)
                {
                    cPedModel.Pedidos = listaPedidos;
                }
            }
            else
            {
                cPedModel.Cliente = new Ecommerce_Cliente();
                cPedModel.ClienteEndereco = new Ecommerce_Cliente_Endereco();
                cPedModel.Pedidos = new List<Ecommerce_Pedido>();
            }

            return View(cPedModel);
        }
        /// <summary>
        /// Returns a pagedList to a Partial View
        /// </summary>
        /// <param name="page"></param>
        /// <returns></returns>
        public ActionResult Listagem(int? page, int? numPedido, String nome, String email, int? IdEstado, String Cidade, int? IdPerfilComprador)
        {
            page = page ?? 1;

            //var clientes = new ClienteService().GetByPage(page.Value);

            var clientes = new ClienteService().GetByPageFiltered(page.Value, numPedido, nome, email, IdEstado, Cidade, IdPerfilComprador, EnumerableExtensions.QuantityRegistersPerPage);

            List<ClientePedidoModel> listaClientes = new List<ClientePedidoModel>();

            foreach (var c in clientes.Item1)
            {
                List<Ecommerce_Pedido> listaPedidos = new PedidoService().GetOrdersByIdCliente(c.IdCliente);

                int countPedidos = listaPedidos.Count;

                var clientePedido = new ClientePedidoModel { Cliente = c, Pedidos = listaPedidos, CountPedidos = countPedidos };

                listaClientes.Add(clientePedido);
            }

            var list = new MvcList<ClientePedidoModel>(listaClientes, page.Value, clientes.Item2, EnumerableExtensions.QuantityRegistersPerPage);

            return PartialView(list);
        }
Beispiel #3
0
        public void CanDetailPacotes()
        {
            var service = new ClienteService();

            var result1 = service.FindPacoteCredito(526, "1018760");
            Assert.IsNotNull(result1);

            var result2 = service.FindAllPacoteHistorico(526, "1018760");
            Assert.IsNotNull(result2.GetEnumerator().Current);
        }
Beispiel #4
0
        public void CanCheckPassword()
        {
            var service = new ClienteService();
            Assert.IsNull(service.FindByLogin("LOGIN INEXISTENTE"));

            /*
            var userById = service.FindByLogin("1630");
            Assert.IsNotNull(userById);
            Assert.AreEqual(userById.Identificador, 1630);
            Assert.AreEqual(userById.Cnpj, "05859449000123");

            var userByCnpj = service.FindByLogin("5859449000123");
            Assert.IsNotNull(userByCnpj);
            Assert.AreEqual(userByCnpj.Identificador, 1630);
            Assert.AreEqual(userByCnpj.Cnpj, "05859449000123");
             */
        }
        public ActionResult LoadUpdate()
        {
            if (UserAuthenticated == null || !UserAuthenticated.IdCliente.HasValue)
            {
                return PartialView("RegistrationUpdate", new ChangeProfileModel());
            }

            var cliente = new ClienteService().GetById(UserAuthenticated.IdCliente.Value);

            var model = new ChangeProfileModel
            {
                DataNascimento = cliente.DataNascimento,
                Email = cliente.Email,
                OldEmail = cliente.Email,
                Nome = cliente.NomeCompleto,
                NumeroTelefone = cliente.Telefone
            };

            return PartialView("RegistrationUpdate", model);
        }
Beispiel #6
0
 public void CanListPacotes()
 {
     var service = new ClienteService();
     var result = service.FindAllPacoteCredito(526); // VISUAL - URUGUAIANA
     Assert.IsNotNull(result.GetEnumerator().Current);
 }
Beispiel #7
0
 public void CanGetByLogin()
 {
     var service = new ClienteService();
     Assert.IsNotNull(service);
 }
Beispiel #8
0
 public void CanFindPacote()
 {
     var service = new ClienteService();
     var result = service.FindPacoteCredito(526, "1020967");
     Assert.IsNotNull(result);
 }
        public ActionResult LogIn(LogInModel model, String returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return Json(new JsonRequestResult { ResultType = JsonRequestResultType.Validation, Message = @Resources.Resource.Msg_Geral_DadosInvalidos });
            }

            Model.Usuario usuario = null;
            Perfil perfil = new Perfil();
            // TODO: M.L. 2012/11/15 16:06 - Alterar a Senha de Todos novamente, quem é do EC deverá ser Encryption.EncryptMd5(senha@email)
            var senha = Encryption.EncryptMd5(String.Format("{1}@{0}", model.Password.Trim(), model.UserName.Trim()));
            var isValid = new UsuarioService().ValidateEcommerce(model.UserName.Trim(), senha);

            if (isValid)
            {
                usuario = new UsuarioService().GetRecords(usu => usu.Email == model.UserName.Trim() && usu.IsAtivo).FirstOrDefault();
            }

            if (usuario == null)
            {
                return Json(new JsonRequestResult { ResultType = JsonRequestResultType.Alert, Message = @Resources.Resource.Msg_Geral_UsuarioSenhaInvalido });
            }

            var cliente = new ClienteService().GetCustomer(usuario.IdUsuario);
            if (cliente.IdPerfil != null)
            {
                // Armazena o Perfil do Cliente (logado) na Variável
                perfil = new Perfil
                {
                    IdPerfil = cliente.Ecommerce_Perfil.IdPerfil,
                    Nome = cliente.Ecommerce_Perfil.Nome,
                    PercentualDesconto = cliente.Ecommerce_Perfil.PercentualDesconto
                };
            }

            Guid cookieCarrinho = Guid.NewGuid();
            var idCliente = 0;
            if (cliente != null)
            {
                idCliente = cliente.IdCliente;

                var cookie = Request.Cookies[_cookieCartKey];
                //check if there is a cart
                if (cookie != null)
                {
                    cookieCarrinho = new Guid(cookie.Value);
                    var carrinhoAnonimo = new CarrinhoService().GetCart(cookieCarrinho);

                    //verificar se existem items para o carrinho anonimo
                    if (carrinhoAnonimo != null)
                    {
                        if (carrinhoAnonimo.Ecommerce_CarrinhoItem.Count > 0)
                        {
                            //remove qualquer carrinho antigo do cliente
                            var carrinhosCliente = new CarrinhoService().GetRecords(car => car.IdCliente == idCliente);
                            if (carrinhosCliente.Count > 0)
                            {
                                foreach (var item in carrinhosCliente.ToList())
                                {
                                    new CarrinhoService().DeleteCart(item.GuidCookie);
                                }
                            }
                            new CarrinhoService().AttachCartToClient(cookieCarrinho, idCliente);
                        }
                        else
                        {
                            var carrinhoCliente = new CarrinhoService().GetRecords(car => car.IdCliente == idCliente).FirstOrDefault();
                            if (carrinhoCliente != null)
                            {
                                cookieCarrinho = carrinhoCliente.GuidCookie;
                            }
                            else
                            {
                                new CarrinhoService().AttachCartToClient(cookieCarrinho, idCliente);
                            }
                        }
                    }
                    else
                    {
                        //verificar se existe alguma carrinho para o cliente
                        var carrinho = new CarrinhoService().GetRecords(car => car.IdCliente == idCliente).FirstOrDefault();

                        if (carrinho != null)
                        {
                            cookieCarrinho = carrinho.GuidCookie;
                        }
                        else
                        {
                            new CarrinhoService().CreateCart(cookieCarrinho, idCliente);
                        }
                    }
                    cookie.Expires = DateTime.Now.AddDays(-1); // TODO: M.L. 2012/11/15 16:53 - Definir nos Setting o Tempo para expiração do Cookie do Carrinho
                    System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
                }
                else
                {
                    //if cookie was null
                    new CarrinhoService().CreateCart(cookieCarrinho, idCliente);
                }
            }

            var serializeModel = new CustomPrincipalSerializeModel
                                     {
                                         IdUsuario = usuario.IdUsuario,
                                         NomeUsuario = usuario.NomeUsuario,
                                         Login = usuario.Login,
                                         Email = usuario.Email,
                                         IdGrupo = usuario.IdGrupo,
                                         IdCliente = idCliente,
                                         CookieCarrinho = cookieCarrinho
                                     };

            //Armazenar o Perfil do Cliente (logado) caso exista
            serializeModel.Perfil = perfil;

            var prefixoCookie = ConfigurationManager.AppSettings["EcommerceCookieName"];
            FormsAuthenticationUtil.SetCustomAuthCookie(prefixoCookie + model.UserName, new JavaScriptSerializer().Serialize(serializeModel), model.RememberMe);

            if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/") && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
            {
                return Json(new JsonRequestResult { ResultType = JsonRequestResultType.Success, ReturnUrl = returnUrl }, JsonRequestBehavior.AllowGet);
            }

            return Json(new JsonRequestResult { ResultType = JsonRequestResultType.Success, ReturnUrl = Url.Content(@"~/Dashboard/") }, JsonRequestBehavior.AllowGet);
        }
        public ActionResult InsertNewCustomer(NovoClienteModel model)
        {
            if (ModelState.IsValid)
            {
                if (!new ClienteService().EmailIsValid(model.EmailAdress))
                {
                    return Json(new JsonRequestResult { ResultType = JsonRequestResultType.Validation, Message = Resources.Resource.NovoCliente_EmailDuplicado }, JsonRequestBehavior.AllowGet);
                }

                if (new ClienteService().InsertCustomer(model))
                {
                    if (model.IdKit.HasValue)
                    {
                        //var senha = Encryption.EncryptMd5(string.Format("{1}@{0}", model.Password.Trim(), model.EmailAdress.Trim()));

                        Usuario usuario = new UsuarioService().GetRecords(usu => usu.Login == model.EmailAdress.Trim() && usu.IsAtivo).FirstOrDefault();

                        if (usuario == null)
                        {
                            return Json(new JsonRequestResult { ResultType = JsonRequestResultType.Alert, Message = Resources.Resource.Msg_Geral_UsuarioSenhaInvalido });
                        }

                        var cliente = new ClienteService().GetRecords(cli => cli.IdUsuario == usuario.IdUsuario).FirstOrDefault();
                        Guid cookieCarrinho = Guid.NewGuid();
                        var idCliente = 0;
                        if (cliente != null)
                        {
                            idCliente = cliente.IdCliente;

                            var cookie = Request.Cookies[_cookieCartKey];
                            //check if there is a cart
                            if (cookie != null)
                            {
                                cookieCarrinho = new Guid(cookie.Value);
                                var carrinhoAnonimo = new CarrinhoService().GetCart(cookieCarrinho);

                                //verificar se existem items para o carrinho anonimo
                                if (carrinhoAnonimo != null)
                                {
                                    if (carrinhoAnonimo.Ecommerce_CarrinhoItem.Count > 0)
                                    {
                                        //remove qualquer carrinho antigo do cliente
                                        var carrinhosCliente = new CarrinhoService().GetRecords(car => car.IdCliente == idCliente);
                                        if (carrinhosCliente.Count > 0)
                                        {
                                            foreach (var item in carrinhosCliente.ToList())
                                            {
                                                new CarrinhoService().DeleteCart(item.GuidCookie);
                                            }
                                        }
                                        new CarrinhoService().AttachCartToClient(cookieCarrinho, idCliente);
                                    }
                                    else
                                    {
                                        var carrinhoCliente = new CarrinhoService().GetRecords(car => car.IdCliente == idCliente).FirstOrDefault();
                                        if (carrinhoCliente != null)
                                        {
                                            cookieCarrinho = carrinhoCliente.GuidCookie;
                                        }
                                        else
                                        {
                                            new CarrinhoService().AttachCartToClient(cookieCarrinho, idCliente);
                                        }
                                    }
                                }
                                else
                                {
                                    //verificar se existe alguma carrinho para o cliente
                                    var carrinho = new CarrinhoService().GetRecords(car => car.IdCliente == idCliente).FirstOrDefault();

                                    if (carrinho != null)
                                    {
                                        cookieCarrinho = carrinho.GuidCookie;
                                    }
                                    else
                                    {
                                        new CarrinhoService().CreateCart(cookieCarrinho, idCliente);
                                    }
                                }
                                cookie.Expires = DateTime.Now.AddDays(-1);
                                System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
                            }
                            else
                            {
                                //if cookie was null
                                new CarrinhoService().CreateCart(cookieCarrinho, idCliente);
                            }
                        }

                        var serializeModel = new CustomPrincipalSerializeModel
                        {
                            IdUsuario = usuario.IdUsuario,
                            NomeUsuario = usuario.NomeUsuario,
                            Login = usuario.Login,
                            Email = usuario.Email,
                            //IdGrupo = usuario.IdGrupo,
                            IdCliente = idCliente,
                            CookieCarrinho = cookieCarrinho
                        };

                        var prefixoCookie = ConfigurationManager.AppSettings["EcommerceCookieName"];
                        FormsAuthenticationUtil.SetCustomAuthCookie(prefixoCookie + model.EmailAdress, new JavaScriptSerializer().Serialize(serializeModel), false);

                        return Json(new JsonRequestResult { ResultType = JsonRequestResultType.Success, ReturnUrl = Url.Content(@"~/Cart/Details") }, JsonRequestBehavior.AllowGet);
                    }

                    return Json(new JsonRequestResult { ResultType = JsonRequestResultType.Success, Message = Resources.Resource.Msg_Geral_CadastroRealizado, ReturnUrl = Url.Content(@"~/Dashboard") }, JsonRequestBehavior.AllowGet);
                }

                return Json(new JsonRequestResult { ResultType = JsonRequestResultType.Error, Message = Resources.Resource.Msg_Geral_Erro }, JsonRequestBehavior.AllowGet);
            }

            return Json(new JsonRequestResult { ResultType = JsonRequestResultType.Validation, Message = Resources.Resource.Msg_Geral_DadosIncorretos }, JsonRequestBehavior.AllowGet);
        }
        public ActionResult NewCustomer(string email, string zipcode, int? kit, int tipoCliente, bool isCompra)
        {
            var model = new NovoClienteModel
                            {
                                Identification = email,
                                EmailAdress = email,
                                ZipCode = zipcode,
                                IdKit = kit,
                                TipoCliente = (TipoCliente)tipoCliente,
                                IsCompra = isCompra,
                                DisplayBirthDate = string.Empty,
                                LikeBeContactedByRacco = true
                            };

            var service = new ClienteService();
            model.States = service.GetEstados();

            ViewBag.Title = Resources.Resource.AccountRegistrar_Titulo;
            return View(model);
        }
        public ActionResult GerarNovaSenha(int? idCliente, String emailTemp)
        {
            var regExpEmail = new Regex(@"^[\w-]+(\.[\w-]+)*@([a-z0-9-]+(\.[a-z0-9-]+)*?\.[a-z]{2,6}|(\d{1,3}\.){3}\d{1,3})(:\d{4})?$");

            if (!regExpEmail.IsMatch(emailTemp) && !String.IsNullOrWhiteSpace(emailTemp))
            {
                return Json(new JsonRequestResult { ResultType = JsonRequestResultType.Alert, Message = Resources.Resource.Conta_EmailInvalido });
            }

            var model = new Usuario();

            if (idCliente != null)
            {
                var cliente = new ClienteService().GetById(idCliente.Value);

                if (cliente != null)
                {
                    model = cliente.Usuario;
                }
            }

            if (!String.IsNullOrWhiteSpace(emailTemp))
            {
                model.Email = emailTemp;
            }

            if (ModelState.IsValid)
            {
                var newPass = Membership.GeneratePassword(6, 2);

                if (Email.SendNewPassword(model, newPass, false))
                {
                    model.Senha = newPass;
                    model.LembreteSenha = String.Format(Resources.Resource.Senha_PerguntaSecreta, DateTime.Now);

                    new UsuarioService().UpdateObject(model);

                    return Json(new JsonRequestResult { ResultType = JsonRequestResultType.Success, Message = Resources.Resource.Conta_SenhaEncaminhadaEmail }, JsonRequestBehavior.AllowGet);
                }

                return Json(new JsonRequestResult { ResultType = JsonRequestResultType.Error, Message = Resources.Resource.Autenticacao_RecuperarSenhaErro }, JsonRequestBehavior.AllowGet);
            }

            return Json(new JsonRequestResult { ResultType = JsonRequestResultType.Error, Message = Resources.Resource.Msg_Geral_Erro }, JsonRequestBehavior.AllowGet);

        }
        //Monta o arquivo de e-mails dos clientes selecionados
        private String GenerateFile(List<Ecommerce_Cliente> listaClientes)
        {
            //Motagem do  nome do arquivo
            String data = Convert.ToString(DateTime.Now.ToShortDateString().Replace("/", ""));
            String hora = Convert.ToString(DateTime.Now.ToLongTimeString().Replace(":", ""));
            String fileName = data + "_" + hora + ".csv";

            //Variáveis que recebem o path onde será salvo imagens
            String serverFiles =
                HttpContext.Server.MapPath(WebConfigurationManager.AppSettings["UrlNewsletters"]);

            //Se o diretório não existir, crie
            if (!Directory.Exists(serverFiles))
            {
                try
                {
                    Directory.CreateDirectory(serverFiles);
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
            }

            //Variável que armazena o Path + o nome do arquivo
            var targetFilePath = Path.Combine(serverFiles, fileName);

            //Delimitador das informações
            const string delimiter = ";";

            //StringBuilder que armazenará o conteúdo do arquivo
            var sb = new StringBuilder();

            //Criação do Header do Arquivo
            const string header = "NOME;EMAIL;CIDADE;UF;DATA_NASCIMENTO;DATA_INCLUSAO;TIPO_PERFIL";

            //Adiciona o Header no arquivo
            sb.AppendLine(header);

            //Para cada cliente, cria uma nova linha
            foreach (var c in listaClientes)
            {
                Ecommerce_Cliente cliente =
                    new ClienteService().GetById(c.IdCliente);
                    //GetRecords(cli => cli.IdCliente == c.IdCliente).FirstOrDefault();

                //Cria a linha que receberá os dados

                //Variáveis. Cidade foi criada pois há dados incompletos
                //no DB que precisam ser tratados na aplicação
                Ecommerce_Cliente_Endereco ce = null;
                String cidade = String.Empty;
                String estado = String.Empty;

                //ce recebe o objeto cliente_endereco
                if (cliente != null)
                {
                    ce = cliente.Ecommerce_Cliente_Endereco.FirstOrDefault();
                }

                //Valores do estado e cidade
                if (ce != null)
                {
                    //Tratamento do campo CIDADE, que no banco está imcompleto
                    
                    if (!String.IsNullOrEmpty(ce.Cidade))
                    {
                        var objCidade = new CidadeService().GetRecords(cid => cid.IdCidade == ce.IdCidade).FirstOrDefault();
                        if (objCidade != null)
                        {
                            cidade = objCidade.Nome;
                        }
                    }
                    else if (ce.IdCidade != null)
                    {
                        cidade = ce.Cidade;
                    }

                    //Valor do estado
                    var objEstado = new EstadoService().GetRecords(e => e.IdEstado == ce.IdEstado).FirstOrDefault();

                    if (objEstado != null)
                    {
                        estado = objEstado.Nome;

                    }
                }

                //Criação da linha, com os dados recebídos
                if (cliente != null)
                {
                    var line = cliente.NomeCompleto + delimiter +
                               cliente.Email + delimiter +
                               cidade + delimiter +
                               estado + delimiter +
                               cliente.DataNascimento.ToShortDateString() + delimiter +
                               cliente.DataInclusao.ToShortDateString();

                    //Se houver perfil, adiciona o perfil na linha 
                    //se não, adiciona os delimitadores.
                    if (cliente.Ecommerce_Perfil != null)
                    {
                        line += delimiter + cliente.Ecommerce_Perfil.Nome + delimiter;
                    }
                    else
                    {
                        line += delimiter + delimiter;
                    }

                    if (cliente.DesejaContato)
                    {
                        //Adiciona a linha
                        sb.AppendLine(line);    
                    }
                }
            }

            //Escreve o arquivo, e salva no path indicado
            System.IO.File.WriteAllText(targetFilePath, sb.ToString(), Encoding.UTF8);

            //Criação do Link de Download
            var linkDownload = Url.Content(WebConfigurationManager.AppSettings["UrlNewsletters"] + fileName);
                
            return linkDownload;
        }
        public JsonResult FilterClients(string[] estados, string[] cidades, string[] perfis, string genre)
        {
            var listaClientes = new List<Ecommerce_Cliente>();

            if (estados != null && estados.Any())
            {
                //Se houver cidade selecionada - Traz por Cidade
                if (cidades != null && cidades.Any())
                {
                    foreach (var i in cidades)
                    {
                        var idCidade = Convert.ToInt32(i);

                        listaClientes.AddRange(new ClienteService().GetRecords(
                                c => c.Ecommerce_Cliente_Endereco.Any(ce => ce.IdCidade == idCidade)));
                    }
                }
                //Se não houver cidade selecionada - Traz apenas por estado
                else
                {
                    foreach (var i in estados)
                    {
                        var idEstado = Convert.ToInt32(i);

                        listaClientes.AddRange(new ClienteService().GetRecords(
                                c => c.Ecommerce_Cliente_Endereco.Any(ce => ce.IdEstado == idEstado)));
                    }
                }
            }else
            {
                listaClientes = new ClienteService().GetAll();
            }

            //Dentro daquela lista que o sistema já trouxe
            //faz o filtro por perfil
            if (perfis != null && perfis.Any())
            {
                var lst = new List<Ecommerce_Cliente>();

                foreach (var i in perfis)
                {
                    var idPerfil = Convert.ToInt32(i);

                    lst.AddRange(listaClientes.Where(c => c.IdPerfil == idPerfil));
                }

                listaClientes = lst;
            }

            if (genre != null && !String.IsNullOrWhiteSpace(genre))
            {
                var genreForSearch = String.Empty;

                //Se for Homem
                if (genre.Equals("1"))
                {
                    genreForSearch = "H";
                }
                //Se for Mulher
                else if (genre.Equals("2"))
                {
                    genreForSearch = "M";
                }
                //Se for todos
                else
                {
                    genreForSearch = "";
                }

                //Cria uma nova lista de Newsletter de "Não-Clientes"
                var lst = new List<Newsletter>();

                //Procura por "sexo" em especial
                if (!String.IsNullOrWhiteSpace(genreForSearch))
                {
                    lst = new NewsletterService().GetRecords(x => x.Sexo.Equals(genreForSearch));    
                }
                //Traz todos os cadastrados
                else
                {
                    lst = new NewsletterService().GetAll();
                }

                //Se houverem registros retornados do banco, gera a lista e envia o link para Download.
                if (lst.Count > 0)
                {
                    var link = GenerateFileFromSite(lst);

                    return Json(new JsonRequestResult { ResultType = JsonRequestResultType.Success, Message = link },
                                JsonRequestBehavior.AllowGet);    
                }

            }

            if (listaClientes.Count > 0)
            {
                var link = GenerateFile(listaClientes);
                return Json(new JsonRequestResult { ResultType = JsonRequestResultType.Success, Message = link}, JsonRequestBehavior.AllowGet);
            }

            return Json(new JsonRequestResult { ResultType = JsonRequestResultType.Error, Message = String.Empty }, JsonRequestBehavior.AllowGet);
        }