public SchedulerEventViewModel SchedulerEventViewModelFromEvent(EventPart x)
        {
            var categories = _categoryService.GetEventCategoriesByEvent(x.ContentItem).ToList();
            var data       = new SchedulerEventViewModel
            {
                Id                       = x.Id,
                Identifier               = x.Identifier,
                Title                    = x.Title,
                Description              = x.Description,
                IsAllDay                 = x.AllDayEvent,
                Start                    = Convert.ToDateTime(x.StartDate),
                End                      = Convert.ToDateTime(x.EndDate),
                Url                      = x.Url,
                EventCategoryIds         = _categoryService.GetEventCategoryIdentifiers(categories.Select(y => y.Id)).ToArray(),
                EventCategoryNames       = categories.Select(y => y.CategoryName).ToArray(),
                Timezone                 = x.TimeZone,
                RecurrenceId             = x.RecurrenceId,
                RecurrenceRule           = x.RecurrenceRule,
                RecurrenceException      = x.RecurrenceException,
                Location                 = x.AddressLocation,
                ImportFromGoogleCalendar = x.ImportedFromGoogleCalendar,
                ImportUid                = x.ImportUid
            };

            return(data);
        }
        public void UpdateCalendarForSchedulerEventViewModel(ContentItem item, SchedulerEventViewModel model)
        {
            //var categories = _eventCategoryService.GetEventCategoriesByIdList(model.EventCategoryIds).ToList();

            var eventPart = item.As <EventPart>();

            if (model.EventCategoryIds != null && model.EventCategoryIds.Any())
            {
                _categoryService.UpdateCategoriesForEvent(item, model.EventCategoryIds);
            }

            eventPart.As <TitlePart>().Title = model.Title.Replace(@"\,", ",");
            eventPart.RecurrenceId           = model.RecurrenceId;
            eventPart.RecurrenceRule         = model.RecurrenceRule;
            eventPart.RecurrenceException    = model.RecurrenceException;
            eventPart.TimeZone                   = model.Timezone;
            eventPart.Description                = model.Description.Replace(@"\,", ",");
            eventPart.AddressLocation            = model.Location.Replace(@"\,", ",");
            eventPart.Url                        = model.Url;
            eventPart.ImportedFromGoogleCalendar = model.ImportFromGoogleCalendar;
            eventPart.ImportUid                  = model.ImportUid;

            eventPart.AllDayEvent = model.IsAllDay;

            if (model.IsAllDay && model.ImportFromGoogleCalendar)
            {
                model.End = model.End.AddDays(-1); // catch for import
            }

            eventPart.StartDate = model.Start;
            eventPart.EndDate   = model.End;
        }