Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        //---------------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();
                }
            }
        }
Example #5
0
        private async Task <bool> VerificaEmailAsync(RegistoUserViewModel infoUsers)
        {
            IdentityUser utilizador = await _gestorUtilizadores.FindByNameAsync(infoUsers.Email);

            if (utilizador != null)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #6
0
        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);
        }
Example #7
0
        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"));
        }