Exemplo n.º 1
0
        private static void AddLeutenantGeneral(string[] tokens)
        {
            LieutenantGeneral general = new LieutenantGeneral(tokens[1], tokens[2], tokens[3], double.Parse(tokens[4]));

            for (int i = 5; i < tokens.Length; i++)
            {
                Private privat = (Private)soldiers.Single(s => s.Id == tokens[i]);
                general.AddPrivate(privat);
            }

            soldiers.Add(general);
        }
        private ISoldier AddGeneral(string[] cmdArgs, int id, string firstName, string lastName)
        {
            ISoldier           soldier;
            decimal            salary            = decimal.Parse(cmdArgs[4]);
            ILieutenantGeneral lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);

            foreach (var pId in cmdArgs.Skip(5))
            {
                ISoldier @private = this.soldiers.First(s => s.Id == int.Parse(pId));

                lieutenantGeneral.AddPrivate(@private);
            }
            soldier = lieutenantGeneral;
            return(soldier);
        }
Exemplo n.º 3
0
        private ISoldier AddGeneral(string[] commandArgs, int ID, string firstName, string lastName)
        {
            ISoldier soldier;
            decimal  salary = decimal.Parse(commandArgs[4]);

            LieutenantGeneral general = new LieutenantGeneral(ID, firstName, lastName, salary);

            foreach (var item in commandArgs.Skip(5))
            {
                ISoldier privateToAdd = soldiers.First(s => s.ID == int.Parse(item));

                general.AddPrivate(privateToAdd);
            }

            soldier = general;
            return(soldier);
        }
        private LieutenantGeneral CreateLieutenantGeneral(string[] soldierParams)
        {
            // LieutenantGeneral<id> < firstName > < lastName > < salary > < private1Id > < private2Id > … < privateNId >
            string  id        = soldierParams[0];
            string  firstName = soldierParams[1];
            string  lastName  = soldierParams[2];
            decimal salary    = decimal.Parse(soldierParams[3]);

            LieutenantGeneral lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);

            for (int i = 4; i < soldierParams.Length; i++)
            {
                string  newPrivateId = soldierParams[i];
                Private newPrivate   = (Private)this.soldiers.Where(s => s.Id == newPrivateId).FirstOrDefault();
                lieutenantGeneral.AddPrivate(newPrivate);
            }

            return(lieutenantGeneral);
        }
Exemplo n.º 5
0
        private void LieutenantGeneralCreator(string[] inputArr)
        {
            string  id                   = inputArr[1];
            string  firstName            = inputArr[2];
            string  lastName             = inputArr[3];
            decimal salary               = decimal.Parse(inputArr[4]);
            var     newLieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);

            for (int i = 5; i < inputArr.Length; i++)
            {
                if (soldiersList.Any(x => x.Id == inputArr[i]))
                {
                    Private toAdd = (Private)soldiersList.FirstOrDefault(x => x.Id == inputArr[i]);
                    newLieutenantGeneral.AddPrivate(toAdd);
                }
            }

            soldiersList.Add(newLieutenantGeneral);
        }
Exemplo n.º 6
0
        private static LieutenantGeneral CreateLieutenant(
            string id,
            string firstName,
            string lastName,
            decimal salary,
            List <Private> privates,
            List <string> commandParts)
        {
            var lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);

            foreach (var privateId in commandParts.Skip(5))
            {
                var privateSoldier = privates.Where(x => x.Id == privateId).FirstOrDefault();

                lieutenantGeneral?.AddPrivate(privateSoldier);
            }

            return(lieutenantGeneral);
        }
Exemplo n.º 7
0
        public static void Main(string[] args)
        {
            Dictionary <string, ISoldier> soldiersById = new Dictionary <string, ISoldier>();

            while (true)
            {
                string line = Console.ReadLine();

                if (line == "End")
                {
                    break;
                }

                string[] parts = line.Split();

                string type      = parts[0];
                string id        = parts[1];
                string firstName = parts[2];
                string lastName  = parts[3];


                if (type == nameof(Private))
                {
                    decimal salary = decimal.Parse(parts[4]);
                    soldiersById[id] = new Private(id, firstName, lastName, salary);
                }
                else if (type == nameof(LieutenantGeneral))
                {
                    decimal            salary            = decimal.Parse(parts[4]);
                    ILieutenantGeneral lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);

                    for (int i = 5; i < parts.Length; i++)
                    {
                        string privateId = parts[i];

                        if (!soldiersById.ContainsKey(privateId))
                        {
                            continue;
                        }

                        lieutenantGeneral.AddPrivate((IPrivate)soldiersById[privateId]);
                    }

                    soldiersById[id] = lieutenantGeneral;
                }
                else if (type == nameof(Engineer))
                {
                    decimal salary = decimal.Parse(parts[4]);

                    bool isCorpsValid = Enum.TryParse(parts[5], out Corps corps);

                    if (!isCorpsValid)
                    {
                        continue;
                    }

                    IEngineer engineer = new Engineer(id, firstName, lastName, salary, corps);

                    for (int i = 6; i < parts.Length; i += 2)
                    {
                        string part        = parts[i];
                        int    hoursWorked = int.Parse(parts[i + 1]);

                        IRepair repair = new Repair(part, hoursWorked);

                        engineer.AddRepair(repair);
                    }

                    soldiersById[id] = engineer;
                }
                else if (type == nameof(Commando))
                {
                    decimal salary = decimal.Parse(parts[4]);

                    bool isCorpsValid = Enum.TryParse(parts[5], out Corps corps);

                    if (!isCorpsValid)
                    {
                        continue;
                    }

                    ICommando commando = new Commando(id, firstName, lastName, salary, corps);

                    for (int i = 6; i < parts.Length; i += 2)
                    {
                        string codeName = parts[i];
                        string state    = parts[i + 1];

                        bool isMissionValid = Enum.TryParse(state, out MissionState missionState);

                        if (!isMissionValid)
                        {
                            continue;
                        }

                        IMission mission = new Mission(codeName, missionState);

                        commando.AddMission(mission);
                    }

                    soldiersById[id] = commando;
                }
                else if (type == nameof(Spy))
                {
                    int codeNumber = int.Parse(parts[4]);

                    ISpy spy = new Spy(id, firstName, lastName, codeNumber);

                    soldiersById[id] = spy;
                }
            }

            foreach (var soldier in soldiersById.Values)
            {
                Console.WriteLine(soldier);
            }
        }
