public void FindRecordByUserInputString_FromTheModel(User user, int selectedDay, int selectedMonth, int selectedStart, int selectedEnd,
                                                             bool exist)
        {
            var size       = RecordModel.GetAllRecords().Count;
            var testRecord = new Record(user, selectedDay, selectedMonth, selectedStart, selectedEnd);
            var text       = testRecord.FromTime.ToString("dd MMMM, HH:mm") + "—" + testRecord.ToTime.Hour + ":00";

            //Record is exist or not
            if (exist)
            {
                //Add record
                RecordModel.CreateRecord(user, selectedDay, selectedMonth, selectedStart, selectedEnd, exist);
                Assert.AreEqual(size + 1, RecordModel.GetAllRecords().Count);

                //Select record from Record List
                var record = RecordModel.FindRecordByUserInputString(text);
                Assert.NotNull(record);
                StringAssert.AreEqualIgnoringCase(text,
                                                  record.FromTime.ToString("dd MMMM, HH:mm") + "—" + record.ToTime.Hour + ":00");
            }
            else
            {
                var record = RecordModel.FindRecordByUserInputString(text);
                Assert.Null(record);
            }
        }
        public void CreateRecord_AddValidRecord_RefuseInvalidRecord(DateTime startDateTime, int endTimeInt, bool valid, bool outOfRange)
        {
            var user      = new User();
            var size      = RecordModel.GetAllRecords().Count;
            var day       = startDateTime.Day.ToString();
            var month     = startDateTime.ToString("MMMM");
            var startTime = startDateTime.ToString("H:mm");
            var endTime   = endTimeInt + ":00";

            if (valid)
            {
                CreateRecordWithDialogueClass(user, day, month, startTime, endTime);

                Assert.AreEqual(size + 1, RecordModel.GetAllRecords().Count);
                StringAssert.AreEqualIgnoringCase(startDateTime.ToString("MM-dd HH:mm:ss"),
                                                  RecordModel.GetAllRecords()[size].FromTime.ToString("MM-dd HH:mm:ss"));
            }
            else
            {
                if (outOfRange)
                {
                    Assert.Throws <ArgumentOutOfRangeException>(() =>
                                                                CreateRecordWithDialogueClass(user, day, month, startTime, endTime));
                }
                else
                {
                    Assert.AreEqual(size, RecordModel.GetAllRecords().Count);
                }
            }
        }
        public void DeleteRecord_DeleteExisting_IgnoreNonExisting(User user, int selectedDay, int selectedMonth, int selectedStart, int selectedEnd,
                                                                  bool exist)
        {
            var size   = RecordModel.GetAllRecords().Count;
            var record = new Record(user, selectedDay, selectedMonth, selectedStart, selectedEnd);

            //Record is exist or not
            if (exist)
            {
                //Add record
                RecordModel.CreateRecord(user, selectedDay, selectedMonth, selectedStart, selectedEnd, true);
                Assert.AreEqual(size + 1, RecordModel.GetAllRecords().Count);

                //Select record from Record List
                var selectedRecord =
                    RecordModel.FindRecordByUserInputString(record.FromTime.ToString("dd MMMM, HH:mm") + "—" +
                                                            record.ToTime.Hour + ":00");

                //Delete selected record
                RecordModel.DeleteRecord(selectedRecord, user.Id);
                Assert.AreEqual(size, RecordModel.GetAllRecords().Count);
            }
            else
            {
                //Select record from Record List
                var selectedRecord =
                    RecordModel.FindRecordByUserInputString(record.FromTime.ToString("dd MMMM, HH:mm") + "—" +
                                                            record.ToTime.Hour + ":00");
                //Delete non-exist record
                RecordModel.DeleteRecord(selectedRecord, user.Id);
                Assert.AreEqual(size, RecordModel.GetAllRecords().Count);
            }
        }
        public void ScheduleRecords_RefuseOverlappingRecord_GetForMultipleUsers(User firstUser, int firstId, User secondUser, int secondId,
                                                                                TestRecord firstRecord, TestRecord secondRecord)
        {
            firstUser.Id = firstId;
            var size = RecordModel.GetAllRecords().Count;

            firstRecord.SetUser(firstUser);

            var firstUserSchedule  = from record in RecordModel.GetAllRecords() where record.User.Id == firstId select record;
            var secondUserSchedule = from record in RecordModel.GetAllRecords() where record.User.Id == secondId select record;
            var firstUserSize      = firstUserSchedule.Count();
            var secondUserSize     = secondUserSchedule.Count();

            CreateRecordWithDialogueClass(firstRecord);

            secondUser.Id = secondId;
            secondRecord.SetUser(secondUser);
            CreateRecordWithDialogueClass(secondRecord);

            firstUserSchedule  = from record in RecordModel.GetAllRecords() where record.User.Id == firstId select record;
            secondUserSchedule = from record in RecordModel.GetAllRecords() where record.User.Id == secondId select record;

            Assert.AreEqual(size + 1, RecordModel.GetAllRecords().Count);
            Assert.AreEqual(firstUserSize + 1, firstUserSchedule.Count());
            Assert.AreEqual(secondUserSize, secondUserSchedule.Count());
        }
        public void CreateRecord_RefuseOverlappingRecord(DateTime startDateTime1, int endTimeInt1, DateTime startDateTime2,
                                                         int endTimeInt2)
        {
            var size = RecordModel.GetAllRecords().Count;

            CreateRecord_AddValidRecord_RefuseInvalidRecord(startDateTime1, endTimeInt1, true, false);
            CreateRecord_AddValidRecord_RefuseInvalidRecord(startDateTime2, endTimeInt2, false, false);
            var size1 = RecordModel.GetAllRecords().Count;

            Assert.AreEqual(size + 1, RecordModel.GetAllRecords().Count);
        }
            public override async Task <AbstractDialogue> OnMessage(MessageEventArgs args)
            {
                var records = from record in RecordModel.GetAllRecords()
                              where record.User.Id == args.Message.From.Id
                              select record;

                await _sendMessege("You have the following reservations:",
                                   (ReplyKeyboardMarkup)
                                   records
                                   .Select(x => new[] { x.FromTime.ToString("dd MMMM, HH:mm") + "—" + x.ToTime.Hour + ":00" })
                                   .ToArray());

                var md = new MainMenuDialogue(_sendMessege);

                return(md);
            }
        public void ScheduleRecords_GetForSingleUser(User user, int userId, TestRecord firstRecord, TestRecord secondRecord)
        {
            user.Id = userId;
            firstRecord.SetUser(user);
            secondRecord.SetUser(user);
            var size            = RecordModel.GetAllRecords().Count;
            var userRecordCount =
                (from record in RecordModel.GetAllRecords() where record.User.Id == userId select record).Count();

            CreateRecordWithDialogueClass(firstRecord);
            CreateRecordWithDialogueClass(secondRecord);
            Assert.AreEqual(size + 2, RecordModel.GetAllRecords().Count);
            var userSchedule = from record in RecordModel.GetAllRecords() where record.User.Id == userId select record;

            Assert.AreEqual(userRecordCount + 2, userSchedule.Count());
        }
示例#8
0
        private string createSchedule(DateTime start, DateTime end)
        {
            var result       = new StringBuilder();
            var recordsByDay = (from record in RecordModel.GetAllRecords() where record.FromTime <end && record.ToTime> start select record).GroupBy((record) => record.FromTime);

            for (DateTime i = start; i != end; i.AddDays(1))
            {
                string DaySchedule = i.ToString("DDDD dd: ");
                var    records     = (from day in recordsByDay where day.Key == i select day).FirstOrDefault().OrderBy(t => t.FromTime).ToList();
                if (records.Any())
                {
                    if ((records.First()).FromTime.Hour == 8)
                    {
                        DaySchedule = records.First().FromTime.ToString("hh:mm");
                    }
                    else
                    {
                        DaySchedule += $" 08:00 - { records.First().FromTime.ToString("hh:mm")}\n";
                        DaySchedule += $"{ records.First().ToTime.ToString("hh:mm")}";
                    }

                    if (records.Count > 1)
                    {
                        foreach (var record in records.Skip(1).Take(records.Count - 2))
                        {
                            DaySchedule += $" - { record.FromTime.ToString("hh:mm")}\n";
                            DaySchedule += $"{ record.ToTime.ToString("hh:mm")}";
                        }
                        DaySchedule += $" - { records.Last().FromTime.ToString("hh:mm")}\n";
                        if (records.Last().ToTime.Hour < 21)
                        {
                            DaySchedule += $"{ records.Last().ToTime.ToString("hh:mm")} - 21:00";
                        }
                    }
                    else
                    {
                        DaySchedule += $"21:00";
                    }
                }

                result.Append(DaySchedule);
                result.Append("\n-----------\n");
            }
            return(result.ToString());
        }
        public void CreateRecord_AddValidRecords(int count, int month, bool secondRound)
        {
            var user    = new User();
            var size    = RecordModel.GetAllRecords().Count;
            var counter = 0;

            while (counter < count)
            {
                for (var day = 1; day <= 28; day++)
                {
                    if (counter == count)
                    {
                        break;
                    }
                    for (var i = 8; i < 21; i++)
                    {
                        if (counter == count)
                        {
                            break;
                        }
                        if (!secondRound)
                        {
                            RecordModel.CreateRecord(user, day, month, i, i + 1, true);
                        }
                        //todo bug found here
                        else
                        {
                            CreateRecord_AddValidRecord_RefuseInvalidRecord(new DateTime(DateTime.Now.Year, month, day, i, 0, 0), i + 1, true, false);
                        }
                        counter++;
                    }
                }

                month++;
            }

            Assert.AreEqual(size + counter, RecordModel.GetAllRecords().Count);
            if (!secondRound)
            {
                CreateRecord_AddValidRecords(count, month, true);
            }
        }
        internal async void AskForRecord(int userId)
        {
            var records = from record in RecordModel.GetAllRecords() where record.User.Id == userId select record;

            if (records.Count() < 1)
            {
                _state = 99;
                var _menueMessage = "No record found";

                await _sendMessege(_menueMessage, MainMenuDialogue.getMainMenuKeyboard());
            }
            else
            {
                await _sendMessege("Select one of your reservations to update or delete:",
                                   (ReplyKeyboardMarkup)
                                   records
                                   .Select(x => new[] { x.FromTime.ToString("dd MMMM, HH:mm") + "—" + x.ToTime.Hour + ":00" })
                                   .ToArray());
            }
        }
        public void UpdateRecord_ValidUpdate(User user, TestRecord record, String recordDate, int newStartTime,
                                             int newEndTime)
        {
            var size = RecordModel.GetAllRecords().Count;

            record.SetUser(user);

            CreateRecordWithDialogueClass(record);
            Assert.AreEqual(size + 1, RecordModel.GetAllRecords().Count);

            StringAssert.AreEqualIgnoringCase(recordDate + " " + record.startTime + ":00",
                                              RecordModel.GetAllRecords()[size].FromTime.ToString("yyyy-MM-dd HH:mm:ss"));

            RecordModel.UpdateRecord(RecordModel.GetAllRecords()[size], user, newStartTime, newEndTime);

            Assert.AreEqual(size + 1, RecordModel.GetAllRecords().Count);

            StringAssert.AreEqualIgnoringCase(recordDate + " " + newStartTime + ":00:00",
                                              RecordModel.GetAllRecords()[size].FromTime.ToString("yyyy-MM-dd HH:mm:ss"));
        }