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()); }
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"); }
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"); }
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()); }