Пример #1
0
        public async Task <ActionResult> ResetPassword(ResetPasswordViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            var user = await UserManager.FindByNameAsync(model.Email);

            if (user == null)
            {
                // Не показывать, что пользователь не существует
                return(RedirectToAction("ResetPasswordConfirmation", "Account"));
            }
            var result = await UserManager.ResetPasswordAsync(user.Id, model.Code, model.Password);

            if (result.Succeeded)
            {
                using (BGS_DBContext ctx_db = new BGS_DBContext())
                {
                    ctx_db.Users.First(u => u.Id == user.Id).Password = model.Password;
                    await ctx_db.SaveChangesAsync();
                }
                return(RedirectToAction("ResetPasswordConfirmation", "Account"));
            }
            AddErrors(result);
            return(View());
        }
Пример #2
0
        public async Task <ActionResult> ChangeName(ChangeNameViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            var user   = UserManager.FindById(User.Identity.GetUserId());
            var result = await UserManager.CheckPasswordAsync(user, model.Password);

            if (result && user != null)
            {
                using (ApplicationDbContext ctx = new ApplicationDbContext())
                {
                    ctx.Users.Find(user.Id).UserName = model.NewName;
                    await ctx.SaveChangesAsync();
                }

                using (BGS_DBContext ctx_db = new BGS_DBContext())
                {
                    ctx_db.Users.First(u => u.Id == user.Id).Name = model.NewName;
                    await ctx_db.SaveChangesAsync();
                }
                return(RedirectToAction("Index", new { Message = ManageMessageId.ChangeNameSuccess }));
            }
            AddErrors(new IdentityResult("Ошибка индификации"));
            return(View(model));
        }
Пример #3
0
        public ActionResult Index()
        {
            var    model  = new AllInventoryModel();
            string userId = User.Identity.GetUserId();

            using (var db = new BGS_DBContext())
            {
                User user = db.Users
                            .Include(u => u.Units.Select(a => a.FirstWeapon))
                            .Include(u => u.Units.Select(a => a.Specialization.Skills))
                            .Include(u => u.WeaponModels.Select(a => a.AimModification))
                            .Include(u => u.WeaponModels.Select(a => a.BarrelModification))
                            .Include(u => u.WeaponModels.Select(a => a.ButtModification))
                            .Include(u => u.WeaponModels.Select(a => a.MagazineModification))
                            .Include(u => u.ArmorModels)
                            .Include(u => u.AccessoryModels)
                            .Include(u => u.StorageModels)
                            .Single(u => u.Id == userId);
                model.ArmorModels     = user.ArmorModels.Where(u => u.LotId == null).ToArray();
                model.UnitModels      = user.Units.Where(u => u.LotId == null).ToArray();
                model.WeaponModels    = user.WeaponModels.Where(u => u.LotId == null).ToArray();
                model.AccessoryModels = user.AccessoryModels.Where(u => u.LotId == null).ToArray();
                model.StorageModels   = user.StorageModels.Where(u => u.LotId == null).ToArray();
            }
            return(View(model));
        }
Пример #4
0
 public ActionResult NewStorageLot(NewStorageLotModel model)
 {
     if (ModelState.IsValid)
     {
         using (var db = new BGS_DBContext()) {
             string userIdentityId = User.Identity.GetUserId();
             var    seller         = db.Users.Single(u => u.Id == userIdentityId);
             for (int i = 0; i < model.LotCount; i++)
             {
                 StorageModel newStorageModel = GameUtilCreater.StorageModelFromModel(model);
                 db.StorageModels.Add(newStorageModel);
                 db.SaveChanges();
                 var lot = new LotModel()
                 {
                     Seller   = seller,
                     ItemId   = newStorageModel.Id,
                     Price    = model.Price,
                     SellerId = seller.GameId,
                     Status   = LotStatus.Available,
                     Type     = LotType.Storage
                 };
                 db.LotModels.Add(lot);
                 db.SaveChanges();
                 newStorageModel.LotId = lot.Id;
             }
             db.SaveChanges();
             return(RedirectToAction("Index", "Market"));
         }
     }
     ModelState.AddModelError("", "Что то не правильно");
     return(View(model));
 }
Пример #5
0
        public ActionResult GetUserBalance()
        {
            using (var db = new BGS_DBContext())
            {
                var   id      = User.Identity.GetUserId();
                float balance = db.Users.Single(u => u.Id == id).AccountBalance;

                return(new ContentResult()
                {
                    Content = $"<a href=\"#\" class=\"btn btn-link m-1 bg-light text-success\">{balance.ToString("C", CultureInfo.CurrentUICulture)}$4<a/>",
                    ContentType = "text/html"
                });
            }
        }
Пример #6
0
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                string userName = string.Join("", model.Email.TakeWhile(c => c != '@'));
                var    user     = new ApplicationUser {
                    UserName = userName, Email = model.Email
                };
                using (var ctx_db = new BGS_DBContext())
                {
                    var new_user = GameUtilCreater.CreateNewUser(model.Email, model.Password, user);
                    ctx_db.Users.Add(new_user);


                    var result = await UserManager.CreateAsync(user, model.Password);

                    if (result.Succeeded)
                    {
                        await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                        // Дополнительные сведения о включении подтверждения учетной записи и сброса пароля см. на странице https://go.microsoft.com/fwlink/?LinkID=320771.
                        // Отправка сообщения электронной почты с этой ссылкой
                        // 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, "Подтверждение учетной записи", "Подтвердите вашу учетную запись, щелкнув <a href=\"" + callbackUrl + "\">здесь</a>");
                        ctx_db.SaveChanges();
                        return(RedirectToAction("Index", "Home"));
                    }

                    AddErrors(result);
                }
            }

            // Появление этого сообщения означает наличие ошибки; повторное отображение формы
            return(View(model));
        }
Пример #7
0
        public ActionResult NewModificationLot(NewModificationLotModel model)
        {
            if (ModelState.IsValid)
            {
                using (var db = new BGS_DBContext()) {
                    string userIdentityId = User.Identity.GetUserId();
                    var    seller         = db.Users.Single(u => u.Id == userIdentityId);
                    for (int i = 0; i < model.LotCount; i++)
                    {
                        switch (model.Type)
                        {
                        case ModificationType.Aim:
                            AimModificationModel newAimModModel = new AimModificationModel()
                            {
                                Item = model.Item, WeaponType = model.WeaponType
                            };
                            db.AimModificationModels.Add(newAimModModel);
                            db.SaveChanges();
                            var aimLot = new LotModel()
                            {
                                Seller   = seller,
                                ItemId   = newAimModModel.Id,
                                Price    = model.Price,
                                SellerId = seller.GameId,
                                Status   = LotStatus.Available,
                                Type     = LotType.Modification
                            };
                            db.LotModels.Add(aimLot);
                            db.SaveChanges();
                            newAimModModel.LotId = aimLot.Id;
                            break;

                        case ModificationType.Magazine:
                            MagazineModificationModel newMagazineModModel = new MagazineModificationModel()
                            {
                                Item = model.Item, WeaponType = model.WeaponType
                            };
                            db.MagazineModificationModels.Add(newMagazineModModel);
                            db.SaveChanges();
                            var maganineLot = new LotModel()
                            {
                                Seller   = seller,
                                ItemId   = newMagazineModModel.Id,
                                Price    = model.Price,
                                SellerId = seller.GameId,
                                Status   = LotStatus.Available,
                                Type     = LotType.Modification
                            };
                            db.LotModels.Add(maganineLot);
                            db.SaveChanges();
                            newMagazineModModel.LotId = maganineLot.Id;
                            break;

                        case ModificationType.Barrel:
                            BarrelModificationModel newBarrelModModel = new BarrelModificationModel()
                            {
                                Item = model.Item, WeaponType = model.WeaponType
                            };
                            db.BarrelModificationModels.Add(newBarrelModModel);
                            db.SaveChanges();
                            var barrelLot = new LotModel()
                            {
                                Seller   = seller,
                                ItemId   = newBarrelModModel.Id,
                                Price    = model.Price,
                                SellerId = seller.GameId,
                                Status   = LotStatus.Available,
                                Type     = LotType.Modification
                            };
                            db.LotModels.Add(barrelLot);
                            db.SaveChanges();
                            newBarrelModModel.LotId = barrelLot.Id;
                            break;

                        case ModificationType.Butt:
                            ButtModificationModel newButtModModel = new ButtModificationModel()
                            {
                                Item = model.Item, WeaponType = model.WeaponType
                            };
                            db.ButtModificationModels.Add(newButtModModel);
                            db.SaveChanges();
                            var buttLot = new LotModel()
                            {
                                Seller   = seller,
                                ItemId   = newButtModModel.Id,
                                Price    = model.Price,
                                SellerId = seller.GameId,
                                Status   = LotStatus.Available,
                                Type     = LotType.Modification
                            };
                            db.LotModels.Add(buttLot);
                            db.SaveChanges();
                            newButtModModel.LotId = buttLot.Id;
                            break;
                        }
                    }
                    db.SaveChanges();
                    return(RedirectToAction("Index", "Market"));
                }
            }
            ModelState.AddModelError("", "Что то не правильно");
            return(View(model));
        }
