Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- namespace Avtoservice
- {
- public class Autoservice
- {
- private int _money = 1000;
- private List<Gear> _gears = new List<Gear>();
- private Queue<Client> _clients = new Queue<Client>();
- private int _penalty = 100;
- public Autoservice(int gearsCount)
- {
- Random random = new Random();
- for (int i = 0; i < gearsCount; i++)
- {
- _gears.Add(new Gear(random.Next(50, 126), random.Next(0, 10), random.Next(50, 126)));
- }
- CreateNewClients(10, random);
- }
- public void Work()
- {
- while (_clients.Count > 0)
- {
- Client newClient = _clients.Dequeue();
- Console.WriteLine($"Баланс Автосервиса {_money} руб. Ждем нового клиента.");
- Console.WriteLine($"У вас новый клиент, и он хочет купить Деталь по номером -{newClient.DesiredGear}-.");
- Console.WriteLine($"Полная стоимость ремонта: {_gears[newClient.DesiredGear - 1].PriceForItem + _gears[newClient.DesiredGear - 1].PriceForAssembling} руб.");
- ShowAllGearsState();
- Console.Write("\nВы предлагаете клиенту Деталь под номером: ");
- CheckInputNumber(newClient);
- Console.WriteLine("Чтобы перейти к следующему клиенту, нажмите любую клавишу.");
- Console.ReadKey();
- Console.Clear();
- }
- }
- private void ShowAllGearsState()
- {
- Console.WriteLine("\nСписок всех деталей на складе: ");
- for (int i = 0; i < _gears.Count; i++)
- {
- Console.Write($"{i + 1} - ");
- _gears[i].ShowState();
- }
- }
- private void CreateNewClients(int newClietsCount, Random random)
- {
- for (int i = 0; i < newClietsCount; i++)
- {
- _clients.Enqueue(new Client(random.Next(100, 251), random));
- }
- }
- private void CheckSolvency(Client newClient, int gearNumber)
- {
- if (newClient.CheckSolvency(_gears[gearNumber]))
- {
- Console.WriteLine($"Клиент пересчитав деньги, оплатил ремонт и замену Детали -{gearNumber + 1}-.");
- _money += newClient.Pay();
- _gears[gearNumber].BecomeTaken();
- }
- else
- {
- Console.WriteLine("У клиента не хватило денег и он ушел.");
- }
- }
- private void IsRanOut(int gearNumber, Client newClient)
- {
- if (_gears[gearNumber].IsRanOut)
- {
- Console.WriteLine($"Вы предложили клиенту Деталь, которой нет на складе. Клиент разозлился и ушел. " +
- $"Вы заплатили штраф - {_penalty / 2} руб.");
- _money -= _penalty / 2;
- }
- else
- {
- CheckSolvency(newClient, gearNumber);
- }
- }
- private void CheckGearNumber(int gearNumber, Client newClient)
- {
- if (gearNumber >= 0 && gearNumber < _gears.Count && gearNumber + 1 == newClient.DesiredGear)
- {
- IsRanOut(gearNumber, newClient);
- }
- else
- {
- Console.WriteLine($"Вы сами не знаете какую деталь предложить клиенту. Он разозлился и ушел. " +
- $"Вы заплатили штраф {_penalty} руб.");
- _money -= _penalty;
- }
- }
- private void CheckInputNumber(Client newClient)
- {
- string userInput = Console.ReadLine();
- if (int.TryParse(userInput, out int gearNumber))
- {
- gearNumber -= 1;
- CheckGearNumber(gearNumber, newClient);
- }
- else
- {
- CreateNewClients(1, new Random());
- Console.WriteLine("Не верный ввод! Повторите снова.");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement