public ActionResult DeleteVali(MatriculaClaseGym matriculaClaseGym)
 {
     //MatriculaClaseGym MatriculaFind = _context.MatriculaClaseGym.Find(matriculaClaseGym.IdMatriculaGym);
     //_context.MatriculaClaseGym.Remove(MatriculaFind);
     //_context.SaveChanges();
     using (var dbContextTransaction = _context.Database.BeginTransaction())
     {
         try
         {
             MatriculaClaseGym matriculaFind = /*await*/ _context.MatriculaClaseGym.Find/*Async*/ (matriculaClaseGym.IdMatriculaGym);
             var desconCupo = _context.ClaseGym.Where(cl => cl.IdClaseGym == matriculaFind.IdClaseGym);
             foreach (var item in desconCupo)
             {
                 item.Cupo = ((int)(item.Cupo + 1));
                 _context.Update(item);
             }
             _context.MatriculaClaseGym.Remove(matriculaFind);
             dbContextTransaction.Commit();
             _context.SaveChanges();
         }
         catch
         {
             dbContextTransaction.Rollback();
             //return Json(new { result = false });
         }
     }
     return(Json(new { result = true }));
 }
 public ActionResult EditVali(MatriculaClaseGym matriculaClaseGym)
 {
     if (ModelState.IsValid)
     {
         _context.SaveChanges();
         return(Json(new { result = true }));
     }
     return(Json(new { result = false }));
 }
 public ActionResult CreateVali(MatriculaClaseGym matriculaClaseGym)
 {
     matriculaClaseGym.Fecha = DateTime.Now;
     if (ModelState.IsValid)
     {
         var validarCliente = _context.MatriculaClaseGym.Any(m => m.IdCliente.Equals(matriculaClaseGym.IdCliente));
         if (validarCliente)
         {
             //ModelState.AddModelError("IdCliente", "El cliente que quiere ingresar ya esta matriculado");
             return(Json(new { result = false }));
         }
         return(Json(new { result = true }));
     }
     return(Json(new { result = false }));
 }
        public async Task <IActionResult> Edit(int id, [Bind("IdMatriculaGym,IdCliente,IdClaseGym")] MatriculaClaseGym matriculaClaseGym)
        {
            if (id != matriculaClaseGym.IdMatriculaGym)
            {
                return(NotFound());
            }
            matriculaClaseGym.Fecha = DateTime.Now;
            if (ModelState.IsValid)
            {
                using (var dbContextTransaction = _context.Database.BeginTransaction())
                {
                    try
                    {
                        var cambiarCupo = _context.MatriculaClaseGym
                                          .Where(m => m.IdMatriculaGym == matriculaClaseGym.IdMatriculaGym && m.IdClaseGym != matriculaClaseGym.IdClaseGym)
                                          .Select(m => m);
                        if (cambiarCupo != null)
                        {                                                                               //valida si Coincide el IdMatri y si Idclase!=, que el de la BD
                            var clasenew = _context.ClaseGym
                                           .Where(cl => cl.IdClaseGym == matriculaClaseGym.IdClaseGym); //trae la clase la cual - cupo
                            var clasbefore = _context.MatriculaClaseGym
                                             .Where(m => m.IdMatriculaGym == matriculaClaseGym.IdMatriculaGym)
                                             .Select(m => m.IdClaseGym)
                                             .FirstOrDefault();// trae la clase pasada para + cupo
                            var clase2 = _context.ClaseGym.Where(cl => cl.IdClaseGym == clasbefore);
                            foreach (var item1 in clasenew)
                            {
                                item1.Cupo = ((int)(item1.Cupo - 1));
                                _context.Update(item1);
                            }
                            foreach (var item2 in clase2)
                            {
                                item2.Cupo = ((int)(item2.Cupo + 1));
                                _context.Update(item2);
                            }

                            _context.Update(matriculaClaseGym);
                            dbContextTransaction.Commit();
                            await _context.SaveChangesAsync();
                        }
                    }
                    catch (DbUpdateConcurrencyException)
                    {
                        dbContextTransaction.Rollback();
                        if (!MatriculaClaseGymExists(matriculaClaseGym.IdMatriculaGym))
                        {
                            return(NotFound());
                        }
                        else
                        {
                            throw;
                        }
                    }
                }
                Thread.Sleep(1000);
                return(RedirectToAction(nameof(Index)));
            }
            if (TempData.ContainsKey("IdClase2"))
            {
                ViewData["IdClaseGym"] = (int)TempData["IdClase2"];
            }

            ViewData["IdCliente"] = _context.Cliente
                                    .Where(e => e.IdCliente == matriculaClaseGym.IdCliente)
                                    .Select(e => new SelectListItem
            {
                Text  = e.Nombre + " " + e.Apellido1 + " " + e.Apellido2,
                Value = e.IdCliente.ToString()
            });
            return(View(matriculaClaseGym));
        }
        public async Task <IActionResult> Create([Bind("IdMatriculaGym,IdCliente,IdClaseGym")] MatriculaClaseGym matriculaClaseGym)
        {
            matriculaClaseGym.Fecha = DateTime.Now;

            if (ModelState.IsValid)
            {
                using (var dbContextTransaction = _context.Database.BeginTransaction())
                {
                    var validarCliente = _context.MatriculaClaseGym.Any(m => m.IdCliente.Equals(matriculaClaseGym.IdCliente));
                    if (validarCliente)
                    {
                        ModelState.AddModelError("IdCliente", "El cliente que quiere ingresar ya esta matriculado");
                        Thread.Sleep(3500);
                        return(View("create"));
                    }
                    try
                    {
                        _context.Add(matriculaClaseGym);
                        //await _context.SaveChangesAsync();

                        //var restarCupo = _context.ClaseGym.Where(cl => cl.IdClaseGym == matriculaClaseGym.IdClaseGym).FirstOrDefault();
                        var restarCupo = from clas in _context.ClaseGym
                                         //join m in _context.MatriculaClaseGym on clas.IdClaseGym equals m.IdClaseGym
                                         where (clas.IdClaseGym == matriculaClaseGym.IdClaseGym)
                                         select clas;
                        foreach (var item in restarCupo)
                        {
                            //if (item.Cupo==0) {
                            //ModelState.AddModelError()
                            //}
                            item.Cupo = ((int)(item.Cupo - 1));
                            _context.ClaseGym.Update(item);
                        }
                        await _context.SaveChangesAsync();

                        dbContextTransaction.Commit();//guarda los cambios hasta aqui
                    }
                    catch
                    {
                        dbContextTransaction.Rollback();//elimina todo si para un error(devuelve)
                    }
                }
                Thread.Sleep(1000);
                return(RedirectToAction(nameof(Index)));
            }

            //ViewData["Fecha"] = DateTime.Now;
            //if (TempData.ContainsKey("IdClase1"))
            //{
            //    ViewData["IdClaseGym"] = (int)TempData["IdClase1"];
            //}
            ViewData["IdClaseGym"] = new SelectList(_context.ClaseGym, "IdClaseGym", "IdClaseGym", matriculaClaseGym.IdClaseGym);
            ViewData["IdCliente"]  = _context.Cliente
                                     .Where(e => e.IdCliente == matriculaClaseGym.IdCliente)
                                     .Select(e => new SelectListItem
            {
                Text  = e.Nombre + " " + e.Apellido1 + " " + e.Apellido2,
                Value = e.IdCliente.ToString()
            });
            return(View(matriculaClaseGym));
        }