// PUT api/Position/5 public IHttpActionResult PutPosition(int id, Position position) { if (!ModelState.IsValid) { return BadRequest(ModelState); } if (id != position.Id) { return BadRequest(); } // Ownership reassignment is not allows if (position.OwnerIdentity != User.Identity.Name) return BadRequest(); using (var tx = db.BeginTransaction()) { db.SaveOrUpdate(position); tx.Commit(); } return StatusCode(HttpStatusCode.NoContent); }
public ActionResult ImportLinkedIn(ImportLinkedInViewModel importProfile) { // Update profile values var profile = db.Query<Profile>().SingleOrDefault(p => p.OwnerIdentity == User.Identity.Name) ?? new Profile(); profile.FirstName = importProfile.FirstName; profile.LastName = importProfile.LastName; profile.Summary = importProfile.Summary; profile.OwnerIdentity = User.Identity.Name; // Model binder is not reading the positions // TODO: Convert to custom model binder int i = 0; while (true) { if (i > 99) break; var p = string.Format("Positions[{0}]", i); var id = Request[p + ".Id"]; if (id == null) break; var position = new Position(); position.Title = Request[p + ".Title"]; position.Company = Request[p + ".Company"]; position.Description = Request[p + ".Description"]; position.StartDate = DateTime.Parse(Request[p + ".StartDate"]); var endDate = Request[p + ".EndDate"]; if(endDate != null) position.EndDate = DateTime.Parse(Request[p + ".EndDate"]); ; importProfile.Positions.Add(position); i++; } using(var tx = db.BeginTransaction()) { db.SaveOrUpdate(profile); foreach(var position in importProfile.Positions) { position.OwnerIdentity = User.Identity.Name; db.Save(position); } tx.Commit(); } return View("ImportLinkedInSuccess"); }
public IHttpActionResult PostPosition(Position position) { if (!ModelState.IsValid) { return BadRequest(ModelState); } // Ownership reassignment is not allows if (position.OwnerIdentity != User.Identity.Name) return BadRequest(); db.Save(position); return CreatedAtRoute("DefaultApi", new { id = position.Id }, position); }