private void button4_Click(object sender, EventArgs e)
        {
            RecurrenceInfo info = RecurrenceHelper.GetFriendlySeriesInfo(txtGetRecurrenceValues.Text);

            pgrpropertyGrid1.SelectedObject = info;
            tabMain.SelectedTab             = tabProperty;
        }
        static SportEvent GetRandomRecurrenceSportEvent(int id, DateTime startDate, SportChannel channel, int dayCount)
        {
            SportEvent pattern = new SportEvent();

            pattern.Id = id;
            TimeSpanRange newsTimeRange = channel.NewsTimeRange;

            pattern.StartTime = startDate + newsTimeRange.Start;
            pattern.EndTime   = startDate + newsTimeRange.End;
            pattern.SportId   = 0;
            pattern.ChannelId = channel.Id;
            pattern.Caption   = "Sport News";
            pattern.Location  = "New York City, USA";
            pattern.Type      = (int)AppointmentType.Pattern;
            RecurrenceInfo recInfo = new RecurrenceInfo();

            recInfo.Start          = pattern.StartTime;
            recInfo.End            = pattern.EndTime.AddDays(dayCount);
            recInfo.WeekDays       = WeekDays.WorkDays;
            recInfo.Range          = RecurrenceRange.EndByDate;
            recInfo.Type           = RecurrenceType.Daily;
            pattern.RecurrenceInfo = String.Format(CultureInfo.InvariantCulture, recurrenceInfoFormat,
                                                   recInfo.Start, recInfo.End, (int)recInfo.WeekDays, recInfo.OccurrenceCount, (int)recInfo.Range, (int)recInfo.Type, recInfo.Id.ToString());
            return(pattern);
        }
    void InitializeEdtWeeklyRecurrenceControl(RecurrenceInfo info, RecurrenceInfo defaultInfo)
    {
        RecurrenceInfo actualInfo = GetActualInfo(info, defaultInfo, RecurrenceType.Weekly);

        this.edtWeeklyRecurrenceControl.ClientVisible = actualInfo == info;
        this.edtWeeklyRecurrenceControl.Periodicity   = actualInfo.Periodicity;
        this.edtWeeklyRecurrenceControl.WeekDays      = CalcRecurrenceControlWeekDaysValue(actualInfo, RecurrenceType.Weekly);
    }
    void InitializeRecurrenceRuleConrtol(RecurrenceInfo info)
    {
        RecurrenceInfo defaultInfo = new RecurrenceInfo(info.Start);

        InitializeEdtDailyRecurrenceControl(info, defaultInfo);
        InitializeEdtWeeklyRecurrenceControl(info, defaultInfo);
        InitializeEdtMonthlyRecurrenceControl(info, defaultInfo);
        InitializeEdtYearlyRecurrenceControl(info, defaultInfo);
    }
        public ActionResult RecurrenceFormInfo()
        {
            Appointment pattern = DevExpress.XtraScheduler.Compatibility.StaticAppointmentFactory.CreateAppointment(AppointmentType.Pattern);

            pattern.Start = new DateTime(2012, 10, 20, 3, 0, 0);
            pattern.End   = new DateTime(2012, 10, 20, 4, 0, 0);
            RecurrenceInfo recurrenceInfo = AppointmentRecurrenceFormExtension.GetValue("RecurrenceControl", pattern);

            return(View("RecurrenceFormInfo", (object)recurrenceInfo.ToXml()));
        }
    void InitializeEdtYearlyRecurrenceControl(RecurrenceInfo info, RecurrenceInfo defaultInfo)
    {
        RecurrenceInfo actualInfo = GetActualInfo(info, defaultInfo, RecurrenceType.Yearly);

        this.edtYearlyRecurrenceControl.ClientVisible = info == actualInfo;
        this.edtYearlyRecurrenceControl.DayNumber     = info.DayNumber;
        this.edtYearlyRecurrenceControl.Month         = info.Month;
        this.edtYearlyRecurrenceControl.WeekDays      = CalcRecurrenceControlWeekDaysValue(actualInfo, RecurrenceType.Yearly);
        this.edtYearlyRecurrenceControl.WeekOfMonth   = info.WeekOfMonth;
    }
Beispiel #7
0
        /// <summary>
        /// convert AppointmentInfo to Appointment
        /// </summary>
        /// <param name="proxy"></param>
        /// <returns></returns>
        public static Appointment Convert(AppointmentInfo proxy)
        {
            if (proxy == null)
            {
                return(null);
            }
            Appointment appointment;

            if (proxy.RecurrenceInfo != null)
            {
                appointment = new Appointment(AppointmentType.Pattern);
            }
            else
            {
                appointment = new Appointment();
            }
            appointment.Subject     = proxy.Subject;
            appointment.Start       = proxy.Start;
            appointment.AllDay      = proxy.AllDay;
            appointment.Description = proxy.Description;
            appointment.Duration    = proxy.Duration;

            appointment.End         = proxy.End;
            appointment.HasReminder = proxy.HasReminder;
            //appointment.HasExceptions = proxy.HasExceptions;
            //appointment.IsException=proxy.IsException ;
            //appointment.IsRecurring = false;
            appointment.LabelId              = proxy.LabelId;
            appointment.Location             = proxy.Location;
            appointment.ResourceId           = proxy.ResourceId;
            appointment.CustomFields["Only"] = proxy.CustomFilds;

            appointment.StatusId = proxy.StatusId;
            if (proxy.RecurrenceInfo != null)
            {
                RecurrenceInfo recurrence = appointment.RecurrenceInfo;
                recurrence.AllDay          = proxy.RecurrenceInfo.AllDay;
                recurrence.DayNumber       = proxy.RecurrenceInfo.DayNumber;
                recurrence.Start           = proxy.RecurrenceInfo.Start;
                recurrence.Duration        = proxy.RecurrenceInfo.Duration;
                recurrence.End             = proxy.RecurrenceInfo.End;
                recurrence.Month           = proxy.RecurrenceInfo.Month;
                recurrence.OccurrenceCount = proxy.RecurrenceInfo.OccurrenceCount;
                recurrence.Periodicity     = proxy.RecurrenceInfo.Periodicity;
                recurrence.Range           = (RecurrenceRange)proxy.RecurrenceInfo.Range;

                recurrence.Type        = (RecurrenceType)proxy.RecurrenceInfo.Type;
                recurrence.WeekDays    = (WeekDays)proxy.RecurrenceInfo.WeekDays;
                recurrence.WeekOfMonth = (WeekOfMonth)proxy.RecurrenceInfo.WeekOfMonth;

                //AddRecurrenceInfo(appointment, recurrence);
            }

            return(appointment);
        }
Beispiel #8
0
 /// <summary>
 /// Add recurrence info in appointment
 /// </summary>
 /// <param name="appointment"></param>
 /// <param name="recurrence"></param>
 private static void AddRecurrenceInfo(Appointment appointment, RecurrenceInfo recurrence)
 {
     try
     {
         SetCurrenceInfoMethod.Invoke(appointment, new object[] { recurrence });
     }
     catch (Exception ex)
     {
         _log.Error(ex.Message, ex);
     }
 }
        public ActionResult Index()
        {
            RecurrenceInfo recurrenceInfo = new RecurrenceInfo()
            {
                Start  = DateTime.Today,
                End    = DateTime.Today.Add(TimeSpan.FromDays(1)),
                Type   = RecurrenceType.Weekly,
                AllDay = true
            };

            return(View("Index", recurrenceInfo));
        }
Beispiel #10
0
 private static void CreateRecurringAppointment()
 {
     using (Session session = new Session(XpoDefault.DataLayer)) {
         RecurrenceInfo ri = new RecurrenceInfo(DateTime.Now, TimeSpan.FromMinutes(30));
         //Dennis: set more options of the RecurrenceInfo class here.
         DevExpress.Persistent.BaseImpl.Event appointment = new DevExpress.Persistent.BaseImpl.Event(session);
         appointment.StartOn = DateTime.Now;
         appointment.Type    = (int)AppointmentType.Pattern;
         RecurrenceInfoXmlPersistenceHelper helper = new RecurrenceInfoXmlPersistenceHelper(ri);
         appointment.RecurrenceInfoXml = helper.ToXml();
         session.Save(appointment);
     }
 }
    public override void DataBind()
    {
        base.DataBind();

        RecurrenceInfo defaultRecurrenceInfo = new RecurrenceInfo(AppointmentStart.Date.AddDays(10));

        defaultRecurrenceInfo.OccurrenceCount = 10;
        RecurrenceInfo recurrenceInfo = (Pattern == null) ? defaultRecurrenceInfo : (RecurrenceInfo)Pattern.RecurrenceInfo;

        edtRecurrenceTypeEdit.Type                = recurrenceInfo.Type;
        edtRecurrenceRangeControl.Range           = recurrenceInfo.Range;
        edtRecurrenceRangeControl.End             = recurrenceInfo.End;
        edtRecurrenceRangeControl.OccurrenceCount = recurrenceInfo.OccurrenceCount;
        InitializeRecurrenceRuleConrtol(recurrenceInfo);
    }
