Exemplo n.º 1
0
        public List <SuitablTimeSlot> SuggestedTime(DateTime SearchTime)
        {
            SearchTime = SearchTime.AddHours(9);
            DateTime SearchEndTime = SearchTime.AddHours(8);
            List <SuitablTimeSlot> _freeTimeSlots = new List <SuitablTimeSlot>();

            while (SearchTime < SearchEndTime)
            {
                SuitablTimeSlot _freeTimeSlot = new SuitablTimeSlot();
                _freeTimeSlot.StartTime = SearchTime;
                _freeTimeSlot.Duration  = _meeting.Duration;
                foreach (var user in _invitees)
                {
                    if (!IsInInterval(SearchTime, _meeting.Duration, user.Obligations))
                    {
                        if (!_freeTimeSlot.Users.Contains(user))
                        {
                            _freeTimeSlot.Users.Add(user);
                        }
                        if (!_freeTimeSlots.Contains(_freeTimeSlot))
                        {
                            _freeTimeSlots.Add(_freeTimeSlot);
                        }
                    }
                }
                SearchTime = SearchTime.AddMinutes(60);
            }
            _freeTimeSlots.Sort((a, b) => a.Users.Count.CompareTo(b.Users.Count));
            // _freeTimeSlots.Sort();
            return(_freeTimeSlots);
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            User u1 = new User();

            u1.Id       = Guid.NewGuid();
            u1.Name     = "Ram Kumar";
            u1.JobTitle = "Manager";


            User u2 = new User();

            u2.Id       = Guid.NewGuid();
            u2.Name     = "Sita Kumari";
            u2.JobTitle = "Accountant";

            u1.Obligations = new List <Obligation> {
                new Obligation
                {
                    Id          = Guid.NewGuid(),
                    Description = "Sing",
                    StartTime   = new DateTime(2018, 9, 11, 14, 0, 0),
                    Duration    = 60,
                    Presence    = Presence.Vital,
                },

                new Obligation
                {
                    Id          = Guid.NewGuid(),
                    Description = "Work",
                    StartTime   = new DateTime(2018, 9, 11, 10, 0, 0),
                    Duration    = 60,
                    Presence    = Presence.Optional,
                }
            };

            u2.Obligations = new List <Obligation>()
            {
                new Obligation()
                {
                    Id          = Guid.NewGuid(),
                    Description = "Play",
                    StartTime   = new DateTime(2018, 9, 11, 12, 0, 0),
                    Duration    = 90,
                    Presence    = Presence.Optional,
                }
            };

            Meeting m1 = new Meeting
            {
                Id           = Guid.NewGuid(),
                Details      = "Meeting for next event",
                Duration     = 60,
                MinAttendees = 1,
                MaxAttendees = 4
            };

            MeetingSchedular ms = new MeetingSchedular(m1);

            ms.AddInvitee(u1);
            ms.AddInvitee(u2);
            // m1.RemoveInvitee(u);
            List <SuitablTimeSlot> suggestedTimeslots = ms.SuggestedTime(new DateTime(2018, 9, 11));
            SuitablTimeSlot        ts = suggestedTimeslots.Last();

            suggestedTimeslots.ForEach(sts => {
                Console.WriteLine(sts.StartTime + " " + sts.Users.Count);
            });
            // m1.SendInvitation();
            // m1.CheckInvitationStatus();
            // m1.updateObligations();
        }