...

Событие в общем календаре в сценарии

Тема в разделе "Разработчикам", создана пользователем Olga Nanotech, 2 дек 2018.

  1. Olga Nanotech

    Olga Nanotech New Member

    Добрый день!
    создаю событие в календаре сценарием.
    1. При создании события участникам все работает:
    Код:
    var createEvent = PublicAPI.Portal.CalendarEvent.Create (context.SpisokDlyaOznakomleniya, context.DataNachala.Value, context.DataOkonchaniya.Value, context.TemaSoveschaniya, context.MestoProvedeniya.Value.ToString (), context.VoprosyDlyaObsuzhdeniya);
                createEvent.ConfirmParticipation = true;
                createEvent.NotifyMeConfirmParticipation = true;
    2. Но нужно привязать данное событие к общему календарю. Добавила код:
    Код:
    var generalCalendar = PublicAPI.Portal.Objects.Calendar.Schedule.Load(79);
               
                var createEvent = PublicAPI.Portal.CalendarEvent.Create (context.SpisokDlyaOznakomleniya,generalCalendar, context.DataNachala.Value, context.DataOkonchaniya.Value, context.TemaSoveschaniya, context.MestoProvedeniya.Value.ToString (), context.VoprosyDlyaObsuzhdeniya);
                
    Возникла ошибка:
    Не могу понять как исправить? Помогите, пожалуйста.
     
  2. arkarimov

    arkarimov Member

    Попробуйте так
    Код:
    var createEvent = PublicAPI.Portal.CalendarEvent.Create (context.SpisokDlyaOznakomleniya,
    new List<EleWise.ELMA.Calendar.Models.Schedule> () {generalCalendar}
    , context.DataNachala.Value, context.DataOkonchaniya.Value, context.TemaSoveschaniya, context.MestoProvedeniya.Value.ToString (), context.VoprosyDlyaObsuzhdeniya);
    Хотя почему система определила тип generalCalendar как IMetadata странно, приведенный метод PublicAPI возвращает EleWise.ELMA.Calendar.Models.Schedule, вы привели именно тот код который компилировали?
     
  3. Olga Nanotech

    Olga Nanotech New Member

    Да. использовала именно этот код.
    Ваш вариант заработал, событие в общем календаре создалось. спасибо большое за помощь!
     
  4. Olga Nanotech

    Olga Nanotech New Member

    Подскажите еще, пожалуйста, как проверить свободен ли данный период в общем календаре на выбранное время, чтобы не накладывать события друг на друга. Где-то встречала такую функцию, но не могу найти
     
  5. arkarimov

    arkarimov Member

    Код:
            public List<CalendarEvent> GetCrossingEvents (List<Security.Models.User> Participants,DateTime dtFrom,DateTime dtTo)
            {
                var schedules = PublicAPI.Portal.Objects.Calendar.Schedule.Filter ().Owners (Participants.ToArray()).Find ();
                var filter=InterfaceActivator.Create<ICalendarEventFilter> ();
                filter.DateRange =new DateTimeRange
                {
                    From = dtFrom, To = dtTo
                };
                filter.Completed = false;
                filter.Schedules.AddAll(schedules);
                return EleWise.ELMA.Calendar.Managers.CalendarEventManager.Instance.Find (filter, null).Select(x=>(CalendarEvent)x).ToList();
               
            }
     
  6. arkarimov

    arkarimov Member

    Невнимательно прочитал, дал код который возвращает занятость календарей других сотрудников. Думаю адаптировать так, чтобы контролировалась занятость общего календаря труда не составит.
     
  7. Olga Nanotech

    Olga Nanotech New Member

    да. большое спасибо
     
  8. Olga Nanotech

    Olga Nanotech New Member

    Сообщение Строка Колонка
    5 Не удалось найти имя типа или пространства имен "DateTimeRange" (пропущена директива using или ссылка на сборку?) 73 35

    Код:
     public List<CalendarEvent> GetCrossingEvents (int IdCalendar,DateTime dtFrom,DateTime dtTo)
    
            {
                var schedules = PublicAPI.Portal.Objects.Calendar.Schedule.Filter ().Id(IdCalendar).Find ();
                var filter=InterfaceActivator.Create<ICalendarEventFilter> ();
                filter.DateRange =new DateTimeRange
                {
                    From = dtFrom, To = dtTo
                };
                filter.Completed = false;
                filter.Schedules.AddAll(schedules);
                return EleWise.ELMA.Calendar.Managers.CalendarEventManager.Instance.Find (filter, null).Select(x=>(CalendarEvent)x).ToList();
               
            }
     
  9. arkarimov

    arkarimov Member

    using EleWise.ELMA.Model.Ranges;
    Если вы всерьез занимаетесь, то поставьте себе Visual Studio которая умеет находить нехватающие зависимости
     
  10. m.tronin

    m.tronin New Member

    SharpDevelop тоже может, но скорость его загрузки сильно уступает студии.
     

Поделиться: