internal string RegisterCommando(string id, string firstName, string lastName, double salary, string corps, string[] missionsData)
        {
            var missions = new Queue <IMission>();

            for (int i = 0; i < missionsData.Length; i++)
            {
                var codeName = missionsData[i];
                i++;
                var state = missionsData[i];

                try
                {
                    missions.Enqueue(new Mission(codeName, state));
                }
                catch (ArgumentException)
                {
                    continue;
                }
            }

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

            this.soldiers.Add(currentSoldier);

            return(currentSoldier.ToString());
        }
    private static void ExecuteCommandoCommand(List <string> inputLineArgs)
    {
        int       id        = int.Parse(inputLineArgs[0]);
        string    firstName = inputLineArgs[1];
        string    lastName  = inputLineArgs[2];
        double    salary    = double.Parse(inputLineArgs[3]);
        string    corps     = inputLineArgs[4];
        ICommando commando  = new Commando(id, firstName, lastName, salary, corps);

        var missionPairs = inputLineArgs.Skip(5).ToList();

        for (int i = 0; i < missionPairs.Count - 1; i += 2)
        {
            try
            {
                string   codeName = missionPairs[i];
                string   state    = missionPairs[i + 1];
                IMission mission  = new Mission(codeName, state);
                commando.Missions.Add(mission);
            }
            catch
            {
            }
        }

        Console.WriteLine(commando.ToString().Trim());
    }
 public Responseo BeginProcess(Commando command)
 {
     if (!CanProcess(command.Action))
     {
         throw new NotSupportedException("Command not supported");
     }
     _ = messenger.SendAsync(command.ToString());
     return(Responseo.CreateResponse(command, CommandDispatchResult.Ack));
 }
Exemple #4
0
    public static void Main()
    {
        var input    = string.Empty;
        var privates = new List <Private>();

        while ((input = Console.ReadLine()) != "End")
        {
            var tokens      = input.Split();
            var soldierType = tokens[0];

            switch (soldierType)
            {
            case "Private":
                var privateSoldier = new Private(tokens[1], tokens[2], tokens[3], double.Parse(tokens[4]));
                privates.Add(privateSoldier);
                Console.WriteLine(privateSoldier.ToString());
                break;

            case "LeutenantGeneral":
                var soldiers         = tokens.Skip(5).ToArray();
                var leutenantGeneral = new LeutenantGeneral(tokens[1], tokens[2], tokens[3], double.Parse(tokens[4]));
                leutenantGeneral.AddSoldiers(soldiers, privates);
                Console.WriteLine(leutenantGeneral.ToString());
                break;

            case "Engineer":
                if (tokens[5] == "Airforces" || tokens[5] == "Marines")
                {
                    var repairs  = tokens.Skip(6).ToArray();
                    var engineer = new Engineer(tokens[1], tokens[2], tokens[3], double.Parse(tokens[4]), tokens[5]);
                    engineer.AddRepairs(repairs);
                    Console.WriteLine(engineer.ToString());
                }
                break;

            case "Commando":
                if (tokens[5] == "Airforces" || tokens[5] == "Marines")
                {
                    var missions = tokens.Skip(6).ToArray();
                    var commando = new Commando(tokens[1], tokens[2], tokens[3], double.Parse(tokens[4]), tokens[5]);
                    commando.AddMissions(missions);
                    Console.WriteLine(commando.ToString());
                }
                break;

            case "Spy":
                var spy = new Spy(tokens[1], tokens[2], tokens[3], int.Parse(tokens[4]));
                Console.WriteLine(spy.ToString());
                break;
            }
        }
    }
        async Task <Responseo> ExecuteCommandAsync(Commando command)
        {
            var tcs = new TaskCompletionSource <Responseo>();

            if (!commandCompletionSources.TryAdd(command.Sequence, tcs))
            {
                throw new ArgumentException("Attempted to add a duplicate command");
            }
            try
            {
                await messenger.SendAsync(command.ToString()).ConfigureAwait(false);
            }
            catch
            {
                commandCompletionSources.TryRemove(command.Sequence, out _);
                throw;
            }
            return(await tcs.Task.ConfigureAwait(false));
        }
Exemple #6
0
    internal string RegisterCommando(string id, string firstName, string lastName, double salary, string corpsInput, string[] missionsInput)
    {
        var isCorps = Enum.TryParse(corpsInput, false, out Corps corps);

        if (!isCorps)
        {
            return(null);
        }
        Commando commando = new Commando(firstName, lastName, id, salary);

        for (int i = 0; i < missionsInput.Length; i += 2)
        {
            var codeName = missionsInput[i];

            var isStateValid = Enum.TryParse(missionsInput[i + 1], false, out State state);

            if (!isStateValid)
            {
                continue;
            }

            Mission mission = commando.Missions.FirstOrDefault(m => m.CodeName == codeName);
            if (state == State.Finished && mission != null)
            {
                mission.CompleteMission();
            }
            else
            {
                mission = new Mission(codeName, state);

                commando.Missions.Add(mission);
            }
        }

        this.soldiers.Add(commando);

        return(commando.ToString());
    }
Exemple #7
0
        public static void Main()
        {
            var engine = new Engine();

            var entry       = Console.ReadLine();
            var sb          = new StringBuilder();
            var privateList = new List <IPrivate>();

            while (entry != "End")
            {
                try
                {
                    var    soldierInfo = entry.Split().ToList();
                    var    type        = soldierInfo[0];
                    var    id          = soldierInfo[1];
                    var    firstName   = soldierInfo[2];
                    var    lastName    = soldierInfo[3];
                    double salary;
                    string corps;

                    switch (type)
                    {
                    case "Private":
                        salary = double.Parse(soldierInfo[4]);
                        var currentPrivate = new Private(firstName, lastName, id, salary);
                        privateList.Add(currentPrivate);
                        sb.AppendLine(currentPrivate.ToString());
                        break;

                    case "LeutenantGeneral":
                        var leutanantsPrivates = new List <IPrivate>();
                        for (int numOfPrivates = 0; numOfPrivates < soldierInfo.Count - 5; numOfPrivates++)
                        {
                            IPrivate currentPrivateToAdd = privateList.FirstOrDefault(x => x.ID == soldierInfo[5 + numOfPrivates]);
                            leutanantsPrivates.Add(currentPrivateToAdd);
                        }
                        var leutenantGeneral = new LeutanantGeneral(firstName, lastName, id, double.Parse(soldierInfo[4]), leutanantsPrivates);
                        sb.AppendLine(leutenantGeneral.ToString());
                        break;

                    case "Engineer":
                        salary = double.Parse(soldierInfo[4]);
                        corps  = soldierInfo[5];
                        var numOfRepairs = (soldierInfo.Count - 5) / 2;
                        var listRepairs  = new List <Repair>();
                        var index        = 0;
                        for (int i = 0; i < numOfRepairs; i++)
                        {
                            var repairName        = soldierInfo[6 + index];
                            var repairWorkinHours = int.Parse(soldierInfo[7 + index]);
                            var repair            = new Repair(repairName, repairWorkinHours);
                            listRepairs.Add(repair);
                            index += 2;
                        }
                        var currentEngineer = new Engineer(firstName, lastName, id, salary, corps, listRepairs);
                        sb.AppendLine(currentEngineer.ToString());
                        break;

                    case "Commando":
                        salary = double.Parse(soldierInfo[4]);
                        corps  = soldierInfo[5];
                        var numOfMissions = (soldierInfo.Count - 5) / 2;
                        var missionsList  = new List <Mission>();
                        var missionIndex  = 0;
                        for (int i = 0; i < numOfMissions; i++)
                        {
                            var missionName   = soldierInfo[6 + missionIndex];
                            var missionStatus = soldierInfo[7 + missionIndex];
                            var mission       = new Mission(missionName, missionStatus);
                            missionsList.Add(mission);
                            missionIndex += 2;
                        }
                        var currentCommando = new Commando(firstName, lastName, id, salary, corps, missionsList);
                        sb.AppendLine(currentCommando.ToString());
                        break;

                    case "Spy":
                        var codeNumber = soldierInfo[4];
                        var currentSpy = new Spy(firstName, lastName, id, codeNumber);
                        sb.AppendLine(currentSpy.ToString());
                        break;
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                entry = Console.ReadLine();
            }
            Console.WriteLine(sb.ToString().TrimEnd('\n'));
        }
Exemple #8
0
        public void Run()
        {
            string inputLine;

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

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

                if (soldierType == "Private")
                {
                    decimal salary = decimal.Parse(soldierInfo[4]);

                    Private @private = null;
                    @private = new Private(id, firstName, lastName, salary);

                    privates.Add(@private);
                    Console.WriteLine(@private.ToString());
                }

                if (soldierType == "LieutenantGeneral")
                {
                    decimal salary = decimal.Parse(soldierInfo[4]);

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

                    for (int i = 5; i < soldierInfo.Length; i++)
                    {
                        int currentId = int.Parse(soldierInfo[i]);

                        Soldier currentPrivate = privates.FirstOrDefault(p => p.Id == currentId);
                        lieutenantGeneral.Privates.Add(currentPrivate);
                    }

                    privates.Add(lieutenantGeneral);
                    Console.WriteLine(lieutenantGeneral.ToString());
                }

                if (soldierType == "Engineer")
                {
                    decimal salary = decimal.Parse(soldierInfo[4]);

                    if (soldierInfo[5] != "Airforces" && soldierInfo[5] != "Marines")
                    {
                        continue;
                    }

                    Corp     corp     = (Corp)Enum.Parse(typeof(Corp), soldierInfo[5]);
                    Engineer engineer = new Engineer(id, firstName, lastName, salary, corp);

                    for (int i = 6; i < soldierInfo.Length - 1; i = i + 2)
                    {
                        string currentPart  = soldierInfo[i];
                        int    currentHours = int.Parse(soldierInfo[i + 1]);

                        Repair repair = new Repair(currentPart, currentHours);
                        engineer.Repairs.Add(repair);
                    }

                    privates.Add(engineer);
                    Console.WriteLine(engineer.ToString());
                }

                else if (soldierType == "Commando")
                {
                    decimal salary = decimal.Parse(soldierInfo[4]);

                    if (soldierInfo[5] != "Airforces" && soldierInfo[5] != "Marines")
                    {
                        continue;
                    }

                    Corp     corp     = (Corp)Enum.Parse(typeof(Corp), soldierInfo[5]);
                    Commando commando = new Commando(id, firstName, lastName, salary, corp);

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

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

                    privates.Add(commando);
                    Console.WriteLine(commando.ToString());
                }

                else if (soldierType == "Spy")
                {
                    int codeNumber = int.Parse(soldierInfo[4]);
                    Spy spy        = new Spy(id, firstName, lastName, codeNumber);

                    privates.Add(spy);
                    Console.WriteLine(spy.ToString());
                }
            }
        }
        static void Main(string[] args)
        {
            List <Private> privates = new List <Private>();
            StringBuilder  sb       = new StringBuilder();

            string command;

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

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

                switch (soldierType)
                {
                case "Private":
                    decimal privateSalary = decimal.Parse(commTokens[4]);
                    Private newPrivate    = new Private(id, firstName, lastName, privateSalary);
                    sb.AppendLine(newPrivate.ToString());
                    privates.Add(newPrivate);
                    break;

                case "LeutenantGeneral":
                    decimal        leutenantSalary = decimal.Parse(commTokens[4]);
                    List <Private> tempPrivates    = new List <Private>();
                    for (int i = 5; i < commTokens.Length; i++)
                    {
                        int currId      = int.Parse(commTokens[i]);
                        var currPrivate = privates.FirstOrDefault(x => x.Id == currId);
                        if (currPrivate != null)
                        {
                            tempPrivates.Add(currPrivate);
                        }
                    }
                    LeutenantGeneral newLeut = new LeutenantGeneral(id, firstName, lastName, leutenantSalary, tempPrivates);
                    sb.AppendLine(newLeut.ToString());
                    break;

                case "Engineer":
                    decimal   engineerSalary = decimal.Parse(commTokens[4]);
                    CorpsType currEngCorps;
                    bool      isEngCorpsValid = Enum.TryParse(commTokens[5], out currEngCorps);
                    if (isEngCorpsValid)
                    {
                        List <Repair> repairs = new List <Repair>();

                        for (int i = 6; i < commTokens.Length; i += 2)
                        {
                            string partName  = commTokens[i];
                            int    workHours = int.Parse(commTokens[i + 1]);
                            Repair newRepair = new Repair(partName, workHours);

                            repairs.Add(newRepair);
                        }
                        Engineer newEngineer = new Engineer(id, firstName, lastName, engineerSalary, currEngCorps, repairs);
                        sb.AppendLine(newEngineer.ToString());
                    }
                    break;

                case "Commando":
                    decimal   commandoSalary = decimal.Parse(commTokens[4]);
                    CorpsType currCorps;
                    bool      isCorpsValid = Enum.TryParse(commTokens[5], out currCorps);
                    if (isCorpsValid)
                    {
                        List <Mission> missions = new List <Mission>();

                        for (int i = 6; i < commTokens.Length; i += 2)
                        {
                            string    currCodeName = commTokens[i];
                            StateType missionState;
                            bool      isMissionValid = Enum.TryParse(commTokens[i + 1], out missionState);
                            if (isMissionValid)
                            {
                                Mission addMission = new Mission(currCodeName, missionState);
                                missions.Add(addMission);
                            }
                        }
                        Commando newCommando = new Commando(id, firstName, lastName, commandoSalary, currCorps, missions);
                        sb.AppendLine(newCommando.ToString());
                    }
                    break;

                case "Spy":
                    int codeNum = int.Parse(commTokens[4]);
                    Spy newSpy  = new Spy(id, firstName, lastName, codeNum);
                    sb.AppendLine(newSpy.ToString());
                    break;

                default:
                    break;
                }
            }
            string result = sb.ToString().TrimEnd();

            Console.WriteLine(result);
        }
