Exemplo n.º 1
0
        public async Task <IActionResult> IngresaUsuario(UsuarioViewModel usuarionNew)
        {
            if (!User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Logout", "Account"));
            }

            //if (string.IsNullOrEmpty(HttpContext.Session.GetString("cod_rol")))
            //    return RedirectToAction("Logout", "Account");

            // if (usuarionNew == null)
            //   return RedirectToAction("Logout", "Account");

            int codigoRol       = Convert.ToInt32(HttpContext.Session.GetString("cod_rol"));
            int codigoProvincia = Convert.ToInt32(HttpContext.Session.GetString("cod_provincia"));

            auxiliar = new Auxiliar();

            switch (codigoRol)
            {
            case 1:
                var provincias = (from Provincia in auc.PROVINCIA
                                  where Provincia.COD_PROVINCIA == 0
                                  orderby Provincia.NOM_PROVINCIA
                                  select new SelectListItem()
                {
                    Text = Provincia.NOM_PROVINCIA,
                    Value = Provincia.COD_PROVINCIA.ToString()
                }).ToList();

                var roles = (from Rol in auc.ROL
                             where Rol.COD_ROL == 2
                             select new SelectListItem()
                {
                    Text = Rol.DES_ROL,
                    Value = Rol.COD_ROL.ToString(),
                    Selected = false
                }).ToList();

                usuarionNew.provincias = provincias;
                usuarionNew.roles      = roles;
                break;

            case 2:
                provincias = (from Provincia in auc.PROVINCIA
                              where Provincia.COD_PROVINCIA >= 0 && Provincia.COD_PROVINCIA < 26
                              orderby Provincia.NOM_PROVINCIA
                              select new SelectListItem()
                {
                    Text = Provincia.NOM_PROVINCIA,
                    Value = Provincia.COD_PROVINCIA.ToString()
                }).ToList();

                provincias.Insert(0, new SelectListItem()
                {
                    Text  = "----Elija Provincia----",
                    Value = string.Empty
                });

                roles = (from Rol in auc.ROL
                         where Rol.COD_ROL == 3 || Rol.COD_ROL == 5 || Rol.COD_ROL == 8
                         select new SelectListItem()
                {
                    Text = Rol.DES_ROL,
                    Value = Rol.COD_ROL.ToString(),
                    Selected = false
                }).ToList();

                roles.Insert(0, new SelectListItem()
                {
                    Text  = "----Elija Rol----",
                    Value = string.Empty
                });
                usuarionNew.provincias = provincias;
                usuarionNew.roles      = roles;

                break;

            case 3:
                provincias = (from Provincia in auc.PROVINCIA
                              where Provincia.COD_PROVINCIA == codigoProvincia
                              orderby Provincia.NOM_PROVINCIA
                              select new SelectListItem()
                {
                    Text = Provincia.NOM_PROVINCIA,
                    Value = Provincia.COD_PROVINCIA.ToString()
                }).ToList();

                roles = (from Rol in auc.ROL
                         where Rol.COD_ROL == 4
                         select new SelectListItem()
                {
                    Text = Rol.DES_ROL,
                    Value = Rol.COD_ROL.ToString(),
                    Selected = false
                }).ToList();

                usuarionNew.provincias = provincias;
                usuarionNew.roles      = roles;
                break;
            }

            if (!auxiliar.validarCedula(usuarionNew.CEDULAC))
            {
                ModelState.AddModelError(string.Empty, "La cédula ingresada es incorrecta.");
                return(View(usuarionNew));
            }


            Usuario validacionUsuario = servicioUsuario.GetUsuarioxCedulaMail(usuarionNew.CEDULAC.Substring(0, 9), usuarionNew.MAIL);

            // validacionUsuario = servicioUsuario.GetUsuario(usuarionNew.CEDULAC);


            if (validacionUsuario != null)
            {
                ModelState.AddModelError(string.Empty, "Ya existe un usuario con la cédula o correo ingresada.");
                return(View(usuarionNew));
            }

            UsuarioResponse usuario = new UsuarioResponse()
            {
                CEDULA           = usuarionNew.CEDULAC,
                CODIGO_PROVINCIA = usuarionNew.codProvincia,
                CLAVE            = usuarionNew.CLAVE,
                CODIGO_ROL       = usuarionNew.codRol,
                COD_USUARIO      = usuarionNew.COD_USUARIO,
                ESTADO           = true,
                LOGEO            = usuarionNew.LOGEO,
                MAIL             = usuarionNew.MAIL.ToLower(),
                NOMBRE           = usuarionNew.NOMBRE,
                TELEFONO         = usuarionNew.TELEFONO,
                PROVINCIA        = usuarionNew.PROVINCIA,
                ROL = usuarionNew.ROL
            };

            if (usuario.CODIGO_PROVINCIA == 0 && usuario.CODIGO_ROL == 3)
            {
                ModelState.AddModelError(string.Empty, "Debe seleccionar una provincia");
                return(View(usuarionNew));
            }
            if ((usuario.CODIGO_PROVINCIA > 0) && (usuario.CODIGO_ROL == 8 || usuario.CODIGO_ROL == 5))
            {
                ModelState.AddModelError(string.Empty, "El rol seleccionado es de carácter nacional, seleccione Ecuador");
                return(View(usuarionNew));
            }

            int respuesta = await servicioUsuario.IngresaUsuario(usuario);

            if (respuesta > 0)
            {
                var nombreUsuario = User.Claims.FirstOrDefault(x => x.Type == "Id").Value;
                _logger.LogInformation("Usuario:" + nombreUsuario + " Ingresa: " + usuario.CEDULA);
                ViewBag.Message = "Usuario ingresado exitosamente!";
                return(RedirectToAction(nameof(Index)));
            }
            else
            {
                if (usuario.CLAVE == "12345678" || usuario.CLAVE == "87654321")
                {
                    ModelState.AddModelError(string.Empty, "La clave no puede ser números consecutivos");
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Existió un error al ingresar el usuario.");
                }
                return(View(usuarionNew));
            }
        }