Exemple #1
0
        private static void AddCommando(string[] tokens)
        {
            try
            {
                Commando commando = new Commando(tokens[1], tokens[2],
                                                 tokens[3], decimal.Parse(tokens[4]), tokens[5]);

                for (int i = 6; i < tokens.Length; i += 2)
                {
                    try
                    {
                        Mission mission = new Mission(tokens[i], tokens[i + 1]);
                        commando.AddMission(mission);
                    }
                    catch (ArgumentException ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }

                soldiers.Add(commando);
            }
            catch (ArgumentException ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        private static ICommando AddCommando(string[] cmdArgs, int id, string firstName, string lastName, decimal salary, string corps)
        {
            ICommando commando = new Commando(id, firstName, lastName, salary, corps);

            var missinArgs = cmdArgs
                             .Skip(6)
                             .ToArray();

            for (int i = 0; i < missinArgs.Length; i += 2)
            {
                try
                {
                    string missionCodeName = missinArgs[i];
                    string missionState    = missinArgs[i + 1];

                    IMisson misson = new Mission(missionCodeName, missionState);

                    commando.AddMission(misson);
                }
                catch (InvalidStateException ise)
                {
                    continue;
                }
            }

            return(commando);
        }
Exemple #3
0
        private void AddCommando(string[] arr)
        {
            try
            {
                Commando comando = null;
                if (arr.Length > 5)
                {
                    comando = new Commando(
                        int.Parse(arr[0]),
                        arr[1],
                        arr[2],
                        decimal.Parse(arr[3]),
                        arr[4],
                        MakeMissionArray(arr.Skip(5).ToArray()));
                }
                else
                {
                    comando = new Commando(
                        int.Parse(arr[0]),
                        arr[1],
                        arr[2],
                        decimal.Parse(arr[3]),
                        arr[4]);
                }

                solgers.Add(comando);
            }
            catch (Exception e)
            {
            }
        }
Exemple #4
0
        static void CreateCommando(string[] tokens)
        {
            List <IMission> missions = new List <IMission>();

            for (int i = 6; i < tokens.Length; i += 2)
            {
                try
                {
                    missions.Add(new Mission(tokens[i], tokens[i + 1]));
                }
                catch (Exception) { }
            }

            try
            {
                Commando cmd = new Commando(tokens[1],
                                            tokens[2],
                                            tokens[3],
                                            double.Parse(tokens[4]),
                                            tokens[5],
                                            missions);

                Print(cmd);
            }
            catch (Exception) { }
        }
Exemple #5
0
        public static Commando Create(string[] parts)
        {
            Commando current = new Commando(parts[1], parts[2], parts[3], decimal.Parse(parts[4]), parts[5]);

            current.AddMissions(parts);
            return(current);
        }
Exemple #6
0
        private static Commando CreateCommando(
            string id,
            string firstName,
            string lastName,
            decimal salary,
            string corps,
            List <string> commandParts)
        {
            var commando = new Commando(id, firstName, lastName, salary, corps);

            for (int i = 6; i < commandParts.Count - 1; i += 2)
            {
                try
                {
                    var missionName  = commandParts[i];
                    var missionState = commandParts[i + 1];

                    commando.AddMission(new Mission(missionName, missionState));
                }
                catch (ArgumentException)
                {
                    continue;
                }
            }

            return(commando);
        }
Exemple #7
0
        private static void FillList(List <Soldier> soldiers, string[] parts)
        {
            switch (parts[0])
            {
            case "Private":
                soldiers.Add(Private.Create(parts));
                break;

            case "LieutenantGeneral":
                soldiers.Add(LieutenantGeneral.Create(parts, soldiers));
                break;

            case "Engineer":
                soldiers.Add(Engineer.Create(parts));
                break;

            case "Commando":
                soldiers.Add(Commando.Create(parts));
                break;

            case "Spy":
                soldiers.Add(Spy.Create(parts));
                break;

            default:
                break;
            }
        }
        private static void AddSoldier(List <Soldier> army, string inputLine)
        {
            var splitedInput = inputLine.Split();

            var soldierType = splitedInput[0];
            var id          = splitedInput[1];
            var firstName   = splitedInput[2];
            var lastName    = splitedInput[3];

            bool isPrivate          = soldierType.Equals("Private", StringComparison.OrdinalIgnoreCase);
            bool isLeutenantGeneral = soldierType.Equals("LeutenantGeneral", StringComparison.OrdinalIgnoreCase);
            bool isEngineer         = soldierType.Equals("Engineer", StringComparison.OrdinalIgnoreCase);
            bool isCommando         = soldierType.Equals("Commando", StringComparison.OrdinalIgnoreCase);
            bool isSpy = soldierType.Equals("Spy", StringComparison.OrdinalIgnoreCase);

            if (isPrivate)
            {
                var salary = double.Parse(splitedInput[4]);

                var inputPrivate = new Private(firstName, lastName, id, salary);
                army.Add(inputPrivate);
            }
            else if (isLeutenantGeneral)
            {
                var             salary   = double.Parse(splitedInput[4]);
                List <ISoldier> privates = ExtractPrivates(splitedInput, army);

                var inputLeutenantGeneral = new LeutenantGeneral(firstName, lastName, id, salary, privates);
                army.Add(inputLeutenantGeneral);
            }
            else if (isEngineer)
            {
                var            salary  = double.Parse(splitedInput[4]);
                var            corps   = splitedInput[5];
                List <IRepair> repairs = ExtractRepairs(splitedInput);

                var inputEngineer = new Engineer(firstName, lastName, id, salary, corps, repairs);
                army.Add(inputEngineer);
            }
            else if (isCommando)
            {
                var             salary   = double.Parse(splitedInput[4]);
                var             corps    = splitedInput[5];
                List <IMission> missions = ExtractMissions(splitedInput);

                var inputCommando = new Commando(firstName, lastName, id, salary, corps, missions);
                army.Add(inputCommando);
            }
            else if (isSpy)
            {
                var code = int.Parse(splitedInput[4]);

                var inputSpy = new Spy(firstName, lastName, id, code);
                army.Add(inputSpy);
            }
        }
Exemple #9
0
 static void Main(string[] args)
 {
     //Private 1 Pesho Peshev 22.22
     //Commando 13 Stamat Stamov 13.1 Airforces
     //Private 222 Toncho Tonchev 80.08
     //LieutenantGeneral 3 Joro Jorev 100 222 1
     //End
     ISoldier soldier  = new Private(1, "Pesho", "Peshev", 22.22M);
     ISoldier soldier1 = new Commando(13, "Stamat", "Stamov", 13.1M, Enums.SoldierCorps);
 }
Exemple #10
0
 private static void GetMissionsForCommando(Commando commando, string[] soldierArgs)
 {
     for (int index = 6; index < soldierArgs.Length; index += 2)
     {
         if (IsValidMissionState(soldierArgs[index + 1]))
         {
             Mission mission = new Mission(soldierArgs[index], soldierArgs[index + 1]);
             commando.Missions.Add(mission);
         }
     }
 }
Exemple #11
0
        static void Main(string[] args)
        {
            List <Soldier> army = new List <Soldier>();
            string         input;

            while ((input = Console.ReadLine()) != "End")
            {
                string[] soldierArgs = input.Split();
                string   division    = soldierArgs[0];
                switch (division)
                {
                case "Private":
                    Private privateSoldier =
                        new Private(soldierArgs[1], soldierArgs[2], soldierArgs[3], decimal.Parse(soldierArgs[4]));
                    army.Add(privateSoldier);
                    break;

                case "LeutenantGeneral":
                    LeutenantGeneral leutenantGeneral
                        = new LeutenantGeneral(soldierArgs[1], soldierArgs[2], soldierArgs[3], decimal.Parse(soldierArgs[4]));
                    army.Add(leutenantGeneral);
                    GetPrivatesForLeutenantGeneral(leutenantGeneral, army, soldierArgs);
                    break;

                case "Engineer":
                    if (IsValidCorps(soldierArgs[5]))
                    {
                        Engineer engineer
                            = new Engineer(soldierArgs[1], soldierArgs[2], soldierArgs[3], decimal.Parse(soldierArgs[4]), soldierArgs[5]);
                        army.Add(engineer);
                        GetRepairForEngineer(engineer, soldierArgs);
                    }
                    break;

                case "Commando":
                    if (IsValidCorps(soldierArgs[5]))
                    {
                        Commando commando
                            = new Commando(soldierArgs[1], soldierArgs[2], soldierArgs[3], decimal.Parse(soldierArgs[4]), soldierArgs[5]);
                        army.Add(commando);
                        GetMissionsForCommando(commando, soldierArgs);
                    }
                    break;

                case "Spy":
                    Spy spy = new Spy(soldierArgs[1], soldierArgs[2], soldierArgs[3], int.Parse(soldierArgs[4]));
                    army.Add(spy);
                    break;

                default: break;
                }
            }
            army.ForEach(soldier => Console.WriteLine(soldier));
        }
        private Commando CreateCommando(string[] soldierParams)
        {
            //Commando <id> <firstName> <lastName> <salary> <corps> <mission1CodeName>  <mission1state> … <missionNCodeName> <missionNstate>"
            string  id            = soldierParams[0];
            string  firstName     = soldierParams[1];
            string  lastName      = soldierParams[2];
            decimal salary        = decimal.Parse(soldierParams[3]);
            string  corpsAsString = soldierParams[4];

            CorpsEnum corps;

            if (corpsAsString == "Airforces")
            {
                corps = CorpsEnum.Airforces;
            }
            else if (corpsAsString == "Marines")
            {
                corps = CorpsEnum.Marines;
            }
            else
            {
                throw new InvalidCastException(INVALID_CORPS_MSG);
            }

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

            for (int i = 5; i < soldierParams.Length; i += 2)
            {
                string missionName          = soldierParams[i];
                string missionStateAsString = soldierParams[i + 1];

                MissionStateEnum missionState;

                if (missionStateAsString == "inProgress")
                {
                    missionState = MissionStateEnum.inProgress;
                }
                else if (missionStateAsString == "Finished")
                {
                    missionState = MissionStateEnum.Finished;
                }
                else
                {
                    missionState = MissionStateEnum.Invalid;
                }

                if (missionState == MissionStateEnum.inProgress || missionState == MissionStateEnum.Finished)
                {
                    commando.AddMission(missionName, missionState);
                }
            }

            return(commando);
        }
        public void Run()
        {
            string soldierInput = this.reader.ReadLine();

            while (soldierInput.ToLower() != "end")
            {
                string[] soldierArgs   = soldierInput.Split(' ').ToArray();
                string   soldierType   = soldierArgs[0];
                string[] soldierParams = soldierArgs.Skip(1).ToArray();

                try
                {
                    if (soldierType == "Private")
                    {
                        Private newPrivate = CreatePrivate(soldierParams);
                        soldiers.Add(newPrivate);
                    }
                    else if (soldierType == "LieutenantGeneral")
                    {
                        LieutenantGeneral lieutenantGeneral = CreateLieutenantGeneral(soldierParams);
                        soldiers.Add(lieutenantGeneral);
                    }
                    else if (soldierType == "Engineer")
                    {
                        Engineer engineer = CreateEngineer(soldierParams);
                        soldiers.Add(engineer);
                    }
                    else if (soldierType == "Commando")
                    {
                        Commando commando = CreateCommando(soldierParams);
                        soldiers.Add(commando);
                    }
                    else if (soldierType == "Spy")
                    {
                        Spy spy = CreateSpy(soldierParams);
                        soldiers.Add(spy);
                    }
                }
                catch (InvalidCastException)
                {
                }

                soldierInput = this.reader.ReadLine();
            }

            foreach (Soldier soldier in soldiers)
            {
                this.writer.WriteLine(soldier.ToString());
            }
        }
 private static void GetMissions(string[] tokens, Commando commando)
 {
     for (int i = 6; i < tokens.Length; i += 2)
     {
         try
         {
             Mission mission = new Mission(tokens[i], tokens[i + 1]);
             commando.Missions.Add(mission);
         }
         catch (ArgumentException)
         {
             continue;
         }
     }
 }
Exemple #15
0
 private static void SaveCommando(string[] inputParts)
 {
     try
     {
         string          corp     = inputParts[5];
         List <IMission> missions = SaveMissions(inputParts);
         ICommando       commando = new Commando(int.Parse(inputParts[1]), inputParts[2], inputParts[3], double.Parse(inputParts[4]), corp, missions);
         soldiers.Add(commando);
     }
     catch (Exception ex)
     {
         // Log exception
         return;
     }
 }
Exemple #16
0
        private void CommandoCreator(string[] inputArr)
        {
            string  id        = inputArr[1];
            string  firstName = inputArr[2];
            string  lastName  = inputArr[3];
            decimal salary    = decimal.Parse(inputArr[4]);
            string  corps     = inputArr[5];

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

            for (int i = 6; i < inputArr.Length; i += 2)
            {
                commando.AddMissions(inputArr[i], inputArr[i + 1]);
            }

            soldiersList.Add(commando);
        }
Exemple #17
0
        static void Main(string[] args)
        {
            string command;
            var    allSoldiers = new List <Soldier>();

            while ((command = Console.ReadLine()) != "End")
            {
                var cmdArgs     = command.Split();
                var soldierType = cmdArgs[0];
                switch (soldierType)
                {
                case "Private":
                    var privateS = new Private(cmdArgs[1], cmdArgs[2], cmdArgs[3], decimal.Parse(cmdArgs[4]));
                    allSoldiers.Add(privateS);
                    break;

                case "LieutenantGeneral":
                    var lieutenantGeneral = new LieutenantGeneral(cmdArgs[1], cmdArgs[2], cmdArgs[3], decimal.Parse(cmdArgs[4]));
                    lieutenantGeneral.GetPrivates(cmdArgs, allSoldiers);
                    allSoldiers.Add(lieutenantGeneral);
                    break;

                case "Engineer":
                    var engineer = new Engineer();
                    engineer.ReadEngineer(cmdArgs, allSoldiers);
                    break;

                case "Commando":
                    var commando = new Commando();
                    commando.ReadCommando(cmdArgs, allSoldiers);
                    break;

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

                default:
                    break;
                }
            }
            Console.WriteLine(String.Join(Environment.NewLine, allSoldiers));
        }
Exemple #18
0
        private static void CreateCommando(string[] tokens, int id, string firstName, string lastName, decimal salary, string corp)
        {
            if (IsValidCorp(corp))
            {
                List <IMission> missions = new List <IMission>();
                for (int i = 6; i < tokens.Length; i += 2)
                {
                    string missionName  = tokens[i];
                    string missionState = tokens[i + 1];

                    if (IsValidMission(missionState))
                    {
                        Mission mission = new Mission(missionName, missionState);
                        missions.Add(mission);
                    }
                }
                Commando commando = new Commando(id, firstName, lastName, salary, corp, missions);
                Console.WriteLine(commando.ToString());
            }
        }
        private static void AddCommandoToList(List <Soldier> soldiers, string[] soldierData)
        {
            GetIdNameAndSalary(soldierData, out int id, out string firstName, out string lastName, out double salary);
            string corps    = soldierData[5];
            var    missions = new List <Mission>();

            for (int i = 6; i < soldierData.Length; i += 2)
            {
                string codeName = soldierData[i];
                string state    = soldierData[i + 1];
                if (!IsValidMission(state))
                {
                    continue;
                }
                var mission = new Mission(codeName, state);
                missions.Add(mission);
            }
            var commando = new Commando(id, firstName, lastName, salary, corps, missions);

            soldiers.Add(commando);
        }
Exemple #20
0
 private static Commando CreateCommando(string[] inputArgs, int id, string firstName, string lastName)
 {
     if (VerifyCorps(inputArgs, out Corps corps))
     {
         var      salary       = decimal.Parse(inputArgs[4]);
         var      missionsArgs = inputArgs.Skip(6).ToArray();
         Commando commando     = new Commando(id, firstName, lastName, salary, corps);
         for (int i = 0; i < missionsArgs.Length; i += 2)
         {
             var codeName = missionsArgs[i];
             var state    = missionsArgs[i + 1];
             if (state == "inProgress" || state == "Finished")
             {
                 Mission mission = new Mission(codeName, state);
                 commando.Missions.Add(mission);
             }
         }
         return(commando);
     }
     return(null);
 }
        public static void AddCommando(List <Soldier> soldiers, string[] commandArray)
        {
            try
            {
                Commando commando = new Commando(commandArray[1], commandArray[2], commandArray[3], decimal.Parse(commandArray[4]), commandArray[5]);

                for (int i = 6; i < commandArray.Length; i += 2)
                {
                    try
                    {
                        Mission mission = new Mission(commandArray[i], commandArray[i + 1]);
                        commando.Missions.Add(mission);
                    }
                    catch (ArgumentException)
                    {
                    }
                }

                soldiers.Add(commando);
            }
            catch (ArgumentException)
            {
            }
        }
Exemple #22
0
        private static void AddCommando(string[] tokens)
        {
            try
            {
                Commando commando = new Commando(tokens[1], tokens[2], tokens[3], double.Parse(tokens[4]), tokens[5]);

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

                soldiers.Add(commando);
            }
            catch (ArgumentException)
            {
            }
        }
Exemple #23
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);
            }
        }
