Esempio n. 1
0
        public TransactionResult <int> Insert(UserInfo appObj)
        {
            const string sql =
                "INSERT INTO UserInfo (UserName, Password, UserEmail, " +
                " FirstName, LastName, Location, UntappdId) VALUES " +
                "(@UserName, @Password, @UserEmail, @FirstName, @LastName, @Location, @UntappdId);" +
                "SELECT LAST_INSERT_ID();";
            var retVal = new TransactionResult <int>();

            try
            {
                using (var connection = new MySqlConnection(Config.DatabaseConnectionString))
                {
                    connection.Open();
                    retVal.Data = connection.Query <int>(sql,
                                                         new
                    {
                        appObj.UserName,
                        appObj.Password,
                        appObj.UserEmail,
                        appObj.FirstName,
                        appObj.LastName,
                        appObj.Location,
                        appObj.UntappdId
                    }).Single();
                }

                //TODO: do better than these loops. Add to sql above using dapper.
                appObj.BeerRankings.ForEach(r => r.User_FK = retVal.Data);

                foreach (var ranking in appObj.BeerRankings)
                {
                    rankRepo.Insert(ranking);
                }

                foreach (var account in appObj.SocialAccounts)
                {
                    socialAccRepo.Insert(account, retVal.Data);
                }

                retVal.Success = true;
            }
            catch (Exception e)
            {
                Log.Error($"Could not insert '{JsonConvert.SerializeObject(appObj)}.'", e);

                retVal.Success = false;
                retVal.Details = e.Message;
            }

            return(retVal);
        }
        private void PostAction(HttpListenerContext httpListenerContext, string[] route)
        {
            string          json;
            UserBeerRanking ranking;

            try
            {
                json = ReadJsonContent(httpListenerContext);

                ranking = JsonConvert.DeserializeObject <UserBeerRanking>(json);
            }
            catch (Exception e)
            {
                ErrorResponse
                .Get(HttpStatusCode.BadRequest)
                .Handle(httpListenerContext, $"Malformed or bad data provided in Json Body. Details - {e.Message}");
                return;
            }

            try
            {
                switch (route[0])
                {
                case "add":
                    SendResponse(httpListenerContext, beerRankingRepo.Insert(ranking));
                    break;

                case "update":
                    SendResponse(httpListenerContext, beerRankingRepo.Update(ranking));
                    break;

                default:
                    ErrorResponse
                    .Get(HttpStatusCode.BadRequest)
                    .Handle(httpListenerContext,
                            $"Bad Request - No '/rankings/{string.Join("/", route)}/...' exists");
                    break;
                }
            }
            catch (Exception)
            {
                ErrorResponse.Get(HttpStatusCode.InternalServerError).Handle(httpListenerContext,
                                                                             $"Route - '{string.Join("/", route)}'," +
                                                                             $" Content - '{json}'");
            }
        }