Ejemplo n.º 1
0
        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"));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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));
        }