public async Task <IActionResult> OnGetDelete(int?id)
        {
            if (id == null)
            {
                return(NotFound("Person not found"));
            }

            _db.Remove(DisplayedPeople.FirstOrDefault(person => person.Id == id));

            await _db.SaveChangesAsync();

            return(Page());
        }
Example #2
0
        public async Task <ActionResult <Person> > Update(Person updatedPerson)
        {
            //Поиск существующего пользователя.
            Person person = await db.Persons.FindAsync(updatedPerson.Id);

            //Обновление всех данных кроме навыков.
            db.Entry(person).CurrentValues.SetValues(updatedPerson);

            //Навыки работника.
            var personSkills = person.Skills.ToList();

            foreach (var personSkill in personSkills)
            {
                //Ищем навыки которые были до изменений и остались после изменений.
                var skill = updatedPerson.Skills.SingleOrDefault(s => s.Name == personSkill.Name);
                if (skill != null)
                {
                    //Обновляем поле у навыка сотрудника.
                    db.Entry(personSkill).CurrentValues.SetValues(skill);
                }
                else
                {
                    //Удаляем, если навыка нет.
                    db.Remove(personSkill);
                }
            }

            //Добавляем новые навыки.
            foreach (var skill in updatedPerson.Skills)
            {
                if (personSkills.All(s => s.Name != skill.Name))
                {
                    person.Skills.Add(skill);
                }
            }
            await db.SaveChangesAsync();

            return(person);
        }