Beispiel #12
0
        public void InitializeObject(int index)
        {
            if (resourceKeys == null)
            {
                resourceKeys = new List <Guid>();
                for (int i = 0; i < 5; i++)
                {
                    DevExpress.Persistent.BaseImpl.Resource res = new DevExpress.Persistent.BaseImpl.Resource(Session);
                    res.Caption = "Resource " + i.ToString();
                    if (i == 0)
                    {
                        res.Color = Color.Blue;
                    }
                    else if (i == 1)
                    {
                        res.Color = Color.Red;
                    }
                    else if (i == 2)
                    {
                        res.Color = Color.Brown;
                    }
                    res.Save();
                    ((UnitOfWork)Session).CommitChanges();
                    resourceKeys.Add(res.Oid);
                }
            }
            this.Subject = "Test event #" + index;

            Random random = new Random((int)DateTime.Now.Ticks);

            this.AllDay = (index % (8 * random.Next(2) + 10) == 0 && index != 0);
            int days = (int)(index / 8);

            this.StartOn = DateTime.Today.Date.AddDays(days - 500).AddHours(9 + random.Next(12));
            this.EndOn   = this.StartOn.AddHours(random.Next(1) + 1);
            if (index % (random.Next(1) + 1) == 0)
            {
                this.Resources.Add(Session.GetObjectByKey <DevExpress.Persistent.BaseImpl.Resource>(resourceKeys[random.Next(resourceKeys.Count - 1)]));
            }
            if (index % (8 * (random.Next(5) + 15)) == 0)
            {
                RecurrenceInfo recurrenceInfo = new RecurrenceInfo(this.StartOn, 10);
                RecurrenceInfoXmlPersistenceHelper persistenceHelper = new RecurrenceInfoXmlPersistenceHelper(recurrenceInfo);
                this.Type = (int)AppointmentType.Pattern;
                this.RecurrenceInfoXml = persistenceHelper.ToXml();
            }
            this.Save();
        }
        public void OnLunchTimeChanged()
        {
            if (isInitialization)
            {
                return;
            }
            var region = this.TimeRegions.First();

            region.Start = this.LunchStart;
            region.End   = this.LunchEnd;
            RecurrenceInfo info = new RecurrenceInfo();

            info.FromXml(region.RecurrenceInfo);
            info.Start            = info.Start.Date.AddTicks(region.Start.TimeOfDay.Ticks);
            region.RecurrenceInfo = info.ToXml();
        }
        public static ListViewAppointment CreateListViewAppointment(AppointmentStorage storage, Appointment sourceAppointment, DayOfWeek dayOfWeek)
        {
            ListViewAppointment listViewAppointment = new ListViewAppointment();

            listViewAppointment.ListViewDate = sourceAppointment.Start;

            listViewAppointment.ListViewSubject           = sourceAppointment.Subject;
            listViewAppointment.ListViewRecurrencePattern = RecurrenceInfo.GetDescription(sourceAppointment, dayOfWeek);
            listViewAppointment.ListViewIsRecurring       = sourceAppointment.IsRecurring;
            listViewAppointment.ListViewDuration          = sourceAppointment.Duration.ToString();
            listViewAppointment.ListViewAppointmentID     = sourceAppointment.Id;
            listViewAppointment.ListViewLocation          = sourceAppointment.Location;
            listViewAppointment.ListViewStatus            = storage.Statuses[sourceAppointment.StatusId];;
            listViewAppointment.ListViewLabel             = storage.Labels[sourceAppointment.LabelId].Color;
            listViewAppointment.SourceAppointment         = sourceAppointment;
            return(listViewAppointment);
        }
Beispiel #15
0
 private void DetectRecurrenceInfoInconsistencies(RecurrenceInfo recurrenceInfo, ConsistencyCheckResult result)
 {
     if (recurrenceInfo.Anomalies != AnomaliesFlags.None)
     {
         foreach (object obj in Enum.GetValues(typeof(AnomaliesFlags)))
         {
             AnomaliesFlags anomaly = (AnomaliesFlags)obj;
             this.CheckAnomaly(result, recurrenceInfo.Anomalies, anomaly);
         }
     }
     foreach (OccurrenceInfo occurrenceInfo in recurrenceInfo.ModifiedOccurrences)
     {
         if (occurrenceInfo is ExceptionInfo)
         {
             this.DetectExceptionInconsistencies(result, (ExceptionInfo)occurrenceInfo);
         }
     }
 }
Beispiel #16
0
        /// <summary>
        /// Creates a recurring meeting for a user.
        /// </summary>
        /// <param name="userId">The user Id or email address.</param>
        /// <param name="topic">Meeting topic.</param>
        /// <param name="agenda">Meeting description.</param>
        /// <param name="start">Meeting start time. If omitted, a 'Recurring meeting with no fixed time' will be created.</param>
        /// <param name="duration">Meeting duration (minutes).</param>
        /// <param name="recurrence">Recurrence information.</param>
        /// <param name="password">Password to join the meeting. Password may only contain the following characters: [a-z A-Z 0-9 @ - _ *]. Max of 10 characters.</param>
        /// <param name="settings">Meeting settings.</param>
        /// <param name="trackingFields">Tracking fields.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>
        /// The new meeting.
        /// </returns>
        /// <exception cref="System.Exception">Thrown when an exception occured while creating the meeting.</exception>
        public Task <RecurringMeeting> CreateRecurringMeetingAsync(
            string userId,
            string topic,
            string agenda,
            DateTime?start,
            int duration,
            RecurrenceInfo recurrence,
            string password          = null,
            MeetingSettings settings = null,
            IDictionary <string, string> trackingFields = null,
            CancellationToken cancellationToken         = default)
        {
            var data = new JObject()
            {
                // 3 = Recurring with no fixed time
                // 8 = Recurring with fixed time
                { "type", start.HasValue ? 8 : 3 }
            };

            data.AddPropertyIfValue("topic", topic);
            data.AddPropertyIfValue("password", password);
            data.AddPropertyIfValue("agenda", agenda);
            data.AddPropertyIfValue("start_time", start?.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss'Z'"));
            data.AddPropertyIfValue("duration", duration);
            data.AddPropertyIfValue("recurrence", recurrence);
            if (start.HasValue)
            {
                data.Add("timezone", "UTC");
            }
            data.AddPropertyIfValue("settings", settings);
            data.AddPropertyIfValue("tracking_fields", trackingFields?.Select(tf => new JObject()
            {
                { "field", tf.Key }, { "value", tf.Value }
            }));

            return(_client
                   .PostAsync($"users/{userId}/meetings")
                   .WithJsonBody(data)
                   .WithCancellationToken(cancellationToken)
                   .AsObject <RecurringMeeting>());
        }
        void FillRecurrencyInfo(ScheduledJobDto scheduledJob)
        {
            recurrencyInfo.Text = string.Empty;
            var appointment = CreateAppointment(scheduledJob);

            if (appointment == null)
            {
                return;
            }
            var culture = Thread.CurrentThread.CurrentUICulture;
            var infos   = new List <Info>();

            infos.Add(new Info {
                Name = "Description", Value = RecurrenceInfo.GetDescription(appointment, culture.DateTimeFormat.FirstDayOfWeek)
            });
            infos.Add(new Info {
                Name = "Next start", Value = GetNextDateDisplayText(appointment)
            });
            recurrencyInfoGrid.DataSource = infos;
            recurrencyInfoView.BestFitColumns();
        }
Beispiel #18
0
        public AppointmentRemovedAction(SchedulerStorage storage, Appointment appointment)
        {
            _storage     = storage;
            _appointment = appointment;
            if (appointment.RecurrenceInfo != null)
            {
                _recurrenceInfo                 = appointment.RecurrenceInfo;
                _recurrenceInfo.AllDay          = _appointment.RecurrenceInfo.AllDay;
                _recurrenceInfo.DayNumber       = _appointment.RecurrenceInfo.DayNumber;
                _recurrenceInfo.Start           = _appointment.RecurrenceInfo.Start;
                _recurrenceInfo.Duration        = _appointment.RecurrenceInfo.Duration;
                _recurrenceInfo.End             = _appointment.RecurrenceInfo.End;
                _recurrenceInfo.Month           = _appointment.RecurrenceInfo.Month;
                _recurrenceInfo.OccurrenceCount = _appointment.RecurrenceInfo.OccurrenceCount;
                _recurrenceInfo.Periodicity     = _appointment.RecurrenceInfo.Periodicity;
                _recurrenceInfo.Range           = (RecurrenceRange)_appointment.RecurrenceInfo.Range;

                _recurrenceInfo.Type        = (RecurrenceType)_appointment.RecurrenceInfo.Type;
                _recurrenceInfo.WeekDays    = (WeekDays)_appointment.RecurrenceInfo.WeekDays;
                _recurrenceInfo.WeekOfMonth = (WeekOfMonth)_appointment.RecurrenceInfo.WeekOfMonth;
            }
            Name = "Remove appointment-" + appointment.Subject;
        }
Beispiel #19
0
        protected override ConsistencyCheckResult DetectInconsistencies()
        {
            RoleType               checkingRole           = (RoleType)(-1);
            UserObject             checkingUser           = null;
            ConsistencyCheckResult consistencyCheckResult = ConsistencyCheckResult.CreateInstance(base.Type, base.Description);

            try
            {
                Recurrence recurrence  = null;
                Recurrence recurrence2 = null;
                if (base.Context.OrganizerItem != null && base.Context.OrganizerItem is CalendarItem)
                {
                    checkingRole = RoleType.Organizer;
                    checkingUser = base.Context.Organizer;
                    recurrence   = ((CalendarItem)base.Context.OrganizerItem).Recurrence;
                }
                if (base.Context.AttendeeItem != null && base.Context.AttendeeItem is CalendarItem)
                {
                    checkingRole = RoleType.Attendee;
                    checkingUser = base.Context.Attendee;
                    recurrence2  = ((CalendarItem)base.Context.AttendeeItem).Recurrence;
                }
                consistencyCheckResult.ComparedRecurrenceBlobs  = false;
                consistencyCheckResult.RecurrenceBlobComparison = true;
                if (recurrence != null)
                {
                    checkingRole = (RoleType)(-1);
                    checkingUser = null;
                    if (recurrence2 != null)
                    {
                        consistencyCheckResult.ComparedRecurrenceBlobs  = true;
                        consistencyCheckResult.RecurrenceBlobComparison = recurrence.Equals(recurrence2);
                        checkingRole = RoleType.Attendee;
                        checkingUser = base.Context.Attendee;
                        RecurrenceInfo recurrenceInfo = recurrence2.GetRecurrenceInfo();
                        this.DetectRecurrenceInfoInconsistencies(recurrenceInfo, consistencyCheckResult);
                        base.Context.AttendeeRecurrence = recurrenceInfo;
                    }
                    else if (base.Context.AttendeeItem != null)
                    {
                        this.FailCheck(consistencyCheckResult, "Attendee's missing the recurrence in a recurring meeting.", RecurrenceInconsistencyType.MissingRecurrence, base.Context.OrganizerItem.StartTime);
                    }
                    checkingRole = RoleType.Organizer;
                    checkingUser = base.Context.Organizer;
                    RecurrenceInfo recurrenceInfo2 = recurrence.GetRecurrenceInfo();
                    this.DetectRecurrenceInfoInconsistencies(recurrenceInfo2, consistencyCheckResult);
                    base.Context.OrganizerRecurrence = recurrenceInfo2;
                }
                else if (recurrence2 != null)
                {
                    if (base.Context.OrganizerItem != null)
                    {
                        this.FailCheck(consistencyCheckResult, "A single meeting is recurring in the attendee's calendar.", RecurrenceInconsistencyType.ExtraRecurrence, base.Context.OrganizerItem.StartTime);
                    }
                    checkingRole = RoleType.Attendee;
                    checkingUser = base.Context.Attendee;
                    RecurrenceInfo recurrenceInfo3 = recurrence2.GetRecurrenceInfo();
                    this.DetectRecurrenceInfoInconsistencies(recurrenceInfo3, consistencyCheckResult);
                    base.Context.AttendeeRecurrence = recurrenceInfo3;
                }
            }
            catch (RecurrenceFormatException exception)
            {
                this.FailCheck(consistencyCheckResult, checkingRole, checkingUser, exception);
            }
            catch (StorageTransientException exception2)
            {
                this.RegisterStorageException(consistencyCheckResult, exception2);
            }
            catch (StoragePermanentException exception3)
            {
                this.RegisterStorageException(consistencyCheckResult, exception3);
            }
            return(consistencyCheckResult);
        }
Beispiel #20
0
        public async Task RunAsync(string userId, IZoomClient client, TextWriter log, CancellationToken cancellationToken)
        {
            if (cancellationToken.IsCancellationRequested)
            {
                return;
            }

            await log.WriteLineAsync("\n***** MEETINGS *****\n").ConfigureAwait(false);

            // GET ALL THE MEETINGS
            var paginatedScheduledMeetings = await client.Meetings.GetAllAsync(userId, MeetingListType.Scheduled, 100, null, cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"There are {paginatedScheduledMeetings.TotalRecords} scheduled meetings").ConfigureAwait(false);

            var paginatedLiveMeetings = await client.Meetings.GetAllAsync(userId, MeetingListType.Live, 100, null, cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"There are {paginatedLiveMeetings.TotalRecords} live meetings").ConfigureAwait(false);

            var paginatedUpcomingMeetings = await client.Meetings.GetAllAsync(userId, MeetingListType.Upcoming, 100, null, cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"There are {paginatedUpcomingMeetings.TotalRecords} upcoming meetings").ConfigureAwait(false);

            // CLEANUP PREVIOUS INTEGRATION TESTS THAT MIGHT HAVE BEEN INTERRUPTED BEFORE THEY HAD TIME TO CLEANUP AFTER THEMSELVES
            var cleanUpTasks = paginatedScheduledMeetings.Records
                               .Union(paginatedLiveMeetings.Records)
                               .Where(m => m.Topic.StartsWith("ZoomNet Integration Testing:"))
                               .Select(async oldMeeting =>
            {
                await client.Meetings.DeleteAsync(oldMeeting.Id, null, false, false, cancellationToken).ConfigureAwait(false);
                await log.WriteLineAsync($"Meeting {oldMeeting.Id} deleted").ConfigureAwait(false);
                await Task.Delay(250, cancellationToken).ConfigureAwait(false);                            // Brief pause to ensure Zoom has time to catch up
            });
            await Task.WhenAll(cleanUpTasks).ConfigureAwait(false);

            var settings = new MeetingSettings()
            {
                Audio = AudioType.Telephony
            };
            var trackingFields = new Dictionary <string, string>()
            {
                { "field1", "value1" },
                { "field2", "value2" }
            };

            // Instant meeting
            var newInstantMeeting = await client.Meetings.CreateInstantMeetingAsync(userId, "ZoomNet Integration Testing: instant meeting", "The agenda", "p@ss!w0rd", settings, trackingFields, cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"Instant meeting {newInstantMeeting.Id} created").ConfigureAwait(false);

            await client.Meetings.EndAsync(newInstantMeeting.Id, cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"Instant meeting {newInstantMeeting.Id} ended").ConfigureAwait(false);

            var instantMeeting = (InstantMeeting)await client.Meetings.GetAsync(newInstantMeeting.Id, null, cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"Instant meeting {instantMeeting.Id} retrieved").ConfigureAwait(false);

            await client.Meetings.DeleteAsync(newInstantMeeting.Id, null, false, false, cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"Instant meeting {newInstantMeeting.Id} deleted").ConfigureAwait(false);

            // Scheduled meeting
            var start               = DateTime.UtcNow.AddMonths(1);
            var duration            = 30;
            var newScheduledMeeting = await client.Meetings.CreateScheduledMeetingAsync(userId, "ZoomNet Integration Testing: scheduled meeting", "The agenda", start, duration, "p@ss!w0rd", settings, trackingFields, cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"Scheduled meeting {newScheduledMeeting.Id} created").ConfigureAwait(false);

            var updatedSettings = new MeetingSettings()
            {
                Audio = AudioType.Voip
            };
            await client.Meetings.UpdateScheduledMeetingAsync(newScheduledMeeting.Id, topic : "ZoomNet Integration Testing: UPDATED scheduled meeting", settings : updatedSettings, cancellationToken : cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"Scheduled meeting {newScheduledMeeting.Id} updated").ConfigureAwait(false);

            var scheduledMeeting = (ScheduledMeeting)await client.Meetings.GetAsync(newScheduledMeeting.Id, null, cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"Scheduled meeting {scheduledMeeting.Id} retrieved").ConfigureAwait(false);

            await client.Meetings.DeleteAsync(newScheduledMeeting.Id, null, false, false, cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"Scheduled meeting {newScheduledMeeting.Id} deleted").ConfigureAwait(false);

            // Recurring meeting
            var recurrenceInfo = new RecurrenceInfo()
            {
                EndTimes   = 2,
                WeeklyDays = new[] { DayOfWeek.Monday, DayOfWeek.Friday },
                Type       = RecurrenceType.Weekly
            };
            var newRecurringMeeting = await client.Meetings.CreateRecurringMeetingAsync(userId, "ZoomNet Integration Testing: recurring meeting", "The agenda", start, duration, recurrenceInfo, "p@ss!w0rd", settings, trackingFields, cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"Recurring meeting {newRecurringMeeting.Id} created").ConfigureAwait(false);

            await client.Meetings.UpdateRecurringMeetingAsync(newRecurringMeeting.Id, topic : "ZoomNet Integration Testing: UPDATED recurring meeting", cancellationToken : cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"Recurring meeting {newRecurringMeeting.Id} updated").ConfigureAwait(false);

            var recurringMeeting = (RecurringMeeting)await client.Meetings.GetAsync(newRecurringMeeting.Id, null, cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"Recurring meeting {recurringMeeting.Id} retrieved").ConfigureAwait(false);

            var occurenceId = recurringMeeting.Occurrences[0].OccurrenceId;
            await client.Meetings.UpdateMeetingOccurrenceAsync(newRecurringMeeting.Id, occurenceId, duration : 99, cancellationToken : cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"Recurring meeting {newRecurringMeeting.Id} occurence {occurenceId} updated").ConfigureAwait(false);

            await client.Meetings.DeleteAsync(newRecurringMeeting.Id, null, false, false, cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"Recurring meeting {newRecurringMeeting.Id} deleted").ConfigureAwait(false);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            RecurrenceValues values = null;

            switch (tabControl1.SelectedIndex)
            {
            case 0:     // Daily
                DailyRecurrenceSettings da;
                if (radioOccurrences.Checked)
                {
                    da = new DailyRecurrenceSettings(dtStartDate.Value, Convert.ToInt32(txtOccurrences.Text));
                }
                else
                {
                    da = new DailyRecurrenceSettings(dtStartDate.Value, dtEndDate.Value);
                }

                if (radioButton1.Checked)
                {
                    values = da.GetValues(int.Parse(textBox1.Text));
                }
                else
                {
                    values = da.GetValues(1, DailyRegenType.OnEveryWeekday);
                }
                break;

            case 1:     // Weekly
                WeeklyRecurrenceSettings we;
                SelectedDayOfWeekValues  selectedValues = new SelectedDayOfWeekValues();

                if (radioOccurrences.Checked)
                {
                    we = new WeeklyRecurrenceSettings(dtStartDate.Value, Convert.ToInt32(txtOccurrences.Text));
                }
                else
                {
                    we = new WeeklyRecurrenceSettings(dtStartDate.Value, dtEndDate.Value);
                }

                selectedValues.Sunday    = chkSunday.Checked;
                selectedValues.Monday    = chkMonday.Checked;
                selectedValues.Tuesday   = chkTuesday.Checked;
                selectedValues.Wednesday = chkWednesday.Checked;
                selectedValues.Thursday  = chkThursday.Checked;
                selectedValues.Friday    = chkFriday.Checked;
                selectedValues.Saturday  = chkSaturday.Checked;

                values = we.GetValues(int.Parse(txtWeeklyRegenXWeeks.Text), selectedValues);
                break;

            case 2:     // Monthly
                MonthlyRecurrenceSettings mo;
                if (radioOccurrences.Checked)
                {
                    mo = new MonthlyRecurrenceSettings(dtStartDate.Value, Convert.ToInt32(txtOccurrences.Text));
                }
                else
                {
                    mo = new MonthlyRecurrenceSettings(dtStartDate.Value, dtEndDate.Value);
                }


                if (radioButton3.Checked)
                {
                    values = mo.GetValues(int.Parse(textBox4.Text), Convert.ToInt32(textBox2.Text));
                }
                else
                {
                    // Get the adjusted values
                    mo.AdjustmentValue = int.Parse(txtMonthlyAdjustedValue.Text);
                    values             = mo.GetValues((MonthlySpecificDatePartOne)comboBox2.SelectedIndex, (MonthlySpecificDatePartTwo)comboBox3.SelectedIndex, int.Parse(textBox3.Text));
                }
                break;

            case 3:     // Yearly
                YearlyRecurrenceSettings yr;
                if (radioOccurrences.Checked)
                {
                    yr = new YearlyRecurrenceSettings(dtStartDate.Value, Convert.ToInt32(txtOccurrences.Text));
                }
                else
                {
                    yr = new YearlyRecurrenceSettings(dtStartDate.Value, dtEndDate.Value);
                }


                if (radioYearlyEvery.Checked)
                {
                    values = yr.GetValues(int.Parse(txtYearEvery.Text), cboYearEveryMonth.SelectedIndex + 1);
                }
                else
                {
                    // Get the adjusted value
                    yr.AdjustmentValue = int.Parse(txtYearlyAdjustedValue.Text);
                    values             = yr.GetValues((YearlySpecificDatePartOne)comboBox5.SelectedIndex, (YearlySpecificDatePartTwo)comboBox4.SelectedIndex, (YearlySpecificDatePartThree)(comboBox6.SelectedIndex + 1));
                }
                break;
            }

            txtSeriesInfo.Text          = values.GetSeriesInfo();
            txtGetRecurrenceValues.Text = txtSeriesInfo.Text;

            lstResults.Items.Clear();
            DateTime[] bolded  = new DateTime[values.Values.Count];
            int        counter = 0;

            foreach (DateTime dt in values.Values)
            {
                bolded[counter] = dt;
                lstResults.Items.Add(new DateItem(dt));
                counter++;
            }
            monthCalendar1.BoldedDates = bolded;

            if (lstResults.Items.Count > 0)
            {
                lstResults.SelectedIndex = 0;
            }

            txtTotal.Text          = lstResults.Items.Count.ToString();
            txtEndDate.Text        = values.EndDate.ToShortDateString();
            txtStartDate.Text      = values.StartDate.ToShortDateString();
            btnGetNextDate.Enabled = lstResults.Items.Count > 0;
            txtNextDate.Text       = string.Empty;
            lstRecurrenceValues.Items.Clear();
            tabMain.SelectedTab   = tabSecond;
            txtAdjustedTotal.Text = lstRecurrenceValues.Items.Count.ToString();

            // Get reccurrence info object to use for setting controls
            RecurrenceInfo info = RecurrenceHelper.GetFriendlySeriesInfo(values.GetSeriesInfo());

            dateTimePickerStartDate.Value = info.StartDate;
            if (info.EndDate.HasValue)
            {
                dateTimePickerStartDateEndDate.Value = info.EndDate.Value;
                dtAdjustedDateTime.Value             = info.EndDate.Value;
                dateTimePicker1.Value = info.EndDate.Value;
            }
        }
Beispiel #22
0
        /*
         * protected void ASPxDataView3_DataBound(object sender, EventArgs e)
         * {
         *      if (ASPxDataView3.Items.Count > 0)
         *      {
         *              for (int i = 0; i < ASPxDataView3.Items.Count; i++)
         *              {
         *                      ASPxLabel lbl = new ASPxLabel();
         *                      lbl = (ASPxLabel)ASPxDataView3.FindItemControl("ASPxLabel3", ASPxDataView3.Items[i]);
         *                      lbl.Text = (ASPxDataView3.Items[i].DataItem as DataRowView)["Type"].ToString() + " List";
         *
         *                      ASPxDataView dataview = new ASPxDataView();
         *                      dataview = (ASPxDataView)ASPxDataView3.FindItemControl("ASPxDataView2", ASPxDataView3.Items[i]);
         *
         *                      DataTable dt2 = VSWebBL.DashboardBL.DashboardBL.Ins.GetStatusGrid((ASPxDataView3.Items[i].DataItem as DataRowView)["Type"].ToString());
         *                      dataview.DataSource = dt2;
         *                      dataview.DataBind();
         *
         *
         *                      //if (dataview.Items.Count > 0)
         *                      //{
         *                        //  for (int j = 0; j < dataview.Items.Count; j++)
         *                              //{
         *                                //  ASPxPanel panel = new ASPxPanel();
         *                                 // panel = (ASPxPanel)dataview.FindItemControl("ASPxPanel1",dataview.Items[j]);
         *                                      //panel.BackColor = GetColor(dataview.Items[j].DataItem);
         *
         *                                      //ASPxLabel lbl = new ASPxLabel();
         *                                      //lbl = (ASPxLabel)panel.FindControl("ASPxLabel1");
         *                                      //lbl = (ASPxLabel)ASPxDataView2.FindItemControl("ASPxLabel1", ASPxDataView2.VisibleItems[i]);
         *                                      //lbl.Text = (dataview.Items[j].DataItem as DataRowView)["Name"].ToString();
         *
         *                                      //ASPxImage img = new ASPxImage();
         *                                      //img = (ASPxImage)panel.FindControl("ASPxImage1");
         *                                      //img = (ASPxImage)ASPxDataView2.FindItemControl("ASPxImage1", ASPxDataView2.Items[i]);
         *                                      //img.ImageUrl = (dataview.Items[j].DataItem as DataRowView)["imgsource"].ToString();
         *
         *                                      //ASPxLabel lbl2 = new ASPxLabel();
         *                                      //lbl2 = (ASPxLabel)panel.FindControl("ASPxLabel2");
         *                                      //lbl2.Text = (dataview.Items[j].DataItem as DataRowView)["Status"].ToString();
         *                              //}
         *                      //}
         *              }
         *      }
         * }*/



        protected void BtnApply_Click(object sender, EventArgs e)
        {
            //    Mukund 10Jun2014
            //VSPLUS-673: Executive Summary should have the same right-click menu as other screens

            try
            {
                // DataRow row = (DataRow)Session["myRow"];
                //if (row != null)
                if (hfName.Value != null)
                {
                    List <string> serverIDValues     = new List <string>();
                    List <string> servertypeIDValues = new List <string>();
                    Random        random             = new Random((int)DateTime.Now.Ticks);
                    //RandomString(5, random);
                    //string Name = row["Name"].ToString() + "-Temp-" + DateTime.Now.ToLongDateString();
                    string        Name          = hfName.Value + "-Temp-" + DateTime.Now.ToString();    //.ToLongDateString();
                    string        StartDate     = DateTime.Now.ToShortDateString();
                    string        StartTime     = DateTime.Now.ToShortTimeString();
                    DateTime      sdt           = Convert.ToDateTime(StartDate);
                    string        Duration      = TbDuration.Text;
                    string        EndDate       = DateTime.Now.ToShortDateString();
                    DateTime      edt           = Convert.ToDateTime(EndDate);
                    string        MaintType     = "1";
                    string        MaintDaysList = "";
                    string        altime        = DateTime.Now.ToShortTimeString();
                    DateTime      al            = Convert.ToDateTime(altime);
                    ASPxScheduler sh            = new ASPxScheduler();
                    Appointment   apt           = sh.Storage.CreateAppointment(AppointmentType.Pattern);
                    Reminder      r             = apt.CreateNewReminder();

                    //int min = Convert.ToInt32(MaintDurationTextBox.Text);
                    int min = Convert.ToInt32(TbDuration.Text);
                    r.AlertTime = al.AddMinutes(min);
                    //3/24/2015 NS modified for DevExpress upgrade 14.2
                    //ReminderXmlPersistenceHelper reminderHelper = new ReminderXmlPersistenceHelper(r, DateSavingType.LocalTime);
                    ReminderXmlPersistenceHelper reminderHelper = new ReminderXmlPersistenceHelper(r);
                    string rem = reminderHelper.ToXml().ToString();

                    RecurrenceInfo reci = new RecurrenceInfo();
                    reci.BeginUpdate();
                    reci.AllDay      = false;
                    reci.Periodicity = 10;
                    reci.Range       = RecurrenceRange.EndByDate;
                    reci.Start       = sdt;
                    reci.End         = edt;
                    reci.Duration    = edt - sdt;
                    reci.Type        = RecurrenceType.Yearly;


                    OccurrenceCalculator calc = OccurrenceCalculator.CreateInstance(reci);
                    TimeInterval         ttc  = new TimeInterval(reci.Start, reci.End + new TimeSpan(1, 0, 0));


                    var bcoll = calc.CalcOccurrences(ttc, apt);
                    if (bcoll.Count != 0)
                    {
                        reci.OccurrenceCount = bcoll.Count;
                    }
                    else
                    {
                        reci.OccurrenceCount = 1;
                    }
                    reci.Range = RecurrenceRange.OccurrenceCount;
                    reci.EndUpdate();
                    string s = reci.ToXml();

                    string EndDateIndicator = "";
                    //DataTable dt = VSWebBL.SecurityBL.ServersBL.Ins.GetServerDetailsByName(row["Name"].ToString());
                    DataTable dt = VSWebBL.SecurityBL.ServersBL.Ins.GetServerDetailsByName(hfName.Value);

                    if (dt != null && dt.Rows.Count > 0)
                    {
                        //VSPLUS-833:Suspend temporarily is not working correctly
                        //19Jul14, Mukund, The below two were reversely assigned so suspend wasnt working.
                        servertypeIDValues.Add(dt.Rows[0][2].ToString());
                        serverIDValues.Add(dt.Rows[0][0].ToString());
                    }
                    bool update = false;
                    if (servertypeIDValues != null && servertypeIDValues.Count > 0)
                    {
                        update = VSWebBL.ConfiguratorBL.MaintenanceBL.Ins.UpdateMaintenanceWindows(null, Name, StartDate, StartTime, Duration,
                                                                                                   EndDate, MaintType, MaintDaysList, EndDateIndicator, serverIDValues, s, rem, 1, true, servertypeIDValues, "true", "1");
                    }
                    if (update == true)
                    {
                        //SuccessMsg.InnerHtml = "Monitoring for " + row["Name"].ToString() + " has been temporarily suspended for a duration of " + TbDuration.Text + " minutes.";
                        //10/3/2014 NS modified for VSPLUS-990
                        SuccessMsg.InnerHtml = "Monitoring for " + hfName.Value + " has been temporarily suspended for a duration of " + TbDuration.Text + " minutes." +
                                               "<button type=\"button\" class=\"close\" data-dismiss=\"alert\"><span aria-hidden=\"true\">&times;</span><span class=\"sr-only\">Close</span></button>";

                        SuccessMsg.Style.Value = "display: block";

                        BindDataView();
                    }
                    else
                    {
                        //10/3/2014 NS modified for VSPLUS-990
                        ErrorMsg.InnerHtml = "The Settings were NOT updated." +
                                             "<button type=\"button\" class=\"close\" data-dismiss=\"alert\"><span aria-hidden=\"true\">&times;</span><span class=\"sr-only\">Close</span></button>";
                        ErrorMsg.Style.Value = "display: block";
                    }
                    SuspendPopupControl.ShowOnPageLoad = false;
                }
            }
            catch (Exception ex)
            {
                Log.Entry.Ins.WriteHistoryEntry(DateTime.Now.ToString() + " Exception - " + ex);
                throw ex;
            }
        }
Beispiel #23
0
        /// <summary>
        /// Update the details of a recurring meeting.
        /// </summary>
        /// <param name="meetingId">The meeting ID.</param>
        /// <param name="userId">The user Id or email address.</param>
        /// <param name="topic">Meeting topic.</param>
        /// <param name="agenda">Meeting description.</param>
        /// <param name="start">Meeting start time. If omitted, a 'Recurring meeting with no fixed time' will be created.</param>
        /// <param name="duration">Meeting duration (minutes).</param>
        /// <param name="recurrence">Recurrence information.</param>
        /// <param name="password">Password to join the meeting. Password may only contain the following characters: [a-z A-Z 0-9 @ - _ *]. Max of 10 characters.</param>
        /// <param name="settings">Meeting settings.</param>
        /// <param name="trackingFields">Tracking fields.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>
        /// The async task.
        /// </returns>
        public Task UpdateRecurringMeetingAsync(long meetingId, string userId = null, string topic = null, string agenda = null, DateTime?start = null, int?duration = null, RecurrenceInfo recurrence = null, string password = null, MeetingSettings settings = null, IDictionary <string, string> trackingFields = null, CancellationToken cancellationToken = default)
        {
            var data = new JObject();

            data.AddPropertyIfValue("topic", topic);
            data.AddPropertyIfValue("password", password);
            data.AddPropertyIfValue("agenda", agenda);
            data.AddPropertyIfValue("start_time", start?.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss'Z'"));
            data.AddPropertyIfValue("duration", duration);
            data.AddPropertyIfValue("recurrence", recurrence);
            if (start.HasValue)
            {
                data.Add("timezone", "UTC");
            }
            data.AddPropertyIfValue("settings", settings);
            data.AddPropertyIfValue("tracking_fields", trackingFields?.Select(tf => new JObject()
            {
                { "field", tf.Key }, { "value", tf.Value }
            }));

            return(_client
                   .PatchAsync($"meetings/{meetingId}")
                   .WithJsonBody(data)
                   .WithCancellationToken(cancellationToken)
                   .AsMessage());
        }
        public JsonResult FetchNewAvailableSlot(RecurrenceInfo info)
        {
            using (var client = new HttpClient())
            {
                BookingResponse output = new BookingResponse();

                string        apiURL = ConfigurationManager.AppSettings["APIRefenenceURL"];
                CalendarInput input  = new CalendarInput();
                input.Capacity = info.Capacity;
                input.FloorID  = info.FloorID;
                input.UserId   = (string)Session["UserName"];
                input.Password = (string)Session["Password"];
                int durationInMinutes = 0;
                if (!string.IsNullOrEmpty(info.Duration))
                {
                    durationInMinutes = int.Parse(info.Duration.Split(Convert.ToChar(":"))[0]) * 60 + int.Parse(info.Duration.Split(Convert.ToChar(":"))[1]);
                }
                List <Slot> slots = new List <Slot>();
                DateTime    start = DateTime.MinValue;
                DateTime    end   = DateTime.MinValue;

                if (DateTime.TryParse(info.StartDate + " " + info.StartTime, out start) && DateTime.TryParse(info.EndtDate, out end))
                {
                    if (info.IsEveryDay || info.IsEveryDayWorking)
                    {
                        while (start.Date <= end.Date)
                        {
                            if (info.IsEveryDayWorking && (start.DayOfWeek == DayOfWeek.Saturday || start.DayOfWeek == DayOfWeek.Sunday))
                            {
                                start = start.AddDays(1);
                                continue;
                            }
                            slots.Add(new Slot()
                            {
                                StartDateTime = start, EndDateTime = start.AddMinutes(durationInMinutes)
                            });
                            start = start.AddDays(1);
                        }
                    }
                    else if (info.EverySpecifiedWorkingDate > 0)
                    {
                        slots.Add(new Slot()
                        {
                            StartDateTime = start, EndDateTime = start.AddMinutes(durationInMinutes)
                        });
                        start = start.AddDays(info.EverySpecifiedWorkingDate);
                        while (start.Date <= end.Date)
                        {
                            slots.Add(new Slot()
                            {
                                StartDateTime = start, EndDateTime = start.AddMinutes(durationInMinutes)
                            });
                            start = start.AddDays(info.EverySpecifiedWorkingDate);
                        }
                    }
                }

                input.BookingSlots = slots;

                Task <HttpResponseMessage> response = client.PostAsJsonAsync(apiURL + "FetchBookings", input);
                response.Wait();
                if (response.Result.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    var roomsJsonString = response.Result.Content.ReadAsStringAsync().Result;
                    var availableRooms  = JsonConvert.DeserializeObject <IList <CalendarOutput> >(roomsJsonString);

                    Session["newfloor"] = availableRooms;

                    if (availableRooms.Any(i => i.IsAvailable == false) && availableRooms.Any(x => x.RoomName != null))
                    {
                        output.Errors.Add("Time slot is already booked for " + info.StartDate + ", please select another time slot.");
                        return(Json(output, JsonRequestBehavior.AllowGet));
                    }
                    else if (availableRooms.Any(i => i.IsAvailable == false) && availableRooms.Any(x => x.RoomName == null))
                    {
                        output.Errors.Add("No any room is available for (" + input.Capacity + ") no of attendees.");
                        return(Json(output, JsonRequestBehavior.AllowGet));
                    }
                    else
                    {
                        return(Json(availableRooms, JsonRequestBehavior.AllowGet));
                    }
                }
            }
            return(Json(null, JsonRequestBehavior.AllowGet));
        }
        public JsonResult FetchAvailability(RecurrenceInfo info)
        {
            using (var client = new HttpClient())
            {
                string              apiURL = ConfigurationManager.AppSettings["APIRefenenceURL"];
                CalendarInput       input  = new CalendarInput();
                FetchRoomsRtesponse fetchRoomsRtesponse = new FetchRoomsRtesponse();

                if (Convert.ToString(Session["UserName"]) == string.Empty || Convert.ToString(Session["Password"]) == string.Empty)
                {
                    fetchRoomsRtesponse.NeedToLogout = true;
                }
                input.Capacity = info.Capacity;
                input.FloorID  = info.FloorID;
                input.UserId   = (string)Session["UserName"];
                input.Password = (string)Session["Password"];
                int durationInMinutes = 0;
                if (!string.IsNullOrEmpty(info.Duration))
                {
                    durationInMinutes = int.Parse(info.Duration.Split(Convert.ToChar(":"))[0]) * 60 + int.Parse(info.Duration.Split(Convert.ToChar(":"))[1]);
                }
                if (durationInMinutes <= 0)
                {
                    fetchRoomsRtesponse.Errors.Add("Duration can not be zero");
                }


                List <Slot> slots         = new List <Slot>();
                DateTime    start         = DateTime.MinValue;
                DateTime    startOriginal = DateTime.MinValue;
                DateTime    end           = DateTime.MinValue;
                if (DateTime.TryParse(info.StartDate + " " + info.StartTime, out start) && DateTime.TryParse(info.EndtDate, out end))
                {
                    startOriginal = start;
                    switch (info.RecurrenceType)
                    {
                        #region For Daily
                    case 1:     // For Daily
                    {
                        if (info.IsEveryDay || info.IsEveryDayWorking)
                        {
                            while (start.Date <= end.Date)
                            {
                                if (info.IsEveryDayWorking && (start.DayOfWeek == DayOfWeek.Saturday || start.DayOfWeek == DayOfWeek.Sunday))
                                {
                                    start = start.AddDays(1);
                                    continue;
                                }
                                if (start > DateTime.Now)
                                {
                                    slots.Add(new Slot()
                                        {
                                            StartDateTime = start, EndDateTime = start.AddMinutes(durationInMinutes)
                                        });
                                }
                                start = start.AddDays(1);
                            }
                        }
                        else if (info.EverySpecifiedWorkingDate > 0)
                        {
                            if (start > DateTime.Now)
                            {
                                slots.Add(new Slot()
                                    {
                                        StartDateTime = start, EndDateTime = start.AddMinutes(durationInMinutes)
                                    });
                            }
                            start = start.AddDays(info.EverySpecifiedWorkingDate);
                            while (start.Date <= end.Date)
                            {
                                slots.Add(new Slot()
                                    {
                                        StartDateTime = start, EndDateTime = start.AddMinutes(durationInMinutes)
                                    });
                                start = start.AddDays(info.EverySpecifiedWorkingDate);
                            }
                        }
                    }
                    break;
                        #endregion For Daily

                        #region For Weekly
                    case 2:     // For Weekly
                    {
                        do
                        {
                            if (
                                (info.IsSaturday && start.DayOfWeek == DayOfWeek.Saturday) ||
                                (info.IsSunday && start.DayOfWeek == DayOfWeek.Sunday) ||
                                (info.IsMonday && start.DayOfWeek == DayOfWeek.Monday) ||
                                (info.IsTuesday && start.DayOfWeek == DayOfWeek.Tuesday) ||
                                (info.IsWednesday && start.DayOfWeek == DayOfWeek.Wednesday) ||
                                (info.IsThursday && start.DayOfWeek == DayOfWeek.Thursday) ||
                                (info.IsFriday && start.DayOfWeek == DayOfWeek.Friday)
                                )
                            {
                                slots.Add(new Slot()
                                    {
                                        StartDateTime = start, EndDateTime = start.AddMinutes(durationInMinutes)
                                    });
                            }
                            start = start.AddDays(1);
                        }while (start.Date <= end.Date);
                    }
                    break;
                        #endregion For Weekly

                        #region For Monthly
                    case 3:     // For Monthly
                    {
                        DateTime startDateAsPerCriteria = new DateTime(start.Year, start.Month, 1, start.Hour, start.Minute, start.Second);
                        start = startDateAsPerCriteria;
                        if (info.DayVise)
                        {
                            #region For Monthly Day wise
                            start = start.AddDays(info.Nthday - 1);
                            while (start.Date <= end.Date)
                            {
                                if (start > startOriginal.Date && startDateAsPerCriteria <= end.Date)
                                {
                                    slots.Add(new Slot()
                                        {
                                            StartDateTime = start, EndDateTime = start.AddMinutes(durationInMinutes)
                                        });
                                }
                                start = start.AddMonths(info.DayMonth);
                            }
                            #endregion For Monthly Day wise
                        }
                        else if (info.DayTypeVise)
                        {
                            #region For Monthly Day Type wise
                            List <string> weekAllDays = new List <string>()
                            {
                                "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
                            };

                            if (info.DayTypeMonth == "Day")
                            {
                                #region For Monthly Day Type wise -Day
                                do
                                {
                                    if (info.NthMonthDay == "First")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddDays(0);
                                    }
                                    else if (info.NthMonthDay == "Second")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddDays(1);
                                    }
                                    else if (info.NthMonthDay == "Third")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddDays(2);
                                    }
                                    else if (info.NthMonthDay == "Fourth")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddDays(3);
                                    }
                                    else if (info.NthMonthDay == "Last")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddMonths(1).AddDays(-1);
                                    }
                                    if (startDateAsPerCriteria > startOriginal.Date && startDateAsPerCriteria <= end.Date)
                                    {
                                        slots.Add(new Slot()
                                            {
                                                StartDateTime = startDateAsPerCriteria, EndDateTime = startDateAsPerCriteria.AddMinutes(durationInMinutes)
                                            });
                                    }
                                    startDateAsPerCriteria = startDateAsPerCriteria.AddMonths(info.MonthNumber);
                                    startDateAsPerCriteria = new DateTime(startDateAsPerCriteria.Year, startDateAsPerCriteria.Month, 1, startDateAsPerCriteria.Hour, startDateAsPerCriteria.Minute, startDateAsPerCriteria.Second);
                                }while (startDateAsPerCriteria <= end.Date);

                                #endregion For Monthly Day Type wise -Day
                            }
                            else if (info.DayTypeMonth == "WeekDay")
                            {
                                #region For Monthly Day Type wise -Weekday
                                do
                                {
                                    if (info.NthMonthDay == "First")
                                    {
                                        startDateAsPerCriteria = GetNextWeekDays(startDateAsPerCriteria);
                                    }
                                    else if (info.NthMonthDay == "Second")
                                    {
                                        startDateAsPerCriteria = GetNextWeekDays(startDateAsPerCriteria);

                                        for (int i = 0; i < 1; i++)
                                        {
                                            startDateAsPerCriteria = startDateAsPerCriteria.AddDays(1);
                                            startDateAsPerCriteria = GetNextWeekDays(startDateAsPerCriteria);
                                        }
                                    }
                                    else if (info.NthMonthDay == "Third")
                                    {
                                        startDateAsPerCriteria = GetNextWeekDays(startDateAsPerCriteria);

                                        for (int i = 0; i < 2; i++)
                                        {
                                            startDateAsPerCriteria = startDateAsPerCriteria.AddDays(1);
                                            startDateAsPerCriteria = GetNextWeekDays(startDateAsPerCriteria);
                                        }
                                    }
                                    else if (info.NthMonthDay == "Fourth")
                                    {
                                        startDateAsPerCriteria = GetNextWeekDays(startDateAsPerCriteria);

                                        for (int i = 0; i < 3; i++)
                                        {
                                            startDateAsPerCriteria = startDateAsPerCriteria.AddDays(1);
                                            startDateAsPerCriteria = GetNextWeekDays(startDateAsPerCriteria);
                                        }
                                    }
                                    else if (info.NthMonthDay == "Last")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddMonths(1).AddDays(-1);
                                        while ((startDateAsPerCriteria.DayOfWeek == DayOfWeek.Saturday) || (startDateAsPerCriteria.DayOfWeek == DayOfWeek.Sunday))
                                        {
                                            startDateAsPerCriteria = startDateAsPerCriteria.AddDays(-1);
                                        }
                                    }
                                    if (startDateAsPerCriteria > startOriginal.Date && startDateAsPerCriteria <= end.Date)
                                    {
                                        slots.Add(new Slot()
                                            {
                                                StartDateTime = startDateAsPerCriteria, EndDateTime = startDateAsPerCriteria.AddMinutes(durationInMinutes)
                                            });
                                    }
                                    startDateAsPerCriteria = startDateAsPerCriteria.AddMonths(info.MonthNumber);
                                    startDateAsPerCriteria = new DateTime(startDateAsPerCriteria.Year, startDateAsPerCriteria.Month, 1, startDateAsPerCriteria.Hour, startDateAsPerCriteria.Minute, startDateAsPerCriteria.Second);
                                }while (startDateAsPerCriteria <= end.Date);
                                #endregion For Monthly Day Type wise -Weekday
                            }
                            if (info.DayTypeMonth == "Weekend")
                            {
                                #region For Monthly Day Type wise -Weekend
                                do
                                {
                                    if (info.NthMonthDay == "First")
                                    {
                                        startDateAsPerCriteria = GetNextWeekendDate(startDateAsPerCriteria);
                                    }
                                    else if (info.NthMonthDay == "Second")
                                    {
                                        startDateAsPerCriteria = GetNextWeekendDate(startDateAsPerCriteria);

                                        for (int i = 0; i < 1; i++)
                                        {
                                            startDateAsPerCriteria = startDateAsPerCriteria.AddDays(1);
                                            startDateAsPerCriteria = GetNextWeekendDate(startDateAsPerCriteria);
                                        }
                                    }
                                    else if (info.NthMonthDay == "Third")
                                    {
                                        startDateAsPerCriteria = GetNextWeekendDate(startDateAsPerCriteria);
                                        for (int i = 0; i < 2; i++)
                                        {
                                            startDateAsPerCriteria = startDateAsPerCriteria.AddDays(1);
                                            startDateAsPerCriteria = GetNextWeekendDate(startDateAsPerCriteria);
                                        }
                                    }
                                    else if (info.NthMonthDay == "Fourth")
                                    {
                                        startDateAsPerCriteria = GetNextWeekendDate(startDateAsPerCriteria);
                                        for (int i = 0; i < 3; i++)
                                        {
                                            startDateAsPerCriteria = startDateAsPerCriteria.AddDays(1);
                                            startDateAsPerCriteria = GetNextWeekendDate(startDateAsPerCriteria);
                                        }
                                    }
                                    else if (info.NthMonthDay == "Last")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddMonths(1).AddDays(-1);
                                        while (!((startDateAsPerCriteria.DayOfWeek == DayOfWeek.Saturday) || (startDateAsPerCriteria.DayOfWeek == DayOfWeek.Sunday)))
                                        {
                                            startDateAsPerCriteria = startDateAsPerCriteria.AddDays(-1);
                                        }
                                    }
                                    if (startDateAsPerCriteria > startOriginal.Date && startDateAsPerCriteria <= end.Date)
                                    {
                                        slots.Add(new Slot()
                                            {
                                                StartDateTime = startDateAsPerCriteria, EndDateTime = startDateAsPerCriteria.AddMinutes(durationInMinutes)
                                            });
                                    }
                                    startDateAsPerCriteria = startDateAsPerCriteria.AddMonths(info.MonthNumber);
                                    startDateAsPerCriteria = new DateTime(startDateAsPerCriteria.Year, startDateAsPerCriteria.Month, 1, startDateAsPerCriteria.Hour, startDateAsPerCriteria.Minute, startDateAsPerCriteria.Second);
                                }while (startDateAsPerCriteria <= end.Date);
                                #endregion For Monthly Day Type wise -Weekend
                            }
                            else if (weekAllDays.Contains(info.DayTypeMonth))
                            {
                                #region For Monthly Day Type wise -SpecificDay
                                do
                                {
                                    if (info.NthMonthDay == "First")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddDays(0);
                                    }
                                    else if (info.NthMonthDay == "Second")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddDays(7);
                                    }
                                    else if (info.NthMonthDay == "Third")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddDays(14);
                                    }
                                    else if (info.NthMonthDay == "Fourth")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddDays(21);
                                    }
                                    else if (info.NthMonthDay == "Last")
                                    {
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddMonths(1).AddDays(-8);
                                    }

                                    for (int i = 0; i < 7; i++)
                                    {
                                        if (
                                            (startDateAsPerCriteria.DayOfWeek == DayOfWeek.Sunday && info.DayTypeMonth == "Sunday") ||
                                            (startDateAsPerCriteria.DayOfWeek == DayOfWeek.Monday && info.DayTypeMonth == "Monday") ||
                                            (startDateAsPerCriteria.DayOfWeek == DayOfWeek.Tuesday && info.DayTypeMonth == "Tuesday") ||
                                            (startDateAsPerCriteria.DayOfWeek == DayOfWeek.Wednesday && info.DayTypeMonth == "Wednesday") ||
                                            (startDateAsPerCriteria.DayOfWeek == DayOfWeek.Thursday && info.DayTypeMonth == "Thursday") ||
                                            (startDateAsPerCriteria.DayOfWeek == DayOfWeek.Friday && info.DayTypeMonth == "Friday") ||
                                            (startDateAsPerCriteria.DayOfWeek == DayOfWeek.Saturday && info.DayTypeMonth == "Saturday")
                                            )
                                        {
                                            break;
                                        }
                                        startDateAsPerCriteria = startDateAsPerCriteria.AddDays(1);
                                    }
                                    if (startDateAsPerCriteria > startOriginal.Date && startDateAsPerCriteria <= end.Date)
                                    {
                                        slots.Add(new Slot()
                                            {
                                                StartDateTime = startDateAsPerCriteria, EndDateTime = startDateAsPerCriteria.AddMinutes(durationInMinutes)
                                            });
                                    }
                                    startDateAsPerCriteria = startDateAsPerCriteria.AddMonths(info.MonthNumber);
                                    startDateAsPerCriteria = new DateTime(startDateAsPerCriteria.Year, startDateAsPerCriteria.Month, 1, startDateAsPerCriteria.Hour, startDateAsPerCriteria.Minute, startDateAsPerCriteria.Second);
                                }while (startDateAsPerCriteria <= end.Date);
                                #endregion For Monthly Day Type wise -SpecificDay
                            }
                            #endregion For Monthly Day Type wise
                        }
                    }
                    break;
                        #endregion For Monthly

                    case 4:     // For Custom
                    {
                        foreach (var item in info.AppointmentDates)
                        {
                            if (DateTime.TryParse(item + " " + info.StartTime, out start))
                            {
                                if (start > DateTime.Now)
                                {
                                    slots.Add(new Slot()
                                        {
                                            StartDateTime = start, EndDateTime = start.AddMinutes(durationInMinutes)
                                        });
                                }
                            }
                            else
                            {
                                fetchRoomsRtesponse.Errors.Add("Date is not proper.");
                            }
                        }
                    }
                    break;

                    default:
                        break;
                    }
                }
                else
                {
                    fetchRoomsRtesponse.Errors.Add("Start date, end date must be proper.");
                }
                if (DateTime.Parse(info.StartDate) > DateTime.Parse(info.EndtDate))
                {
                    fetchRoomsRtesponse.Errors.Add("Start date must be less then or equal to end date.");
                }
                input.BookingSlots = slots;

                if (slots.Count == 0)
                {
                    fetchRoomsRtesponse.Errors.Add("No slots to book room.");
                }
                if (fetchRoomsRtesponse.Errors.Count > 0 || fetchRoomsRtesponse.NeedToLogout)
                {
                    return(Json(fetchRoomsRtesponse, JsonRequestBehavior.AllowGet));
                }

                Task <HttpResponseMessage> response = client.PostAsJsonAsync(apiURL + "FetchBookings", input);
                response.Wait();
                if (response.Result.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    var roomsJsonString = response.Result.Content.ReadAsStringAsync().Result;
                    fetchRoomsRtesponse.AvailableRooms = JsonConvert.DeserializeObject <System.Collections.Generic.IList <CalendarOutput> >(roomsJsonString);

                    Session["floors"] = fetchRoomsRtesponse.AvailableRooms;

                    return(Json(fetchRoomsRtesponse, JsonRequestBehavior.AllowGet));
                }
            }
            return(Json(null, JsonRequestBehavior.AllowGet));
        }