Exemplo n.º 8
0
        static void Main(string[] args)
        {
            List <ISoldier> soldiers = new List <ISoldier>();
            List <Private>  privates = new List <Private>();
            string          text     = Console.ReadLine();

            while (text != "End")
            {
                string[] split     = text.Split();
                string   type      = split[0];
                string   id        = split[1];
                string   firstName = split[2];
                string   lastName  = split[3];
                decimal  salary    = decimal.Parse(split[4]);

                switch (type)
                {
                case "Private":
                    Private @private = new Private(id, firstName, lastName, salary);
                    soldiers.Add(@private);
                    privates.Add(@private);
                    break;

                case "LieutenantGeneral":
                    LieutenantGeneral lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);

                    for (int i = 5; i < split.Length; i++)
                    {
                        if (privates.Any(s => s.Id == split[i]))
                        {
                            lieutenantGeneral.AddPrivate(privates.FirstOrDefault(s => s.Id == split[i]));
                        }
                    }

                    soldiers.Add(lieutenantGeneral);
                    break;

                case "Engineer":
                    string corp = split[5];

                    if (Enum.IsDefined(typeof(Enums.Corp), corp))
                    {
                        Engineer engineer = new Engineer(id, firstName, lastName, salary, Enum.Parse <Enums.Corp>(corp));

                        for (int i = 6; i < split.Length; i += 2)
                        {
                            engineer.AddRepair(new Repair(split[i], int.Parse(split[i + 1])));
                        }

                        soldiers.Add(engineer);
                    }
                    break;

                case "Commando":
                    corp = split[5];

                    if (Enum.IsDefined(typeof(Enums.Corp), corp))
                    {
                        Commando commando = new Commando(id, firstName, lastName, salary, Enum.Parse <Enums.Corp>(corp));

                        for (int i = 6; i < split.Length; i += 2)
                        {
                            if (Enum.IsDefined(typeof(Enums.State), split[i + 1]))
                            {
                                commando.AddMission(new Mission(split[i], Enum.Parse <Enums.State>(split[i + 1])));
                            }
                        }

                        soldiers.Add(commando);
                    }
                    break;

                case "Spy":
                    int codeNumber = (int)salary;
                    soldiers.Add(new Spy(id, firstName, lastName, codeNumber));
                    break;
                }

                text = Console.ReadLine();
            }

            foreach (var soldier in soldiers)
            {
                Console.WriteLine(soldier);
            }
        }
Exemplo n.º 9
0
        static void Main(string[] args)
        {
            string input = Console.ReadLine();

            while (input != "End")
            {
                string[] splitted = input.Split();

                string  soldierType = splitted[0];
                int     id          = int.Parse(splitted[1]);
                string  firstName   = splitted[2];
                string  lastName    = splitted[3];
                decimal salary      = decimal.Parse(splitted[4]);

                ISoldier soldier = null;

                try
                {
                    switch (soldierType)
                    {
                    case "Private":
                        soldier = new Private(id, firstName, lastName, salary);
                        break;

                    case "Spy":
                        soldier = new Spy(id, firstName, lastName, int.Parse(splitted[4]));
                        break;

                    case "LieutenantGeneral":
                        LieutenantGeneral lieutenant = new LieutenantGeneral(id, firstName, lastName, salary);

                        for (int i = 5; i < splitted.Length; i++)
                        {
                            int      privateId      = int.Parse(splitted[i]);
                            ISoldier currentPrivate = soldiers
                                                      .FirstOrDefault(s => s.Id == privateId);
                            lieutenant.AddPrivate(currentPrivate);
                        }

                        soldier = lieutenant;
                        break;

                    case "Engineer":
                        string   engineerCorps = splitted[5];
                        Engineer engineer      = new Engineer(id, firstName, lastName, salary, engineerCorps);

                        for (int i = 6; i < splitted.Length; i += 2)
                        {
                            string  repairPart  = splitted[i];
                            int     repairHours = int.Parse(splitted[i + 1]);
                            IRepair repair      = new Repair(repairPart, repairHours);
                            engineer.AddRepair(repair);
                        }

                        soldier = engineer;
                        break;

                    case "Commando":
                        string   commandoCorps = splitted[5];
                        Commando commando      = new Commando(id, firstName, lastName, salary, commandoCorps);

                        for (int i = 6; i < splitted.Length; i += 2)
                        {
                            string missionCodeName = splitted[i];
                            string missionState    = splitted[i + 1];

                            try
                            {
                                IMission mission = new Mission(missionCodeName, missionState);
                                commando.AddMission(mission);
                            }
                            catch (ArgumentException) { }
                        }

                        soldier = commando;
                        break;

                    default:
                        throw new ArgumentException("Invalid soldier type!");
                    }
                    soldiers.Add(soldier);
                }
                catch (ArgumentException) { }

                input = Console.ReadLine();
            }

            foreach (var soldier in soldiers)
            {
                Console.WriteLine(soldier);
            }
        }
