public IEnumerable <Task> GetTasks([FromBody] DataPost data) { var path = GetPath(data.Topic, data.TaskType, data.Level); var streamReader = new StreamReader(path); var json = streamReader.ReadToEnd(); var tasks = JsonConvert.DeserializeObject <List <Models.Task> >(json); streamReader.Close(); return(tasks); }
public IEnumerable <Task> GetTasks_QR([FromBody] DataPost data) { var topic = GetTopic(data.Topic); var path = GetPath(topic, data.Subtopic); var streamReader = new StreamReader(path); var json = streamReader.ReadToEnd(); var tasks = JsonConvert.DeserializeObject <List <Task> >(json); streamReader.Close(); return(tasks); }
public override string ToString() { StringBuilder sb = new StringBuilder(); sb.AppendLine(Titulo); sb.AppendLine(Likes + " Likes - " + DataPost.ToString("d/MM/yyyy HH:mm:ss")); sb.AppendLine(Conteudo); sb.AppendLine("Comentários: "); foreach (Comentario c in Comentarios) { sb.AppendLine(c.Texto); } return(sb.ToString()); }
/// <summary> /// Subir un solo Registro generado por el Dispositivo KMS. El uso de éste recurso está /// desaconsejado para Apps de producción (rápidamente podrías consumir la cuota de peticiones /// que tiene tu API-Key). Está aquí principalmente para debugging en ambas partes (server y Apps). /// </summary> /// <param name="dataPost"> /// Registro del Dispositivo KMS. /// </param> public HttpResponseMessage PostData([FromBody] DataPost dataPost) { // --- Validar que Usuario actual tenga capturado Perfil Físico --- if (CurrentUser.UserBody == null) { throw new HttpConflictException( "204 " + ControllerStrings.Warning204_PhysicalInfoNotSet ); } // --- Determinar la última fecha registrada --- Data lastData = Database.DataStore.GetFirst( filter: f => f.User.Guid == CurrentUser.Guid, orderBy: o => o.OrderByDescending(b => b.Timestamp) ); DateTime lastDataTimestamp = lastData == null ? DateTime.MinValue : lastData.Timestamp; // --- Determinar los registros si se almacenarán en BD --- // Especificar que fecha es UTC dataPost.Timestamp = DateTime.SpecifyKind( dataPost.Timestamp, DateTimeKind.Utc ); if (dataPost.Timestamp < lastDataTimestamp) { throw new HttpConflictException( ControllerStrings.Warning302_DataTimestampTooOld ); } this.PrepareDataInsert(dataPost); Database.SaveChanges(); // --- Ejecutar magia -- this.MagicTriggers(); return(new HttpResponseMessage() { RequestMessage = Request, StatusCode = HttpStatusCode.OK }); }
public void GetWall(string userid, string guestId) { var user = _users.Find(findUser => findUser.Id == userid).FirstOrDefault(); var guest = _users.Find(findGuest => findGuest.Id == guestId).FirstOrDefault(); if (user == null || guest == null) { Console.WriteLine("User or guest doesn't exist"); return; } if (user.BlockId != null) { if (user.BlockId.Contains(guestId)) { Console.WriteLine("Guest is blocked by user!"); return; } } var wall = _posts.Find(postsOnWall => postsOnWall.AuthorId == user.Id) .SortBy(post => post.DateTime).Limit(5).ToList(); if (wall.Count == 0 || wall == null) { Console.WriteLine("There's no posts on the wall!"); return; } foreach (var wp in wall) { if (!wp.IsPublic && !wp.BlockedAllowedUserId.Contains(guestId)) { continue; } if (wp is DataPost) { DataPost dp = (DataPost)wp; Console.WriteLine($"Wall: {dp.UrlToData}"); } else if (wp is TextPost) { TextPost tp = (TextPost)wp; Console.WriteLine($"Wall: {tp.Text}"); } var comments = _comments.Find(comment => comment.PostId == wp.PostId) .SortByDescending(comment => comment.PostId).Limit(5).ToList(); if (comments == null) { Console.WriteLine("There's no comment to the post on the wall"); return; } foreach (var c in comments) { Console.WriteLine($"Comment: {c.CommentString} at {c.DateTime}"); } } }
//Get feed from er specific user public void GetFeed(string userid) { var user = _users.Find(findUser => findUser.Id == userid).FirstOrDefault(); //Find user from whom, you want to see feed if (user == null) { Console.WriteLine("User doesn't exist"); return; } var userFeed = _posts.Find(post => //Checking if post is private or public, if the use is blocked //or not - and if the user follows the author of post (post.IsPublic == false && post.BlockedAllowedUserId.Contains(userid) && user.FollowId.Contains(post.AuthorId)) || //If the post is public - we're checking if the user //is in the "blockedAllowedUserId list (if the user is, post wont show in feed) (post.IsPublic && !post.BlockedAllowedUserId.Contains(userid) && user.FollowId.Contains(post.AuthorId) )) .SortByDescending(post => post.PostId).Limit(5).ToList(); if (userFeed.Count == 0) { Console.WriteLine("User has no feed to see"); return; } foreach (var f in userFeed) { if (f is DataPost) { DataPost dp = (DataPost)f; Console.WriteLine($"Feed: {dp.UrlToData}"); } else if (f is TextPost) { TextPost tp = (TextPost)f; Console.WriteLine($"Feed: {tp.Text}"); } //Console.WriteLine($"Feed: {f}"); var comments = _comments.Find(comment => comment.PostId == f.PostId) .SortByDescending(comment => comment.PostId).Limit(5).ToList(); if (comments == null) { Console.WriteLine("There's no comment to the post on the feed"); return; } foreach (var c in comments) { Console.WriteLine($"Comment: {c.CommentString} at {c.DateTime}"); } } //////////////////////////////////////////////////////////////////////////////////////// }
private void CreateDataPost(User user) { DataPost post = new DataPost(); post.AuthorId = user.Id; post.AuthorName = user.Name; Console.WriteLine($"\nHello {post.AuthorName}! You are making a datapost."); Console.WriteLine("Do you want your post to be public or not?"); ConsoleKeyInfo key; do { Console.WriteLine("PRESS 'Y' for YES or 'N' for NO"); key = Console.ReadKey(true); if (key.Key == ConsoleKey.Y) { post.IsPublic = true; Console.WriteLine("Post status: Public\n"); } else if (key.Key == ConsoleKey.N) { post.IsPublic = false; Console.WriteLine("Post status: Private\n"); } } while (key.Key != ConsoleKey.Y && key.Key != ConsoleKey.N); //Write data to post// Console.WriteLine("Write data, exit with 'Enter': "); post.UrlToData = Console.ReadLine(); Console.WriteLine(); // ===================== // _posts.InsertOne(post); if (post.IsPublic == true) { foreach (var id in user.BlockId) { var updateBlockedAllowedUserId = Builders <Post> .Update.AddToSet(post => post.BlockedAllowedUserId, id); _posts.FindOneAndUpdate(post => post.AuthorId == user.Id, updateBlockedAllowedUserId); } Console.WriteLine("Public post added"); } else { Console.WriteLine("Which circle(s) do you want to post to?\nHere is your list of circles: "); foreach (var id in user.CircleId) { var c = _circles.Find <Circle>(c => c.CircleId == id).FirstOrDefault(); if (c == null) { Console.WriteLine("You don't have any circles"); } Console.WriteLine($"Circle id: {c.CircleId}, Cicle name: {c.Name}"); } Console.WriteLine("\nWrite the id of the circles, you want to include, one at a time."); do { Console.Write("Write id: "); string circleIdToInclude = Console.ReadLine(); if (user.CircleName.Contains(circleIdToInclude)) { var updateBlockedAllowedUserId = Builders <Post> .Update.AddToSet(post => post.BlockedAllowedUserId, circleIdToInclude); _posts.FindOneAndUpdate(post => post.AuthorId == user.Id, updateBlockedAllowedUserId); } else { Console.WriteLine("Id does not exist"); } do { Console.WriteLine("Pess 'A' to add another circle"); Console.WriteLine("Pess 'C' to Continue"); key = Console.ReadKey(true); } while (key.Key != ConsoleKey.A && key.Key != ConsoleKey.C); } while (key.Key == ConsoleKey.A); Console.WriteLine("Private post added to circles"); } try { var updateUserPostId = Builders <User> .Update.AddToSet(user => user.UserPostsId, post.PostId); _users.FindOneAndUpdate(user => user.Id == post.AuthorId, updateUserPostId); } catch (Exception) { Console.WriteLine("User doesn't exist"); return; } }
/// <summary> /// Prepara la inserción de Datos, sin consultar detalles del /// Perfil Físico del Usuario aún. /// </summary> /// <param name="dataPost"></param> /// <param name="userBody"></param> private void PrepareDataInsert(DataPost dataPost) { // --- Validar que Activity esté soportado --- var activity = dataPost.Activity.ToUpper(CultureInfo.InvariantCulture); var activityEnum = Enum.GetNames(typeof(DataActivity)); short activityId = 0; for (short i = 0; i < activityEnum.Length; i++) { if (activityEnum[i].ToUpper(CultureInfo.InvariantCulture) == activity) { activityId = (short)(i + 1); break; } } if (activityId == 0) { throw new HttpBadRequestException( "301 " + ControllerStrings.Warning301_ActivityInvalid ); } var dataActivity = (DataActivity)activityId; // --- Determinar el largo de zancada --- int strideLength; switch (dataActivity) { case DataActivity.Running: strideLength = CurrentUser.UserBody.StrideLengthRunning; break; case DataActivity.Walking: strideLength = CurrentUser.UserBody.StrideLengthWalking; break; default: strideLength = 0; break; } // --- Añadir el nuevo registro --- Data newData = new Data() { User = CurrentUser, Timestamp = dataPost.Timestamp, Activity = dataActivity, Steps = dataPost.Steps, StrideLength = strideLength, EqualsKcal = (Int32)CurrentUser.UserBody.CalculateCaloriesBurned( dataPost.Steps, dataActivity ), EqualsCo2 = (Int32)( // Distancia en la lectura (strideLength * dataPost.Steps).CentimetersToKilometers() // [x] Litros de Gasolina por Kilómetro * 1.25d // [x] Gramos de CO2 por Litro de Gasolina * 2303 ), EqualsCash = (Int32)( ( // Distancia en la lectura (strideLength * dataPost.Steps).CentimetersToKilometers() // [/] Kilómetros por Litro de Gasoilna / 10d // [x] Precio por Litro de Gasolina en Centavos de Dólar ) * 100.0d ) }; Database.DataStore.Add(newData); }
public static void InsertCommentDummyData(IMongoDatabase database, TextPost tp, DataPost dp) { var comments = database.GetCollection <Comment>("Comments"); var comment1 = new Comment(tp.PostId, tp.AuthorId, tp.AuthorName, commentstring: "Hvor er du?", new DateTime(year: 2019, month: 11, day: 29, hour: 19, minute: 3, second: 43)); var comment2 = new Comment(dp.PostId, dp.AuthorId, dp.AuthorName, commentstring: "HVOR ER DU?", new DateTime(year: 2019, month: 11, day: 29, hour: 19, minute: 3, second: 43)); var comment3 = new Comment(tp.PostId, tp.AuthorId, tp.AuthorName, commentstring: "WebAPI load", new DateTime(year: 2019, month: 11, day: 29, hour: 11, minute: 23, second: 23)); var comment4 = new Comment(dp.PostId, dp.AuthorId, dp.AuthorName, commentstring: "MongoDb virker ikke", new DateTime(year: 2019, month: 11, day: 29, hour: 11, minute: 23, second: 28)); var comment5 = new Comment(tp.PostId, tp.AuthorId, tp.AuthorName, commentstring: "Nu virker det!", new DateTime(year: 2019, month: 11, day: 29, hour: 11, minute: 53, second: 16)); var comment6 = new Comment(dp.PostId, dp.AuthorId, dp.AuthorName, commentstring: "Giver det mening??", new DateTime(year: 2019, month: 11, day: 29, hour: 7, minute: 23, second: 23)); var comment7 = new Comment(tp.PostId, tp.AuthorId, tp.AuthorName, commentstring: "Nu er jeg vaagen", new DateTime(year: 2019, month: 11, day: 29, hour: 10, minute: 23, second: 23)); var comment8 = new Comment(dp.PostId, dp.AuthorId, dp.AuthorName, commentstring: "Du kan bare komme forbi kontoret", new DateTime(year: 2019, month: 11, day: 30, hour: 8, minute: 23, second: 23)); var comment9 = new Comment(tp.PostId, tp.AuthorId, tp.AuthorName, commentstring: "Jeg tager papir med", new DateTime(year: 2019, month: 11, day: 18, hour: 4, minute: 40, second: 33)); var comment10 = new Comment(dp.PostId, dp.AuthorId, dp.AuthorName, commentstring: "Kravsspec og review", new DateTime(year: 2019, month: 11, day: 29, hour: 10, minute: 20, second: 0)); comments.InsertOne(comment1); comments.InsertOne(comment2); comments.InsertOne(comment3); comments.InsertOne(comment4); comments.InsertOne(comment5); comments.InsertOne(comment6); comments.InsertOne(comment7); comments.InsertOne(comment8); comments.InsertOne(comment9); comments.InsertOne(comment10); }
public void InsertDummyData(IMongoDatabase database, string connection) { var users = database.GetCollection <User>("Users"); var posts = database.GetCollection <Post>("Posts"); var comments = database.GetCollection <Comment>("Comments"); var circles = database.GetCollection <Circle>("Circles"); var userService = new UserServices(connection); var rand = new Random(DateTime.Now.Millisecond); var usersList = new List <User>(); #region Users for (int i = 0; i < 20; i++) { var r = rand.Next(2); var gender = r == 1 ? "M" : "F"; var user = new User("Name_" + i.ToString(), i + 10, gender); usersList.Add(user); } users.InsertMany(usersList); usersList = users.Find(u => true).ToList(); foreach (var u in usersList) { foreach (var un in usersList.Where(un => un != u)) { var uUpdate = users.Find <User>(us => us.Id == u.Id).FirstOrDefault(); if (rand.Next(3) == 2) { userService.BlockUser(u.Id, un.Id); } else { userService.Follow(u.Id, un.Id); } } } #endregion #region Circle foreach (var u in usersList) { var c1 = new Circle(u.Name + "_C1", u.Id); var c2 = new Circle(u.Name + "_C2", u.Id); var c3 = new Circle(u.Name + "_C3", u.Id); foreach (var un in usersList.Where(un => un != u)) { var random = rand.Next(3); if (random == 0) { c1.UserIds.Add(un.Id); } else if (random == 1) { c2.UserIds.Add(un.Id); } else if (random == 2) { c3.UserIds.Add(un.Id); } } circles.InsertOne(c1); circles.InsertOne(c2); circles.InsertOne(c3); var c1d = circles.Find <Circle>(c => c.Name == u.Name + "_C1").FirstOrDefault(); var c2d = circles.Find <Circle>(c => c.Name == u.Name + "_C2").FirstOrDefault(); var c3d = circles.Find <Circle>(c => c.Name == u.Name + "_C3").FirstOrDefault(); var updateCircle1Id = Builders <User> .Update.AddToSet(u => u.CircleId, c1d.CircleId); var updateCircle2Id = Builders <User> .Update.AddToSet(u => u.CircleId, c2d.CircleId); var updateCircle3Id = Builders <User> .Update.AddToSet(u => u.CircleId, c3d.CircleId); users.FindOneAndUpdate(us => us.Id == u.Id, updateCircle1Id); users.FindOneAndUpdate(us => us.Id == u.Id, updateCircle2Id); users.FindOneAndUpdate(us => us.Id == u.Id, updateCircle3Id); } usersList = users.Find(u => true).ToList(); #endregion #region Post int timeToAdd = 0; //Dummy Posts foreach (var user in usersList) { TextPost textPost = new TextPost(); DataPost dataPost = new DataPost(); textPost.AuthorId = user.Id; dataPost.AuthorId = user.Id; textPost.AuthorName = user.Name; dataPost.AuthorName = user.Name; bool randPublicPost = rand.Next(2) == 1 ? true : false; textPost.IsPublic = randPublicPost; dataPost.IsPublic = randPublicPost; string publicPost = randPublicPost == true ? "public" : "private"; textPost.Text = $"My name is {textPost.AuthorName} and my ID is {textPost.AuthorId}. This is a {publicPost} TEXTPOST."; dataPost.UrlToData = $"Audio: 'My name is {dataPost.AuthorName} and my ID is {dataPost.AuthorId}. This is a {publicPost} DATAPOST.'"; //Overwrite DateTime textPost.DateTime.AddHours(timeToAdd); dataPost.DateTime.AddHours(timeToAdd); timeToAdd++; posts.InsertOne(textPost); posts.InsertOne(dataPost); if (randPublicPost == true) { foreach (var id in user.BlockId) { var updateBlockedAllowedUserId = Builders <Post> .Update.AddToSet(post => post.BlockedAllowedUserId, id); posts.FindOneAndUpdate(post => post.AuthorId == user.Id, updateBlockedAllowedUserId); } } else { for (int i = 0; i < user.CircleId.Count; i++) { var c = circles.Find <Circle>(c => c.CircleId == user.CircleId[i]).FirstOrDefault(); var updateBlockedAllowedUserId = Builders <Post> .Update.AddToSet(post => post.BlockedAllowedUserId, c.CircleId); posts.FindOneAndUpdate(post => post.AuthorId == user.Id, updateBlockedAllowedUserId); } } try { var updateUserPostId = Builders <User> .Update.AddToSet(user => user.UserPostsId, textPost.PostId); users.FindOneAndUpdate(user => user.Id == textPost.AuthorId, updateUserPostId); } catch (Exception) { Console.WriteLine("User doesn't exist"); return; } try { var updateUserPostId = Builders <User> .Update.AddToSet(user => user.UserPostsId, dataPost.PostId); users.FindOneAndUpdate(user => user.Id == dataPost.AuthorId, updateUserPostId); } catch (Exception) { Console.WriteLine("User doesn't exist"); return; } //Insert comments to post InsertCommentDummyData(database, textPost, dataPost); } #endregion }