コード例 #1
0
        public void Castrate(string[] arr)
        {
            string           name       = arr[1];
            CastrationCenter CurrCenter = this.CastrationCentersLis.First(se => se.Name == name);

            foreach (var animal in CurrCenter.animals)
            {
                CurrCenter.Castrate(this.AdoptionCenterlis.Find(se => se.Name == animal.DefCenter), animal);
                this.Castrated.Add(animal.Name);
            }
            foreach (var animal in this.Castrated)
            {
                CurrCenter.animals.Remove(CurrCenter.animals.First(se => se.Name == animal));
            }
        }
コード例 #2
0
    public static void Execute()
    {
        while (true)
        {
            string[] commandArgs = Console.ReadLine().Split(new string[] { " | " }, StringSplitOptions.RemoveEmptyEntries);
            string   command     = commandArgs[0];
            switch (command)
            {
            case "RegisterCastrationCenter":
                string centerName = commandArgs[1];
                castrationCenters.Add(new CastrationCenter(centerName));
                break;

            case "RegisterCleansingCenter":
                centerName = commandArgs[1];
                cleansingCenters.Add(new CleansingCenter(centerName));
                break;

            case "RegisterAdoptionCenter":
                centerName = commandArgs[1];
                adoptionCenters.Add(new AdoptionCenter(centerName));
                break;

            case "RegisterDog":
                IAnimal dog = null;
                try
                {
                    dog = AnimalFactory.CreateAnimal("Dog", commandArgs[1], commandArgs[2], commandArgs[3]);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    continue;
                }
                string adoadoptionCenterName = commandArgs[4];

                AdoptionCenter center = adoptionCenters.FirstOrDefault(c => c.Name == adoadoptionCenterName);

                center.AddAnimal(dog);

                break;

            case "RegisterCat":
                IAnimal cat = null;
                try
                {
                    cat = AnimalFactory.CreateAnimal("Cat", commandArgs[1], commandArgs[2], commandArgs[3]);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

                adoadoptionCenterName = commandArgs[4];

                center = adoptionCenters.FirstOrDefault(c => c.Name == adoadoptionCenterName);

                center.AddAnimal(cat);
                break;

            case "SendForCleansing":
                adoadoptionCenterName = commandArgs[1];
                string cleansingCenterName = commandArgs[2];

                AdoptionCenter  adoadoptionCenter = adoptionCenters.FirstOrDefault(c => c.Name == adoadoptionCenterName);
                CleansingCenter cleansingCenter   = cleansingCenters.FirstOrDefault(c => c.Name == cleansingCenterName);

                cleansingCenter.AddAnimalsFromAdoptionCenter(adoadoptionCenter.SendForCleansing());
                break;

            case "SendForCastration":
                adoadoptionCenterName = commandArgs[1];
                string castrationCenterName = commandArgs[2];

                adoadoptionCenter = adoptionCenters.FirstOrDefault(c => c.Name == adoadoptionCenterName);

                CastrationCenter castrationCenter = castrationCenters.FirstOrDefault(c => c.Name == castrationCenterName);

                castrationCenter.AddAnimalsFromAdoptionCenter(adoadoptionCenter.SendForCastration());
                break;

            case "Cleanse":
                cleansingCenterName = commandArgs[1];
                cleansingCenter     = cleansingCenters.FirstOrDefault(c => c.Name == cleansingCenterName);

                var centerAndAnimals = cleansingCenter.Cleanse();

                foreach (var pair in centerAndAnimals)
                {
                    adoadoptionCenterName = pair.Key;
                    adoadoptionCenter     = adoptionCenters.FirstOrDefault(c => c.Name == adoadoptionCenterName);

                    adoadoptionCenter.AddAnimals(pair.Value);
                }
                break;

            case "Castrate":
                castrationCenterName = commandArgs[1];
                castrationCenter     = castrationCenters.FirstOrDefault(c => c.Name == castrationCenterName);

                centerAndAnimals = castrationCenter.Castrate();

                foreach (var pair in centerAndAnimals)
                {
                    adoadoptionCenterName = pair.Key;
                    adoadoptionCenter     = adoptionCenters.FirstOrDefault(c => c.Name == adoadoptionCenterName);

                    adoadoptionCenter.AddAnimals(pair.Value);
                }
                break;

            case "Adopt":
                adoadoptionCenterName = commandArgs[1];
                adoadoptionCenter     = adoptionCenters.FirstOrDefault(c => c.Name == adoadoptionCenterName);

                adoadoptionCenter.Adopt();
                break;

            case "CastrationStatistics":
                StringBuilder sb = new StringBuilder();

                sb.Append($"Paw Inc. Regular Castration Statistics{Environment.NewLine}");
                sb.Append($"Castration Centers: {castrationCenters.Count}{Environment.NewLine}");

                string castratedAnimals = CastrationCenter.CastratedAnimals.Count == 0 ? "None" : string.Join(", ", CastrationCenter.CastratedAnimals.OrderBy(a => a.Name));
                sb.Append($"Castrated Animals: {castratedAnimals}");

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

            case "Paw Paw Pawah":
                sb = new StringBuilder();
                sb.Append($"Paw Incorporative Regular Statistics{Environment.NewLine}");

                sb.Append($"Adoption Centers: {adoptionCenters.Count}{Environment.NewLine}");
                sb.Append($"Cleansing Centers: {cleansingCenters.Count}{Environment.NewLine}");

                string adoptedAnimals = AdoptionCenter.AdoptedAnimals.Count == 0 ? "None" : string.Join(", ", AdoptionCenter.AdoptedAnimals.OrderBy(a => a.Name));
                sb.Append($"Adopted Animals: {adoptedAnimals}{Environment.NewLine}");

                string cleansedAnimals = CleansingCenter.CleansedAnimals.Count == 0 ? "None" : string.Join(", ", CleansingCenter.CleansedAnimals.OrderBy(a => a.Name));
                sb.Append($"Cleansed Animals: {cleansedAnimals}{Environment.NewLine}");

                int amountOfAnimalsWaitingForAdoption = adoptionCenters.Sum(a => a.AnimalsAwaitingAdoption());
                sb.Append($"Animals Awaiting Adoption: {amountOfAnimalsWaitingForAdoption}{Environment.NewLine}");

                int amountOfAnimalsWaitingForCleansing = cleansingCenters.Sum(a => a.AnimalsAwaitingCleansing());
                sb.Append($"Animals Awaiting Cleansing: {amountOfAnimalsWaitingForCleansing}");

                Console.WriteLine(sb.ToString());
                return;
            }
        }
    }