Exemplo n.º 10
0
        public static void Main()
        {
            List <ISoldier> soldiers = new List <ISoldier>();

            while (true)
            {
                string cmd = Console.ReadLine();
                if (cmd == "End")
                {
                    break;
                }

                string[] cmdArgs = cmd.Split(' ', StringSplitOptions.RemoveEmptyEntries);
                switch (cmdArgs[0])
                {
                case "Private":
                    var @private = new Private(int.Parse(cmdArgs[1]), cmdArgs[2], cmdArgs[3], decimal.Parse(cmdArgs[4]));
                    soldiers.Add(@private);
                    break;

                case "LieutenantGeneral":
                    var ltGeneral = new LieutenantGeneral(int.Parse(cmdArgs[1]), cmdArgs[2], cmdArgs[3], decimal.Parse(cmdArgs[4]));
                    for (int i = 5; i < cmdArgs.Length; i++)
                    {
                        int privateId = int.Parse(cmdArgs[i]);
                        ltGeneral.AddPrivate((Private)soldiers.Find(s => s.GetType().Name == "Private" && s.Id == privateId));
                    }

                    soldiers.Add(ltGeneral);

                    break;

                case "Engineer":
                    try
                    {
                        var engineer = new Engineer(int.Parse(cmdArgs[1]), cmdArgs[2], cmdArgs[3], decimal.Parse(cmdArgs[4]), cmdArgs[5]);
                        for (int i = 6; i < cmdArgs.Length; i += 2)
                        {
                            var repair = new Repair(cmdArgs[i], int.Parse(cmdArgs[i + 1]));
                            engineer.AddRepair(repair);
                        }

                        soldiers.Add(engineer);
                    }
                    catch (ArgumentException)
                    {
                        continue;
                    }

                    break;

                case "Commando":
                    try
                    {
                        var comando = new Comando(int.Parse(cmdArgs[1]), cmdArgs[2], cmdArgs[3], decimal.Parse(cmdArgs[4]), cmdArgs[5]);
                        for (int i = 6; i < cmdArgs.Length; i += 2)
                        {
                            try
                            {
                                var mission = new Mission(cmdArgs[i], cmdArgs[i + 1]);
                                comando.AddMission(mission);
                            }
                            catch (ArgumentException)
                            {
                                continue;
                            }
                        }

                        soldiers.Add(comando);
                    }
                    catch (ArgumentException)
                    {
                        continue;
                    }

                    break;

                case "Spy":
                    var spy = new Spy(int.Parse(cmdArgs[1]), cmdArgs[2], cmdArgs[3], int.Parse(cmdArgs[4]));
                    soldiers.Add(spy);
                    break;
                }
            }

            soldiers.ForEach(s => Console.WriteLine(s));
        }
Exemplo n.º 11
0
        static void Main(string[] args)
        {
            var soldiers = new Dictionary <int, ISoldier>();

            while (true)
            {
                string[] input = Console.ReadLine().Split();
                if (input[0] == "End")
                {
                    break;
                }

                int    id        = int.Parse(input[1]);
                string firstName = input[2];
                string lastName  = input[3];


                if (input[0] == "Private")
                {
                    decimal salary = decimal.Parse(input[4]);
                    soldiers.Add(id, new Private(id, firstName, lastName, salary));
                }
                else if (input[0] == "LieutenantGeneral")
                {
                    decimal salary  = decimal.Parse(input[4]);
                    var     general = new LieutenantGeneral(id, firstName, lastName, salary);

                    for (int i = 5; i < input.Length; i++)
                    {
                        Private @private = (Private)soldiers[int.Parse(input[i])];
                        general.AddPrivate(@private);
                    }

                    soldiers.Add(id, general);
                }
                else if (input[0] == "Commando")
                {
                    decimal salary = decimal.Parse(input[4]);
                    string  corps  = input[5];
                    if (corps != "Airforces" && corps != "Marines")
                    {
                        continue;
                    }

                    var commando = new Commando(id, firstName, lastName, salary, corps);

                    for (int i = 6; i < input.Length; i += 2)
                    {
                        var mission = new Mission(input[i], input[i + 1]);
                        commando.AddMission(mission);
                    }

                    soldiers.Add(id, commando);
                }
                else if (input[0] == "Engineer")
                {
                    decimal salary = decimal.Parse(input[4]);
                    string  corps  = input[5];
                    if (corps != "Airforces" && corps != "Marines")
                    {
                        continue;
                    }

                    var engineer = new Engineer(id, firstName, lastName, salary, corps);

                    for (int i = 6; i < input.Length; i += 2)
                    {
                        var repair = new Repair(input[i], int.Parse(input[i + 1]));
                        engineer.AddRepair(repair);
                    }

                    soldiers.Add(id, engineer);
                }
                else if (input[0] == "Spy")
                {
                    int codeNumber = int.Parse(input[4]);
                    soldiers.Add(id, new Spy(id, firstName, lastName, codeNumber));
                }
            }

            foreach (var soldier in soldiers)
            {
                Console.WriteLine(soldier.Value);
            }
        }