Пример #8
0
        public ActionResult Index(string error, string buy)
        {
            if (error != null)
            {
                ViewBag.error = error;
            }
            if (buy != null)
            {
                ViewBag.buy = buy;
            }
            var model = new AllLots();

            model.ModificationTypes = new Dictionary <int, ModificationType>();
            List <UnitModel>                 unitModels      = new List <UnitModel>();
            List <WeaponModel>               weaponModels    = new List <WeaponModel>();
            List <ArmorModel>                armorModels     = new List <ArmorModel>();
            List <AccessoryModel>            accessoryModels = new List <AccessoryModel>();
            List <AimModificationModel>      aimModels       = new List <AimModificationModel>();
            List <MagazineModificationModel> magazineModels  = new List <MagazineModificationModel>();
            List <BarrelModificationModel>   barrelModels    = new List <BarrelModificationModel>();
            List <ButtModificationModel>     buttModels      = new List <ButtModificationModel>();

            using (var db = new BGS_DBContext())
            {
                var last100lots = db.LotModels.Where(l => l.Status == LotStatus.Available).Include(u => u.Seller).OrderByDescending(u => u.Id).Take(100).ToArray();
                foreach (LotModel lot in last100lots)
                {
                    switch (lot.Type)
                    {
                    case LotType.Unit: unitModels.Add(db.UnitModels.Include(u => u.Specialization.Skills).SingleOrDefault(u => u.LotId == lot.Id)); break;

                    case LotType.Weapon: weaponModels.Add(db.WeaponModels
                                                          .Include(u => u.AimModification)
                                                          .Include(u => u.BarrelModification)
                                                          .Include(u => u.MagazineModification)
                                                          .Include(u => u.ButtModification)
                                                          .SingleOrDefault(u => u.LotId == lot.Id)); break;

                    case LotType.Armor: armorModels.Add(db.ArmorModels.SingleOrDefault(u => u.LotId == lot.Id)); break;

                    case LotType.Accessory: accessoryModels.Add(db.AccessoryModels.SingleOrDefault(u => u.LotId == lot.Id)); break;

                    case LotType.Modification:
                        AimModificationModel      aim      = db.AimModificationModels.SingleOrDefault(u => u.LotId == lot.Id);
                        MagazineModificationModel magazine = db.MagazineModificationModels.SingleOrDefault(u => u.LotId == lot.Id);
                        BarrelModificationModel   barrel   = db.BarrelModificationModels.SingleOrDefault(u => u.LotId == lot.Id);
                        ButtModificationModel     butt     = db.ButtModificationModels.SingleOrDefault(u => u.LotId == lot.Id);
                        if (aim != null)
                        {
                            aimModels.Add(aim); model.ModificationTypes.Add(lot.Id, ModificationType.Aim);
                        }
                        if (magazine != null)
                        {
                            magazineModels.Add(magazine); model.ModificationTypes.Add(lot.Id, ModificationType.Magazine);
                        }
                        if (butt != null)
                        {
                            buttModels.Add(butt); model.ModificationTypes.Add(lot.Id, ModificationType.Butt);
                        }
                        if (barrel != null)
                        {
                            barrelModels.Add(barrel); model.ModificationTypes.Add(lot.Id, ModificationType.Barrel);
                        }
                        break;
                    }
                }
                model.LotUnits                   = unitModels.ToArray();
                model.LotArmors                  = armorModels.ToArray();
                model.LotAccessoryes             = accessoryModels.ToArray();
                model.LotWeapons                 = weaponModels.ToArray();
                model.AimModificationModels      = aimModels.ToArray();
                model.MagazineModificationModels = magazineModels.ToArray();
                model.ButtModificationModels     = buttModels.ToArray();
                model.BarrelModificationModels   = barrelModels.ToArray();
                model.Last100Lots                = last100lots;
            }
            return(View(model));
        }
