private bool VerificaNIF(RegistoUserViewModel infoUsers) { string nif = infoUsers.Contribuinte; char firstChar = nif[0]; if (firstChar.Equals('1') || firstChar.Equals('2') || firstChar.Equals('3') || firstChar.Equals('5') || firstChar.Equals('6') || firstChar.Equals('8') || firstChar.Equals('9')) { int checkDigit = (Convert.ToInt32(firstChar.ToString()) * 9); for (int i = 2; i <= 8; ++i) { checkDigit += Convert.ToInt32(nif[i - 1].ToString()) * (10 - i); } checkDigit = 11 - (checkDigit % 11); if (checkDigit >= 10) { checkDigit = 0; } if (checkDigit.ToString() != nif[8].ToString()) { ModelState.AddModelError("Contribuinte", "Contribuinte Inválido, coloque novamente"); return(false); } } return(true); }
private async Task <bool> VerificaCCAsync(RegistoUserViewModel infoUsers) { Users usersCC = await _context.Users.FirstOrDefaultAsync(x => x.CartaoCidadao == infoUsers.CartaoCidadao); if (usersCC == null) { return(false); } return(true); }
private async Task <bool> VerificaContribuinteAsync(RegistoUserViewModel infoUsers) { Users usersContribuinte = await _context.Users.FirstOrDefaultAsync(x => x.Contribuinte == infoUsers.Contribuinte); if (usersContribuinte == null) { return(false); } return(true); }
//---------------VALIDAÇÕES-------------------- private static void CriaFotoUser(RegistoUserViewModel infoUsers, IFormFile ficheiroFoto) { if (ficheiroFoto != null && ficheiroFoto.Length > 0) { using (var ficheiroMemoria = new MemoryStream()) { ficheiroFoto.CopyTo(ficheiroMemoria); infoUsers.Fotografia = ficheiroMemoria.ToArray(); } } }
private async Task <bool> VerificaEmailAsync(RegistoUserViewModel infoUsers) { IdentityUser utilizador = await _gestorUtilizadores.FindByNameAsync(infoUsers.Email); if (utilizador != null) { return(true); } else { return(false); } }
private async Task <bool> CriaUtilizadorAsync(RegistoUserViewModel infoUsers, string role) { var utilizador = new IdentityUser(infoUsers.Email); IdentityResult resultado = await _gestorUtilizadores.CreateAsync(utilizador, infoUsers.Password); if (resultado.Succeeded) { await _gestorUtilizadores.AddToRoleAsync(utilizador, role); } else { return(false); } infoUsers.DataRegisto = DateTime.Now; Users users = new Users { Nome = infoUsers.Nome, Data = infoUsers.Data, CartaoCidadao = infoUsers.CartaoCidadao, Contribuinte = infoUsers.Contribuinte, Morada = infoUsers.Morada, CodigoPostal = infoUsers.CodigoPostal, Telefone = infoUsers.Telefone, Telemovel = infoUsers.Telemovel, Email = infoUsers.Email, CodigoPostalExt = infoUsers.CodigoPostalExt, TipoId = infoUsers.TipoId, Fotografia = infoUsers.Fotografia, Estado = infoUsers.Estado, DataRegisto = infoUsers.DataRegisto, DistritoId = infoUsers.DistritoId }; _context.Add(users); await _context.SaveChangesAsync(); return(true); }
public async Task <IActionResult> RegistoClienteParticular(RegistoUserViewModel infoUsers, IFormFile ficheiroFoto) { var tipo = _context.UserType.SingleOrDefault(c => c.Tipo == "Cliente Particular"); infoUsers.TipoId = tipo.TipoId; if (!ModelState.IsValid) { ViewData["DistritoId"] = new SelectList(_context.Distrito.Where(x => !x.DistritoNome.Contains("Nacional")) .OrderBy(x => x.DistritoNome), "DistritoId", "DistritoNome"); return(View(infoUsers)); } if (await VerificaEmailAsync(infoUsers)) { ModelState.AddModelError("Email", "Este email já existe"); } if (infoUsers.Data > DateTime.Today.AddYears(-18)) { ModelState.AddModelError("DataNascimento", "Para se registar tem que ter mais de 18 anos"); } if (ficheiroFoto != null) { if (ficheiroFoto.Length >= 2 * 1024 * 1024) { ModelState.AddModelError("", "Excedeu o limite máximo de 2 Mb para o tamanho da foto."); } } CriaFotoUser(infoUsers, ficheiroFoto); if (!VerificaNIF(infoUsers)) { ModelState.AddModelError("", "Não foi possível realizar o registo. Tente de novo mais tarde."); } if (await VerificaContribuinteAsync(infoUsers)) { ModelState.AddModelError("Contribuinte", "Este contribuinte já está em uso"); } if (infoUsers.CartaoCidadao != null) { if (await VerificaCCAsync(infoUsers)) { ModelState.AddModelError("CartaoCidadao", "Este número de CC já está em uso"); } } if (!ModelState.IsValid) { ViewData["DistritoId"] = new SelectList(_context.Distrito.Where(x => !x.DistritoNome.Contains("Nacional")) .OrderBy(x => x.DistritoNome), "DistritoId", "DistritoNome"); return(View(infoUsers)); } if (!await CriaUtilizadorAsync(infoUsers, "Cliente")) { ModelState.AddModelError("", "Não foi possível realizar o registo. Tente de novo mais tarde."); } if (!ModelState.IsValid) { ViewData["DistritoId"] = new SelectList(_context.Distrito.Where(x => !x.DistritoNome.Contains("Nacional")) .OrderBy(x => x.DistritoNome), "DistritoId", "DistritoNome"); return(View(infoUsers)); } ViewBag.Mensagem = "Cliente adicionado com sucesso"; return(View("Sucesso")); }