MarkGora

Untitled

Sep 15th, 2019
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.75 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Simulator
  8. {
  9. class BL_Department
  10. {
  11. DataProcessing DataProcess;
  12. OfficeClerk clerk;
  13. Task[] _arrFreeClerk;
  14. bool search;
  15.  
  16. int _numberClerks;
  17. public int NumberClerks
  18. {
  19. get
  20. {
  21. return _numberClerks;
  22. }
  23. set
  24. {
  25. if (value <= 0 )
  26. {
  27. _numberClerks = Inquiry("clerks");
  28. }
  29. else
  30. _numberClerks = value;
  31. }
  32. }
  33.  
  34. int _numberPeopleInLine;
  35. public int NumberPeopleInLine
  36. {
  37. get
  38. {
  39. return _numberPeopleInLine;
  40. }
  41. set
  42. {
  43.  
  44. if (value <= 0 && search == true)
  45. {
  46. _numberPeopleInLine = Inquiry("clients");
  47. }
  48. else
  49. _numberPeopleInLine = value;
  50. }
  51. }
  52.  
  53. int[] _arrTimeReceptionPerClerk { get; set; }
  54.  
  55.  
  56. public BL_Department(int numberClients, int numberClerks)
  57. {
  58. clerk = new OfficeClerk();
  59. DataProcess = new DataProcessing();
  60. search = true;
  61. NumberPeopleInLine = numberClients;
  62. NumberClerks = numberClerks;
  63. _arrTimeReceptionPerClerk = new int[NumberClerks];
  64. _arrFreeClerk = new Task[NumberClerks];
  65. }
  66.  
  67. int Inquiry (string name)
  68. {
  69. int data;
  70. do
  71. {
  72. Console.WriteLine($"Entered number of {name} is not correct.Reentered please:");
  73. data = int.Parse(Console.ReadLine());
  74. }
  75. while (data <= 0);
  76. return data;
  77. }
  78.  
  79. //It imitates the beginning of the work of the department, when initially all the officials are free, and also checks if there
  80. //are fewer clients than officials and immediately displays a message that there is enough staff.
  81. public void Open_Department ()
  82. {
  83. if (NumberPeopleInLine > NumberClerks)
  84. {
  85. for (int indexClerk = 0; indexClerk < NumberClerks; indexClerk++)
  86. {
  87. NextClient(indexClerk);
  88. }
  89. SearchFreeClerk();
  90. }
  91. else
  92. Console.WriteLine($"The number of officials in the amount {NumberClerks} is sufficient to serve a given number of people.");
  93. }
  94.  
  95. void SearchFreeClerk()
  96. {
  97. while(NumberPeopleInLine != 0)
  98. {
  99. for (int indexClerk = 0; indexClerk < NumberClerks; indexClerk++)
  100. {
  101. if (_arrFreeClerk[indexClerk].IsCompleted)
  102. {
  103. NextClient(indexClerk);
  104. }
  105. }
  106. }
  107. Close_Department();
  108. }
  109.  
  110. //Accesses the "OfficeClerk" class to start a thread ("enter client") and set the service time.
  111. void NextClient(int indexClerk)
  112. {
  113. _arrFreeClerk[indexClerk] = clerk.ServiceClerkAsync();
  114. _arrTimeReceptionPerClerk[indexClerk] += clerk.TimeReception;
  115. search = false;
  116. NumberPeopleInLine--;
  117. }
  118.  
  119. //The Method sends data to class "DataProcessing" for processing
  120. void Close_Department ()
  121. {
  122. DataProcess.Processing(_arrTimeReceptionPerClerk, NumberClerks);
  123. }
  124. }
  125. }
Add Comment
Please, Sign In to add comment