Exemplo n.º 12
0
        static void Main(string[] args)
        {
            Dictionary <string, ISoldier> soldiersById = new Dictionary <string, ISoldier>();

            while (true)
            {
                string[] input = Console.ReadLine().Split();

                if (input[0] == "End")
                {
                    break;
                }

                string type      = input[0];
                string id        = input[1];
                string firstName = input[2];
                string lastName  = input[3];

                if (type == nameof(Private))
                {
                    decimal salary = decimal.Parse(input[4]);

                    soldiersById[id] = new Private(id, firstName, lastName, salary);
                }
                else if (type == nameof(LieutenantGeneral))
                {
                    decimal salary = decimal.Parse(input[4]);

                    ILieutenantGeneral lieutenant = new LieutenantGeneral(id, firstName, lastName, salary);

                    for (int i = 5; i < input.Length; i++)
                    {
                        if (soldiersById.ContainsKey(input[5]))
                        {
                            lieutenant.AddPrivate((IPrivate)soldiersById[input[i]]);
                        }
                    }

                    soldiersById[id] = lieutenant;
                }
                else if (type == nameof(Engineer))
                {
                    decimal salary = decimal.Parse(input[4]);

                    if (!Enum.TryParse(input[5], out Corps corps))
                    {
                        continue;
                    }

                    IEngineer engineer = new Engineer(id, firstName, lastName, salary, corps);

                    for (int i = 6; i < input.Length; i++)
                    {
                        string part  = input[i++];
                        int    hours = int.Parse(input[i]);

                        engineer.AddRepair(new Repair(part, hours));
                    }

                    soldiersById[id] = engineer;
                }
                else if (type == nameof(Commando))
                {
                    decimal salary = decimal.Parse(input[4]);

                    if (!Enum.TryParse(input[5], out Corps corps))
                    {
                        continue;
                    }

                    ICommando commando = new Commando(id, firstName, lastName, salary, corps);

                    for (int i = 6; i < input.Length; i++)
                    {
                        string codeName = input[i++];

                        if (!Enum.TryParse(input[i], out MissionState missionState))
                        {
                            continue;
                        }

                        commando.AddMission(new Mission(codeName, missionState));
                    }

                    soldiersById[id] = commando;
                }
                else if (type == nameof(Spy))
                {
                    int codeNumber = int.Parse(input[4]);

                    ISpy spy = new Spy(id, firstName, lastName, codeNumber);

                    soldiersById[id] = spy;
                }
            }

            foreach (var soldier in soldiersById)
            {
                Console.WriteLine(soldier.Value);
            }
        }
