public void SendSuggestionNotif(List <RouteSuggest> notifSendingSuggests) { using (var dataModel = new MibarimEntities()) { var selfrequestId = notifSendingSuggests.FirstOrDefault().SelfRouteRequestId; var selfUser = dataModel.RouteRequests.FirstOrDefault( x => x.RouteRequestId == selfrequestId); var gtoken = dataModel.GoogleTokens.Where(x => x.GtokenUserId == selfUser.RouteRequestUserId) .OrderByDescending(x => x.GtokenCreateTime).ToList(); if (gtoken.Count > 0) { _gService.SendNotification(gtoken.FirstOrDefault().GtokenKey, NotificationType.SuggestRoute.ToString()); _logmanager.Log("notifLog", "notifLog", gtoken.FirstOrDefault().GtokenKey + ";;" + selfUser.RouteRequestUserId); } var suggestRouteIds = notifSendingSuggests.Select(x => x.SuggestRouteRequestId); var otherUsers = dataModel.RouteRequests.Where(x => suggestRouteIds.Contains(x.RouteRequestId)).GroupBy(x => x.RouteRequestUserId); foreach (var otherUser in otherUsers) { gtoken = dataModel.GoogleTokens.Where(x => x.GtokenUserId == otherUser.Key) .OrderByDescending(x => x.GtokenCreateTime).ToList(); if (gtoken.Count > 0) { _gService.SendNotification(gtoken.FirstOrDefault().GtokenKey, NotificationType.SuggestRoute.ToString()); _logmanager.Log("notifotherLog", "notifotherLog", gtoken.FirstOrDefault().GtokenKey + ";;" + otherUser.Key); } } gtoken = dataModel.GoogleTokens.Where(x => x.GtokenUserId == 1) .OrderByDescending(x => x.GtokenCreateTime).ToList(); if (gtoken.Count > 0) { _gService.SendNotification(gtoken.FirstOrDefault().GtokenKey, NotificationType.SuggestRoute.ToString()); } } }