Пример #9
0
        public ActionResult BuyLot(int lotId)
        {
            using (var db = new BGS_DBContext())
            {
                var  id   = User.Identity.GetUserId();
                var  lot  = db.LotModels.Single(p => p.Id == lotId);
                User user = db.Users.Single(u => u.Id == id);
                if (user.AccountBalance - lot.Price > 0)
                {
                    switch (lot.Type)
                    {
                    default: throw new Exception("No this lot");

                    case LotType.Unit:
                        UnitModel unitModel = db.UnitModels.Single(u => u.LotId == lotId);
                        unitModel.LotId = null;
                        unitModel.Owner = user;
                        break;

                    case LotType.Armor:
                        ArmorModel armorModel = db.ArmorModels.Single(u => u.LotId == lotId);
                        armorModel.LotId = null;
                        armorModel.Owner = user;
                        break;

                    case LotType.Accessory:
                        AccessoryModel accessoryModel = db.AccessoryModels.Single(u => u.LotId == lotId);
                        accessoryModel.LotId = null;
                        accessoryModel.Owner = user;
                        break;

                    case LotType.Weapon:
                        WeaponModel weaponModel = db.WeaponModels.Single(u => u.LotId == lotId);
                        weaponModel.LotId = null;
                        weaponModel.Owner = user;
                        break;

                    case LotType.Storage:
                        StorageModel storageModel = db.StorageModels.Single(u => u.LotId == lotId);
                        storageModel.LotId = null;
                        storageModel.Owner = user;
                        break;

                    case LotType.Modification:
                        AimModificationModel      aim      = db.AimModificationModels.SingleOrDefault(a => a.LotId == lot.Id);
                        MagazineModificationModel magazine = db.MagazineModificationModels.SingleOrDefault(a => a.LotId == lot.Id);
                        BarrelModificationModel   barrel   = db.BarrelModificationModels.SingleOrDefault(a => a.LotId == lot.Id);
                        ButtModificationModel     butt     = db.ButtModificationModels.SingleOrDefault(a => a.LotId == lot.Id);
                        if (aim != null)
                        {
                            aim.LotId = null; aim.Owner = user;
                        }
                        if (magazine != null)
                        {
                            magazine.LotId = null; magazine.Owner = user;
                        }
                        if (barrel != null)
                        {
                            barrel.LotId = null; barrel.Owner = user;
                        }
                        if (butt != null)
                        {
                            butt.LotId = null; butt.Owner = user;
                        }
                        break;
                    }
                    lot.Status                 = LotStatus.Closed;
                    lot.BuyerId                = user.GameId;
                    user.AccountBalance       -= lot.Price;
                    lot.Seller.AccountBalance += lot.Price;
                    db.SaveChanges();
                    return(RedirectToAction("Index", "Market",
                                            new { buy = $"Лот #{lot.Id} успешно куплен за {lot.Price}$4" }));
                }
                else
                {
                    return(RedirectToAction("Index", "Market",
                                            new { error = "У вас не хватает средств для этой покупки" }));
                }
            }
        }