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; }
/// <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); }
/// <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)); }
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); }
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); }
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); } } }
/// <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(); }
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; }
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); }
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; } }
/* * 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\">×</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\">×</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; } }
/// <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)); }
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(); }
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)); }