// HTTP POST - Create public async Task<IHttpActionResult> Post(Person person) { try { Logger.Instance.Info(string.Format("Start HTTP POST - People(person) is called.\r\nPerson is: {0}", person)); if (!ModelState.IsValid) { return BadRequest(ModelState); } await Task.Run(() => { DemoDataSources.Instance.People.Add(person); }); Logger.Instance.Info("Done HTTP POST - People(person)"); return Created(person); } catch (Exception e) { Logger.Instance.Error(string.Format("HTTP POST - People({0})\r\n{1}", person, e.ToString())); return BadRequest(e.Message); } finally { // nothing else } }
// HTTP PUT - Update public async Task<IHttpActionResult> Put([FromODataUri] string key, Person updatePerson) { try { Logger.Instance.Info(string.Format("Start HTTP PUT - People(key, person) is called.\r\nKey is: {0}\r\nPerson is: {1}", key, updatePerson)); if (!ModelState.IsValid) { return BadRequest(ModelState); } if (key != updatePerson.ID) { return BadRequest(); } try { await Task.Run(() => { Person toBeRemovedPerson = DemoDataSources.Instance.People.Where(p => p.ID == key).First(); DemoDataSources.Instance.People.Remove(toBeRemovedPerson); DemoDataSources.Instance.People.Add(updatePerson); }); } catch { if (null == DemoDataSources.Instance.People.Where(p => p.ID == key).First()) { return NotFound(); } else { throw; } } Logger.Instance.Info("Done HTTP PUT - People(key, person)"); return Updated(updatePerson); } catch (Exception e) { Logger.Instance.Error(string.Format("HTTP PUT - People({0}, {1})\r\n{2}", key, updatePerson, e.ToString())); return BadRequest(e.Message); } finally { // nothing else } }