Exemplo n.º 13
0
        public static void Main()
        {
            Dictionary <string, ISoldier> soldiersById = new Dictionary <string, ISoldier>();

            while (true)
            {
                string line = Console.ReadLine();

                if (line == "End")
                {
                    break;
                }

                string[] parts = line.Split();

                string type      = parts[0];
                string id        = parts[1];
                string firstName = parts[2];
                string lastName  = parts[3];


                //•	Private: "Private <id> <firstName> <lastName> <salary>"
                if (type == nameof(Private))
                {
                    decimal salary = decimal.Parse(parts[4]);
                    soldiersById[id] = new Private(id, firstName, lastName, salary);
                }

                //•	LeutenantGeneral: "LieutenantGeneral <id> <firstName> <lastName> <salary>
                //<private1Id> <private2Id> … <privateNId>" where privateXId will always be an Id of a Private already received through the input.
                else if (type == nameof(LieutenantGeneral))
                {
                    decimal            salary           = decimal.Parse(parts[4]);
                    ILieutenantGeneral leutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);
                    for (int i = 5; i < parts.Length; i++)
                    {
                        string privateId = parts[i];
                        if (!soldiersById.ContainsKey(privateId))
                        {
                            continue;
                        }
                        leutenantGeneral.AddPrivate((IPrivate)soldiersById[privateId]); // иска IPrivate  и го кастваме
                    }



                    soldiersById[id] = leutenantGeneral;
                }

                //•	Engineer: "Engineer <id> <firstName> <lastName> <salary> <corps> <repair1Part> <repair1Hours> … <repairNPart> <repairNHours>" where repairXPart is the name of a repaired part and repairXHours the hours it took to repair it(the two parameters will always come paired).
                else if (type == nameof(Engineer))
                {
                    decimal salary       = decimal.Parse(parts[4]);
                    bool    isCorpsValid = Enum.TryParse(parts[5], out Corps corps); // после ползваме директно corps v инит на Енгинера

                    if (!isCorpsValid)
                    {
                        continue;
                    }
                    IEngineer engineer = new Engineer(id, firstName, lastName, salary, corps); // corps go vzema ot enum 3 reda po nagore

                    for (int i = 6; i < parts.Length; i += 2)
                    {
                        string repairPart  = parts[i];
                        int    hoursWorked = int.Parse(parts[i + 1]);

                        IRepair repair = new Repair(repairPart, hoursWorked);

                        engineer.AddRepair(repair);
                    }
                    soldiersById[id] = engineer;
                }
                //•	Commando: "Commando <id> <firstName> <lastName> <salary> <corps>
                //<mission1CodeName>  <mission1state> … <missionNCodeName> <missionNstate>" a missions code name, description and state will always come together.
                else if (type == nameof(Commando))
                {
                    decimal salary       = decimal.Parse(parts[4]);
                    bool    isCorpsValid = Enum.TryParse(parts[5], out Corps corps);
                    if (!isCorpsValid)
                    {
                        continue;
                    }
                    ICommando commando = new Commando(id, firstName, lastName, salary, corps);
                    for (int i = 6; i < parts.Length; i += 2)
                    {
                        string missionCodeName       = parts[i];
                        string missionState          = parts[i + 1];
                        bool   isMissIonStateIsValid = Enum.TryParse(missionState, out MissionState missState);
                        if (!isMissIonStateIsValid)
                        {
                            continue;
                        }

                        IMission mission = new Mission(missionCodeName, missState);
                        commando.AddMission(mission);
                    }
                    soldiersById[id] = commando;
                }
                //•	Spy: "Spy <id> <firstName> <lastName> <codeNumber>"
                else if (type == nameof(Spy))
                {
                    int  codeNumber = int.Parse(parts[4]);
                    ISpy spy        = new Spy(id, firstName, lastName, codeNumber);
                    soldiersById[id] = spy;
                }
            }

            foreach (var soldier in soldiersById.Values)
            {
                Console.WriteLine(soldier);
            }
        }
Exemplo n.º 14
0
        static void Main(string[] args)
        {
            Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB");

            Dictionary <string, ISoldier> soldiersByID = new Dictionary <string, ISoldier>();

            string command;

            while ((command = Console.ReadLine()) != "End")
            {
                string[] commandArgs = command.Split();

                string soldierType = commandArgs[0];
                string id          = commandArgs[1];
                string firstName   = commandArgs[2];
                string lastName    = commandArgs[3];

                if (soldierType == typeof(Private).Name)
                {
                    decimal salary = decimal.Parse(commandArgs[4]);
                    soldiersByID[id] = new Private(id, firstName, lastName, salary);
                }
                else if (soldierType == typeof(LieutenantGeneral).Name)
                {
                    decimal salary = decimal.Parse(commandArgs[4]);

                    ILieutenantGeneral lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);


                    for (int i = 5; i < commandArgs.Length; i++)
                    {
                        string privateId = commandArgs[i];

                        lieutenantGeneral.AddPrivate((IPrivate)soldiersByID[privateId]);
                    }

                    soldiersByID[id] = lieutenantGeneral;
                }
                else if (soldierType == typeof(Engineer).Name)
                {
                    //•	Engineer:
                    // Name: < firstName > < lastName > Id: < id > Salary: < salary > Corps: < corps >Repairs:
                    // < repair1 ToString() >
                    // < repair2 ToString() >
                    //< repairN ToString() >

                    decimal salary = decimal.Parse(commandArgs[4]);

                    bool isCorpsValid = Enum.TryParse(commandArgs[5], out SoldierCorpEnum corps);

                    if (!isCorpsValid)
                    {
                        continue;
                    }

                    IEngineer engineer = new Engineer(id, firstName, lastName, salary, corps);

                    for (int i = 6; i < commandArgs.Length; i += 2)
                    {
                        string part        = commandArgs[i];
                        int    hoursWorked = int.Parse(commandArgs[i + 1]);

                        IRepair repair = new Repair(part, hoursWorked);

                        engineer.AddRepair(repair);
                    }

                    soldiersByID[id] = engineer;
                }
                else if (soldierType == typeof(Commando).Name)
                {
                    decimal salary = decimal.Parse(commandArgs[4]);

                    bool isCorpsValid = Enum.TryParse(commandArgs[5], out SoldierCorpEnum corps);

                    if (!isCorpsValid)
                    {
                        continue;
                    }

                    ICommando commando = new Commando(id, firstName, lastName, salary, corps);

                    for (int i = 6; i < commandArgs.Length; i += 2)
                    {
                        string codeName = commandArgs[i];
                        string state    = commandArgs[i + 1];

                        bool isMissionValid = Enum.TryParse(state, out MissionStateEnum missionState);

                        if (!isMissionValid)
                        {
                            continue;
                        }

                        IMission mission = new Mission(codeName, missionState);

                        commando.AddMision(mission);
                    }
                    soldiersByID[id] = commando;
                }
                else if (soldierType == typeof(Spy).Name)
                {
                    // •	Spy:
                    //Name: < firstName > < lastName > Id: < id >
                    //Code Number: < codeNumber >

                    int codeNumber = int.Parse(commandArgs[4]);

                    ISpy spy = new Spy(id, firstName, lastName, codeNumber);

                    soldiersByID[id] = spy;
                }
            }

            foreach (var soldierr in soldiersByID.Values)
            {
                Console.WriteLine(soldierr);
            }
        }
