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 LoadCidadeShipping(int idEstado)
 {
     var model = new NovoClienteModel { Cities = new ClienteService().GetCidades(idEstado) };
     return PartialView("_DropDownCitiesShipping", model);
 }
        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);
        }