private async Task SendCouponPushToUsers()
        {
            try
            {
                Cekilis cekilis = CekilisCache.cekilisList.Last();
                if (cekilis == null)
                {
                    return;
                }

                List <User> userList = await _userService.GetPushCekilis();

                if (userList == null || !userList.Any())
                {
                    CouponPushFinished();
                    return;
                }

                foreach (User user in userList)
                {
                    try
                    {
                        List <Coupon> couponList = await _couponsService.GetAllByUserNameAndTarih(user.user_id, cekilis.tarih);

                        if (couponList == null || !couponList.Any())
                        {
                            continue;
                        }
                        if (!couponList.Any(c => c.WinCount >= 3))
                        {
                            continue;
                        }

                        int maxWinCount       = couponList.Max(c => c.WinCount);
                        PushNotification push = PushNotificationCoupon.Build(maxWinCount, cekilis.tarih_view, user.token);

                        bool pushResult = await _pushService.SendPush(push);

                        if (!pushResult)
                        {
                            user.push_cekilis = "F";
                            user.push_win     = "F";
                            await _userService.UpdateAsync(user);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("CouponPushJob.SendCouponPushToUsers, user:"******" " + ex.StackTrace);
                    }

                    await Task.Delay(100);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("CouponPushJob.SendCouponPushToUsers hata. " + ex.StackTrace);
            }
            CouponPushFinished();
        }
Exemple #2
0
        public static PushNotificationCoupon Build(int maxViewCount, string tarihView, string to)
        {
            PushNotificationCoupon push = new PushNotificationCoupon();

            push.data               = new Data();
            push.data.score         = maxViewCount.ToString();
            push.data.time          = tarihView;
            push.notification       = new Notification();
            push.notification.title = "Super Loto'da kazandiniz!";
            push.notification.body  = "Tebrikler! " + tarihView + " tarihli cekilisten " + maxViewCount + " tutturdunuz!";
            push.to = to;
            return(push);
        }
        private async Task SendPushToWinners()
        {
            try
            {
                Cekilis cekilis = CekilisCache.cekilisList.Last();
                if (cekilis == null)
                {
                    return;
                }

                List <Coupon> winnerCouponList = await _couponsService.GetAllByWinCountAndTarih(cekilis.tarih);

                if (winnerCouponList == null || !winnerCouponList.Any())
                {
                    CouponPushFinished();
                    return;
                }
                Dictionary <string, int> userDict = new Dictionary <string, int>();
                foreach (Coupon item in winnerCouponList)
                {
                    if (!userDict.ContainsKey(item.User) || userDict[item.User] < item.WinCount)
                    {
                        userDict[item.User] = item.WinCount;
                    }
                }

                List <User> winnerUserList = await _userService.GetAllByUserIds(userDict.Keys.ToList());

                if (winnerUserList == null || !winnerUserList.Any())
                {
                    CouponPushFinished();
                    return;
                }

                var winnerUsersToPushList = winnerUserList.Where(u => u.push_cekilis.Equals("T")).ToList();
                if (winnerUsersToPushList == null || !winnerUsersToPushList.Any())
                {
                    CouponPushFinished();
                    return;
                }

                foreach (var user in winnerUsersToPushList)
                {
                    try
                    {
                        PushNotification push = PushNotificationCoupon.Build(userDict[user.user_id], cekilis.tarih_view, user.token);

                        bool pushResult = await _pushService.SendPush(push);

                        if (!pushResult)
                        {
                            user.push_cekilis = "F";
                            user.push_win     = "F";
                            await _userService.UpdateAsync(user);

                            Console.WriteLine("CouponPushJob winner: " + user.user_id + " won:" + userDict[user.user_id]);
                        }
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("CouponPushJob.SendPushToWinners, user:"******" " + ex.StackTrace);
                    }
                    await Task.Delay(300);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("CouponPushJob.SendPushToWinners hata. " + ex.StackTrace);
            }
            CouponPushFinished();
        }