public CarServicesRecommenderModel Get(UserRecommendationRequest req) { var UserEntity = _context.Users.Find(req.UserID); var carServicesList = _context.CarServices.Include(c => c.City).ToList(); var ratingList = _context.Ratings.Include(r => r.User).ToList(); float countPositiveRatings = 0; float countNegativeRatings = 0; CarServicesRecommenderModel model = new CarServicesRecommenderModel(); model.listToRecommend = new List <Data.Model.CarService>(); model.others = new List <Data.Model.CarService>(); foreach (var carservice in carServicesList) { countPositiveRatings = 0; countNegativeRatings = 0; if (carservice.City.CityName == "Bugojno") { foreach (var r in ratingList) { if (carservice.CarServiceID == r.CarServiceID && r.User.CarBrandID == UserEntity.CarBrandID && r.UserID != UserEntity.UserID) { if (r.isLiked) { countPositiveRatings++; } else { countNegativeRatings++; } } } var total = countPositiveRatings + countNegativeRatings; float avg = 0; if (countPositiveRatings != 0) { avg = (float)(countPositiveRatings / total); } if (avg * 5 > 2.5) { model.listToRecommend.Add(new Data.Model.CarService() { CarServiceID = carservice.CarServiceID, CarServiceName = carservice.CarServiceName, CreatedDate = carservice.CreatedDate, CityID = carservice.CityID, Street = carservice.Street, PhoneNumber = carservice.PhoneNumber, Owner = carservice.Owner, Photo = carservice.Photo, NumberOfDislikes = carservice.NumberOfDislikes, NumberOfLikes = carservice.NumberOfLikes, UserID = carservice.UserID, PositiveDifferent = countPositiveRatings - countNegativeRatings }); } else { model.others.Add(new Data.Model.CarService() { CarServiceID = carservice.CarServiceID, CarServiceName = carservice.CarServiceName, CreatedDate = carservice.CreatedDate, CityID = carservice.CityID, Street = carservice.Street, PhoneNumber = carservice.PhoneNumber, Owner = carservice.Owner, Photo = carservice.Photo, NumberOfDislikes = carservice.NumberOfDislikes, NumberOfLikes = carservice.NumberOfLikes, UserID = carservice.UserID, }); } } } model.listToRecommend = model.listToRecommend.OrderByDescending(r => r.PositiveDifferent).ToList(); return(model); }
public Data.Model.CarServicesRecommenderModel Get([FromQuery] UserRecommendationRequest req) { return(_service.Get(req)); }