public ActionResult Update(ActualizarDatosViewModel actualizarDatosViewModel)
        {
            try
            {
                BindTaxQuality(actualizarDatosViewModel);
                using (bdFacturacionElectronicaEntities entities = new bdFacturacionElectronicaEntities())
                {
                    tblUsuariosProveedor userProvider = UpdateUserProvider(actualizarDatosViewModel, entities);

                    if (userProvider.Email.ToLower().Equals(actualizarDatosViewModel.Emaildb.ToLower()))
                    {
                        GenerateAlert("success", "Actualización éxitosa", "La actualización se ha realizado correctamente", "/Menu/MenuProveedor");
                    }
                    else
                    {
                        UsuarioActivacion userActivation = InsertUserActivation(userProvider);
                        SendActivationLinkEmail(userProvider, userActivation);
                        FormsAuthentication.SignOut();
                        GenerateAlert("success", "Actualización éxitosa", "La actualización se ha realizado correctamente, debido a que el email ha cambiado, se debe activar nuevamente la cuenta, verifique el link de activación que fue enviado al email.", "/");
                    }
                }
            }
            catch (DbEntityValidationException exception)
            {
                GenerateAlert("error", "error", "validación de modelo", string.Empty);
            }
            catch (Exception exception)
            {
                GenerateAlert("error", "error", exception.Message, string.Empty);
            }

            return(View("Index", actualizarDatosViewModel));
        }
 private UsuarioActivacion InsertUserActivation(tblUsuariosProveedor userModel)
 {
     using (bdFacturacionElectronicaEntities entities = new bdFacturacionElectronicaEntities())
     {
         UsuarioActivacion userActivation = new UsuarioActivacion();
         userActivation.UsuarioID        = userModel.ID;
         userActivation.ActivacionCodigo = Guid.NewGuid();
         entities.UsuarioActivacion.Add(userActivation);
         entities.SaveChanges();
         return(userActivation);
     }
 }
 private void AddProviderUser(InscripcionViewModel inscripcionViewModel)
 {
     try
     {
         tblUsuariosProveedor providerUser   = InsertUserProvider(inscripcionViewModel);
         UsuarioActivacion    userActivation = InsertUserActivation(providerUser);
         SendActivationLinkEmail(providerUser, userActivation);
         GenerateAlert("success", "Inscripción éxitosa", "La inscripción se ha realizado correctamente, recuerde activar su cuenta mediante el link de activación que se le acaba de enviar al email", "/");
     }
     catch (DbEntityValidationException)
     {
         GenerateAlert("error", "error", "validación de modelo", string.Empty);
     }
     catch (Exception exception)
     {
         GenerateAlert("error", "error", exception.Message, string.Empty);
     }
 }
        private void SendActivationLinkEmail(tblUsuariosProveedor userModel, UsuarioActivacion userActivation)
        {
            string     path           = string.Format("{0}://{1}", Request.Url.Scheme, Request.Url.Authority);
            string     activationLink = string.Format("{0}/Login/LinkActivacion/?userId={1}&&activactioncode={2}", path, userActivation.UsuarioID, userActivation.ActivacionCodigo);
            SmtpClient client         = new SmtpClient("smtp.office365.com", 587);

            client.EnableSsl   = true;
            client.Credentials = new NetworkCredential("*****@*****.**", "Afes2018*#");
            MailAddress from    = new MailAddress("*****@*****.**", String.Empty, Encoding.UTF8);
            MailAddress to      = new MailAddress(userModel.Email);
            MailMessage message = new MailMessage(from, to)
            {
                Body            = string.Format("Cordial saludo. <br/> Este es el link de activación del usuario que acabas de actualizar <b>{0}</b>, por favor haga clic en el siguiente link para poder activar su cuenta <a href='{1}' alt='link de activación'>ACTIVAR CUENTA</a>", userModel.UsuarioNit, activationLink),
                IsBodyHtml      = true,
                Priority        = MailPriority.High,
                BodyEncoding    = Encoding.UTF8,
                Subject         = "Link de activación Portal Proveedores - Facturación Electrónica",
                SubjectEncoding = Encoding.UTF8
            };

            client.Send(message);
        }
 private void ActivateUser(bdFacturacionElectronicaEntities entities, int userIdFind, UsuarioActivacion activationRegister)
 {
     activationRegister = entities.UsuarioActivacion.Remove(activationRegister);
     if (activationRegister != null)
     {
         var userModel = entities.tblUsuariosProveedor.SingleOrDefault(u => u.ID == userIdFind);
         if (userModel != null)
         {
             userModel.UsuarioNit          = userModel.UsuarioNit.ToUpper();
             userModel.Password            = userModel.Password;
             userModel.RazonSocial         = userModel.RazonSocial.ToUpper();
             userModel.IDCalidadTributaria = userModel.IDCalidadTributaria;
             userModel.Email              = userModel.Email.ToUpper();
             userModel.Telefono           = userModel.Telefono.ToUpper();
             userModel.Direccion          = userModel.Direccion.ToUpper();
             userModel.RepresentanteLegal = userModel.RepresentanteLegal.ToUpper();
             userModel.RutaRut            = userModel.RutaRut;
             userModel.RutaCamaraComercio = userModel.RutaCamaraComercio;
             userModel.Estado             = "ACTIVO";
         }
         entities.SaveChanges();
         GenerateAlert("success", "Activación de cuenta", "Su cuenta ha sido activada correctamente, ya puede iniciar sesión", "/");
     }
 }