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)); }
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)); }
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()); }
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')); }
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); }
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; } } }