public PartialViewResult Nuevo(NuevoClienteFormModel model)
        {
            if (model.IdPais == null)
            {
                return(PartialView("../Shared/Mensaje", new Models.App.MensajeViewModel()
                {
                    Mensaje = "Debe seleccionar un país.", Error = true
                }));
            }
            if (model.IdIdioma == null)
            {
                return(PartialView("../Shared/Mensaje", new Models.App.MensajeViewModel()
                {
                    Mensaje = "Debe seleccionar un idioma.", Error = true
                }));
            }
            if (ModelState.IsValid)
            {
                var cliente = new Cliente
                {
                    ApellidoMaterno = model.ApellidoMaterno,
                    ApellidoPaterno = model.ApellidoPaterno,
                    Email           = model.Email,
                    Id                 = Guid.NewGuid(),
                    IdIdioma           = model.IdIdioma,
                    IdPais             = model.IdPais,
                    Nombre             = model.Nombre,
                    TelefonoPrimario   = model.TelefonoPrimario,
                    TelefonoSecundario = model.TelefonoSecundario
                };
                db.Cliente.Add(cliente);

                var listaDomicilios = TempData["DomiciliosNuevos"] as List <DomicilioFormModel>;
                if (listaDomicilios != null)
                {
                    foreach (var a in listaDomicilios)
                    {
                        db.Domicilio.Add(new Domicilio()
                        {
                            Id          = a.Id,
                            Calle       = a.Calle,
                            Activo      = true,
                            Complemento = a.Complemento,
                            IdCliente   = cliente.Id,
                            Numero      = a.Numero,
                            Referencia  = a.Referencia
                        });
                    }
                }

                db.SaveChanges();
                return(PartialView("../Shared/Mensaje", new Models.App.MensajeViewModel()
                {
                    Mensaje = "Cliente creado exitosamente", Error = false
                }));
            }
            else
            {
                return(PartialView("../Shared/Mensaje", new Models.App.MensajeViewModel()
                {
                    Mensaje = "Error de formulario. Verifique los campos.", Error = true
                }));
            }
            // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario
            // return PartialView("../Shared/Mensaje", new Models.App.MensajeViewModel() { Mensaje = "Error", Error = true });
            //return Json("Error", JsonRequestBehavior.AllowGet);
        }
        public PartialViewResult Modificar(NuevoClienteFormModel model)
        {
            if (!model.IdPais.HasValue)
            {
                return(PartialView("../Shared/Mensaje", new Models.App.MensajeViewModel()
                {
                    Mensaje = "Debe seleccionar un país.", Error = true
                }));
            }
            if (!model.IdIdioma.HasValue)
            {
                return(PartialView("../Shared/Mensaje", new Models.App.MensajeViewModel()
                {
                    Mensaje = "Debe seleccionar un idioma.", Error = true
                }));
            }
            if (ModelState.IsValid)
            {
                var cliente = db.Cliente.First(x => x.Id == model.Id);
                cliente.ApellidoMaterno    = model.ApellidoMaterno;
                cliente.ApellidoPaterno    = model.ApellidoPaterno;
                cliente.Email              = model.Email;
                cliente.IdIdioma           = model.IdIdioma;
                cliente.IdPais             = model.IdPais;
                cliente.Nombre             = model.Nombre;
                cliente.TelefonoPrimario   = model.TelefonoPrimario;
                cliente.TelefonoSecundario = model.TelefonoSecundario;
                try
                {
                    db.Entry(cliente).State = EntityState.Modified;
                    var listaDomicilios = TempData["DomiciliosNuevos"] as List <DomicilioFormModel>;
                    db.Domicilio.RemoveRange(cliente.Domicilio);
                    if (listaDomicilios != null)
                    {
                        foreach (var a in listaDomicilios)
                        {
                            db.Domicilio.Add(new Domicilio()
                            {
                                Id          = a.Id,
                                Calle       = a.Calle,
                                Activo      = true,
                                Complemento = a.Complemento,
                                IdCliente   = cliente.Id,
                                Numero      = a.Numero,
                                Referencia  = a.Referencia
                            });
                        }
                    }
                    db.SaveChanges();
                }
                catch (Exception ex)
                {
                    return(PartialView("../Shared/Mensaje", new Models.App.MensajeViewModel()
                    {
                        Mensaje = "Error al guardar en la base de datos: " + ex.Message, Error = true
                    }));
                }

                return(PartialView("../Shared/Mensaje", new Models.App.MensajeViewModel()
                {
                    Mensaje = "Cliente modificado exitosamente", Error = false
                }));
            }
            else
            {
                return(PartialView("../Shared/Mensaje", new Models.App.MensajeViewModel()
                {
                    Mensaje = "Error de formulario. Verifique los campos.", Error = true
                }));
            }
        }