#c# #outlook #outlook-addin
#c# #перспективы #outlook-addin
Вопрос:
В настоящее время все встречи, одиночные и повторяющиеся, отправляются в сценарий, где они сохраняются в базе данных со значениями ‘DateFrom’ и ‘DateTo’.
Эти значения не должны изменяться, если вы открываете одно назначение серии в Outlook, которое не является первым или последним. Они должны измениться, только если вы явно нажмете на первое или последнее назначение и измените дату или время.
Проблема: как только я редактирую любое событие, дата начала и окончания этого единственного события сохраняется в БД как дата начала и окончания серийного назначения в целом.
Если есть способ отличить, является ли событие начальным, средним или конечным событием, я мог бы сделать обходной путь для каждого случая.
Мой код, который обновляет значения и впоследствии отправляет их в сценарий, выглядит следующим образом:
public static IRestResponse PutMeeting(Users users, Users.User user, AppointmentItem appointmentItem, UserProperty roomName, UserProperty roomPassword, UserProperty hostPassword) {
var client = new RestClient(users.OrchestraURL);
var req = new RestRequest("Schedule?", Method.POST);
req.AddOrUpdateParameter("username", user.UserName, ParameterType.QueryString);
req.AddOrUpdateParameter("password", user.GetPasswordEncrypted(), ParameterType.QueryString);
if (appointmentItem.IsRecurring) {
RecurrencePattern pattern = appointmentItem.GetRecurrencePattern();
req.AddOrUpdateParameter("dateFrom", pattern.PatternStartDate.ToString("yyyyMMdd") pattern.StartTime.ToString("HHmm"), ParameterType.QueryString);
req.AddOrUpdateParameter("dateTo", pattern.PatternEndDate.ToString("yyyyMMdd") pattern.EndTime.ToString("HHmm"), ParameterType.QueryString);
req.AddOrUpdateParameter("recurringFlag", true, ParameterType.QueryString);
}
else {
req.AddOrUpdateParameter("dateFrom", appointmentItem.Start.ToString("yyyyMMddHHmm"), ParameterType.QueryString);
req.AddOrUpdateParameter("dateTo", appointmentItem.End.ToString("yyyyMMddHHmm"), ParameterType.QueryString);
req.AddOrUpdateParameter("recurringFlag", false, ParameterType.QueryString);
}
req.AddOrUpdateParameter("spaceName", roomName.Value, ParameterType.QueryString);
req.AddOrUpdateParameter("deleteFlag", false, ParameterType.QueryString);
req.AddOrUpdateParameter("wishedPassword", roomPassword.Value, ParameterType.QueryString);
if (appointmentItem.Subject == null) {
req.AddParameter("subject", resourceDefaultLanguage.meetingSubject, ParameterType.QueryString);
}
else {
req.AddParameter("subject", appointmentItem.Subject, ParameterType.QueryString);
}
req.AddOrUpdateParameter("hostPassword", hostPassword.Value, ParameterType.QueryString);
req.AddHeader("Content-Type", "application/x-www-form-urlencoded");
var response = client.Post(req);
return response;
}
«шаблон.PatternStartDate .toString(«ггггММдд») pattern.startTime.startTime.toString(«HHmm»)» должно было быть объединено, потому что в противном случае оно возвращает бессмыслицу.
Комментарии:
1. Шаблон GetRecurrence должен быть тем, что вы хотите, — и он у вас уже есть. Вы бы сравнили их, чтобы определить, было ли это событие началом или концом. Ваш код выглядит как строка — но я не вижу ничего, что отличало бы серию или встречу в вашем коде, кроме isRecurring. Вы храните как серию, так И собрания, составляющие серию, в БД?
2. Да, в этом случае единственным способом отличия было повторение. Буквально невозможно было достичь того, чего хотели мои коллеги и я. Итак, в конце мы обработали это в обработчике Java. Дата и время каждого назначения теперь проверяются в обработчике и обрабатываются соответствующим образом и правильно сохраняются в базе данных 🙂