Beispiel #1
0
        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
Beispiel #2
0
        /*
         * 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);
        }