public IHttpActionResult GetNotifications(FollowRestaurantDto followRestaurantDto) { if (context.FollowRestaurants.Any(f => f.RestaurantId == followRestaurantDto.RestaurantId && f.UnfollowDate == null)) { Unfollow(followRestaurantDto); } else { var owners = context.RestaurantOwnerships .Where(ro => ro.RestaurantId == followRestaurantDto.RestaurantId) .Select(ro => ro.ApplicationUser); var userId = User.Identity.GetUserId(); var followRestaurant = new FollowRestaurant(userId, followRestaurantDto.RestaurantId, DateTime.Now); var notification = Notification.RestaurantFollowed(followRestaurant); foreach (var owner in owners) { context.Notifications.Add(notification); owner.Notify(notification); foreach (var userNotification in owner.UserNotifications) { context.UserNotifications.Add(userNotification); } } context.SaveChanges(); } return(Ok()); }
private Notification(NotificationType type, FollowRestaurant followRestaurant) { if (followRestaurant == null) { throw new ArgumentNullException("followRestaurant"); } Type = type; FollowRestaurant = followRestaurant; DateTime = DateTime.Now; }
public void AddRestaurantFollowing(FollowRestaurant followRestaurant) { _context.FollowRestaurants.Add(followRestaurant); }
public static Notification RestaurantFollowed(FollowRestaurant followRestaurant) { var notification = new Notification(NotificationType.BusinsessFollowed, followRestaurant); return(notification); }