Beispiel #26
0
        public async Task RunAsync(string userId, IZoomClient client, TextWriter log, CancellationToken cancellationToken)
        {
            if (cancellationToken.IsCancellationRequested)
            {
                return;
            }

            await log.WriteLineAsync("\n***** WEBINARS *****\n").ConfigureAwait(false);

            // GET ALL THE WEBINARS
            var paginatedWebinars = await client.Webinars.GetAllAsync(userId, 30, null, cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"There are {paginatedWebinars.TotalRecords} webinars for user {userId}").ConfigureAwait(false);

            // CLEANUP PREVIOUS INTEGRATION TESTS THAT MIGHT HAVE BEEN INTERRUPTED BEFORE THEY HAD TIME TO CLEANUP AFTER THEMSELVES
            var cleanUpTasks = paginatedWebinars.Records
                               .Union(paginatedWebinars.Records)
                               .Where(m => m.Topic.StartsWith("ZoomNet Integration Testing:"))
                               .Select(async oldWebinar =>
            {
                await client.Webinars.DeleteAsync(oldWebinar.Id, null, false, cancellationToken).ConfigureAwait(false);
                await log.WriteLineAsync($"Webinar {oldWebinar.Id} deleted").ConfigureAwait(false);
                await Task.Delay(250, cancellationToken).ConfigureAwait(false);                            // Brief pause to ensure Zoom has time to catch up
            });
            await Task.WhenAll(cleanUpTasks).ConfigureAwait(false);

            var settings = new WebinarSettings()
            {
                ApprovalType = MeetingApprovalType.Manual
            };
            var trackingFields = new Dictionary <string, string>()
            {
                { "field1", "value1" },
                { "field2", "value2" }
            };

            // Scheduled webinar
            var start               = DateTime.UtcNow.AddMonths(1);
            var duration            = 30;
            var newScheduledWebinar = await client.Webinars.CreateScheduledWebinarAsync(userId, "ZoomNet Integration Testing: scheduled webinar", "The agenda", start, duration, "p@ss!w0rd", settings, trackingFields, cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"Scheduled webinar {newScheduledWebinar.Id} created").ConfigureAwait(false);

            await client.Webinars.DeleteAsync(newScheduledWebinar.Id, null, false, cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"Scheduled webinar {newScheduledWebinar.Id} deleted").ConfigureAwait(false);

            // Recurring webinar
            var recurrenceInfo = new RecurrenceInfo()
            {
                EndTimes   = 2,
                WeeklyDays = new[] { DayOfWeek.Monday, DayOfWeek.Friday },
                Type       = RecurrenceType.Weekly
            };
            var newRecurringWebinar = await client.Webinars.CreateRecurringWebinarAsync(userId, "ZoomNet Integration Testing: recurring webinar", "The agenda", start, duration, recurrenceInfo, "p@ss!w0rd", settings, trackingFields, cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"Recurring webinar {newRecurringWebinar.Id} created").ConfigureAwait(false);

            await client.Webinars.DeleteAsync(newRecurringWebinar.Id, null, false, cancellationToken).ConfigureAwait(false);

            await log.WriteLineAsync($"Recurring webinar {newRecurringWebinar.Id} deleted").ConfigureAwait(false);
        }
    RecurrenceInfo GetActualInfo(RecurrenceInfo info, RecurrenceInfo defaultInfo, RecurrenceType type)
    {
        bool isActive = info.Type.Equals(type);

        return((isActive) ? info : defaultInfo);
    }
    protected virtual void AssignRecurrenceInfoProperties(AppointmentFormController controller, Appointment patternCopy, RecurrenceInfo rinfo, DateTime clientStart)
    {
        rinfo.Type = edtRecurrenceTypeEdit.Type;
        controller.AssignRecurrenceInfoRangeProperties(rinfo, edtRecurrenceRangeControl.ClientRange, clientStart, edtRecurrenceRangeControl.ClientEnd, edtRecurrenceRangeControl.ClientOccurrenceCount, patternCopy);
        RecurrenceRuleControlBase    ruleControl   = GetCurrentRecurrenceRuleControl();
        RecurrenceRuleValuesAccessor valueAccessor = ruleControl.ValuesAccessor;

        rinfo.DayNumber   = valueAccessor.GetDayNumber();
        rinfo.Periodicity = valueAccessor.GetPeriodicity();
        rinfo.Month       = valueAccessor.GetMonth();
        rinfo.WeekDays    = valueAccessor.GetWeekDays();
        rinfo.WeekOfMonth = valueAccessor.GetWeekOfMonth();
    }
