using DynamicData;
using HelloItQuantum.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace HelloItQuantum.Function
{
public static class WorkWithFile
{
private static string filePath = "user.csv";
///
/// Считывает пользователей из файла
///
/// Возвращает null - если файл пустой (не существует) или возвращает модель
static public List? GetAllUsers()
{
if (!File.Exists(filePath))
{
using (FileStream fs = new FileStream(filePath, FileMode.Create))
{}
return null;
}
List users = new List();
using (StreamReader read = new StreamReader(filePath))
{
while (!read.EndOfStream)
{
string[] row = read.ReadLine().Split(';');
if (row.Length == 6)
{
User user = new User();
user.Nickname = row[0];
user.Name = row[1];
user.Surname = row[2];
user.GameHotkeys = Convert.ToInt32(row[3]);
user.GameCreateFriend = Convert.ToInt32(row[4]);
user.GameLabyrinth = Convert.ToInt32(row[5]);
users.Add(user);
}
}
}
return users;
}
///
/// Добавляет пользователя в файл
///
/// Новый пользователь
/// true если пользователь добавлен, false - пользователь уже существует
static public bool IsWriteUserInFile(User newUser)
{
List? users = GetAllUsers();
bool exists = users.Any(item => item.Nickname == newUser.Nickname);
if (exists)
{
return false;
}
using (StreamWriter writer = new StreamWriter(filePath, true))
{
writer.WriteLine($"{newUser.Nickname};{newUser.Name};{newUser.Surname};{newUser.GameHotkeys};{newUser.GameCreateFriend};{newUser.GameLabyrinth}");
}
return true;
}
static public void UpdateValueGameProgress(int game, int value, User currentUser)
{
List? users = GetAllUsers();
users.Remove(users.FirstOrDefault(it => it.Nickname == currentUser.Nickname));
switch (game)
{
case 1: currentUser.GameHotkeys = currentUser.GameHotkeys < value ? value : currentUser.GameHotkeys; break;
case 2: currentUser.GameLabyrinth = value; break;
case 3: currentUser.GameCreateFriend = value; break;
}
users.Add(currentUser);
using (StreamWriter writer = new StreamWriter(filePath, false))
{
foreach (User newUser in users)
{
writer.WriteLine($"{newUser.Nickname};{newUser.Name};{newUser.Surname};{newUser.GameHotkeys};{newUser.GameCreateFriend};{newUser.GameLabyrinth}");
}
}
}
}
}