Exemplo n.º 15
0
        public void Run()
        {
            string line = Console.ReadLine();

            while (line != "End")
            {
                string[] args = line.Split(" ", StringSplitOptions.RemoveEmptyEntries);
                string   type = args[0];

                try
                {
                    switch (type)
                    {
                    case "Private":
                        Private privateSoldier = this.privateFactory.MakePrivateSoldier(args);
                        this.soldiers.Add(privateSoldier);
                        break;

                    case "LieutenantGeneral":
                        LieutenantGeneral lieutenantGeneral =
                            this.lieutenantGeneralFactory.MakeLieutenantGeneral(args);

                        for (int i = 5; i < args.Length; i++)
                        {
                            Private currentPrivate =
                                (Private)this.soldiers.FirstOrDefault(p => p.Id == int.Parse(args[i]));

                            lieutenantGeneral.AddPrivate(currentPrivate);
                        }

                        this.soldiers.Add(lieutenantGeneral);

                        break;

                    case "Engineer":
                        Engineer engineer = this.engineerFactory.MakeEngineer(args);

                        for (int i = 6; i < args.Length; i += 2)
                        {
                            string name   = args[i];
                            int    hours  = int.Parse(args[i + 1]);
                            Repair repair = this.repairFactory.MakeRepair(name, hours);
                            engineer.AddRepair(repair);
                        }

                        this.soldiers.Add(engineer);
                        break;

                    case "Commando":
                        Commando commando = this.commandoFactory.MakeCommando(args);

                        for (int i = 6; i < args.Length; i += 2)
                        {
                            string name  = args[i];
                            string state = args[i + 1];

                            Mission mission = this.missionFactory.MakeMission(name, state);
                            commando.AddMission(mission);
                        }

                        this.soldiers.Add(commando);
                        break;

                    case "Spy":
                        Spy spy = this.spyFactory.MakeSpy(args);
                        this.soldiers.Add(spy);
                        break;

                    default:
                        break;
                    }
                }
                catch (Exception)
                {
                }

                line = Console.ReadLine();
            }

            foreach (var soldier in this.soldiers)
            {
                Console.WriteLine(soldier.ToString());
            }
        }
