Difference between revisions of "2020 - Option 5 is missing, it could be to merge 2 companies"
(Created page with "To start this task find the AddCompany method in the simulation class: <syntaxhighlight lang=c#> private void AddCompany() { int balance, x = 0, y...") |
|||
Line 1: | Line 1: | ||
− | To start this task find the AddCompany method in the simulation class: | + | Before we can complete this task we need to add a couple of new methods in different classes. |
+ | Firstly in the 'Company' class we need to add a method to get the current balance: | ||
+ | |||
+ | <syntaxhighlight lang=c#> | ||
+ | public double GetBalance() | ||
+ | { | ||
+ | return balance; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Also in the 'Company' class add the following to be able to access the list of outlets for this company: | ||
+ | |||
+ | <syntaxhighlight lang=c#> | ||
+ | public List<Outlet> Outlets() | ||
+ | { | ||
+ | return outlets; | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | To start the main part of this task, find the AddCompany method in the simulation class: | ||
<syntaxhighlight lang=c#> | <syntaxhighlight lang=c#> | ||
private void AddCompany() | private void AddCompany() |
Latest revision as of 15:29, 17 December 2019
Before we can complete this task we need to add a couple of new methods in different classes. Firstly in the 'Company' class we need to add a method to get the current balance:
public double GetBalance()
{
return balance;
}
Also in the 'Company' class add the following to be able to access the list of outlets for this company:
public List<Outlet> Outlets()
{
return outlets;
}
To start the main part of this task, find the AddCompany method in the simulation class:
private void AddCompany()
{
int balance, x = 0, y = 0;
string companyName, typeOfCompany = "9";
Console.Write("Enter a name for the company: ");
companyName = Console.ReadLine();
Console.Write("Enter the starting balance for the company: ");
balance = Convert.ToInt32(Console.ReadLine());
while (typeOfCompany != "1" && typeOfCompany != "2" && typeOfCompany != "3")
{
Console.Write("Enter 1 for a fast food company, 2 for a family company or 3 for a named chef company: ");
typeOfCompany = Console.ReadLine();
}
if (typeOfCompany == "1")
{
typeOfCompany = "fast food";
}
else if (typeOfCompany == "2")
{
typeOfCompany = "family";
}
else
{
typeOfCompany = "named chief";
}
simulationSettlement.GetRandomLocation(ref x, ref y);
Company newCompany = new Company(companyName, typeOfCompany, balance, x, y, fuelCostPerUnit, baseCostForDelivery);
companies.Add(newCompany);
}
This covers exactly what is required to merge 2 companies together (ie create a new one). So copy this method and paste it underneath, and rename it 'MergeCompanies'.
Add parameters for 'MergeCompanies' for the list of companies and the index number for each company:
private void AddCompany(List<Company> companies, int index1,int index2)
Now edit the method to declare 2 companies ('comp1' and 'comp2'). I have also removed the question about the balance, because we can add the balance of the two companies together instead:
public void MergeCompanies(List<Company> companies, int index1,int index2)
{
Company comp1 = companies[index1];
Company comp2 = companies[index2];
int x = 0, y = 0;
string typeOfCompany = "-1";
Console.WriteLine("Enter a new name for the merged company");
string companyName = Console.ReadLine();
while (typeOfCompany != "1" && typeOfCompany != "2" && typeOfCompany != "3")
{
Console.Write("Enter 1 for a fast food company, 2 for a family company or 3 for a named chef company: ");
typeOfCompany = Console.ReadLine();
}
if (typeOfCompany == "1")
{
typeOfCompany = "fast food";
}
else if (typeOfCompany == "2")
{
typeOfCompany = "family";
}
else
{
typeOfCompany = "named chief";
}
simulationSettlement.GetRandomLocation(ref x, ref y);
Company newCompany = new Company(companyName, typeOfCompany, comp1.GetBalance() + comp2.GetBalance(), x, y, fuelCostPerUnit, baseCostForDelivery);
}
Finally we need to go through each outlet in company 1 and company 2 and add them to the new company. Finally we need to remove the old companies and add the new company:
public void MergeCompanies(List<Company> companies, int index1,int index2)
{
Company comp1 = companies[index1];
Company comp2 = companies[index2];
int x = 0, y = 0;
string typeOfCompany = "-1";
Console.WriteLine("Enter a new name for the merged company");
string companyName = Console.ReadLine();
while (typeOfCompany != "1" && typeOfCompany != "2" && typeOfCompany != "3")
{
Console.Write("Enter 1 for a fast food company, 2 for a family company or 3 for a named chef company: ");
typeOfCompany = Console.ReadLine();
}
if (typeOfCompany == "1")
{
typeOfCompany = "fast food";
}
else if (typeOfCompany == "2")
{
typeOfCompany = "family";
}
else
{
typeOfCompany = "named chief";
}
simulationSettlement.GetRandomLocation(ref x, ref y);
Company newCompany = new Company(companyName, typeOfCompany, comp1.GetBalance() + comp2.GetBalance(), x, y, fuelCostPerUnit, baseCostForDelivery);
foreach (Outlet o in companies[index1].Outlets())
{
newCompany.Outlets().Add(o);
}
foreach (Outlet o in companies[index2].Outlets())
{
newCompany.Outlets().Add(o);
}
companies.Remove(comp1);
companies.Remove(comp2);
companies.Add(newCompany);
}