public ActionResult GetNew(DateTime firstDate, String token, Coordinates location = null) { CategoryPersonalizer personalize = new CategoryPersonalizer(context); IQueryable<NewsFile> articles; var request = NewsRequest.Construct(Guid.Parse(token), context, location); firstDate.AddSeconds(1); articles = personalize.GetNews(request).OrderByDescending(x => x.PubDate); articles = articles.Where(x => x.PubDate > firstDate); return new FeedResult(listToRss(articles.ToList(), personalize.Messages)); }
public static Func<Coordinates> CreateCoordinatesRandomFunc(String query, int KilometerRandomOffset) { var Coord = GeoCode(query); return () => { Random rnd = new Random(); var coordinates = new Coordinates { Latitude = Coord.Latitude, Longitude = Coord.Longitude }; double dy = rnd.Next(0, 100); double dx = 100 - dy; //111km == 1 deegre float km = ((float)KilometerRandomOffset) / 111f; coordinates.Latitude = coordinates.Latitude + (km * dy) / 100; coordinates.Longitude = coordinates.Longitude + (km * dx) / 100; return coordinates; }; }
// // GET: /Feed/ public ActionResult Index(DateTime? lastDate, String token = null, Coordinates location = null) { CategoryPersonalizer personalize = new CategoryPersonalizer(context); IQueryable<NewsFile> articles; if (token == null) { articles = context.NewsFiles.OrderByDescending(pub => pub.PubDate); } else { var request = NewsRequest.Construct(Guid.Parse(token), context, location); articles = personalize.GetNews(request).OrderByDescending(x => x.PubDate); } if (lastDate != null) { articles = articles.Where(x => x.PubDate < lastDate); } return new FeedResult(listToRss(articles.Take(15).ToList(), personalize.Messages)); }
public String Click(DateTime ClickDate, String token, int? newsId, Coordinates coordinates = null) { if (ClickDate!=null&&token!=null&&newsId!=null) { var categoryId = context.NewsFiles.Where(x => x.NewsId == newsId.Value).Select(x => x.CategoryId).First(); Guid g = Guid.Parse(token); var userId = context.Users.Where(x => x.AccessToken == g).First().UserId; var click = new ClickCounter { UserId = userId, ClickDate = ClickDate, CategoryId = categoryId, NewsId = newsId.Value }; if(coordinates!=null && (coordinates.Latitude==0 && coordinates.Longitude==0)){ coordinates=null; } click.SetLocation(coordinates); click.SetDayOfWeekAndTimeOfDay(); context.Clicks.Add(click); context.SaveChanges(); return "Click saved"; } return "Bad info"; }
public void SetLocation(Coordinates coord) { if (coord == null) { Longitude = null; Latitude = null; } else { Longitude = coord.Longitude; Latitude = coord.Latitude; } }
public static double DistanceInM(Coordinates c1, Coordinates c2) { return HaversineInM(c1.Latitude, c1.Longitude, c2.Latitude, c2.Longitude); }
public RadiusFilter(int RadiusInKm, Coordinates GivenPosition) { this.RadiusInKm = RadiusInKm; this.GivenPosition = GivenPosition; }
public IQueryable<ClickCounter> FilterByClicksInGivenRadius(IQueryable<ClickCounter> clicks, double radiusInKm, Coordinates GivenPosition) { var l = clicks.Where(x => x.Latitude != null && x.Longitude != null).ToList(); var closest = l.Where(x => CoordinateHelper.DistanceInM(x.Coordinates, GivenPosition) < radiusInKm * 1000); return closest.AsQueryable(); }
/// <summary> /// /// </summary> /// <param name="clicks">Click queryable</param> /// <param name="N">Number of nearest clicks</param> /// <param name="GivenPosition">Position to look fod</param> /// <returns></returns> public static IQueryable<ClickCounter> FilterByNNearestClicks(IQueryable<ClickCounter> clicks, int N, Coordinates GivenPosition) { var l = clicks.Where(x => x.Latitude != null && x.Longitude != null).ToList(); var closest = l.OrderBy(x => CoordinateHelper.DistanceInM(x.Coordinates, GivenPosition)).Take(N); return closest.AsQueryable(); }
public static NewsRequest Construct(String username, MobilniPortalNovicContext12 context, Coordinates l = null) { var user = context.Users.Where(x => x.Username == username).First(); return new NewsRequest(user, l); }
public static NewsRequest Construct(Guid token, MobilniPortalNovicContext12 context, Coordinates l = null) { var user = context.Users.Where(x => x.AccessToken == token).First(); return new NewsRequest(user, l); }
public static NewsRequest Construct(int id, MobilniPortalNovicContext12 context, Coordinates l = null) { var user = context.Users.Find(id); return new NewsRequest(user, l); }
private NewsRequest(User u, Coordinates l) { TargetTime = DateTime.Now; Location = l; RadiusInKm = 10; User = u; }