Exemplo n.º 16
0
        public static void Main(string[] args)
        {
            List <ISoldier> soldiers = new List <ISoldier>();

            do
            {
                var inputCommand = Console.ReadLine();
                if (inputCommand == "End")
                {
                    break;
                }
                var inputData = inputCommand
                                .Split(new[] { ' ' });
                var     id        = inputData[1];
                var     firstName = inputData[2];
                var     lastName  = inputData[3];
                decimal salary;
                ICorp   corps;
                bool    solderPressent = soldiers.Any(x => x.Id == id);
                switch (inputData[0])
                {
                case "Private":
                    salary = decimal.Parse(inputData[4]);
                    if (solderPressent)
                    {
                        var index       = soldiers.FindIndex(x => x.Id == id);
                        var tempPrivate = (IPrivate)soldiers[index];
                        tempPrivate.FirstName = firstName;
                        tempPrivate.LastName  = lastName;
                        tempPrivate.FirstName = firstName;
                        tempPrivate.Salary    = salary;
                        soldiers[index]       = tempPrivate;
                        //Console.WriteLine(tempPrivate);
                    }
                    else
                    {
                        IPrivate privateSolder = new Private(id, firstName, lastName, salary);
                        soldiers.Add(privateSolder);
                        //Console.WriteLine(privateSolder);
                    }


                    break;

                case "LieutenantGeneral":
                    salary = decimal.Parse(inputData[4]);
                    if (solderPressent)
                    {
                        var index = soldiers.FindIndex(x => x.Id == id);
                        var tempLieutenantGeneral = (ILieutenantGeneral)soldiers[index];
                        tempLieutenantGeneral.FirstName = firstName;
                        tempLieutenantGeneral.LastName  = lastName;
                        tempLieutenantGeneral.FirstName = firstName;
                        tempLieutenantGeneral.Salary    = salary;
                        for (int i = 4; i < inputData.Length; i++)
                        {
                            var currentId = inputData[i];

                            if (soldiers.Any(x => x.Id == currentId))
                            {
                                var indexPrivate = soldiers.FindIndex(x => x.Id == currentId);
                                tempLieutenantGeneral.AddPrivate((IPrivate)soldiers[indexPrivate]);
                            }
                        }
                        soldiers[index] = tempLieutenantGeneral;

                        //Console.WriteLine(tempLieutenantGeneral);
                    }
                    else
                    {
                        ILieutenantGeneral lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);

                        for (int i = 4; i < inputData.Length; i++)
                        {
                            var currentId = inputData[i];

                            if (soldiers.Any(x => x.Id == currentId))
                            {
                                //var result = soldiers.ToList();
                                var index = soldiers.FindIndex(x => x.Id == currentId);
                                lieutenantGeneral.AddPrivate((IPrivate)soldiers[index]);
                            }
                        }
                        //Console.WriteLine(lieutenantGeneral);
                        soldiers.Add(lieutenantGeneral);
                    }
                    break;

                case "Engineer":
                    salary = decimal.Parse(inputData[4]);
                    try
                    {
                        corps = new Corp(inputData[5]);
                    }
                    catch (Exception)
                    {
                        continue;
                    }
                    IEngineer         engineer   = new Engineer(id, firstName, lastName, salary, corps);
                    HashSet <IRepair> repairList = new HashSet <IRepair>();
                    for (int i = 6; i < inputData.Length; i += 2)
                    {
                        IRepair repair = new Repair(inputData[i], int.Parse(inputData[i + 1]));
                        engineer.AddRepairs(repair);
                    }

                    //Console.WriteLine(engineer);
                    soldiers.Add(engineer);
                    break;

                case "Commando":
                    salary = decimal.Parse(inputData[4]);
                    try
                    {
                        corps = new Corp(inputData[5]);
                    }
                    catch (Exception)
                    {
                        continue;
                    }
                    ICommando       commando    = new Commando(id, firstName, lastName, salary, corps);
                    List <IMission> missionList = new List <IMission>();
                    IMission        mission;
                    for (int i = 6; i < inputData.Length; i += 2)
                    {
                        try
                        {
                            mission = new Mission(inputData[i], inputData[i + 1]);
                            commando.AddMission(mission);
                        }
                        catch (Exception)
                        {
                            continue;
                        }
                    }

                    //Console.WriteLine(commando);
                    soldiers.Add(commando);
                    break;

                case "Spy":
                    var  codeNumber = int.Parse(inputData[4]);
                    ISpy spy        = new Spy(id, firstName, lastName, codeNumber);
                    //Console.WriteLine(spy);
                    soldiers.Add(spy);
                    break;

                default:
                    break;
                }
            } while (true);

            foreach (var item in soldiers)
            {
                Console.WriteLine(item);
            }
        }
        public static void Main(string[] args)
        {
            List <ISoldier> soldiers = new List <ISoldier>();
            string          command  = string.Empty;

            while ((command = Console.ReadLine()) != "End")
            {
                string[] input = command
                                 .Split(' ', StringSplitOptions.RemoveEmptyEntries);
                int    id        = int.Parse(input[1]);
                string firstName = input[2];
                string lastName  = input[3];


                switch (input[0])
                {
                case "Private":
                    Private @private = new Private(id, firstName, lastName, decimal.Parse(input[4]));
                    soldiers.Add(@private);
                    break;

                case "LieutenantGeneral":
                    decimal           salary            = decimal.Parse(input[4]);
                    LieutenantGeneral lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary);
                    for (int i = 5; i < input.Length; i++)
                    {
                        ISoldier currentPrivate = soldiers.FirstOrDefault(s => s.Id.Equals(int.Parse(input[i])));
                        if (currentPrivate != null)
                        {
                            if (currentPrivate is Private currentSoldier)
                            {
                                lieutenantGeneral.AddPrivate(currentSoldier);
                            }
                        }
                    }
                    soldiers.Add(lieutenantGeneral);
                    break;

                case "Engineer":
                    salary = decimal.Parse(input[4]);
                    string corps = input[5];
                    if (!(corps != "Airforces" || corps != "Marines"))
                    {
                        continue;
                    }
                    Engineer engineer = new Engineer(id, firstName, lastName, salary, corps);

                    for (int i = 6; i < input.Length; i++)
                    {
                        if (i + 1 < input.Length)
                        {
                            if (int.TryParse(input[i + 1], out int repairHours))
                            {
                                Repair repair = new Repair(input[i], repairHours);
                                engineer.AddRepair(repair);
                            }
                        }
                    }

                    soldiers.Add(engineer);
                    break;

                case "Commando":
                    salary = decimal.Parse(input[4]);
                    corps  = input[5];
                    if (!(corps != "Airforces" || corps != "Marines"))
                    {
                        continue;
                    }
                    Commando commando = new Commando(id, firstName, lastName, salary, corps);
                    for (int i = 6; i < input.Length; i++)
                    {
                        if (i + 1 < input.Length)
                        {
                            if (input[i + 1] != "inProgress")
                            {
                                i++;
                                continue;
                            }
                            Mission mission = new Mission(input[i], input[i + 1]);
                            commando.AddMissin(mission);
                            i++;
                        }
                    }
                    soldiers.Add(commando);
                    break;

                case "Spy":
                    int codeNumber = int.Parse(input[4]);
                    Spy spy        = new Spy(id, firstName, lastName, codeNumber);
                    soldiers.Add(spy);
                    break;

                default:
                    break;
                }
            }
            foreach (var soldir in soldiers)
            {
                Console.WriteLine(soldir);
            }
        }
