public async Task <dynamic> PutToken([FromBody] UserRequestDto userReq)
        {
            if (userReq.recent_token == null || string.IsNullOrWhiteSpace(userReq.recent_token))
            {
                return(null);
            }

            userReq.prev_token   = (string.IsNullOrWhiteSpace(userReq.prev_token)) ? "" : userReq.prev_token;
            userReq.recent_token = (string.IsNullOrWhiteSpace(userReq.recent_token)) ? "" : userReq.recent_token;
            userReq.user_id      = (string.IsNullOrWhiteSpace(userReq.user_id)) ? "" : userReq.user_id;

            Console.WriteLine("SaveToken user_id:" + userReq.user_id);
            Console.WriteLine("SaveToken recent_token:" + userReq.recent_token);

            try
            {
                List <User> userList = await _cloudantService.GetTokenAsync(userReq.prev_token);

                if (userList != null && userList.Any())
                {
                    foreach (var item in userList)
                    {
                        item.token        = userReq.recent_token;
                        item.push_cekilis = userReq.push_cekilis.Length > 1 ? userReq.push_cekilis.Substring(1, 1) : "T";
                        item.push_win     = userReq.push_win.Length > 1 ? userReq.push_win.Substring(1, 1) : "T";
                        if (!string.IsNullOrWhiteSpace(userReq.user_id))
                        {
                            item.user_id = userReq.user_id;
                        }
                        await _cloudantService.UpdateAsync(item);
                    }
                }
                else
                {
                    User user = new User()
                    {
                        user_id      = userReq.user_id,
                        token        = userReq.recent_token,
                        push_cekilis = userReq.push_cekilis.Length > 1 ? userReq.push_cekilis.Substring(1, 1) : "T",
                        push_win     = userReq.push_win.Length > 1 ? userReq.push_win.Substring(1, 1) : "T",
                        time         = DateTime.Now.ToString()
                    };
                    await _cloudantService.CreateAsync(user);
                }
                return(true);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.StackTrace);
                return(false);
            }
        }
        private async Task SendPushToUsers()
        {
            Cekilis cekilis = await _cekilisService.GetAsync();

            if (cekilis == null)
            {
                return;
            }

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

            if (userList != null)
            {
                List <PushNotificationCekilis> pushList = new List <PushNotificationCekilis>();
                foreach (var user in userList)
                {
                    PushNotificationCekilis push = PushNotificationCekilis.Build(cekilis.numbers, 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);
                    }
                    await Task.Delay(100);
                }
            }

            PushFinished();
        }
        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();
        }