public HttpResponseMessage Post(List<pitDTO> pResponses) { int? houseHoldId = null; if (pResponses == null) throw new HttpResponseException(HttpStatusCode.NotAcceptable); try { foreach (var pResponse in pResponses) { PIT p = new PIT { Latitude = pResponse.GeoLoc.Latitude, Longitude = pResponse.GeoLoc.Longitude, CreatedDate = DateTime.Now, UserId = pResponse.UserId }; if (houseHoldId.HasValue) { p.HouseholdId = houseHoldId.Value; } p = ParseResponse(p, pResponse.Responses.ToList()); db.PITs.Add(p); db.SaveChanges(); if (!houseHoldId.HasValue) { houseHoldId = p.PITId; } } } catch (Exception e) { CommonLib.ExceptionUtility.LogException(CommonLib.ExceptionUtility.Application.General, e, "Post PIT; URI =" + this.Request.RequestUri.AbsoluteUri); return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e); } var response = Request.CreateResponse(); response.Content = new StringContent("PitHousehold_Id=" + houseHoldId.ToString()); return response; }
private PIT ParseResponse(PIT p, IEnumerable<Response> responses) { foreach (var r in responses) { Question question = db.Questions.First(q => q.QuestionId == r.QuestionId); switch (question.QuestionText) { case "Gender": p.GenderAnswer = r.Answer; break; case "Age": p.AgeAnswer = r.Answer; break; case "Single Or Family": p.FamilyAnswer = r.Answer; break; case "Dwelling or Vehicle Type": p.DwellingAnswer = r.Answer; break; case "Location Seen": p.LocationAnswer = r.Answer; break; } } return p; }