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(); }
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(); } }
private void RefuseToClient(ClientsCar currentClient) { _moneyBalance -= currentClient.DamagedDetail.Cost; Console.WriteLine($"Клиенту отказано. Вы получили штраф в размере: {currentClient.DamagedDetail.Cost}"); Console.ReadKey(); _clientsCarsQueue.Dequeue(); }
private bool CheckAvailableInSpareParts(ClientsCar currentClient) { foreach (var sparePart in _spareParts) { if (currentClient.DamagedDetail.Name == sparePart.Name && sparePart.Count > 0) { return(true); } } return(false); }
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; } }
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); }
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); } }
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; } } }