Exemple #24
0
        static void Main(string[] args)
        {
            List <Private> privates = new List <Private>();

            while (true)
            {
                try
                {
                    string[] soldierArgs = Console.ReadLine().Split();
                    string   type        = soldierArgs[0];

                    if (type == "End")
                    {
                        break;
                    }
                    string id        = soldierArgs[1];
                    string firstName = soldierArgs[2];
                    string lastName  = soldierArgs[3];

                    if (type == "Spy")
                    {
                        int codeNumber = int.Parse(soldierArgs[4]);
                        var spy        = new Spy(id, firstName, lastName, codeNumber);
                        Console.WriteLine(spy);
                    }
                    else
                    {
                        decimal salary = decimal.Parse(soldierArgs[4]);
                        if (type == "Private")
                        {
                            var @private = new Private(id, firstName, lastName, salary);
                            privates.Add(@private);
                            Console.WriteLine(@private);
                        }
                        else if (type == "LieutenantGeneral")
                        {
                            var privatesGeneral = new List <Private>();
                            for (int i = 5; i < soldierArgs.Length; i++)
                            {
                                var currentPrivate = privates.FirstOrDefault(x => x.Id == soldierArgs[i]);
                                privatesGeneral.Add(currentPrivate);
                            }
                            var leutenant = new LieutenantGeneral(id, firstName, lastName, salary, privatesGeneral);
                            Console.WriteLine(leutenant);
                        }
                        else if (type == "Engineer")
                        {
                            var    repairs = new List <Repair>();
                            string corps   = soldierArgs[5];
                            for (int i = 6; i < soldierArgs.Length; i += 2)
                            {
                                string name   = soldierArgs[i];
                                int    hours  = int.Parse(soldierArgs[i + 1]);
                                var    repair = new Repair(name, hours);
                                repairs.Add(repair);
                            }
                            var engineer = new Engineer(id, firstName, lastName, salary, corps, repairs);
                            Console.WriteLine(engineer);
                        }
                        else if (type == "Commando")
                        {
                            var    missions = new List <Mission>();
                            string corps    = soldierArgs[5];

                            for (int i = 6; i < soldierArgs.Length; i += 2)
                            {
                                try
                                {
                                    string name    = soldierArgs[i];
                                    string state   = soldierArgs[i + 1];
                                    var    mission = new Mission(name, state);
                                    missions.Add(mission);
                                }
                                catch (Exception)
                                {
                                }
                            }
                            var commando = new Commando(id, firstName, lastName, salary, corps, missions);
                            Console.WriteLine(commando);
                        }
                    }
                }
                catch (Exception)
                {
                }
            }
        }
