示例#1
0
        private void ReplaceDetail(ClientsCar currentClient)
        {
            SparePart replaceableDetail;

            for (int i = 0; i < _spareParts.Count; i++)
            {
                if (CheckAvailableInSpareParts(currentClient))
                {
                    replaceableDetail = _spareParts[i];

                    replaceableDetail.RemoveDetail();

                    int workCost = replaceableDetail.Cost + TakeReplacementWorkCost(currentClient);

                    _moneyBalance += workCost;

                    Console.WriteLine($"{replaceableDetail.Name} успешно заменена. Сервис заработал: {workCost} денег");
                    Console.ReadKey();

                    if (replaceableDetail.Count == 0)
                    {
                        _spareParts.RemoveAt(i);
                    }
                    break;
                }
            }
            _clientsCarsQueue.Dequeue();
        }
示例#2
0
        private void SetUnnecessarySparePart(ClientsCar currentClient)
        {
            if (_spareParts.Count > 0)
            {
                SparePart unnecessarySparePart = _spareParts[_random.Next(0, _spareParts.Count)];

                unnecessarySparePart.RemoveDetail();

                _moneyBalance -= currentClient.DamagedDetail.Cost;

                Console.WriteLine($"Клиенту установили: {unnecessarySparePart.Name}. Сервис возмещает клиенту{currentClient.DamagedDetail.Cost}");
                Console.ReadKey();

                _clientsCarsQueue.Dequeue();

                if (unnecessarySparePart.Count == 0)
                {
                    _spareParts.Remove(unnecessarySparePart);
                }
            }
            else
            {
                Console.WriteLine("Запасные части закончились");
                Console.ReadKey();
            }
        }
示例#3
0
        private void RefuseToClient(ClientsCar currentClient)
        {
            _moneyBalance -= currentClient.DamagedDetail.Cost;

            Console.WriteLine($"Клиенту отказано. Вы получили штраф в размере: {currentClient.DamagedDetail.Cost}");
            Console.ReadKey();

            _clientsCarsQueue.Dequeue();
        }
示例#4
0
 private bool CheckAvailableInSpareParts(ClientsCar currentClient)
 {
     foreach (var sparePart in _spareParts)
     {
         if (currentClient.DamagedDetail.Name == sparePart.Name && sparePart.Count > 0)
         {
             return(true);
         }
     }
     return(false);
 }
示例#5
0
        private void OperateServiceMenu()
        {
            Console.SetCursorPosition(0, _spareParts.Count + 7);

            ClientsCar currentClient = _clientsCarsQueue.Peek();

            if (CheckAvailableInSpareParts(currentClient))
            {
                Console.WriteLine("1 - Заменить поврежденную деталь.");
            }
            else
            {
                Console.WriteLine("2 - Отказать клиенту. Вы получите штраф.");
                Console.WriteLine("3 - Установить клиенту ненужную деталь.(Вы заплатите клиенту полную стоимость поврежденной детали)");
            }
            Console.WriteLine("4 - Завершить работу");

            string userInput = Console.ReadLine();

            switch (userInput)
            {
            case "1":
                if (CheckAvailableInSpareParts(currentClient))
                {
                    ReplaceDetail(currentClient);
                }
                break;

            case "2":
                if (CheckAvailableInSpareParts(currentClient) == false)
                {
                    RefuseToClient(currentClient);
                }
                break;

            case "3":
                if (CheckAvailableInSpareParts(currentClient) == false)
                {
                    SetUnnecessarySparePart(currentClient);
                }
                break;

            case "4":
                _isWorking = false;
                break;

            default:
                Console.WriteLine("Неизвестная команда");
                break;
            }
        }
示例#6
0
        private int TakeReplacementWorkCost(ClientsCar currentClient)
        {
            int workCost = 0;

            foreach (var replacementWork in _replacementWorkCheckList)
            {
                if (currentClient.DamagedDetail.Name == replacementWork.Name.Substring(7))
                {
                    workCost += replacementWork.Cost;
                    break;
                }
            }
            return(workCost);
        }
示例#7
0
        private void ShowCurrentClient()
        {
            Console.SetCursorPosition(0, _spareParts.Count + 2);
            if (_clientsCarsQueue.Count == 0)
            {
                Console.WriteLine("Очередь пуста.");
            }
            else
            {
                ClientsCar currentClient = _clientsCarsQueue.Peek();

                Console.WriteLine("У клиента:");

                currentClient.ShowDamagedDetailInfo();

                ShowCostOfReplacementWork(currentClient);
            }
        }
示例#8
0
        private void ShowCostOfReplacementWork(ClientsCar currentClient)
        {
            int workCost = 0;

            foreach (var sparePart in _spareParts)
            {
                if (CheckAvailableInSpareParts(currentClient))
                {
                    workCost += sparePart.Cost;

                    foreach (var replacementWork in _replacementWorkCheckList)
                    {
                        if (currentClient.DamagedDetail.Name == replacementWork.Name.Substring(7))
                        {
                            workCost += replacementWork.Cost;

                            Console.WriteLine($"Стоимость замены: {currentClient.DamagedDetail.Name} составит: {workCost}");
                            break;
                        }
                    }
                    break;
                }
            }
        }