Beispiel #1
0
        public int DeletePeriod(DeletePeriodArgs args)
        {
            Period found;

            using (var periods = new PeriodService())
            {
                found = periods.FindOne(args.EzName);
                if (found == null)
                {
                    return((int)ExitCodes.PeriodNotFound);
                }
            }

            ConsoleKeyInfo key = new ConsoleKeyInfo();

            if (args.Dissociate)
            {
                key = new ConsoleKeyInfo('Y', ConsoleKey.Y, false, false, false);
            }
            while (key.Key != ConsoleKey.Y && key.Key != ConsoleKey.Enter)
            {
                Console.WriteLine($"Found Period\n{found}");
                Console.ForegroundColor = ConsoleColor.Yellow;
                Console.WriteLine($"Are you sure you want to dissociate the following items? [Y/n]");
                Console.ResetColor();
                var joined = found.Items.Aggregate("", (prev, next) => $"{(string.IsNullOrEmpty(prev) ? $"{prev}" : $"{prev}\n")}{next}");
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.WriteLine($"({joined})");
                Console.ResetColor();
                key = Console.ReadKey();
                if (key.Key == ConsoleKey.N)
                {
                    return((int)ExitCodes.Success);
                }
            }
        public void FindOneTest()
        {
            var expected = _periods.Create(new Period
            {
                Name      = "FindOne",
                EzName    = "F1",
                StartDate = DateTime.Now,
                EndDate   = DateTime.Now.AddDays(1),
                Items     = new List <TrackItem>()
            });

            var actual = _periods.FindOne("F1");

            Assert.AreEqual(expected.EzName, actual.EzName);
            Assert.AreEqual(expected.Name, actual.Name);
            Assert.AreEqual(
                expected.StartDate.ToString("yyyy-MM-dd"),
                actual.StartDate.ToString("yyyy-MM-dd")
                );
            Assert.AreEqual(
                expected.EndDate.ToString("yyyy-MM-dd"),
                actual.EndDate.ToString("yyyy-MM-dd")
                );
            Assert.AreEqual(expected.Items.Count(), actual.Items.Count());
        }
Beispiel #3
0
        public int Update(UpdatePeriodArgs args)
        {
            using (var periods = new PeriodService())
            {
                Period found;
                var    toUpdate = new Period();
                try
                {
                    found = periods.FindOne(args.EzName);
                    if (found == null)
                    {
                        throw new ArgumentNullException("Period Not Found");
                    }
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine($"Updating Found Period\n{found}");
                    Console.ResetColor();
                }
                catch (ArgumentNullException)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine($"Period with Easy Name [{args.EzName}] could not be found.");
                    Console.ResetColor();
                    return((int)ExitCodes.FailedToUpdate);
                }
                catch (Exception e)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine($"Failed to Update Period with Easy Name [{args.EzName}], {e.Message}");
                    Console.ResetColor();
                    return((int)ExitCodes.FailedToUpdate);
                }

                if (args.StartDate != DateTime.MinValue)
                {
                    found.StartDate = args.StartDate;
                }

                if (args.EndDate != DateTime.MinValue)
                {
                    found.EndDate = args.EndDate;
                }

                if (!string.IsNullOrEmpty(args.Name) && !string.IsNullOrWhiteSpace(args.Name))
                {
                    found.Name = args.Name;
                }

                var updated = periods.UpdateOne(found);
                if (!updated)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine($"Failed to Update Period with Easy Name [{args.EzName}]");
                    Console.ResetColor();
                    return((int)ExitCodes.FailedToUpdate);
                }
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine($"Period Updated\n{found}");
                Console.ResetColor();
                return((int)ExitCodes.Success);
            }
        }