Esempio n. 1
0
        public static PlaceInformation GetPlaceInformation(string input, string location, string typeInput)
        {
            PlaceInformation placeInformation = new PlaceInformation();

            placeInformation.Location = location.Trim();

            placeInformation.Title = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(input.ToLower());

            string content = RestAPICaller.CallApiGetParagraphs(location.Trim() + "-" + input.Trim() + "-" + typeInput.Trim());

            content = TextProcessing.PreprocessParagraphsContent(content);
            placeInformation.Content = content.Trim();

            Place place = GooglePlacesAPI.GetPlaceDetails(input);

            if (place != null)
            {
                placeInformation.Rating = place.Result.Rating;
            }

            string[] sentences = Regex.Split(placeInformation.Content, @"(?<=[\.!\?])\s+");
            placeInformation.Sentiment = Paralleldots.GetSentiment(JArray.FromObject(sentences));

            return(placeInformation);
        }
        public static string GetResponse(string input)
        {
            input = input.ToLower();

            List <string> tags     = input.Split(' ').ToList();
            string        location = input.Split(' ')[0].ToLower();

            tags.Remove(location);
            tags = TextProcessor.PreprocessTags(tags);


            List <JObject>          placesNERtemp = new List <JObject>();
            ConcurrentBag <JObject> placesNER     = new ConcurrentBag <JObject>();

            if (location != null)
            {
                Destination destination = FireBaseDatabase.GetDestinationRelationship(location);

                List <Blog> blogs = FireBaseDatabase.SelectBlogsBy("locationName", location);

                if ((blogs == null || blogs.Count == 0) && destination != null)
                {
                    if (destination.Country.Count > 1)
                    {
                        List <string> countries = FireBaseDatabase.FilterDestinationsByBlogs(destination.Country, tags);
                        if (countries.Count > 0)
                        {
                            return(JsonConvert.SerializeObject(countries));
                        }
                        else
                        {
                            return("error");
                        }
                    }
                    else
                    if (destination.State.Count > 1)
                    {
                        List <string> states = FireBaseDatabase.FilterDestinationsByBlogs(destination.State, tags);
                        if (states.Count > 0)
                        {
                            return(JsonConvert.SerializeObject(states));
                        }
                        else
                        {
                            List <string> cities = FireBaseDatabase.FilterDestinationsByBlogs(destination.City, tags);
                            if (cities.Count > 0)
                            {
                                return(JsonConvert.SerializeObject(cities));
                            }
                            else
                            {
                                return("error");
                            }
                        }
                    }
                    else
                    if (destination.City.Count > 1)
                    {
                        List <string> cities = FireBaseDatabase.FilterDestinationsByBlogs(destination.City, tags);
                        if (cities.Count > 0)
                        {
                            return(JsonConvert.SerializeObject(cities));
                        }
                        else
                        {
                            return("error");
                        }
                    }
                }

                List <Blog> filteredBlogsTags;
                if (blogs != null)
                {
                    filteredBlogsTags = FireBaseDatabase.FilterBlogsBy(tags, blogs);


                    if (filteredBlogsTags != null && filteredBlogsTags.Count != 0)
                    {
                        blogs = filteredBlogsTags;
                    }
                    else
                    {
                        return(null);
                    }


                    string response = "";

                    string text = "";

                    List <string> contentBlogs = new List <string>();

                    var watch = System.Diagnostics.Stopwatch.StartNew();
                    Parallel.For <JObject>(0, blogs.Count, () => new JObject(), (i, loop, data) =>
                    {
                        string places;
                        lock (Lock)
                        {
                            text = Crawler.ReadTextFrom(blogs[(int)i].BlogLink);
                            text = TextProcessor.Preprocess(text);
                        }
                        places = RestAPICaller.GetPlacesNER(text, destination);
                        data   = (JObject)JsonConvert.DeserializeObject(places);

                        return(data);
                    },
                                           (x) => placesNER.Add(x)
                                           );

                    watch.Stop();
                    var elapsedMs = watch.ElapsedMilliseconds;
                    System.IO.File.WriteAllText(@"Time.txt", elapsedMs.ToString());

                    placesNERtemp = placesNER.ToList();
                    placesNERtemp.Add((JObject)JsonConvert.DeserializeObject("{\"destination\":\"" + destination + "\"}"));
                    response = RestAPICaller.GetPlacesNERFinal(JsonConvert.SerializeObject(placesNERtemp));


                    return(response);
                }
                else
                {
                    return("No Blogs with location!");
                }
            }
            else
            {
                return("No location!");
            }
        }
        public static async Task <IList <EmpMission> > GetEmployeeMissionsAsync(long employeeId)
        {
            var response = await RestAPICaller.Get <IList <EmpMission> >(StaticClass.Configuration["ServiceName:ERPWebAPIName"], $"MissionCompletion/GetEmpMissions/{employeeId}").ConfigureAwait(false);

            return(response);
        }
        public static string ExtractParagraphs(string input)
        {
            input = input.ToLower();
            string [] splittedInput = input.Split('-');
            string    location      = splittedInput[0];
            string    place         = splittedInput[1];
            string    typeInput     = splittedInput[2];
            string    response      = "";

            List <Blog> blogs = FireBaseDatabase.SelectBlogsBy("locationName", location);


            if (blogs == null || blogs.Count == 0)
            {
                blogs = FireBaseDatabase.SelectBlogsBy("locationName", place);
            }

            if (blogs != null)
            {
                List <string> filters = new List <string>();
                filters.Add(typeInput);

                List <Blog> filteredBlogsTags = FireBaseDatabase.FilterBlogsBy(filters, blogs);

                string        text;
                List <string> paragrpahs = new List <string>();

                if (filteredBlogsTags != null && filteredBlogsTags.Count != 0)
                {
                    blogs = filteredBlogsTags;
                }
                else
                {
                    return("There is nothing matching your preferences...");
                }
                Parallel.For <string>(0, blogs.Count, () => "", (i, loop, data) =>
                {
                    lock (Lock)
                    {
                        text = Crawler.ReadTextFrom(blogs[(int)i].BlogLink);
                        text = Regex.Replace(text, @"((\n[A-Z a-z]+,)\s([A-Z a-z]+,)*\s*([A-Z a-z]+)\n)", "\n");
                        text = TextProcessor.Preprocess(text);
                    }

                    string json = RestAPICaller.GetParagraphs(text, place);
                    if (!json.All(x => !char.IsLetter(x)))
                    {
                        //response = json.Replace("\"", "");
                        data += json + "\n\n";
                    }


                    return(data);
                },
                                      (x) => paragrpahs.Add(x)

                                      );

                foreach (string paragrpah in paragrpahs)
                {
                    response += paragrpah;
                }
            }

            return(response);
        }
        public static async Task <MissionCompletion> UpdateRequestAsync(int id, MissionCompletion missioncompletion)
        {
            var response = await RestAPICaller.Put <MissionCompletion, MissionCompletion>(StaticClass.Configuration["ServiceName:ERPWebAPIName"], $"MissionCompletion/Update/{id}", missioncompletion).ConfigureAwait(false);

            return(response);
        }
        public static async Task <MissionCompletion> UpdateKtaJobIdAsync(int id, string ktaJobId)
        {
            var response = await RestAPICaller.Put <MissionCompletion>(StaticClass.Configuration["ServiceName:ERPWebAPIName"], $"MissionCompletion/UpdateKtaJobId/{id}/{ktaJobId}").ConfigureAwait(false);

            return(response);
        }
        public static async Task <MissionCompletion> FindOneByJobIdAsync(string ktajobid)
        {
            var response = await RestAPICaller.Get <MissionCompletion>(StaticClass.Configuration["ServiceName:ERPWebAPIName"], $"MissionCompletion/GetByKtaJobId/{ktajobid}").ConfigureAwait(false);

            return(response);
        }
        public static async Task <MissionCompletion> FindOneAsync(long missionId)
        {
            var response = await RestAPICaller.Get <MissionCompletion>(StaticClass.Configuration["ServiceName:ERPWebAPIName"], $"MissionCompletion/GetOne/{missionId}").ConfigureAwait(false);

            return(response);
        }
        public static async Task <MissionCompletion> SaveNewAsync(MissionCompletion missioncompletion)
        {
            var response = await RestAPICaller.Post <MissionCompletion, MissionCompletion>(StaticClass.Configuration["ServiceName:ERPWebAPIName"], $"MissionCompletion/AddNew", missioncompletion).ConfigureAwait(false);

            return(response);
        }
        public static async Task <IList <OvertimeLine> > GetOverTimeLinesAsync(long missionId)
        {
            var response = await RestAPICaller.Get <Overtime>(StaticClass.Configuration["ServiceName:ERPWebAPIName"], $"Overtime/GetOne/{missionId}").ConfigureAwait(false);

            return(response.OvertimeLines.ToList());
        }
        public static async Task <IList <BusinessTripLine> > GetMandateLinesAsync(long missionId)
        {
            var response = await RestAPICaller.Get <BusinessTrip>(StaticClass.Configuration["ServiceName:ERPWebAPIName"], $"BusinessTrip/GetOne/{missionId}").ConfigureAwait(false);

            return(response.Lines.ToList());
        }