Beispiel #29
0
        private static List <SchedulerAppointment> GenerateAppointments()
        {
            List <SchedulerAppointment> list = new List <SchedulerAppointment>();

            int      uniqueID  = 0;
            DateTime startDate = DateTime.Now.Date;
            Random   random    = new Random();

            // Birthdays - from Contacts
            for (int i = 0; i < DataProvider.GetContacts().Count; i++)
            {
                Contact contact = DataProvider.GetContacts()[i];

                SchedulerAppointment appointment = new SchedulerAppointment();
                appointment.Id         = uniqueID;
                appointment.Subject    = contact.FirstName + " " + contact.LastName;
                appointment.AllDay     = true;
                appointment.StartDate  = contact.Birthday.Date;
                appointment.EndDate    = appointment.StartDate.AddDays(1);
                appointment.EventType  = (int)AppointmentType.Pattern;                                                   // Represents the appointment which serves as the pattern for the other recurring appointments
                appointment.LabelId    = SchedulerLabelsHelper.GetItems().FirstOrDefault(c => c.Name == "Birthdays").Id; // Birthday label
                appointment.ResourceId = random.Next(1, ResourceDataSourceHelper.GetItems().Count + 1);

                RecurrenceInfo recInfo = new RecurrenceInfo();
                recInfo.Start              = appointment.StartDate;
                recInfo.Range              = RecurrenceRange.NoEndDate;
                recInfo.Type               = RecurrenceType.Yearly;
                recInfo.Periodicity        = 1;
                recInfo.Month              = contact.Birthday.Month;
                recInfo.DayNumber          = contact.Birthday.Day;
                appointment.RecurrenceInfo = recInfo.ToXml();

                list.Add(appointment);
                uniqueID++;
            }

            // Sample Appointments
            for (int i = -100; i < 100; i++)
            {
                if (i != 0 && i % random.Next(7, 10) == 0)
                {
                    continue;
                }

                SchedulerAppointment appointment = new SchedulerAppointment();
                appointment.Id      = uniqueID;
                appointment.Subject = "Appointment " + uniqueID.ToString();
                int h = random.Next(7, 18);
                appointment.StartDate  = startDate.AddDays(i).AddHours(h);
                appointment.EndDate    = appointment.StartDate.AddHours(random.Next(2, 4));
                appointment.EventType  = (int)AppointmentType.Normal; // Represents a standard (non-recurring) appointment
                appointment.LabelId    = random.Next(1, 4);
                appointment.ResourceId = random.Next(1, ResourceDataSourceHelper.GetItems().Count + 1);
                appointment.Status     = random.Next(1, 5);

                list.Add(appointment);
                uniqueID++;
            }

            return(list);
        }
 protected WeekDays CalcRecurrenceControlWeekDaysValue(RecurrenceInfo info, RecurrenceType controlType)
 {
     return((info.Type.Equals(controlType)) ? info.WeekDays : GetValidWeekDays(controlType, info.Start.DayOfWeek));
 }