Exemple #25
0
        public static void Main()
        {
            List <Soldier> soldiers = new List <Soldier>();

            string userInput = Console.ReadLine();

            while (userInput != "End")
            {
                string[] soldierInfo = userInput.Split(" ");

                string  soldierType = soldierInfo[0];
                int     id          = int.Parse(soldierInfo[1]);
                string  firstName   = soldierInfo[2];
                string  lastName    = soldierInfo[3];
                decimal salary;
                bool    isSalary = decimal.TryParse(soldierInfo[4], out salary);

                Soldier newSoldier;

                switch (soldierType)
                {
                case "Private":
                    newSoldier = new Private(id, firstName, lastName, salary);
                    soldiers.Add(newSoldier);
                    break;

                case "LieutenantGeneral":
                    int[]          privatesToAddIds = soldierInfo.Skip(5).Select(int.Parse).ToArray();
                    List <Private> privates         = GetPrivates(privatesToAddIds, soldiers);

                    newSoldier = new LieutenantGeneral(id, firstName, lastName, salary, privates);
                    soldiers.Add(newSoldier);

                    break;

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

                    break;

                case "Engineer":
                    string        corps   = soldierInfo[5];
                    List <Repair> repairs = GetRepairs(soldierInfo);

                    try
                    {
                        Engineer newEngineer = new Engineer(id, firstName, lastName, salary, corps, repairs);
                        soldiers.Add(newEngineer);
                    }
                    catch
                    {
                        userInput = Console.ReadLine();
                        continue;
                    }

                    break;

                case "Commando":
                    string         commandoCorps = soldierInfo[5];
                    List <Mission> missions      = GetMissions(soldierInfo);

                    Commando newCommando = new Commando(id, firstName, lastName, salary, commandoCorps, missions);
                    soldiers.Add(newCommando);

                    break;
                }

                userInput = Console.ReadLine();
            }

            Console.WriteLine($"{string.Join(Environment.NewLine, soldiers)}");
        }
