示例#1
0
        public async Task <FeedPost> GetPostById(int postid)
        {
            using (var conn = new MySqlConnection(connString))                                                //Creates a temporary new Connectio
            {
                await conn.OpenAsync();                                                                       //Waits for connection to open

                using (var cmd = new MySqlCommand($"SELECT * FROM feed_post WHERE `PostId`={postid};", conn)) //Select command to get the row of the id
                    using (var reader = await cmd.ExecuteReaderAsync())                                       //Executes the above command
                    {
                        if (await reader.ReadAsync())                                                         //If any row was returned
                        {
                            FeedPost post = new FeedPost                                                      //Create new FeedPost object from our returned values
                            {
                                postId     = Convert.ToInt32(reader["postId"]), posterId = Convert.ToInt32(reader["posterId"]),
                                postType   = reader["postType"].ToString(), subjectId = Convert.ToInt32(reader["subjectId"]),
                                datePosted = Convert.ToDateTime(reader["datePosted"]), isAnnouncement = Convert.ToBoolean(reader["isAnnouncement"]),
                                isDeleted  = Convert.ToBoolean(reader["isDeleted"]), poster = await new UserTasks().GetUserById(Convert.ToInt32(reader["posterId"]), flatten: true),
                                likes      = await GetAllLikesForPost(Convert.ToInt32(reader["postId"]))
                            };
                            string json = Json.Stringify(post);                       //Convert the above object into a json string
                            switch (post.postType)                                    //What to do for each post type
                            {
                            case "text":                                              //IF it is a text post
                                FeedTextPost tPost = Json.Parse <FeedTextPost>(json); //Convert the above json into a FeedTextPost object
                                tPost = await AddTextPostValues(tPost);               //Create a new object from the above one, with our additional text values

                                return(tPost);                                        //return it

                            case "media":
                                FeedMediaPost mPost = Json.Parse <FeedMediaPost>(json); //Convert the abve json intoa FeedMediaPost object
                                mPost = await AddMediaPostValues(mPost);                //Create a new object from the above, with our additional media values

                                return(mPost);                                          //return it

                            case "poll":                                                //If it is a poll
                                FeedPoll pPost = Json.Parse <FeedPoll>(json);           //Convert above json to a FeedPoll object
                                pPost = await AddPollPostValues(pPost);                 //Create a new object from the above, including additional values

                                return(pPost);                                          //return it

                            case "quiz":
                                FeedQuiz fPost = Json.Parse <FeedQuiz>(json); //Convert json into FeedQuiz object
                                fPost = await AddBasicQuizValues(fPost);      //Adds quiz values

                                return(fPost);                                //return it

                            default: return(null);                            //If the switch statement fails, return nothing.
                            }
                        }
                    }
                return(null); //If no row is returned, return nothing.
            }
        }
示例#2
0
        public async Task <FeedTextPost> AddTextPostValues(FeedTextPost post)
        {
            using (var conn = new MySqlConnection(connString)) //New connection
            {
                await conn.OpenAsync();                        //Open connection

                using (var cmd = new MySqlCommand($"SELECT * FROM feed_text_post WHERE `PostId`={post.postId};", conn))
                    // ^ Select all values from the selected row
                    using (var reader = await cmd.ExecuteReaderAsync())    //Read the row
                    {
                        if (await reader.ReadAsync())                      //IF anything is returned
                        {
                            post.postText = reader["postText"].ToString(); //Add the postText value to the object
                            return(post);                                  //return the object
                        }
                    }
                return(null); //else, return null.
            }
        }
示例#3
0
        public async Task <FeedPost> UploadTextPost(FeedTextPost post)
        {
            using (var conn = new MySqlConnection(connString)) //Creates new temp connection
            {
                await conn.OpenAsync();                        //Waits for connection to open

                using (var cmd = new MySqlCommand($"INSERT INTO feed_post VALUES({0}, 'text', {post.posterId}, {post.subjectId}, '{post.datePosted.ToString("yyyy-MM-dd hh:mm:ss")}', " +
                                                  $"{Convert.ToBoolean(post.isAnnouncement)}, {Convert.ToBoolean(post.isDeleted)});", conn))   //Inserts post into feed_post
                {
                    await cmd.ExecuteNonQueryAsync();                                                                                          //Executes that command

                    using (var cmd2 = new MySqlCommand($"INSERT INTO feed_text_post VALUES ({cmd.LastInsertedId}, '{post.postText}');", conn)) //Inserts the above post into feed_text_post
                    {
                        await cmd2.ExecuteNonQueryAsync();                                                                                     //Executes the above command

                        return(await GetPostById((int)cmd.LastInsertedId));                                                                    //Returns the new post object
                    }
                }
            }
        }
示例#4
0
 public async Task <IActionResult> UploadTextPost([FromBody] FeedTextPost post)
 {
     return(Ok(await new FeedTasks().UploadTextPost(post)));
 }