Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace Avtoservis
- {
- class Program
- {
- static void Main(string[] args)
- {
- Detail cardanShaft = new Detail(3200, "Карданный вал");
- Detail crankshaftSeals = new Detail(200, "Сальники коленвала");
- Detail gasolinePump = new Detail(5400, "Бензонасос");
- Detail stoppingSupport = new Detail(2900, "Тормозной суппорт");
- Detail ignitionSwitch = new Detail(300, "Выключатель зажигания");
- BoxOfDitails cardanShaftsBox = new BoxOfDitails(cardanShaft, 3);
- BoxOfDitails crankshaftSealsBox = new BoxOfDitails(crankshaftSeals, 3);
- BoxOfDitails gasolinePumpBox = new BoxOfDitails(gasolinePump, 3);
- BoxOfDitails stoppingSupportBox = new BoxOfDitails(stoppingSupport, 3);
- BoxOfDitails ignitionSwitchBox = new BoxOfDitails(ignitionSwitch, 3);
- List<BoxOfDitails> boxOfDitails = new List<BoxOfDitails> { cardanShaftsBox, crankshaftSealsBox, gasolinePumpBox , stoppingSupportBox , ignitionSwitchBox };
- Breaking brokenCardanShaft = new Breaking(cardanShaft, 2000, "");
- Breaking brokenCrankshaftSeals = new Breaking(cardanShaft, 2000, "");
- Breaking brokenGasolinePump = new Breaking(cardanShaft, 2000, "");
- Breaking brokenStoppingSupport = new Breaking(cardanShaft, 2000, "");
- List<Breaking> breakings = new List<Breaking> { brokenCardanShaft, brokenCrankshaftSeals, brokenGasolinePump , brokenStoppingSupport };
- CarService carService = new CarService(1000, new Warehouse(boxOfDitails), breakings, -500);
- Car car1 = new Car(cardanShaft);
- Car car2 = new Car(ignitionSwitch);
- carService.ServeCar(car1);
- Console.WriteLine();
- carService.ServeCar(car2);
- }
- }
- class CarService
- {
- private int _balance;
- private Warehouse _warehouse;
- private List<Breaking> _breakings;
- private int _refusalPenalty;
- public CarService(int balance, Warehouse warehouse, List<Breaking> breakings, int refusalPenalty)
- {
- _balance = balance;
- _warehouse = warehouse;
- _breakings = breakings;
- _refusalPenalty = refusalPenalty;
- }
- public void ServeCar(Car car)
- {
- Breaking breaking = IdentifyBrakedown(car.BrokenDetal);
- if(breaking != null)
- {
- Console.WriteLine($"Поступила машина. Поломка: {car.BrokenDetal.Name}, необходимая деталь: {car.BrokenDetal.Name}");
- if (_warehouse.CheckAvailabilityDetail(car.BrokenDetal))
- {
- RenovateCar(breaking);
- return;
- }
- }
- RefuseToRepair();
- }
- public void CalculateTheClient(int paid)
- {
- _balance += paid;
- if (paid > 0)
- {
- Console.WriteLine($"Получена плата в размере: {paid}. Баланс: {_balance}");
- }
- else
- {
- Console.WriteLine($"Уплачен штраф в размере: {paid}. Баланс: {_balance}");
- }
- }
- private void RenovateCar(Breaking breaking)
- {
- Console.WriteLine("Машина принята в ремонт.");
- _warehouse.TakeDetail(breaking.NecessaryDetail);
- int paid = breaking.NecessaryDetail.Price + breaking.PriceForWork;
- Console.WriteLine("Ремонт выполнен.");
- CalculateTheClient(paid);
- }
- private void RefuseToRepair()
- {
- Console.WriteLine("В ремонте отказано.");
- CalculateTheClient(_refusalPenalty);
- }
- private Breaking IdentifyBrakedown(Detail detail)
- {
- foreach (var breaking in _breakings)
- {
- if(breaking.NecessaryDetail.Name == detail.Name)
- {
- return breaking;
- }
- }
- return null;
- }
- }
- class Warehouse
- {
- private List<BoxOfDitails> _boxesWithDetails;
- public Warehouse(List<BoxOfDitails> details)
- {
- _boxesWithDetails = details;
- }
- public bool CheckAvailabilityDetail(Detail detail)
- {
- for (int i = 0; i < _boxesWithDetails.Count; i++)
- {
- if (_boxesWithDetails[i].Detail.Name == detail.Name)
- {
- if (_boxesWithDetails[i].CountDetails > 0)
- {
- Console.WriteLine($"Деталь '{detail}' есть в наличии.");
- return true;
- }
- else
- {
- break;
- }
- }
- }
- Console.WriteLine($"Детали '{detail}' нет в наличии.");
- return false;
- }
- public void TakeDetail(Detail detail)
- {
- for (int i = 0; i < _boxesWithDetails.Count; i++)
- {
- if(_boxesWithDetails[i].Detail.Name == detail.Name)
- {
- _boxesWithDetails[i].TakeOneDetail();
- }
- }
- }
- }
- class BoxOfDitails
- {
- public Detail Detail { get; private set; }
- public int CountDetails { get; private set; }
- public BoxOfDitails(Detail detail, int countDetails)
- {
- Detail = detail;
- CountDetails = countDetails;
- }
- public void TakeOneDetail()
- {
- CountDetails -= 1;
- }
- }
- class Breaking
- {
- public Detail NecessaryDetail { get; private set; }
- public int PriceForWork { get; private set; }
- public string Name { get; private set; }
- public Breaking(Detail detail, int price, string name)
- {
- NecessaryDetail = detail;
- PriceForWork = price;
- Name = name;
- }
- }
- class Detail
- {
- public int Price { get; private set;}
- public string Name { get; private set;}
- public Detail(int price, string name)
- {
- Price = price;
- Name = name;
- }
- }
- class Car
- {
- public Detail BrokenDetal { get; private set; }
- public Car(Detail brokenDetail)
- {
- BrokenDetal = brokenDetail;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement