Files
lol_coder/lck_cl_data_solution/LolDataRequestLib/ResponseData/없는데이터/한타딜량범위.cs
2026-04-01 20:20:09 +09:00

146 lines
5.6 KiB
C#

using MongoDB.Bson;
using MongoDB.Driver;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LolDataRequestLib.ResponseData
{
internal class : AResponseData
{
int = 0;
int = 0;
internal (int , int )
{
= ;
= ;
}
protected override DataTable buildDataForResponse(BsonDocument recvDocument)
{
DataTable = new DataTable();
.TableName = DBDefine...ToString();
//선수관련
.Columns.Add("팀구분");
.Columns.Add("선수아이디");
.Columns.Add("챔피언");
//데미지관련
.Columns.Add("데미지차이");
.Columns.Add("시작데미지량");
.Columns.Add("종료데미지량");
.Columns.Add("딜량백분율");
if (m시작데이터.Count() == 0 || m종료데이터.Count() == 0)
{
return ;
}
BsonArray = m시작데이터["participants"].AsBsonArray;
foreach (BsonDocument itemPlayer in )
{
DataRow bufRow = .NewRow();
bufRow["팀구분"] = (DBDefine.)itemPlayer["teamID"].ToInt32();
bufRow["선수아이디"] = itemPlayer["playerName"].ToString();
bufRow["챔피언"] = itemPlayer["championName"].ToString();
bufRow["시작데미지량"] = itemPlayer["stats"].AsBsonArray.ToList().Where(v => v["name"] == "TOTAL_DAMAGE_DEALT_TO_CHAMPIONS").ToList()[0]["value"];
.Rows.Add(bufRow);
}
BsonArray = m종료데이터["participants"].AsBsonArray;
foreach (BsonDocument itemPlayer in )
{
DataRow bufPlayerRow = .AsEnumerable().Where(r => r.Field<String>("선수아이디") == itemPlayer["playerName"].ToString()).Last();
bufPlayerRow["종료데미지량"] = itemPlayer["stats"].AsBsonArray.ToList().Where(v => v["name"] == "TOTAL_DAMAGE_DEALT_TO_CHAMPIONS").ToList()[0]["value"];
bufPlayerRow["데미지차이"] = Convert.ToDouble(bufPlayerRow["종료데미지량"]) - Convert.ToDouble(bufPlayerRow["시작데미지량"]);
}
double = Convert.ToDouble(.AsEnumerable().OrderByDescending(r => Convert.ToDouble(r.Field<string>("데미지차이"))).First()["데미지차이"]);
foreach (DataRow item in .Rows)
{
double = Convert.ToDouble(item["데미지차이"]);
if ( != 0)
{
item["딜량백분율"] = / * 100.0;
}
else
{
item["딜량백분율"] = 0.0;
}
}
return ;
}
BsonDocument m시작데이터 = new BsonDocument();
BsonDocument m종료데이터 = new BsonDocument();
protected override BsonDocument getDataFromMongo()
{
//var subfilter1 = Builders<BsonDocument>.Filter.Eq("RequestGameID", DataManager.getInstance().mPlatformGameID);
var subFilter2 = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>("{'eventDocument.gameTime' : {$lt : " + * 1000 + " }}");
var filter1 = Builders<BsonDocument>.Filter.And(subFilter2); //var filter1 = Builders<BsonDocument>.Filter.And(subfilter1, subFilter2);
var projectionFilter = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>("{'eventDocument.participants' : 1 , 'eventDocument.gameTime' : 1 }");
List<BsonDocument> documents = mEventDataBase.GetCollection<BsonDocument>("stats_update")
.Find(filter1)
.Project(projectionFilter)
.SortByDescending(x => x["sequenceIndex"])
.Limit(1)
.ToList();
m시작데이터 = documents.Last()["eventDocument"].AsBsonDocument;
subFilter2 = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>("{'eventDocument.gameTime' : {$lt : " + * 1000 + " }}");
filter1 = Builders<BsonDocument>.Filter.And(subFilter2); //filter1 = Builders<BsonDocument>.Filter.And(subfilter1, subFilter2);
List<BsonDocument> documents2 = mEventDataBase.GetCollection<BsonDocument>("stats_update")
.Find(filter1)
.SortByDescending(x => x["sequenceIndex"])
.Project(projectionFilter)
.Limit(1)
.ToList();
m종료데이터 = documents2.Last()["eventDocument"].AsBsonDocument;
//구조를 위해 리턴은 하지만 이 상속클래스는 BsonDocument를 멤버변수 kv페어로 관리한다.
return new BsonDocument();
}
}
}