Exemple #26
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);
            }
        }
Exemple #27
0
        public void Run()
        {

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

                string[] tokens = input.Split();
                string type = tokens[0];



                if (type == "Private")
                {
                    string id = tokens[1];
                    string firstName = tokens[2];
                    string lastName = tokens[3];
                    double salary = double.Parse(tokens[4]);
                    Private priva = new Private(id, firstName, lastName, salary);
                    privates.Add(priva);
                    Console.WriteLine(priva);


                }
                else if (type == "Spy")
                {
                    Spy spy = new Spy(tokens[1], tokens[2], tokens[3],int.Parse(tokens[4]));
                    Console.WriteLine(spy);
                }
                else if (type == "LieutenantGeneral")
                {
                    LeutenantGeneral lg = new LeutenantGeneral(tokens[1], tokens[2],
                        tokens[3], double.Parse(tokens[4]));
                    if (tokens.Length > 5)
                    {
                        for (int i = 5; i < tokens.Length; i++)
                        {
                            foreach (var item in privates)
                            {
                                if (item.Id == tokens[i])
                                {
                                    lg.Privates.Add(item);
                                }
                            }
                        }
                    }
                    Console.WriteLine(lg);

                }
                else if (type == "Engineer")
                {
                    Engineer engineer = new Engineer(tokens[1], tokens[2],tokens[3], double.Parse(tokens[4]), tokens[5]);

                    if (tokens.Length > 6)
                    {
                        for (int i = 6; i < tokens.Length; i += 2)
                        {
                            string part = tokens[i];
                            int hours = int.Parse(tokens[i + 1]);
                            Repair repair = new Repair(part, hours);
                            engineer.Repairs.Add(repair);
                        }
                    }
                    Console.WriteLine(engineer);
                }
                else if (type == "Commando")
                {
                    Commando commando = new Commando(tokens[1], tokens[2],
                        tokens[3], double.Parse(tokens[4]), tokens[5]);
                    if (tokens.Length > 6)
                    {
                        for (int i = 6; i < tokens.Length; i += 2)
                        {
                            string codeName = tokens[i];
                            string state = tokens[i + 1];
                            Mission mission = new Mission(codeName, state);
                            commando.Missions.Add(mission);
                        }
                    }
                    Console.WriteLine(commando);



                }


            }
        }
