Пример #1
0
 public static void ShowRankingPage(ushort thisSeason, int pageIndex, Client.GameState client)
 {
     ArenaList list = new ArenaList(pageIndex);
     list.ID = Enums.ArenaIDs.ShowPlayerRankList;
     list.PageNumber = (ushort)pageIndex;
     list.Subtype = thisSeason;
     if (list.Subtype == 0)
     {
         var Array = ArenaStatisticsList;
         if (Array.Count > (((pageIndex) * 10) - 10))
         {
             list.Players.Clear();
             for (int i = ((pageIndex) * 10 - 10); i < ((pageIndex) * 10 - 10) + 10; i++)
             {
                 if (i < Array.Count)
                 {
                     if (Array[i].Rank > 0)
                     {
                         list.Players.Add(Array[i]);
                     }
                 }
             }
         }
     }
     else
     {
         if (YesterdayArenaStatisticsList == null || YesterdayArenaStatisticsList.Count == 0)
             YesterdayArenaStatisticsList = YesterdayArenaStatistics.Values.ToList();
         var Array = YesterdayArenaStatisticsList;
         if (Array.Count > (((pageIndex) * 10) - 10))
         {
             list.Players.Clear();
             for (int i = ((pageIndex) * 10 - 10); i < ((pageIndex) * 10 - 10) + 10; i++)
             {
                 if (i < Array.Count)
                 {
                     if (Array[i].LastSeasonRank > 0)
                     {
                         list.Players.Add(Array[i]);
                     }
                 }
             }
         }
     }
     client.Send(list.BuildPacket());
 }
Пример #2
0
        public async Task <IActionResult> Index([FromRoute] int id = 1)
        {
            string userString = HttpContext.Session.GetString("Login");

            userString = userString != null ? userString : "";

            List <Arena> result = new List <Arena>();
            int          count  = 0;

            var    corrId = string.Format("{0}{1}", DateTime.Now.Ticks, Thread.CurrentThread.ManagedThreadId);
            string request;

            byte[] responseMessage;

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(URLArenaService);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                string requestString         = "api/arenas/page/" + id;
                HttpResponseMessage response = await client.GetAsync(requestString);

                request = "SERVICE: ArenaService \r\nGET: " + URLArenaService + "/" + requestString + "\r\n" + client.DefaultRequestHeaders.ToString();
                string responseString = response.Headers.ToString() + "\nStatus: " + response.StatusCode.ToString();

                if (response.IsSuccessStatusCode)
                {
                    responseMessage = await response.Content.ReadAsByteArrayAsync();

                    var arenas = await response.Content.ReadAsStringAsync();

                    result = JsonConvert.DeserializeObject <List <Arena> >(arenas);
                }
                else
                {
                    responseMessage = Encoding.UTF8.GetBytes(response.ReasonPhrase);
                    SendStatistic("Arena", DateTime.Now, "Index", Request.HttpContext.Connection.RemoteIpAddress.ToString(), false, userString);
                    return(Error());
                }

                await LogQuery(request, responseString, responseMessage);


                //
                // ПОЛУЧАЕМ КОЛ-ВО СУЩНОСТЕЙ В БД МИКРОСЕРВИСА, ЧТОБЫ УЗНАТЬ, СКОЛЬКО СТРАНИЦ РИСОВАТЬ
                //
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                string requestStringCount = "api/arenas/count";
                HttpResponseMessage responseStringsCount = await client.GetAsync(requestStringCount);

                request        = "SERVICE: ArenaService \r\nGET: " + URLArenaService + "/" + requestString + "\r\n" + client.DefaultRequestHeaders.ToString();
                responseString = responseStringsCount.Headers.ToString() + "\nStatus: " + responseStringsCount.StatusCode.ToString();

                if (responseStringsCount.IsSuccessStatusCode)
                {
                    responseMessage = await responseStringsCount.Content.ReadAsByteArrayAsync();

                    var countStringsContent = await responseStringsCount.Content.ReadAsStringAsync();

                    count = JsonConvert.DeserializeObject <int>(countStringsContent);
                }
                else
                {
                    responseMessage = Encoding.UTF8.GetBytes(responseStringsCount.ReasonPhrase);
                    SendStatistic("Arena", DateTime.Now, "Index", Request.HttpContext.Connection.RemoteIpAddress.ToString(), false, userString);
                    return(Error());
                }
                ArenaList resultQuery = new ArenaList()
                {
                    arenas = result, countArenas = count
                };

                await LogQuery(request, responseString, responseMessage);

                SendStatistic("Arena", DateTime.Now, "Index", Request.HttpContext.Connection.RemoteIpAddress.ToString(), true, userString);
                return(View(resultQuery));
            }
        }