public override double CalculateError(IRecommendation recommendation, IEnumerable <IRating> ratings, IEnumerable <IRater> raters, IEnumerable <ISubject> subjects) { var grouppedByRater = ratings.GroupBy(p => p.Rater.Id); var count = 0D; var sum = 0D; var evaluator = new MeanAbsoluteErrorEvaluator(); foreach (var rater in grouppedByRater) { var error = evaluator.CalculateError(recommendation, rater.AsEnumerable(), new List <IRater>() { raters.First(p => p.Id == rater.Key) }, subjects); if (error != -1) { sum += error; ++count; } } if (count == 0) { return(-1); } var avarage = sum / count; return(avarage); }
public override double CalculateError(IRecommendation recommendation, IEnumerable <IRating> ratings, IEnumerable <IRater> raters, IEnumerable <ISubject> subjects) { var sum = 0D; var count = 0; foreach (var rating in ratings) { var value = recommendation.RecommendSubject(rating.Rater, rating.Subject); if (value == null) { continue; } var diff = value.Value - rating.Value; sum += Math.Abs(diff); ++count; } ; if (count == 0) { return(-1); } var error = sum / count; return(error); }
public void NotifyRecommendationEnds(IRecommendation recommendation) { Check.Argument.IsNotNull(recommendation.Email, "email"); string body = PrepareMailBodyWith("RecommendationEndNotification", "endTime", recommendation.EndTime.ToShortDateString(), "recommendationLink", recommendation.RecommendationLink); SendMailAsync(_settings.WebmasterEmail, recommendation.Email, "Powiadomienie o kończącej się reklamie", body); }
public RecommendationViewModel(IRecommendation recommendation) { this.ID = recommendation.ID; this.UserID = recommendation.UserID; this.AppName = recommendation.AppName; this.Description = recommendation.Description; this.OperatingSystem = recommendation.OperatingSystem; }
public void Remove(IRecommendation entity) { Check.Argument.IsNotNull(entity, "entity"); Recommendation recommendation = (Recommendation)entity; base.Remove(recommendation); }
public HomeController(IRecentTracks recentTracks, ISavedAlbums savedAlbums, IRecommendation recommendation, IPlaylistSaver playlistSaver, IConfiguration configuration) { _recentTracks = recentTracks; _savedAlbums = savedAlbums; _recommendation = recommendation; _playlistSaver = playlistSaver; _configuration = configuration; }
public ActionResult GetAd(string id) { id = id.NullSafe(); JsonViewData viewData = Validate <JsonViewData>( new Validation(() => string.IsNullOrEmpty(id), "Identyfikator reklamy nie może być pusty."), new Validation(() => id.ToGuid().IsEmpty(), "Niepoprawny reklamy artykułu."), new Validation(() => !IsCurrentUserAuthenticated, "Nie jesteś zalogowany."), new Validation(() => !CurrentUser.CanModerate(), "Nie masz praw do woływania tej metody.") ); if (viewData == null) { try { IRecommendation recommendation = _recommendationRepository.FindById(id.ToGuid()); if (recommendation == null) { viewData = new JsonViewData { errorMessage = "Podana rekalama nie istnieje." }; } else { return(Json( new { id = recommendation.Id.Shrink(), recommendationLink = recommendation.RecommendationLink, recommendationTitle = recommendation.RecommendationTitle, imageLink = recommendation.ImageLink, imageTitle = recommendation.ImageTitle, startTime = recommendation.StartTime.ToString("yyyy-MM-dd"), endTime = recommendation.EndTime.ToString("yyyy-MM-dd"), position = recommendation.Position, email = recommendation.Email, notificationIsSent = recommendation.NotificationIsSent, isBanner = recommendation.IsBanner } )); } } catch (Exception e) { Log.Exception(e); viewData = new JsonViewData { errorMessage = FormatStrings.UnknownError.FormatWith("pobierania reklamy") }; } } return(Json(viewData)); }
public Task InsertRecommendationAsync(IRecommendation recommendation) { _logger.Debug("Create Recommendation - RecommendationId:{RecommendationId}", recommendation?.RecommendationId); if (recommendation == null || !(recommendation is Recommendation rec)) { throw new ArgumentException(nameof(recommendation)); } return(Recommendations.InsertOneAsync(rec)); }
public ActionResult DeleteAd(string id) { id = id.NullSafe(); JsonViewData viewData = Validate <JsonViewData>( new Validation(() => !CurrentUser.CanModerate(), "Nie masz praw do wołania tej metody."), new Validation(() => string.IsNullOrEmpty(id), "Identyfikator reklamy nie może być pusty."), new Validation(() => id.ToGuid().IsEmpty(), "Niepoprawny identyfikator reklamy."), new Validation(() => !IsCurrentUserAuthenticated, "Nie jesteś zalogowany.") ); if (viewData == null) { try { using (IUnitOfWork unitOfWork = UnitOfWork.Begin()) { IRecommendation recommendation = _recommendationRepository.FindById(id.ToGuid()); if (recommendation == null) { viewData = new JsonViewData { errorMessage = "Reklama nie istnieje." }; } else { _recommendationRepository.Remove(recommendation); unitOfWork.Commit(); viewData = new JsonViewData { isSuccessful = true }; } } } catch (Exception e) { Log.Exception(e); viewData = new JsonViewData { errorMessage = FormatStrings.UnknownError.FormatWith("usuwania reklamy") }; } } return(Json(viewData)); }
private static RecommendationViewData CreateRecommendationViewData(IRecommendation x) { return(new RecommendationViewData() { UrlLink = x.RecommendationLink, UrlTitle = x.RecommendationTitle, ImageName = x.ImageLink, ImageAlt = x.ImageTitle, Position = x.Position, EndTime = x.EndTime, Email = x.Email, NotificationIsSent = x.NotificationIsSent, IsBanner = x.IsBanner, Id = x.Id.Shrink() }); }
public override double CalculateError(IRecommendation recommendation, IEnumerable <IRating> ratings, IEnumerable <IRater> raters, IEnumerable <ISubject> subjects) { double error = 0.0; foreach (var rater in raters) { var topList = recommendation.RecommendSubjects(rater, subjects, 0, 10); foreach (var result in topList) { if (!ratings.Any(r => r.Subject == result.Subject && r.Rater == result.Rater)) { error += 1.0; } } } return(error); }
public void EditAd(IRecommendation recommendation, string recommendationLink, string recommendationTitle, string imageLink, string imageTitle, DateTime startTime, DateTime endTime, string email, int position, bool notificationIsSent, bool isBanner) { Check.Argument.IsNotNull(recommendation, "Recommendation"); if (!string.IsNullOrEmpty(recommendationLink)) { recommendation.RecommendationLink = recommendationLink; } if (!string.IsNullOrEmpty(recommendationTitle)) { recommendation.RecommendationTitle = recommendationTitle; } if (!string.IsNullOrEmpty(imageLink)) { recommendation.ImageLink = imageLink; } if (!string.IsNullOrEmpty(imageTitle)) { recommendation.ImageTitle = imageTitle; } if (position != recommendation.Position) { recommendation.Position = position; } recommendation.StartTime = startTime; recommendation.EndTime = endTime; recommendation.Email = email; recommendation.NotificationIsSent = notificationIsSent; recommendation.IsBanner = isBanner; }
public ActionResult EditAd(AdvertiseViewData model) { JsonViewData viewData = Validate <JsonViewData>( new Validation(() => CurrentUser.CanModerate() == false, "Nie masz praw do wykonowania tej operacji."), new Validation(() => string.IsNullOrEmpty(model.RecommendationLink.NullSafe()), "Link rekomendacji nie może być pusty."), new Validation(() => string.IsNullOrEmpty(model.RecommendationTitle.NullSafe()), "Tytuł rekomendacji nie może być pusty."), new Validation(() => string.IsNullOrEmpty(model.ImageLink.NullSafe()), "Link obrazka nie może być pusty."), new Validation(() => string.IsNullOrEmpty(model.ImageTitle.NullSafe()), "Tytuł obrazka nie może być pusty."), new Validation(() => model.StartTime >= model.EndTime, "Data zakończenia reklamy musi być większa od daty początkowej"), new Validation(() => string.IsNullOrEmpty(model.Email), "Adres e-mail nie może być pusty."), new Validation(() => !model.Email.NullSafe().IsEmail(), "Niepoprawny adres e-mail.") ); var bannerType = string.IsNullOrWhiteSpace(model.IsBanner) == false; if (viewData == null) { try { if (bannerType) { var request = WebRequest.Create(Server.MapPath(string.Format("/Assets/Images/{0}", model.ImageLink))); var response = request.GetResponse(); var image = Image.FromStream(response.GetResponseStream()); if (image.Width != 960) { viewData = new JsonViewData { errorMessage = string.Format("Oczekiwana szerokość banera to 960px, twoja to: {0}", image.Width) }; return(Json(viewData)); } } using (IUnitOfWork unitOfWork = UnitOfWork.Begin()) { if (model.Id == null || model.Id.IsEmpty()) { IRecommendation recommendation = _factory.CreateRecommendation( model.RecommendationLink.Trim(), model.RecommendationTitle.Trim(), model.ImageLink.Trim(), model.ImageTitle.Trim(), model.StartTime, model.EndTime, model.Email, model.Position, model.NotificationIsSent, bannerType); _recommendationRepository.Add(recommendation); unitOfWork.Commit(); Log.Info("Recommendation registered: {0}", recommendation.RecommendationTitle); viewData = new JsonViewData { isSuccessful = true }; } else { IRecommendation recommendation = _recommendationRepository.FindById(model.Id.ToGuid()); if (recommendation == null) { viewData = new JsonViewData { errorMessage = "Podana reklama nie istnieje." }; } else { _recommendationRepository.EditAd( recommendation, model.RecommendationLink.NullSafe(), model.RecommendationTitle.NullSafe(), model.ImageLink.NullSafe(), model.ImageTitle.NullSafe(), model.StartTime, model.EndTime, model.Email, model.Position, model.NotificationIsSent, bannerType); unitOfWork.Commit(); viewData = new JsonViewData { isSuccessful = true }; } } } } catch (ArgumentException argument) { viewData = new JsonViewData { errorMessage = argument.Message }; } catch (WebException e) { viewData = new JsonViewData { errorMessage = "Podany link do zdjęcia jest nieprawidłowy" }; } catch (Exception e) { Log.Exception(e); viewData = new JsonViewData { errorMessage = FormatStrings.UnknownError.FormatWith("") }; } } return(Json(viewData)); }
public GrayscaleFilter(IRecommendation rec) { _rec = rec; }
public abstract double CalculateError(IRecommendation recommendation, IEnumerable <IRating> ratings, IEnumerable <IRater> raters, IEnumerable <ISubject> subjects);
/// <summary> /// Adds a recommendation /// </summary> /// <param name="recommendation">The recommendation</param> public void AddRecommendation(IRecommendation recommendation) { using (var context = Connection.GetContext()) { context.Recommendations.Add(new Persistence.Recommendation() { AppDesignation = recommendation.AppName, Description = recommendation.Description, OSID = recommendation.OperatingSystem, UserID = this.ID, Date = DateTime.Now }); context.SaveChanges(); } }
public AlgorithmCache(IRecommendation algorithm) { _algorithm = algorithm; _cache = new ConcurrentDictionary <string, double>(); }
public RecommendationController(IRecommendation recommendation) { _Services = recommendation; }
static bool ComputeErrorRate(IEvaluator evaluator, IRecommendation recommendation) { var watch = new Stopwatch(); try { var reader = new DataReader(); var subjects = Enumerable.Empty <Movie>(); var raters = Enumerable.Empty <User>(); var ratings = Enumerable.Empty <Rating>(); reader.ReadDataFromFiles(_moviesPath, _testRatingPath, out subjects, out raters, out ratings); Console.WriteLine("Started: " + recommendation.ToString()); watch.Start(); var error = evaluator.CalculateError(recommendation, ratings, raters, subjects); watch.Stop(); var algName = recommendation.ToString(); var errorName = evaluator.MethodName; var text = string.Format("Algorithm: {0}\t{1}: {2}\tElapsed: {3}", algName, errorName, error, watch.Elapsed); Console.WriteLine(text); using (var stream = File.AppendText("scores.txt")) stream.WriteLine(text); return(true); } catch (Exception ex) { if (watch.IsRunning) { watch.Stop(); } var err = string.Format("{0} \n\n {1} \n\n {2}", watch.Elapsed, ex.Message, ex.StackTrace); using (var stream = File.AppendText("error.txt")) stream.WriteLine(err); var innerEx = ex.InnerException; while (innerEx != null) { err = string.Format("inner: \n\n {0} \n\n {1}", innerEx.Message, innerEx.StackTrace); using (var stream = File.AppendText("error.txt")) stream.WriteLine(err); innerEx = innerEx.InnerException; } return(false); } }
public int CompareTo(IRecommendation other) { return(Value > other.Value ? -1 : (Value < other.Value ? 1 : 0)); }
public BinaryFilter(IRecommendation rec) { _rec = rec; }
public int CompareTo(IRecommendation other) { return Value > other.Value ? -1 : (Value < other.Value ? 1 : 0); }