Exemple #28
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());
            }
        }
Exemple #29
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);
            }
        }
Exemple #30
0
        static void Main()
        {
            var    privates = new Dictionary <string, Private>();
            string input;

            while ((input = Console.ReadLine()) != "End")
            {
                var     cmdArgs     = input.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                var     soldierType = cmdArgs[0];
                string  id;
                string  firstName;
                string  lastName;
                decimal salary;
                Corps   corps;

                switch (soldierType)
                {
                case "Private":
                    id        = cmdArgs[1];
                    firstName = cmdArgs[2];
                    lastName  = cmdArgs[3];
                    salary    = decimal.Parse(cmdArgs[4]);

                    var privateSoldier = new Private(firstName, lastName, id, salary);
                    privates.Add(id, privateSoldier);
                    Console.WriteLine(privateSoldier);
                    break;

                case "LieutenantGeneral":
                    id        = cmdArgs[1];
                    firstName = cmdArgs[2];
                    lastName  = cmdArgs[3];
                    salary    = decimal.Parse(cmdArgs[4]);
                    var leutenantGeneral = new LieutenantGeneral(firstName, lastName, id, salary);

                    if (cmdArgs.Length >= 5)
                    {
                        for (var i = 5; i < cmdArgs.Length; i++)
                        {
                            string privateId = cmdArgs[i];
                            privateSoldier = privates[privateId];

                            leutenantGeneral.Privates.Add(privateSoldier);
                        }
                    }
                    Console.WriteLine(leutenantGeneral);
                    break;

                case "Engineer":
                    id        = cmdArgs[1];
                    firstName = cmdArgs[2];
                    lastName  = cmdArgs[3];
                    salary    = decimal.Parse(cmdArgs[4]);

                    if (Enum.TryParse(cmdArgs[5], out corps))
                    {
                        var engineer = new Engineer(firstName, lastName, id);

                        if (cmdArgs.Length >= 6)
                        {
                            for (var i = 6; i < cmdArgs.Length; i += 2)
                            {
                                var repairPartName = cmdArgs[i];
                                var repairHours    = int.Parse(cmdArgs[i + 1]);

                                var repair = new Repair(repairPartName, repairHours);
                                engineer.Repairs.Add(repair);
                            }
                        }
                        Console.WriteLine(engineer);
                    }
                    break;

                case "Commando":
                    id        = cmdArgs[1];
                    firstName = cmdArgs[2];
                    lastName  = cmdArgs[3];
                    salary    = decimal.Parse(cmdArgs[4]);

                    if (Enum.TryParse(cmdArgs[5], out corps))
                    {
                        Commando commando = new Commando(firstName, lastName, id, salary, corps);

                        if (cmdArgs.Length > 6)
                        {
                            for (var i = 6; i < cmdArgs.Length; i += 2)
                            {
                                if (Enum.TryParse(cmdArgs[i + 1], out MissionState missionState))
                                {
                                    var missionName = cmdArgs[i];
                                    var mission     = new Mission(missionName, missionState);
                                    commando.Missions.Add(mission);
                                }
                            }
                            Console.WriteLine(commando.ToString());
                        }
                    }
                    break;

                case "Spy":
                    id        = cmdArgs[1];
                    firstName = cmdArgs[2];
                    lastName  = cmdArgs[3];
                    var codeNumber = int.Parse(cmdArgs[4]);

                    var spy = new Spy(id, firstName, lastName, codeNumber);
                    Console.WriteLine(spy);
                    break;

                default:
                    throw new ArgumentException("Invalid Type of Soldier!");
                }
            }
        }