Esempio n. 1
0
        public async Task <IActionResult> UnSubscriberLearningPlanAsync([FromBody] LearningPlanFeedBack learningPlanFeedback)
        {
            GiveStarPayload LearningPlanSubscriber = new GiveStarPayload {
                Subscribe = learningPlanFeedback.Subscribe
            };
            await client.client.Cypher
            .Match("(user:User)", "(lp:LearningPlan)")
            .Where((User user) => user.UserId == learningPlanFeedback.UserId)
            .AndWhere((LearningPlan lp) => lp.LearningPlanId == learningPlanFeedback.LearningPlanId)

            .Merge("(user)-[g:Subscribe_LP]->(lp)")
            .Delete("g")
            .ExecuteWithoutResultsAsync();

            var totalsubscriber = await client.client.Cypher
                                  .Match("(:User)-[g:Subscribe_LP]->(lp:LearningPlan {LearningPlanId:{id}})")
                                  // .Match((GiveStarPayload sub)=>sub.Subscribe==1)
                                  .With("lp,  count(g.Subscribe) as total_subscriber ")
                                  .Set("lp.Subscriber = total_subscriber")
                                  .WithParams(new
            {
                id = learningPlanFeedback.LearningPlanId,
                // rating=
            })
                                  .Return <int>("lp.Subscriber")
                                  // .Return (g => Avg(g.As<GiveStarPayload>().Rating))
                                  .ResultsAsync;

            return(Ok(new List <int>(totalsubscriber)[0]));
        }
Esempio n. 2
0
        public async Task RatingLearningPlanAndRelationshipsAsync(LearningPlanRatingWrapper learningPlanRatingWrapper)
        {
            GiveStarPayload giveStar = new GiveStarPayload {
                Rating = learningPlanRatingWrapper.Star
            };
            await graph.Cypher
            .Match("(user:User)", "(lp:LearningPlan)")
            .Where((User user) => user.UserId == learningPlanRatingWrapper.UserId)
            .AndWhere((LearningPlanWrapper lp) => lp.LearningPlanId == learningPlanRatingWrapper.LearningPlanId)
            .Merge("(user)-[g:RATING_LP]->(lp)")
            .OnCreate()
            .Set("g={giveStar}")
            .OnMatch()
            .Set("g={giveStar}")
            .WithParams(new
            {
                userRating = learningPlanRatingWrapper.Star,
                giveStar
            })
            .ExecuteWithoutResultsAsync();

            var LPqueryAvg = new List <float>(await graph.Cypher
                                              .Match("(:User)-[g:RATING_LP]->(lp:LearningPlan {LearningPlanId:{id}})")
                                              .With("lp,  avg(g.Rating) as avg_rating ")
                                              .Set("lp.AvgRating = avg_rating")
                                              .WithParams(new
            {
                id = learningPlanRatingWrapper.LearningPlanId,
                // rating=
            })
                                              .Return <float>("lp.AvgRating")
                                              .ResultsAsync);

            //  var avg_rating = LPqueryAvg[0];
            Console.WriteLine("dasdsa");
            // .Return (g => Avg(g.As<GiveStarPayload>().Rating))
            //  return  Ok(new List<float>(LPqueryAvg)[0]);

            // return Ok(new List<float>(LPqueryAvg));
            // throw new NotImplementedException();
        }
Esempio n. 3
0
        public async Task <IActionResult> ReportQuestionAsync([FromBody] QuestionFeedBack questionFeedBack)
        {
            GiveStarPayload QuestionReport = new GiveStarPayload {
                ambigous = questionFeedBack.Ambiguity
            };
            await client.client.Cypher
            .Match("(user:User)", "(qe:Question)")
            .Where((User user) => user.UserId == questionFeedBack.UserId)
            .AndWhere((Question qe) => qe.QuestionId == questionFeedBack.QuestionId)

            .Merge("(user)-[g:Report_Question]->(qe)")
            .OnCreate()
            .Set("g={QuestionReport}")
            .OnMatch()
            .Set("g={QuestionReport}")
            .WithParams(new
            {
                userreport = questionFeedBack.Ambiguity,
                QuestionReport
            })
            .ExecuteWithoutResultsAsync();

            var totalReport = await client.client.Cypher
                              .Match("(:User)-[g:Report_Question]->(qe:Question {QuestionId:{id}})")
                              // .Match((GiveStarPayload sub)=>sub.Subscribe==1)
                              .With("qe,  count(g.ambigous) as total_ambiguity ")
                              .Set("qe.Total_Ambiguity = total_ambiguity")
                              .WithParams(new
            {
                id = questionFeedBack.QuestionId,
                // rating=
            })
                              .Return <int>("qe.Total_Ambiguity")
                              // .Return (g => Avg(g.As<GiveStarPayload>().Rating))
                              .ResultsAsync;

            return(Ok(new List <int>(totalReport)[0]));
        }