Exemple #10
0
        public void Run()
        {
            string cmd = Console.ReadLine();

            List <Private> privateList = new List <Private>();

            while (cmd != "End")
            {
                string[] info    = cmd.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                string   command = info[0];

                if (command == "Private")
                {
                    Private privates = new Private(info[1], info[2], info[3], decimal.Parse(info[4]));
                    privateList.Add(privates);
                    Console.WriteLine(privates.ToString());
                }
                else if (command == "LieutenantGeneral")
                {
                    LeutenantGeneral leutenant = new LeutenantGeneral(info[1], info[2], info[3], decimal.Parse(info[4]));
                    Console.WriteLine(leutenant.ToString());

                    for (int i = 5; i < info.Length; i++)
                    {
                        var finalPrivate = privateList.Where(a => a.Id == info[i]);

                        foreach (var p in finalPrivate)
                        {
                            Console.WriteLine($"  Name: {p.FirstName} {p.LastName} Id: {p.Id} Salary: {p.Salary:f2}");
                        }
                    }
                }
                else if (command == "Engineer")
                {
                    if (info[5] == "Airforces" || info[5] == "Marines")
                    {
                        Engineer engineer = new Engineer(info[1], info[2], info[3], decimal.Parse(info[4]), Enum.Parse <Corps>(info[5]));
                        Console.WriteLine(engineer.ToString());

                        for (int i = 6; i < info.Length; i += 2)
                        {
                            string name   = info[i];
                            string hours  = info[i + 1];
                            Repair repair = new Repair(name, hours);
                            engineer.repairs.Add(repair);
                        }

                        foreach (var repair in engineer.repairs)
                        {
                            Console.WriteLine($"  Part Name: {repair.Name} Hours Worked: {repair.HoursWorked}");
                        }
                    }
                }
                else if (command == "Commando")
                {
                    Commando commando = new Commando(info[1], info[2], info[3], decimal.Parse(info[4]), Enum.Parse <Corps>(info[5]));
                    Console.WriteLine(commando.ToString());

                    for (int i = 6; i < info.Length; i += 2)
                    {
                        string code  = info[i];
                        string state = info[i + 1];
                        if (state == "inProgress" || state == "Finished")
                        {
                            Mission mission = new Mission(code, Enum.Parse <States>(state));
                            commando.missions.Add(mission);
                        }
                    }

                    foreach (var mission in commando.missions)
                    {
                        Console.WriteLine($"  Code Name: {mission.CodeName} State: {mission.states}");
                    }
                }
                else if (command == "Spy")
                {
                    Spy spy = new Spy(info[1], info[2], info[3], int.Parse(info[4]));
                    Console.WriteLine(spy.ToString());
                }


                cmd = Console.ReadLine();
            }
        }
        static void Main(string[] args)
        {
            //Engineer engineer = new Engineer("12", "first", "last", 1000M, Enums.Corps.Airforces);
            //engineer.AddRepair(new Repair("partName", 4));

            //Console.WriteLine(engineer.ToString());

            //Commando commando = new Commando("15", "commFirst", "commLast", 1500M, Enums.Corps.Marines);
            //commando.AddMission(new Mission("Frenzy", Enums.MissionStatus.inProgress));
            //commando.Missions.FirstOrDefault(k => k.CodeName == "Frenzy").CompleteMission();
            //Console.WriteLine(commando.ToString());
            ;
            List <Private> privates = new List <Private>();
            string         input;

            while ((input = Console.ReadLine()) != "End")
            {
                string[] tokens      = input.Split();
                string   soldierRank = tokens[0];
                string   ID          = tokens[1],
                         firstName   = tokens[2],
                         lastName    = tokens[3];

                switch (soldierRank)
                {
                case "Private":
                    decimal salary    = decimal.Parse(tokens[4]);
                    Private prPrivate = new Private(ID, firstName, lastName, salary);
                    Console.WriteLine(prPrivate.ToString());
                    privates.Add(prPrivate);
                    break;

                case "LieutenantGeneral":
                    salary = decimal.Parse(tokens[4]);
                    LieutenantGeneral lieutenant = new LieutenantGeneral(ID, firstName, lastName, salary);
                    AddPrivates(privates, tokens, lieutenant);

                    Console.WriteLine(lieutenant.ToString());
                    break;

                case "Engineer":
                    salary = decimal.Parse(tokens[4]);
                    Corps corp = Corps.neither;
                    if (tokens[5] == "Airforces")
                    {
                        corp = Corps.Airforces;
                    }
                    else if (tokens[5] == "Marines")
                    {
                        corp = Corps.Marines;
                    }

                    if (!(corp == Corps.neither))
                    {
                        Engineer engineer = new Engineer(ID, firstName, lastName, salary, corp);
                        AddRepairs(tokens, engineer);

                        Console.WriteLine(engineer.ToString());
                    }
                    break;

                case "Commando":
                    salary = decimal.Parse(tokens[4]);
                    corp   = Corps.neither;
                    corp   = ValidateCorps(tokens, corp);

                    if (!(corp == Corps.neither))
                    {
                        Commando commando = new Commando(ID, firstName, lastName, salary, corp);
                        AddValidMissions(tokens, commando);
                        Console.WriteLine(commando.ToString());
                    }
                    break;

                case "Spy":
                    int codeNumber = int.Parse(tokens[4]);
                    Spy spy        = new Spy(ID, firstName, lastName, codeNumber);
                    Console.WriteLine(spy.ToString());
                    break;

                default:
                    break;
                }
            }
        }