示例#1
0
        public async Task <Cekilis> GetAsync()
        {
            CekilisSelector cekSelector = CekilisSelector.Build(1);

            using (var client = CloudantClient())
            {
                var response = await client.PostAsync(_dbName + "/_find", new StringContent(JsonConvert.SerializeObject(cekSelector), Encoding.UTF8, "application/json"));

                if (response.IsSuccessStatusCode)
                {
                    string cekilisJson = await response.Content.ReadAsStringAsync();

                    JToken  ob      = JObject.Parse(cekilisJson);
                    JArray  arr     = (JArray)ob.SelectToken("docs");
                    Cekilis cekilis = null;
                    if (arr != null && arr.Count > 0)
                    {
                        cekilis = new Cekilis()
                        {
                            tarih      = (string)arr[0]["tarih"],
                            tarih_view = (string)arr[0]["tarih_view"],
                            numbers    = (string)arr[0]["numbers"]
                        };
                        return(cekilis);
                    }
                }
                string msg = "Failure to GET. Status Code: " + response.StatusCode + ". Reason: " + response.ReasonPhrase;
                Console.WriteLine(msg);
                return(null);
            }
        }
        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();
        }
示例#3
0
        public async Task <Cekilis> CreateAsync(Cekilis item)
        {
            using (var client = CloudantClient())
            {
                var response = await client.PostAsync(_dbName, new StringContent(JsonConvert.SerializeObject(item), Encoding.UTF8, "application/json"));

                if (response.IsSuccessStatusCode)
                {
                    var responseJsonString = await response.RequestMessage.Content.ReadAsStringAsync();

                    var responseJson = JsonConvert.DeserializeObject(responseJsonString) as Cekilis;

                    return(new Cekilis()
                    {
                        tarih = responseJson.tarih
                        ,
                        tarih_view = responseJson.tarih_view
                        ,
                        numbers = responseJson.numbers
                    });
                }
                string msg = "Failure to POST. Status Code: " + response.StatusCode + ". Reason: " + response.ReasonPhrase;
                Console.WriteLine(msg);
                return(null);
            }
        }
示例#4
0
        public async Task <dynamic> GetDateFromMP()
        {
            using (var client = MilliPiyangoClient())
            {
                var response = await client.GetAsync(urlTarihler + oyunTuru);

                if (response.IsSuccessStatusCode)
                {
                    string result = response.Content.ReadAsStringAsync().Result;
                    if (!string.IsNullOrWhiteSpace(result))
                    {
                        JArray arr = JArray.Parse(result);
                        if (arr != null && arr.Any())
                        {
                            string tarih = (string)arr[0]["tarih"];

                            Cekilis cekilis = new Cekilis()
                            {
                                tarih = tarih
                            };
                            return(cekilis.GetDateTime());
                        }
                    }
                }
                string msg = "Failure to GET. Status Code: " + response.StatusCode + ". Reason: " + response.ReasonPhrase;
                Console.WriteLine(msg);
                return(JsonConvert.SerializeObject(new { msg = msg }));
            }
        }
        private int GetWinCount(CouponDto coupon, Cekilis cekilis)
        {
            string[] couponNumbers  = coupon.Numbers.Split('-');
            string[] cekilisNumbers = cekilis.numbers.Split('-');

            return(couponNumbers.Where(n => cekilisNumbers.Contains(n)).Count());
        }
