public IActionResult EditarIntegrante(int id)
        {
            bdvoleibolContext context = new bdvoleibolContext();
            IntegrantesVM     vm      = new IntegrantesVM();

            IntegrantesRepository pr = new IntegrantesRepository(context);

            vm.Integrantes = pr.ObtenerPorId(id);
            if (vm.Integrantes == null)
            {
                return(RedirectToAction("ListaDeIntegrantes"));
            }
            DirectorTecnicoRepository dtrepository = new DirectorTecnicoRepository(context);

            vm.directortecnicos = dtrepository.ObtenerTodo();
            if (System.IO.File.Exists(Environment.WebRootPath + $"/images/{vm.Integrantes.Id}_0.jpg"))
            {
                vm.Imagen = vm.Integrantes.Id + "_0.jpg";
            }
            else
            {
                vm.Imagen = "no-disponible.png";
            }

            return(View(vm));
        }
        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 AgregarIntegrante(IntegrantesVM vm)
        {
            bdvoleibolContext         context      = new bdvoleibolContext();
            DirectorTecnicoRepository DTrepository = new DirectorTecnicoRepository(context);
            IntegrantesRepository     Prepository  = new IntegrantesRepository(context);

            if (vm.Archivo.ContentType != "image/jpeg" || vm.Archivo.Length > 1024 * 1024 * 2)
            {
                ModelState.AddModelError("", "Debe selecionar un archivo jpg de menos de 2mb");
                return(View(vm));
            }
            try
            {
                var IdDt = DTrepository.ObtenerDtPorClave(vm.Directortecnico.Clave).Id;

                vm.Integrantes.IdDt = IdDt;
                Prepository.Insertar(vm.Integrantes);
                System.IO.FileStream fs = new FileStream(Environment.WebRootPath + "/images/" + vm.Integrantes.Id + "_0.jpg", FileMode.Create);
                vm.Archivo.CopyTo(fs);
                fs.Close();
                return(RedirectToAction("ListaDeIntegrantes"));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View(vm));
            }
        }
        public IActionResult ListaDeIntegrantes(int id)
        {
            bdvoleibolContext         context    = new bdvoleibolContext();
            DirectorTecnicoRepository repository = new DirectorTecnicoRepository(context);
            var directortecnico = repository.ObtenerIntegrantesPorDt(id);

            if (directortecnico != null)
            {
                if (User.IsInRole("DirectorTecnico"))
                {
                    if (User.Claims.FirstOrDefault(x => x.Type == "Id").Value == directortecnico.Id.ToString())
                    {
                        return(View(directortecnico));
                    }
                    else
                    {
                        return(RedirectToAction("Denegado"));
                    }
                }
                else
                {
                    return(View(directortecnico));
                }
            }
            else
            {
                return(RedirectToAction("ListaDeIntegrantes"));
            }
        }
        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 ListaDeDt()
        {
            bdvoleibolContext         context    = new bdvoleibolContext();
            DirectorTecnicoRepository repository = new DirectorTecnicoRepository(context);
            var DirectoresTecnicos = repository.ObtenerTodo();

            return(View(DirectoresTecnicos));
        }
 public MenuServices()
 {
     using (bdvoleibolContext ctx = new bdvoleibolContext())
     {
         DirectorTecnicoRepository repository = new DirectorTecnicoRepository(ctx);
         DirTec = repository.ObtenerTodo().OrderBy(x => x.Equipo).ToList();
     }
 }
        public IActionResult AgregarIntegrante(int id)
        {
            bdvoleibolContext         context    = new bdvoleibolContext();
            DirectorTecnicoRepository repository = new DirectorTecnicoRepository(context);
            IntegrantesVM             intevm     = new IntegrantesVM();

            intevm.Directortecnico = repository.ObtenerPorId(id);
            return(View(intevm));
        }
        public IActionResult EditarIntegrante(IntegrantesVM vm)
        {
            bdvoleibolContext context = new bdvoleibolContext();

            if (vm.Archivo != null)
            {
                if (vm.Archivo.ContentType != "image/jpeg" || vm.Archivo.Length > 1024 * 1024 * 2)
                {
                    ModelState.AddModelError("", "Debe selecionar un archivo jpg de menos de 2mb");
                    DirectorTecnicoRepository marcarepository = new DirectorTecnicoRepository(context);
                    vm.directortecnicos = marcarepository.ObtenerTodo();

                    return(View(vm));
                }
            }

            try
            {
                IntegrantesRepository repos = new IntegrantesRepository(context);

                var integrantes = repos.ObtenerPorId(vm.Integrantes.Id);
                if (integrantes != null)
                {
                    integrantes.Edad        = vm.Integrantes.Edad;
                    integrantes.Estado      = vm.Integrantes.Estado;
                    integrantes.Posicion    = vm.Integrantes.Posicion;
                    integrantes.NumCamiseta = vm.Integrantes.NumCamiseta;
                    integrantes.Fuerza      = vm.Integrantes.Fuerza;
                    integrantes.Bloqueo     = vm.Integrantes.Bloqueo;
                    integrantes.Recepcion   = vm.Integrantes.Recepcion;
                    integrantes.Remate      = vm.Integrantes.Remate;
                    integrantes.Salto       = vm.Integrantes.Salto;
                    integrantes.Saque       = vm.Integrantes.Saque;
                    if (vm.Archivo != null)
                    {
                        FileStream fs = new FileStream(Environment.WebRootPath + "/images/" + vm.Integrantes.Id + "_0.jpg", FileMode.Create);
                        vm.Archivo.CopyTo(fs);
                        fs.Close();
                    }
                }


                return(RedirectToAction("ListaDeIntegrantes"));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                DirectorTecnicoRepository dtarcarepository = new DirectorTecnicoRepository(context);
                vm.directortecnicos = dtarcarepository.ObtenerTodo();

                return(View(vm));
            }
        }
        public IActionResult CambiarClaveDt(int id)
        {
            bdvoleibolContext         context    = new bdvoleibolContext();
            DirectorTecnicoRepository repository = new DirectorTecnicoRepository(context);
            var directortecnico = repository.ObtenerPorId(id);

            if (directortecnico == null)
            {
                return(RedirectToAction("ListaDeDt"));
            }
            return(View(directortecnico));
        }
        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));
            }
        }