public async Task <ActionResult> DeleteConfirmed(int id) { canje_premios canje_premios = await db.canje_premios.FindAsync(id); db.canje_premios.Remove(canje_premios); await db.SaveChangesAsync(); return(RedirectToAction("Index")); }
public async Task <ActionResult> Edit([Bind(Include = "id,socio_id,premio_id,puntos_canjeados,complejo_canje_id,fecha_alta,observaciones,premio_puntos_valor,premio_complejo_responsable_id,usuario_alta,fecha_modificacion,usaurio_modificacion")] canje_premios canje_premios) { if (ModelState.IsValid) { db.Entry(canje_premios).State = EntityState.Modified; await db.SaveChangesAsync(); return(RedirectToAction("Index")); } return(View(canje_premios)); }
public async Task <ActionResult> Delete(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } canje_premios canje_premios = await db.canje_premios.FindAsync(id); if (canje_premios == null) { return(HttpNotFound()); } return(View(canje_premios)); }
public async Task <ActionResult> Create([Bind(Include = "socio_id,premio_id,puntos_canjeados,observaciones")] canje_premios canje_premios) { if (ModelState.IsValid) { using (var dbTransaction = db.Database.BeginTransaction()) { try { var premio = db.premios.Find(canje_premios.premio_id); ///completo el canje canje_premios.complejo_canje_id = IdComplejoIdentity; canje_premios.fecha_alta = DateTime.Now; canje_premios.fecha_modificacion = DateTime.Now; canje_premios.premio_complejo_responsable_id = premio.complejo_responsable_id; canje_premios.premio_puntos_valor = premio.puntos; canje_premios.usaurio_modificacion = User.Identity.Name; canje_premios.usuario_alta = User.Identity.Name; ///busco las cargas de puntos del socio ordenadas por fecha y que tengan puntos disponibles var listCargas = from c in db.carga_puntos where c.socio_id == canje_premios.socio_id && c.puntos_disponibles > 0 orderby c.fecha_alta ascending select c; var puntosADescontar = canje_premios.puntos_canjeados; List <carga_puntos> listCargasAModificar = new List <carga_puntos>(); ///recorro las cargas con puntos disponibles para descontrales los puntos ///y crear el detalle del canje foreach (var c in listCargas) { if (c.puntos_disponibles >= puntosADescontar) { c.puntos_disponibles = c.puntos_disponibles - puntosADescontar; canje_premios_detalle cd = new canje_premios_detalle(); cd.carga_puntos_id = c.id; cd.puntos_utilizados = puntosADescontar; canje_premios.canje_premios_detalle.Add(cd); listCargasAModificar.Add(c); break; } else { puntosADescontar = puntosADescontar - c.puntos_disponibles; canje_premios_detalle cd = new canje_premios_detalle(); cd.carga_puntos_id = c.id; cd.puntos_utilizados = c.puntos_disponibles; canje_premios.canje_premios_detalle.Add(cd); c.puntos_disponibles = 0; listCargasAModificar.Add(c); } } ///Le descuentos los puntos actuales al socio var so = db.socios.Find(canje_premios.socio_id); so.puntos_actuales = so.puntos_actuales - canje_premios.puntos_canjeados; db.Entry(so).State = EntityState.Modified; //Agrego al contexto las cargas a modificar foreach (var cc in listCargasAModificar) { db.Entry(cc).State = EntityState.Modified; } ///agrego el canje db.canje_premios.Add(canje_premios); await db.SaveChangesAsync(); dbTransaction.Commit(); TempData["MsjExito"] = "Canje de Premio Realizado Con Exito"; return(RedirectToAction("Index")); } catch (Exception) { dbTransaction.Rollback(); var listPremio = from p in db.premios where p.desactivado == false select new { id = p.id, nombre = p.nombre + " | " + p.puntos + " puntos" }; ViewBag.ListPremios = new SelectList(listPremio, "id", "nombre"); return(View(canje_premios)); } } } var listPremios = from p in db.premios where p.desactivado == false select new { id = p.id, nombre = p.nombre + " | " + p.puntos + " puntos" }; ViewBag.ListPremios = new SelectList(listPremios, "id", "nombre"); return(View(canje_premios)); }