using static System.Console;
namespace ConsoleApp21
{
abstract class Human
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime BDate { get; set; }
public override string ToString()
{
return $"\nLastNane: {LastName}" +
$"FirstName: {FirstName}" +
$"BDate{BDate.ToLongTimeString()}";
}
}
abstract class Employee : Human
{
public string Position { get; set; }
public int Salary { get; set; }
public override string ToString()
{
return base.ToString()+$"Position: {Position} Salary: {Salary} ";
}
}
interface IWorker
{
bool IsWorking { get; }
string Work();
}
interface IManager
{
List<IWorker> Worker { get; set; }
void Organize();
void MakeBuget();
void Control();
}
class Director : Employee, IManager
{
public List<IWorker> Worker { get; set; }
public void MakeBuget() { WriteLine($"Make org buget"); }
public void Control() { WriteLine($"Control working"); }
public void Organize() { WriteLine($"Organize work"); }
}
class Seller : Employee, IWorker
{
bool isWorking = true;
public bool IsWorking { get { return isWorking; } }
public string Work()
{
return "Sale of product";
}
}
class Cashier : Employee, IWorker
{
bool isWorking = true;
public bool IsWorking { get { return isWorking; } }
public string Work()
{
return "Take money";
}
}
class StoreKeeper : Employee, IWorker
{
bool isWorking = true;
public bool IsWorking { get { return isWorking; } }
public string Work()
{
return "keep of product";
}
}
internal class Program
{
static void Main(string[] args)
{
Director director = new Director
{
LastName="Pupkin",
FirstName="Fedor",
BDate=new DateTime(1990,12,10),
Position ="Director",
Salary=200000
};
IWorker seller = new Seller
{
LastName = "Petrov",
FirstName = "Ivan",
BDate = new DateTime(2000, 5, 14),
Position ="Seller",
Salary =80000
};
if (seller is Employee)
{
WriteLine($"Salary of Seller: {(seller as Employee).Salary}");
}
director.Worker= new List<IWorker>
{
seller,
new Cashier{LastName="Sidorov",FirstName="Artem",BDate= new DateTime(2005,4,5),
Position="Cashier",Salary=60000},
new StoreKeeper{LastName="Eryshin",FirstName="Stanislav",BDate= new DateTime(2002,6,23),
Position="Keeper",Salary=70000 }
};
foreach (IWorker worker in director.Worker)
{
WriteLine(worker);
if (worker.IsWorking)
{
WriteLine(worker.Work());
}
}
}
}
}