WorkWithFile.cs 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using DynamicData;
  2. using HelloItQuantum.Models;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.IO;
  6. using System.Linq;
  7. namespace HelloItQuantum.Function
  8. {
  9. public static class WorkWithFile
  10. {
  11. private static string filePath = "user.csv";
  12. /// <summary>
  13. /// Считывает пользователей из файла
  14. /// </summary>
  15. /// <returns>Возвращает null - если файл пустой (не существует) или возвращает модель</returns>
  16. static public List<User>? GetAllUsers()
  17. {
  18. if (!File.Exists(filePath))
  19. {
  20. using (FileStream fs = new FileStream(filePath, FileMode.Create))
  21. {}
  22. return null;
  23. }
  24. List<User> users = new List<User>();
  25. using (StreamReader read = new StreamReader(filePath))
  26. {
  27. while (!read.EndOfStream)
  28. {
  29. string[] row = read.ReadLine().Split(';');
  30. if (row.Length == 6)
  31. {
  32. User user = new User();
  33. user.Nickname = row[0];
  34. user.Name = row[1];
  35. user.Surname = row[2];
  36. user.GameHotkeys = Convert.ToInt32(row[3]);
  37. user.GameCreateFriend = Convert.ToInt32(row[4]);
  38. user.GameLabyrinth = Convert.ToInt32(row[5]);
  39. users.Add(user);
  40. }
  41. }
  42. }
  43. return users;
  44. }
  45. /// <summary>
  46. /// Добавляет пользователя в файл
  47. /// </summary>
  48. /// <param name="newUser">Новый пользователь</param>
  49. /// <returns>true если пользователь добавлен, false - пользователь уже существует</returns>
  50. static public bool IsWriteUserInFile(User newUser)
  51. {
  52. List<User>? users = GetAllUsers();
  53. bool exists = users.Any(item => item.Nickname == newUser.Nickname);
  54. if (exists)
  55. {
  56. return false;
  57. }
  58. using (StreamWriter writer = new StreamWriter(filePath, true))
  59. {
  60. writer.WriteLine($"{newUser.Nickname};{newUser.Name};{newUser.Surname};{newUser.GameHotkeys};{newUser.GameCreateFriend};{newUser.GameLabyrinth}");
  61. }
  62. return true;
  63. }
  64. static public void UpdateValueGameProgress(int game, int value, User currentUser)
  65. {
  66. List<User>? users = GetAllUsers();
  67. users.Remove(users.FirstOrDefault(it => it.Nickname == currentUser.Nickname));
  68. switch (game)
  69. {
  70. case 1: currentUser.GameHotkeys = currentUser.GameHotkeys < value ? value : currentUser.GameHotkeys; break;
  71. case 2: currentUser.GameLabyrinth = value; break;
  72. case 3: currentUser.GameCreateFriend = value; break;
  73. }
  74. users.Add(currentUser);
  75. using (StreamWriter writer = new StreamWriter(filePath, false))
  76. {
  77. foreach (User newUser in users)
  78. {
  79. writer.WriteLine($"{newUser.Nickname};{newUser.Name};{newUser.Surname};{newUser.GameHotkeys};{newUser.GameCreateFriend};{newUser.GameLabyrinth}");
  80. }
  81. }
  82. }
  83. }
  84. }