Пример #1
0
        public async Task <IActionResult> Update(string personId, string changes)
        {
            if (ModelState.IsValid)
            {
                if (int.TryParse(personId, out int id))
                {
                    Person person = await _context.Person.FirstOrDefaultAsync(entry => entry.PersonId == id);

                    string oldImageGuid = person.ImageGUID;

                    if (person != null && ApplyChanges(changes.Split("@"), ref person, out List <string> interestChanges))
                    {
                        _context.Person.Update(person);
                        await _context.SaveChangesAsync();

                        // IF the image was changed then update the image counts, possibly deleting the old image
                        if (person.ImageGUID != oldImageGuid)
                        {
                            await Image.UpdateImageCount(person.ImageGUID, 1, this.Request);

                            await Image.UpdateImageCount(oldImageGuid, -1, this.Request);
                        }

                        await Interest.ProcessChanges(person, interestChanges, _context);

                        return(Ok(person));
                    }
                }
            }

            return(BadRequest());
        }
Пример #2
0
        public void TestAddAndDeleteSeparate()
        {
            Person person = CreatePersonAndAddToDatabase("Fred", "Flinestone");

            List <string> changes = new List <string>()
            {
                "Add:Programming",
                "Add:Sleeping"
            };

            using (PeopleSearchContext context = new PeopleSearchContext(PeopleDbOptions))
            {
                Interest.ProcessChanges(person, changes, context).Wait();
            }

            Assert.AreEqual(2, NumberEntriesInDB(), "All entries are Adds so should have created as many entries as in list");

            using (PeopleSearchContext context = new PeopleSearchContext(PeopleDbOptions))
            {
                Interest.ProcessChanges(person, new List <string> {
                    "Del:Sleeping"
                }, context).Wait();
            }

            Assert.AreEqual(1, NumberEntriesInDB(), "Only one entry left in list after deleting one");
            Assert.IsTrue(EntryExists(person, "Programming"), "Entry must be in database");
        }
Пример #3
0
        public void AddInterestTests()
        {
            Person person = CreatePersonAndAddToDatabase("Fred", "Flinestone");

            List <string> changes = new List <string>()
            {
                "Add:Programming",
                "Add:Sleeping"
            };

            using (PeopleSearchContext context = new PeopleSearchContext(PeopleDbOptions))
            {
                Interest.ProcessChanges(person, changes, context).Wait();
            }

            Assert.AreEqual(changes.Count, NumberEntriesInDB(), "All entries are Adds so should have created as many entries as in list");

            Assert.IsTrue(EntryExists(person, "Programming"), "Entry must be in database");
            Assert.IsTrue(EntryExists(person, "Sleeping"), "Entry must be in database");
        }
Пример #4
0
        public async Task <IActionResult> PostNewPerson()
        {
            string changes = HttpUtility.UrlDecode(this.Request.QueryString.Value.Substring(1));

            changes = changes.RemoveLeading("changes=");

            Person baby = new Person();

            bool anyData = ApplyChanges(changes.Split("@"), ref baby, out List <string> interestChanges);

            if (anyData)
            {
                var newPerson = _context.Person.Add(baby);
                await _context.SaveChangesAsync();

                await Image.UpdateImageCount(baby.ImageGUID, 1, this.Request);

                await Interest.ProcessChanges(baby, interestChanges, _context);

                return(Ok(baby));
            }

            return(BadRequest());
        }