public IActionResult EditarDt(Directortecnico dt)
        {
            bdvoleibolContext         context    = new bdvoleibolContext();
            DirectorTecnicoRepository repository = new DirectorTecnicoRepository(context);
            var directortecnico = repository.ObtenerPorId(dt.Id);

            try
            {
                if (directortecnico != null)
                {
                    directortecnico.Nombre                  = dt.Nombre;
                    directortecnico.Equipo                  = dt.Equipo;
                    directortecnico.NacionalesGanados       = dt.NacionalesGanados;
                    directortecnico.NacionalesPerdidos      = dt.NacionalesPerdidos;
                    directortecnico.InternacionalesGanados  = dt.InternacionalesGanados;
                    directortecnico.InternacionalesPerdidos = dt.InternacionalesPerdidos;
                    directortecnico.Seleccion               = dt.Seleccion;
                    directortecnico.Tipo = dt.Tipo;
                    repository.EditarI(directortecnico);
                }
                return(RedirectToAction("ListaDeDt"));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View(directortecnico));
            }
        }
        public IActionResult AltaDirTecnicos(Directortecnico dt)
        {
            bdvoleibolContext         context    = new bdvoleibolContext();
            DirectorTecnicoRepository repository = new DirectorTecnicoRepository(context);

            try
            {
                var directortecnico = repository.ObtenerDtPorClave(dt.Clave);
                if (directortecnico == null)
                {
                    dt.Activo     = 1;
                    dt.Contrasena = HashHelper.GetHash(dt.Contrasena);
                    repository.Insertar(dt);
                    return(RedirectToAction("ListaDeDt"));
                }
                else
                {
                    ModelState.AddModelError("", "La clave que ingresó no es valida.");
                    return(View(dt));
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View(dt));
            }
        }
        public IActionResult EstadoDirTecnico(Directortecnico dt)
        {
            bdvoleibolContext         context    = new bdvoleibolContext();
            DirectorTecnicoRepository repository = new DirectorTecnicoRepository(context);
            var directortecnico = repository.ObtenerPorId(dt.Id);

            if (directortecnico != null && directortecnico.Activo == 0)
            {
                directortecnico.Activo = 1;
                repository.EditarI(directortecnico);
            }
            else
            {
                directortecnico.Activo = 0;
                repository.EditarI(directortecnico);
            }
            return(RedirectToAction("ListaDeDt"));
        }
        public async Task <IActionResult> DtInicioSesion(Directortecnico dt)
        {
            bdvoleibolContext         context    = new bdvoleibolContext();
            DirectorTecnicoRepository repository = new DirectorTecnicoRepository(context);
            var DirT = repository.ObtenerDtPorClave(dt.Clave);

            try
            {
                if (DirT != null && DirT.Contrasena == HashHelper.GetHash(dt.Contrasena))
                {
                    if (DirT.Activo == 1)
                    {
                        List <Claim> info = new List <Claim>();
                        info.Add(new Claim(ClaimTypes.Name, "Usuario" + DirT.Nombre));
                        info.Add(new Claim(ClaimTypes.Role, "DirectorTecnico"));
                        info.Add(new Claim("Nombre", DirT.Nombre));
                        info.Add(new Claim("Id", DirT.Id.ToString()));

                        var claimsidentity  = new ClaimsIdentity(info, CookieAuthenticationDefaults.AuthenticationScheme);
                        var claimsprincipal = new ClaimsPrincipal(claimsidentity);
                        await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, claimsprincipal,
                                                      new AuthenticationProperties { IsPersistent = true });

                        return(RedirectToAction("IndexAdminDt", DirT.Clave));
                    }
                    else
                    {
                        ModelState.AddModelError("", "Su cuenta no esta activa.");
                        return(View(dt));
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Clave de director tecnico o contraseña estan incorrectas.");
                    return(View(dt));
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View(dt));
            }
        }
        public IActionResult CambiarClaveDt(Directortecnico m, string nuevaContra, string nuevaContraConfirm)
        {
            bdvoleibolContext         context    = new bdvoleibolContext();
            DirectorTecnicoRepository repository = new DirectorTecnicoRepository(context);
            var directortecnico = repository.ObtenerPorId(m.Id);

            try
            {
                if (directortecnico != null)
                {
                    if (nuevaContra != nuevaContraConfirm)
                    {
                        ModelState.AddModelError("", "Las contraseñas no coinciden.");
                        return(View(directortecnico));
                    }
                    else if (directortecnico.Contrasena == HashHelper.GetHash(nuevaContra))
                    {
                        ModelState.AddModelError("", "La nueva contraseña no puede ser igual a la que desea cambiar.");
                        return(View(directortecnico));
                    }
                    else
                    {
                        directortecnico.Contrasena = HashHelper.GetHash(nuevaContra);
                        repository.EditarI(directortecnico);
                        return(RedirectToAction("ListaDeDt"));
                    }
                }
                else
                {
                    ModelState.AddModelError("", "El director tecnico a editar no existe.");
                    return(View(directortecnico));
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View(directortecnico));
            }
        }