Пример #1
0
        public ActionResult Agregar(SocioViewModel model)
        {
            if (ModelState.IsValid)
            {
                string idUsuario;
                var    identityResultado = UsuariosRepositorio.Agregar(model.Email, out idUsuario);
                if (identityResultado.Succeeded)
                {
                    var socio = new SocioWeb
                    {
                        Id = idUsuario,
                        NombreApellidoORazonSocial = model.NombreApellidoORazonSocial,
                        Telefono   = model.Telefono,
                        NroCuenta  = model.NroCuenta,
                        TipoCuenta = model.TipoCuenta,
                        IdSucursal = model.IdSucursal.Value
                    };

                    string tokenActivacion  = UsuariosRepositorio.GenerarTokenActivacionCuenta(idUsuario);
                    string urlActivarCuenta = String.Format("{0}{1}",
                                                            Request.Url.GetLeftPart(UriPartial.Authority),
                                                            Url.Action("ActivarCuenta", "Acceso", new { u = socio.Id, c = tokenActivacion }));

                    try
                    {
                        SociosRepositorio.Agregar(socio);
                        UsuariosRepositorio.AsignarRol(idUsuario, RolesNombres.SOCIO);

                        var correos = new ServidorCorreos();
                        correos.EnviarCorreo(model.Email, "Activación de Cuenta", "ActivarCuentaSocio",
                                             campos: new Dictionary <string, string>
                        {
                            { "ActivarCuentaURL", urlActivarCuenta }
                        });

                        _controllerHelper.CargarResultadoOk(String.Format("El Socio {0} fue creado correctamente!", model.Email));

                        ModelState.Clear();
                        model = new SocioViewModel();
                    }
                    catch (Exception)
                    {
                        SociosRepositorio.Eliminar(idUsuario);
                        UsuariosRepositorio.Eliminar(idUsuario);

                        throw;
                    }
                }
                else
                {
                    _controllerHelper.CargarErrores(identityResultado.Errors);
                }
            }

            CargarListasSocioViewModel(model);
            return(View(model));
        }