Esempio n. 4
0
        public async Task RatingResourceAndRelationshipsAsync(ResourceRatingWrapper resourceRatingWrapper)
        {
            GiveStarPayload giveStar = new GiveStarPayload {
                Rating = resourceRatingWrapper.Star
            };
            await graph.Cypher
            .Match("(user:User)", "(Re:Resource)")
            .Where((User user) => user.UserId == resourceRatingWrapper.UserId)
            .AndWhere((ResourceWrapper Re) => Re.ResourceId == resourceRatingWrapper.ResourceId)
            .Merge("(user)-[g:RATING_Resource]->(Re)")
            .OnCreate()
            .Set("g={giveStar}")
            .OnMatch()
            .Set("g={giveStar}")
            .WithParams(new
            {
                userRating = resourceRatingWrapper.Star,
                giveStar
            })
            .ExecuteWithoutResultsAsync();

            var Re_queryAvg = new List <float>(await graph.Cypher
                                               .Match("(:User)-[g:RATING_Resource]->(Re:Resource {ResourceId:{id}})")
                                               .With("Re,  avg(g.Rating) as avg_rating ")
                                               .Set("Re.AvgRating = avg_rating")
                                               .WithParams(new
            {
                id = resourceRatingWrapper.ResourceId,
                // rating=
            })
                                               .Return <float> ("(Re.AvgRating)")
                                               .ResultsAsync);

            Console.WriteLine("rated resource");
            // return Ok(new List<float>(Re_queryAvg)[0]);
        }
Esempio n. 5
0
        public async Task <IActionResult> RatingResourceAsync([FromBody] ResourceFeedBack resourceFeedBack)
        {
            GiveStarPayload giveStar = new GiveStarPayload {
                Rating = resourceFeedBack.Star
            };
            await client.client.Cypher
            .Match("(user:User)", "(Re:Resource)")
            .Where((User user) => user.UserId == resourceFeedBack.UserId)
            .AndWhere((Resource Re) => Re.ResourceId == resourceFeedBack.ResourceId)
            .Merge("(user)-[g:RATING_Resource]->(Re)")
            .OnCreate()
            .Set("g={giveStar}")
            .OnMatch()
            .Set("g={giveStar}")
            .WithParams(new
            {
                userRating = resourceFeedBack.Star,
                giveStar
            })
            .ExecuteWithoutResultsAsync();

            var Re_queryAvg = await client.client.Cypher
                              .Match("(:User)-[g:RATING_Resource]->(Re:Resource {ResourceId:{id}})")
                              .With("Re,  avg(g.Rating) as avg_rating ")
                              .Set("Re.AvgRating = avg_rating")
                              .WithParams(new
            {
                id = resourceFeedBack.ResourceId,
                // rating=
            })
                              .Return <float>("Re.AvgRating)")
                              // .Return (g => Avg(g.As<GiveStarPayload>().Rating))
                              .ResultsAsync;

            return(Ok(new List <float>(Re_queryAvg)[0]));
        }
Esempio n. 6
0
        public async Task <IActionResult> RatingLearningPlanAsync([FromBody] LearningPlanFeedBack learningPlanFeedback)
        {
            GiveStarPayload giveStar = new GiveStarPayload {
                Rating = learningPlanFeedback.Star
            };
            await client.client.Cypher
            .Match("(user:User)", "(lp:LearningPlan)")
            .Where((User user) => user.UserId == learningPlanFeedback.UserId)
            .AndWhere((LearningPlan lp) => lp.LearningPlanId == learningPlanFeedback.LearningPlanId)
            .Merge("(user)-[g:RATING_LP]->(lp)")
            .OnCreate()
            .Set("g={giveStar}")
            .OnMatch()
            .Set("g={giveStar}")
            .WithParams(new
            {
                userRating = learningPlanFeedback.Star,
                giveStar
            })
            .ExecuteWithoutResultsAsync();

            var LPqueryAvg = await client.client.Cypher
                             .Match("(:User)-[g:RATING_LP]->(lp:LearningPlan {LearningPlanId:{id}})")
                             .With("lp,  avg(g.Rating) as avg_rating ")
                             .Set("lp.AvgRating = avg_rating")
                             .WithParams(new
            {
                id = learningPlanFeedback.LearningPlanId,
                // rating=
            })
                             .Return <float>("lp.AvgRating")
                             .ResultsAsync;

            // .Return (g => Avg(g.As<GiveStarPayload>().Rating))
            return(Ok(new List <float>(LPqueryAvg)[0]));
        }