public IHttpActionResult PostGameAnswers(IList <GameAnswerDTO> GameAnswersDTOsIn) { long firstPlayerId = GameAnswersDTOsIn[0].PlayerId; string firstGameCode = GameAnswersDTOsIn[0].GameCode; if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { ProbeValidate.ValidateGameCodeVersusPlayerId(firstPlayerId, firstGameCode); } catch (Exception ex) { Elmah.ErrorSignal.FromCurrentContext().Raise(ex); //log to elmah //Delete the player - if it exists and it does not have any GameAnswers if (!ProbeValidate.IsPlayerHaveAnyAnswers(firstPlayerId)) { Player player = db.Player.Find(firstPlayerId); db.Player.Remove(player); db.SaveChanges(Request != null ? Request.Headers.UserAgent.ToString() : null); } return(BadRequest(ModelState)); } List <GameAnswerDTO> GameAnswerDTOsOut = new List <GameAnswerDTO>(); //create GameAnswerDTO's (Id, PlayerId, ChoiceId) foreach (GameAnswerDTO GameAnswerDTOIn in GameAnswersDTOsIn) { //we need to create a GameAnswer (to record in the database) GameAnswer GameAnswer = new GameAnswer { PlayerId = GameAnswerDTOIn.PlayerId, ChoiceId = GameAnswerDTOIn.ChoiceId }; db.GameAnswer.Add(GameAnswer); db.SaveChanges(Request != null ? Request.Headers.UserAgent.ToString() : null); GameAnswerDTO GameAnswerDTOOut = new GameAnswerDTO(); GameAnswerDTOOut.Id = GameAnswer.Id; GameAnswerDTOOut.PlayerId = GameAnswer.PlayerId; GameAnswerDTOOut.ChoiceId = GameAnswer.ChoiceId; GameAnswerDTOsOut.Add(GameAnswerDTOOut); } //foreach (GameAnswerDTO GameAnswerDTOIn in GameAnswersDTOsIn) //returning all the GameAnswerDTOs in the list return(CreatedAtRoute("DefaultApi", new { id = GameAnswerDTOsOut[0].Id }, GameAnswerDTOsOut)); } //public IHttpActionResult PostGameAnswers
/* * Updates: MNS 4-15-15 - Added support for LastName, and Email. Also support the possibility that FirstName, * NickName, LastName, or Email may be missing. This is a valid use case. */ public bool BindModel(System.Web.Http.Controllers.HttpActionContext actionContext, ModelBindingContext bindingContext) { PlayerDTO playerDto = new PlayerDTO(); bindingContext.Model = playerDto; DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(PlayerDTO)); string ct = actionContext.Request.Content.ReadAsStringAsync().Result; JObject root = JObject.Parse(ct); playerDto.Id = (long)root["Id"]; playerDto.GameCode = (string)root["GameCode"]; playerDto.GameId = (long)root["GameId"]; if (root["Sex"] != null) { playerDto.Sex = (Person.SexType)((int)root["Sex"]); } if (root["FirstName"] != null) { playerDto.FirstName = root["FirstName"].ToString(); } if (root["NickName"] != null) { playerDto.NickName = (string)root["NickName"]; } if (root["LastName"] != null) { playerDto.LastName = (string)root["LastName"]; } if (root["Email"] != null) { playerDto.EmailAddr = (string)root["Email"]; } try { if ((string)root["ClientVersion"] != null) { playerDto.ClientVersion = (string)root["ClientVersion"]; } else { playerDto.ClientVersion = ProbeConstants.ClientVersionPostPlayerWithoutAnswers; } } catch { playerDto.ClientVersion = ProbeConstants.ClientVersionPostPlayerWithoutAnswers; } if (playerDto.ClientVersion != ProbeConstants.ClientVersionPostPlayerWithoutAnswers) { List <GameAnswerDTO> gaList = new List <GameAnswerDTO>(); JArray gaArray = (JArray)root["GameAnswer"]; for (int i = 0; i < gaArray.Count; i++) //loop through rows { GameAnswerDTO ga = new GameAnswerDTO(); ga.Id = 0; //just a placeholder ga.PlayerId = 0; //just a placeholder ga.QuestionNbr = (int)gaArray[i]["QuestionNbr"]; ga.QuestionId = (long)gaArray[i]["QuestionId"]; ga.ChoiceId = (long)gaArray[i]["ChoiceId"]; gaList.Add(ga); } playerDto.GameAnswers = gaList; } return(true); }