Exemplo n.º 18
0
        static void Main(string[] args)
        {
            List <ISoldier> list     = new List <ISoldier>();
            List <Private>  privates = new List <Private>();

            string[] input = Console.ReadLine().Split();

            while (input[0] != "End")
            {
                string soldier   = input[0];
                string id        = input[1];
                string firstName = input[2];
                string lastName  = input[3];

                switch (soldier)
                {
                case "Private":
                    decimal salary = decimal.Parse(input[4]);
                    Private privat = new Private(id, firstName, lastName, salary);
                    privates.Add(privat);
                    list.Add(privat);
                    break;

                case "LieutenantGeneral":
                    decimal           salaryLieut       = decimal.Parse(input[4]);
                    LieutenantGeneral lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salaryLieut);
                    string[]          privatesIds       = input.Skip(5).ToArray();

                    for (int i = 0; i < privatesIds.Length; i++)
                    {
                        foreach (var privateSoldier in privates)
                        {
                            if (privateSoldier.Id == privatesIds[i])
                            {
                                lieutenantGeneral.AddPrivate(privateSoldier);
                            }
                        }
                    }
                    list.Add(lieutenantGeneral);
                    break;

                case "Engineer":
                    string corps = input[5];
                    if (corps == "Airforces" || corps == "Marines")
                    {
                        decimal  salaryEngi = decimal.Parse(input[4]);
                        Engineer engineer   = new Engineer(id, firstName, lastName, salaryEngi, corps);
                        string[] repairs    = input.Skip(6).ToArray();

                        for (int i = 0; i < repairs.Length; i += 2)
                        {
                            string partName    = repairs[i];
                            int    workedHours = int.Parse(repairs[i + 1]);

                            Repair repair = new Repair(partName, workedHours);
                            engineer.AddRepair(repair);
                        }
                        list.Add(engineer);
                    }

                    break;

                case "Commando":
                    string corpsComm = input[5];
                    if (corpsComm == "Airforces" || corpsComm == "Marines")
                    {
                        decimal  salaryComm = decimal.Parse(input[4]);
                        Commando commando   = new Commando(id, firstName, lastName, salaryComm, corpsComm);
                        string[] missions   = input.Skip(6).ToArray();

                        for (int i = 0; i < missions.Length; i += 2)
                        {
                            string codeName = missions[i];
                            string state    = missions[i + 1];

                            if (state == "inProgress" || state == "Finished")
                            {
                                Mission mission = new Mission(codeName, state);
                                commando.Missions.Add(mission);
                            }
                        }
                        list.Add(commando);
                    }
                    break;

                case "Spy":
                    int codeNumber = int.Parse(input[4]);
                    Spy spy        = new Spy(id, firstName, lastName, codeNumber);
                    list.Add(spy);
                    break;
                }


                input = Console.ReadLine().Split();
            }

            foreach (var soldier in list)
            {
                Console.WriteLine(soldier);
            }
        }
Exemplo n.º 19
0
        static void Main(string[] args)
        {
            ISoldier soldier = null;

            ICollection <ISoldier> soldiers = new List <ISoldier>();

            string input = Console.ReadLine();

            while (input != "End")
            {
                string[] token = input.Split();

                switch (token[0])
                {
                case "Private":
                    soldier = new Private(int.Parse(token[1]), token[2], token[3], decimal.Parse(token[4]));
                    soldiers.Add(soldier);
                    break;

                case "LieutenantGeneral":
                    LieutenantGeneral lieutenantGeneral = new LieutenantGeneral(int.Parse(token[1]), token[2], token[3], decimal.Parse(token[4]));
                    for (int i = 5; i < token.Length; i++)
                    {
                        if (soldiers.FirstOrDefault(s => s.Id == int.Parse(token[i])) is IPrivate @private)
                        {
                            lieutenantGeneral.AddPrivate(@private);
                        }
                    }
                    soldier = lieutenantGeneral as ILieutenantGeneral;
                    soldiers.Add(soldier);
                    break;

                case "Engineer":
                    IEngineer engineer;
                    try
                    {
                        engineer = new Engineer(int.Parse(token[1]), token[2], token[3], decimal.Parse(token[4]), token[5]);
                        soldier  = engineer as IEngineer;
                        for (int i = 6; i < token.Length - 1; i += 2)
                        {
                            IRepair repair = new Repair(token[i], int.Parse(token[i + 1])) as IRepair;
                            engineer.AddRepair(repair);
                        }
                        soldiers.Add(soldier);
                    }
                    catch (ArgumentException)
                    {
                        //Console.WriteLine(e.Message);
                        //throw;
                    }
                    break;

                case "Commando":
                    try
                    {
                        ICommando commando = new Commando(int.Parse(token[1]), token[2], token[3], decimal.Parse(token[4]), token[5]);
                        soldier = commando as ISoldier;
                        for (int i = 6; i < token.Length - 1; i += 2)
                        {
                            IMission mission = new Mission(token[i], token[i + 1]) as IMission;
                            if (mission.State == "inProgress" || mission.State == "Finished")
                            {
                                commando.AddMission(mission);
                            }
                        }
                        soldiers.Add(soldier);
                    }
                    catch (System.ArgumentException)
                    {
                        //throw;
                    }

                    break;

                case "Spy":
                    ISpy spy = new Spy(int.Parse(token[1]), token[2], token[3], int.Parse(token[4].ToLower()));
                    soldier = spy as ISoldier;
                    soldiers.Add(soldier);
                    break;

                default:
                    break;
                }
                input = Console.ReadLine();
            }

            foreach (var @item in soldiers)
            {
                Console.WriteLine(@item);
            }
        }