private async Task <bool> SaveAsync() { _dataInput = Input; var valor = false; if (ModelState.IsValid) { var userList = _userManager.Users.Where(u => u.Email.Equals(Input.Email)).ToList(); if (userList.Count.Equals(0)) { var strategy = _context.Database.CreateExecutionStrategy(); await strategy.ExecuteAsync(async() => { using (var transaction = _context.Database.BeginTransaction()) { try { var user = new IdentityUser { UserName = Input.Email, Email = Input.Email, PhoneNumber = Input.PhoneNumber }; var result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { await _userManager.AddToRoleAsync(user, Input.Role); var dataUser = _userManager.Users.Where(u => u.Email.Equals(Input.Email)).ToList().Last(); var imageByte = await _uploadimage.ByteAvatarImageAsync( Input.AvatarImage, _environment, "images/images/default.png"); var t_user = new TUsers { Name = Input.Name, LastName = Input.LastName, NID = Input.NID, Email = Input.Email, IdUser = dataUser.Id, Image = imageByte, }; await _context.AddAsync(t_user); _context.SaveChanges(); transaction.Commit(); _dataInput = null; valor = true; } else { foreach (var item in result.Errors) { _dataInput.ErrorMessage = item.Description; } valor = false; transaction.Rollback(); } } catch (Exception ex) { _dataInput.ErrorMessage = ex.Message; transaction.Rollback(); valor = false; } } }); } else { _dataInput.ErrorMessage = $"El {Input.Email} ya esta registrado"; valor = false; } } else { foreach (var modelState in ModelState.Values) { foreach (var error in modelState.Errors) { _dataInput.ErrorMessage += error.ErrorMessage; } } valor = false; } return(valor); }
private async Task <bool> SaveAsync() { _dataInput = Input; var valor = false; if (ModelState.IsValid) { var clientList = _context.TClients.Where(u => u.Nid.Equals(Input.Nid)).ToList(); if (clientList.Count.Equals(0)) { var strategy = _context.Database.CreateExecutionStrategy(); await strategy.ExecuteAsync(async() => { using (var transaction = _context.Database.BeginTransaction()) { try { var imageByte = await _uploadimage.ByteAvatarImageAsync( Input.AvatarImage, _environment, "images/images/default.png"); var client = new TClients { Name = Input.Name, LastName = Input.LastName, Nid = Input.Nid, Email = Input.Email, Image = imageByte, Phone = Input.Phone, Direccion = Input.Direction, Credit = Input.Credit, Date = DateTime.Now }; await _context.AddAsync(client); _context.SaveChanges(); var report = new TReports_clients { Debt = 0.0m, Monthly = 0.0m, Change = 0.0m, LastPayment = 0.0m, CurrentDebt = 0.0m, Ticket = "0000000000", TClients = client }; await _context.AddAsync(report); _context.SaveChanges(); transaction.Commit(); _dataInput = null; valor = true; } catch (Exception ex) { _dataInput.ErrorMessage = ex.Message; transaction.Rollback(); valor = false; } } }); } else { _dataInput.ErrorMessage = $"El {Input.Nid} ya esta registrado"; valor = false; } } else { foreach (var modelState in ModelState.Values) { foreach (var error in modelState.Errors) { _dataInput.ErrorMessage += error.ErrorMessage; } } valor = false; } return(valor); }
public async Task <bool> SaveAsync()//retorna tarea false o true { //obejto que se inicializa con el obejto inputmodel y la variable _DataInput = Input; var valor = false; if (ModelState.IsValid)//si el dato ingresado no es igual a seleccione un rol { //con este objeto userlist le asignamos el objeto Usermanager que llamara a la tabla User de la BDA y metodo where para hacer una consulta //creo objeto u que manejara la infor de nuestros usuario y este objeto llamara a la propiedad email y se comparara y si ya hay este obejto //contendra la informacion de ese usuario si esta registradro no podra registrase y si es el contrario lo convertirar en una lista var userList = _UserManager.Users.Where(u => u.Email.Equals(Input.Email)).ToList(); if (userList.Count.Equals(0))//aqui evaluare userlisst contaremos cuantos elementos tienen este objeto si es 0 no existe el usuario { //este objeto utilizara transacciones para poder administrar los SP para insertar datos a las tablas var strategy = _context.Database.CreateExecutionStrategy(); await strategy.ExecuteAsync(async() => { using (var transaction = _context.Database.BeginTransaction()) { try { var user = new IdentityUser //clase que administra los usuarios identityuser { UserName = Input.Email, Email = Input.Email, PhoneNumber = Input.PhoneNumber }; var resultado = await _UserManager.CreateAsync(user, Input.Password); if (resultado.Succeeded) { await _UserManager.AddToRoleAsync(user, Input.Role); //el datauser le asignamos usermanger para realizar consulta en la tabla users del ultimo usuario que ya se registro var datauser = _UserManager.Users.Where(u => u.Email.Equals(Input.Email)).ToList().Last(); //manejar la foto onj imagebyte dela clase _uploadimage llamamos al metodobyte convertir image en byte e insertar informacion en tabla var imageByte = await _uploadimage.ByteAvatarImageAsync(Input.AvatarImage, _environment, "images/images/login.png"); var t_user = new TUsers { Name = Input.Name, LastName = Input.LastName, Documento = Input.Cedula, Telefono = Input.PhoneNumber, Email = Input.Email, IdUser = datauser.Id,//obtener el ultimo usuario Image = imageByte, //esta info la vamos a insertar en la tabla Tuser }; await _context.AddAsync(t_user);//agramos usuario _context.SaveChanges(); transaction.Commit(); //este metodo todos lo sp de insertado se han ejecutado satisfactoriamente en las dos tablas de user _DataInput = null; valor = true; //esto indica la insercion del usuario } else { foreach (var item in resultado.Errors) { _DataInput.ErrorMessage = item.Description; } valor = false; transaction.Rollback(); } } catch (Exception ex) { _DataInput.ErrorMessage = ex.Message; transaction.Rollback(); valor = false; } } }); } else { _DataInput.ErrorMessage = $"El {Input.Email} ya esta registrado"; valor = false;//indicnado que este usuarioi no puede registrarse } } else { //objeto mosState capturar la informacion que suministrar el modelState foreach (var modelState in ModelState.Values) { //para obtener la propiedad errors que contiene la coleccion de errores usando el modelState foreach (var error in modelState.Errors) { //capturar todos los errores y se almacenaran el el Erros _DataInput.ErrorMessage += error.ErrorMessage; } } valor = false; } return(valor); }