duvido muito que vá te servir para alguma coisa mais o código relevante da api em c#:
levando em consideração que o site esta salvando os itens no banco onde o campo Game_Id seria o id da conta do jogador.
//Class representação da tabela no banco:
public class GameItem : AuditedEntity<int>
{
public int ItemId { get; set; }
public int Game_Id { get; set; }
[Range(0, 255)]
public int EF1 { get; set; }
[Range(0, 255)]
public int EFV1 { get; set; }
[Range(0, 255)]
public int EF2 { get; set; }
[Range(0, 255)]
public int EFV2 { get; set; }
[Range(0, 255)]
public int EF3 { get; set; }
[Range(0, 255)]
public int EFV3 { get; set; }
public int Status { get; set; }
public DateTime Created_At { get; set; }
public GameItem()
{
Status = 0;
Created_At = DateTime.Now;
}
}
//metodo para gerar o import text
private async Task<bool> SaveFileAsync(ImportAccountGame import) {
//o vem de um config json que configura o diretório do importItem da db _importItem = configuration.GetSection("ImportGame:ImportItem").Value;
int currentTimestamp = (int)DateTimeOffset.UtcNow.ToUnixTimeSeconds();
var filePath = Path.Combine(_importItem, import.Name + currentTimestamp + ".txt");
if (File.Exists(filePath)) {
return false; // O arquivo já existe, não substitua.
}
using (var stream = new StreamWriter(filePath, false)) {
await stream.WriteAsync($"{import.Name} {import.GameItem.ItemId} " +
$"{import.GameItem.EF1} {import.GameItem.EFV1} " +
$"{import.GameItem.EF2} {import.GameItem.EFV2} " +
$"{import.GameItem.EF3} {import.GameItem.EFV3} ");
}
return true;
}
//metodo job que verifica se tem item pendete de entrega, sendo status 0 pendente e 1 entregue
public async Task<List<ResponseTaskJob>> ExportItem() {
var response = new List<ResponseTaskJob>();
string status = string.Empty;
string description = string.Empty;
var gameitems = await _context.GameItems
.Where(d => d.Status == 0)
.ToListAsync();
foreach (var item in gameitems) {
var name = GetGameAccountName(item.Game_Id);
if (string.IsNullOrEmpty(name))
continue;
var importItem = new ImportAccountGame {
Name = name,
GameItem = new GameItem {
ItemId = item.ItemId,
EF1 = item.EF1,
EF2 = item.EF2,
EF3 = item.EF3,
EFV1 = item.EFV1,
EFV2 = item.EFV2,
EFV3 = item.EFV3,
}
};
{
var isSave = await SaveFileAsync(importItem);
if (isSave) {
item.Status = 1;
status = "Success";
description = $"Item[Id:{item.ItemId} ef1:{item.EF1} efv1:{item.EFV1} ef2:{item.EF2} efv2:{item.EFV2} " +
$"ef3:{item.EF3} efv3:{item.EFV3}, importado para a conta[{name}]";
}
else {
status = "Error";
description = $"Item[Id:{item.ItemId} ef1:{item.EF1} efv1:{item.EFV1} ef2:{item.EF2} efv2:{item.EFV2} " +
$"ef3:{item.EF3} efv3:{item.EFV3}, não importado para a conta[{name}]";
}
}
_context.GameItems.Update(item);
await _context.SaveChangesAsync();
response.Add(new ResponseTaskJob {
Status = status,
Name = "ExportItemJob",
Description = description,
});
}
return response;
}