public async Task <ActionResult> Puja(int?subastaId, [Bind(Include = "puja")] int puja, [Bind(Include = "TarjetaDeCreditoId")] double TarjetaDeCreditoId)
        {
            if (subastaId == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Subasta subasta = await db.Subastas.FindAsync(subastaId);

            TarjetaDeCredito tarjetaDeCredito = db.Tarjetas.Find(TarjetaDeCreditoId);

            if (subasta.PujaActual < puja && tarjetaDeCredito.CreditoDisponible >= puja)
            {
                Comprador         comprador         = QuerysGeneric.GetComprador(User.Identity.Name, db.Compradores);
                UsuarioConTarjeta usuarioconTarjeta = subasta.UsuarioConTarjeta;
                if (usuarioconTarjeta != null)
                {
                    usuarioconTarjeta.TarjetadeCredito.CreditoDisponible += subasta.PujaActual;
                }
                usuarioconTarjeta                  = db.UsuarioConTarjetas.Where(m => (m.CompradorId == comprador.Id && m.TarjetadeCredito.NumDeTarjeta == TarjetaDeCreditoId)).ToList()[0];
                subasta.PujaActual                 = puja;
                subasta.UsuarioConTarjeta          = usuarioconTarjeta;
                tarjetaDeCredito.CreditoDisponible = tarjetaDeCredito.CreditoDisponible - puja;
                subasta.Comprador                  = comprador;
                db.Entry(subasta).State            = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("Index", "Home", new { nameAnuncio = "AcceptSubasta" }));
            }

            ViewBag.AnuncioId   = new SelectList(db.Anuncios, "AnuncioId", "Etiqueta", subasta.AnuncioId);
            ViewBag.CompradorId = new SelectList(db.Compradores, "CompradorId", "Nombre", subasta.Comprador);
            return(RedirectToAction("Index", "Home", new { nameAnuncio = "ErrorSubasta" }));
        }
        public async Task <ActionResult> CrearTarjeta([Bind(Include = "tarjeta")] double tarjeta)
        {
            if (tarjeta > 0)
            {
                Comprador user;
                if (User.IsInRole(RoleName.Comprador))
                {
                    int credito = QuerysGeneric.random.Next(100, 1000);
                    TarjetaDeCredito tarjetaDeCredito = await db.Tarjetas.FindAsync(tarjeta);

                    if (tarjetaDeCredito == null)
                    {
                        tarjetaDeCredito = new TarjetaDeCredito()
                        {
                            NumDeTarjeta      = tarjeta,
                            CreditoDisponible = credito,
                            CreditoContable   = credito
                        };
                        db.Tarjetas.Add(tarjetaDeCredito);
                        await db.SaveChangesAsync();
                    }

                    user = QuerysGeneric.GetComprador(User.Identity.Name, db.Compradores);
                    UsuarioConTarjeta usuario = new UsuarioConTarjeta()
                    {
                        Comprador        = user,
                        CompradorId      = user.Id,
                        TarjetadeCredito = tarjetaDeCredito
                    };
                    db.UsuarioConTarjetas.Add(usuario);
                    await db.SaveChangesAsync();

                    return(RedirectToAction("Index", "Home", new { nameAnuncio = "AcceptTarjeta" }));
                }
            }
            return(View());
        }
Beispiel #3
0
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    //Codigo Temporal Para añadir Roles
                    var roleStore   = new RoleStore <IdentityRole>(new ApplicationDbContext());
                    var roleManager = new RoleManager <IdentityRole>(roleStore);
                    if (roleManager.FindByName(RoleName.Admin) == null)
                    {
                        await roleManager.CreateAsync(new IdentityRole(RoleName.Admin));
                    }
                    if (roleManager.FindByName(RoleName.Comprador) == null)
                    {
                        await roleManager.CreateAsync(new IdentityRole(RoleName.Comprador));
                    }
                    if (roleManager.FindByName(RoleName.Vendedor) == null)
                    {
                        await roleManager.CreateAsync(new IdentityRole(RoleName.Vendedor));
                    }
                    if (model.roles == Roles.Admin)
                    {
                        await UserManager.AddToRoleAsync(user.Id, RoleName.Admin);
                    }
                    else
                    {
                        string           Nombre           = model.Nombre;
                        string           UserId           = user.UserName;
                        int              credito          = QuerysGeneric.random.Next(100, 1000);
                        TarjetaDeCredito tarjetaDeCredito = await db.Tarjetas.FindAsync(model.Tarjeta);

                        if (tarjetaDeCredito == null)
                        {
                            tarjetaDeCredito = new TarjetaDeCredito()
                            {
                                NumDeTarjeta      = model.Tarjeta,
                                CreditoDisponible = credito,
                                CreditoContable   = credito
                            };
                            db.Tarjetas.Add(tarjetaDeCredito);
                            await db.SaveChangesAsync();
                        }
                        if (model.roles == Roles.Comprador)
                        {
                            await UserManager.AddToRoleAsync(user.Id, RoleName.Comprador);

                            Comprador comprador = new Comprador()
                            {
                                Nombre = Nombre, User = UserId, Mensaje = ""
                            };
                            db.Compradores.Add(comprador);
                            await db.SaveChangesAsync();

                            UsuarioConTarjeta usuario = new UsuarioConTarjeta()
                            {
                                CompradorId      = comprador.Id,
                                Comprador        = comprador,
                                TarjetadeCredito = tarjetaDeCredito,
                            };

                            db.UsuarioConTarjetas.Add(usuario);
                            await db.SaveChangesAsync();
                        }
                        else
                        {
                            await UserManager.AddToRoleAsync(user.Id, RoleName.Vendedor);

                            Vendedor vendedor = new Vendedor()
                            {
                                Nombre             = Nombre,
                                User               = UserId,
                                TarjetaDeCredito   = tarjetaDeCredito,
                                TarjetadeCreditoId = tarjetaDeCredito.NumDeTarjeta,
                                Mensaje            = ""
                            };
                            db.Vendedores.Add(vendedor);
                            await db.SaveChangesAsync();
                        }
                    }

                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                    return(RedirectToAction("Index", "Home"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }