Esempio n. 1
0
        public async Task <IActionResult> Create([Bind("Name,Description,ImagePath")] PirateGroup pirateGroup, string[] selectedPersons)
        {
            if (_context.PirateGroups.Any(group => group.Name == pirateGroup.Name))
            {
                ViewBag.NameExists = _localizer["Name '{0}' already exists.", pirateGroup.Name];
                PopulateAssignedPerson(selectedPersons);
                return(View(pirateGroup));
            }
            if (ModelState.IsValid)
            {
                // Try to upload file
                if (!(await TryUploadFile(pirateGroup)))
                {
                    PopulateAssignedPerson(selectedPersons);
                    return(View(pirateGroup));
                }
                // Update persons
                pirateGroup.Persons = new List <Person>();
                foreach (var personIdStr in selectedPersons)
                {
                    int personId = int.Parse(personIdStr);
                    var person   = _context.Persons.SingleOrDefault(p => p.Id == personId);
                    pirateGroup.Persons.Add(person);
                    person.PirateGroup = pirateGroup;
                }
                // Save DB
                _context.Add(pirateGroup);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            PopulateAssignedPerson(selectedPersons);
            return(View(pirateGroup));
        }
Esempio n. 2
0
        public async Task <IActionResult> Create([Bind("Name,Nickname,Description,RewardMoney,Race,Sex,Birthday,FeatureType,Title,PirateGroupID,ImagePath")] Person person, string[] selectedFruits, string[] selectedWeapons, string PirateGroupID)
        {
            if (_context.Persons.Any(p => p.Name == person.Name))
            {
                ViewBag.NameExists = _localizer["Name '{0}' already exists.", person.Name];
                PopulateAssignedFruit(selectedFruits);
                PopulateAssignedWeapon(selectedWeapons);
                return(View(person));
            }
            if (ModelState.IsValid)
            {
                // Try to upload file
                if (!(await TryUploadFile(person)))
                {
                    PopulateAssignedFruit(selectedFruits);
                    PopulateAssignedWeapon(selectedWeapons);
                    return(View(person));
                }
                // Update fruits
                person.FruitPossessions = new List <FruitPossession>();
                foreach (var fruitIdStr in selectedFruits)
                {
                    int fruitId = int.Parse(fruitIdStr);
                    // 多对多关系,指定了Id,会自动绑定object的值。此处new FruitPossession时,只设置了PersonID和FruitID,而Person和Fruit对象没有指定,但是会自动绑定。
                    person.FruitPossessions.Add(new FruitPossession {
                        PersonID = person.Id, FruitID = fruitId
                    });
                }
                // Update weapons
                person.WeaponPossessions = new List <WeaponPossession>();
                foreach (var weaponIdStr in selectedWeapons)
                {
                    int weaponId = int.Parse(weaponIdStr);
                    person.WeaponPossessions.Add(new WeaponPossession {
                        PersonID = person.Id, WeaponID = weaponId
                    });
                }
                // Reward money
                if (person.RewardMoney == null)
                {
                    person.RewardMoney = 0;
                }
                // Save DB
                _context.Add(person);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            PopulateAssignedFruit(selectedFruits);
            PopulateAssignedWeapon(selectedWeapons);
            return(View(person));
        }
Esempio n. 3
0
        public async Task <IActionResult> Create([Bind("Name,Description,ImagePath")] Weapon weapon)
        {
            if (_context.Weapons.Any(w => w.Name == weapon.Name))
            {
                ViewBag.NameExists = _localizer["Name '{0}' already exists.", weapon.Name];
                return(View(weapon));
            }
            if (ModelState.IsValid)
            {
                // Try to upload file
                if (!(await TryUploadFile(weapon)))
                {
                    return(View(weapon));
                }
                // Save DB
                _context.Add(weapon);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(weapon));
        }
Esempio n. 4
0
        public async Task <IActionResult> Create([Bind("Name,Type,Ability,Description")] Fruit fruit)
        {
            // Check if name already exists
            if (_context.Fruits.Any(f => f.Name == fruit.Name))
            {
                ViewBag.NameExists = _localizer["Name '{0}' already exists.", fruit.Name];
                return(View(fruit));
            }

            if (ModelState.IsValid)
            {
                // Try to upload file
                if (!(await TryUploadFile(fruit)))
                {
                    return(View(fruit));
                }
                // Save DB
                _context.Add(fruit);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(fruit));
        }