示例#6
0
        public async Task <dynamic> GetCekilisFromMP(DateTime dateInMP)
        {
            using (var client = MilliPiyangoClient())
            {
                var response = await client.GetAsync(urlNumaralar + oyunTuru + "/" + dateInMP.ToString("yyyyMMdd") + ".json");

                if (response.IsSuccessStatusCode)
                {
                    string result = response.Content.ReadAsStringAsync().Result;
                    if (!string.IsNullOrWhiteSpace(result))
                    {
                        JToken jTo  = JToken.Parse(result);
                        JToken jTo2 = jTo.SelectToken("data");
                        if (jTo2 != null)
                        {
                            Cekilis cekilis = new Cekilis()
                            {
                                tarih      = dateInMP.ToString("yyyyMMdd"),
                                tarih_view = (string)jTo2.SelectToken("cekilisTarihi"),
                                numbers    = getNumbersFromMP((string)jTo2.SelectToken("rakamlarNumaraSirasi"))
                            };
                            return(cekilis);
                        }
                    }
                }
                string msg = "Failure to GET. Status Code: " + response.StatusCode + ". Reason: " + response.ReasonPhrase;
                Console.WriteLine(msg);
                return(JsonConvert.SerializeObject(new { msg = msg }));
            }
        }
        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();
        }
        private void InvokeYeniCekilisEvent(Cekilis cekilisInserted)
        {
            CekilisEventArgs args = new CekilisEventArgs()
            {
                numbers = cekilisInserted.numbers
            };

            onYeniCekilisFinished(this, args);
        }
        private CouponList SetWinCounts(CouponList items)
        {
            foreach (Coupon item in items.docs)
            {
                string  itemDate = item.LotteryTime.Replace("/", "");
                Cekilis cekilis  = CekilisCache.cekilisList
                                   .Where(c => c.tarih.Equals(itemDate))
                                   .FirstOrDefault();

                if (cekilis != null)
                {
                    string[] cekilisNumbers = cekilis.numbers.Split('-');
                    string[] couponNumbers  = item.Numbers.Split('-');
                    item.WinCount = couponNumbers.Where(n => cekilisNumbers.Contains(n)).Count();
                }
            }

            return(items);
        }
        private async Task UpdateCekilis()
        {
            try
            {
                Cekilis cekilisDb = await GetCekilisFromDB();

                if (cekilisDb == null)
                {
                    return;
                }

                if (DateTime.UtcNow.GetTurkeyTime() - cekilisDb.GetDateTime() <= TimeSpan.FromDays(6))
                {
                    return;
                }

                DateTime dateInMP = await GetDateFromMP();

                if (dateInMP - cekilisDb.GetDateTime() <= TimeSpan.FromDays(2))
                {
                    return;
                }

                Cekilis cekilisMP = await GetCekilisFromMP(dateInMP);

                Cekilis cekilisInserted = await InsertCekilisToDB(cekilisMP);

                CekilisCache.AddCekilis(cekilisMP);

                if (cekilisInserted != null && !string.IsNullOrWhiteSpace(cekilisInserted.numbers))
                {
                    InvokeYeniCekilisEvent(cekilisInserted);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("CekilisJob exception" + ex.Message);
            }
        }
        private async Task SendPushToTopic(string topic)
        {
            try
            {
                Cekilis cekilis = CekilisCache.cekilisList.Last();
                if (cekilis == null)
                {
                    return;
                }

                PushNotificationToTopic push = PushNotificationToTopic.Build(cekilis.numbers, cekilis.tarih_view, topic);
                bool pushResult = await _pushService.SendPush(push);

                if (!pushResult)
                {
                    Console.WriteLine("CekilisPushJob.SendPushToTopic false.");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("CekilisPushJob.SendPushToTopic hata. " + ex.StackTrace);
            }
            PushFinished();
        }
 public async Task <dynamic> Post([FromBody] Cekilis item)
 {
     return(await _cloudantService.CreateAsync(item));
 }
        private async Task UpdateUserWinCounts()
        {
            Cekilis cekilis = CekilisCache.cekilisList.Last();

            if (cekilis == null)
            {
                return;
            }

            /*
             * List<User> userList = await _userService.GetPushCekilis();
             * if (userList == null || !userList.Any())
             * {
             *  CouponUpdateFinished();
             *  return;
             * }
             */
            List <CouponDto> couponList = await _couponService.GetWithLimitByTarih(cekilis.tarih, updateCouponCount);

            if (couponList == null || !couponList.Any())
            {
                CouponUpdateFinished();
                return;
            }

            foreach (CouponDto couponDto in couponList)
            {
                int winCount = GetWinCount(couponDto, cekilis);
                couponDto.WinCount = winCount;
            }
            CouponListDto couponListDto = new CouponListDto();

            couponListDto.docs = couponList;
            await _couponService.UpdateBulkAsync(couponListDto);

            /*
             * foreach (var user in userList)
             * {
             *  List<CouponDto> userCouponList = couponList.Where(c => c.User.Equals(user.user_id)).ToList();
             *  if (userCouponList == null || !userCouponList.Any())
             *  {
             *      continue;
             *  }
             *
             *  foreach (CouponDto couponDto in userCouponList)
             *  {
             *      int winCount = GetWinCount(couponDto, cekilis);
             *      couponDto.WinCount = winCount;
             *  }
             *
             *  CouponListDto couponListDto = new CouponListDto();
             *  couponListDto.docs = userCouponList;
             *  await _couponService.UpdateBulkAsync(couponListDto);
             *
             *  //if (maxWinCount >= 3)
             *  //{
             *  //    PushNotification push = PushNotificationCoupon.Build(maxWinCount, cekilis.tarih_view, user.token);
             *  //    await _pushService.SendPush(push);
             *  //}
             * }
             */
        }
 private async Task <Cekilis> InsertCekilisToDB(Cekilis cekilisMP)
 {
     return(await _cloudantService.CreateAsync(cekilisMP));
 }
示例#15
0
 public Task <dynamic> DeleteAsync(Cekilis item)
 {
     throw new NotImplementedException();
 }
        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();
        }
 public static void AddCekilis(Cekilis cekilis)
 {
     _cekilisList.Add(cekilis);
     _cekilisList.Sort((x, y) => x.GetDateTime().CompareTo(y.GetDateTime()));
 }