示例#1
0
        public List <EventWrapper> UpdateEvent(string calendarId, int eventId, string name, string description, ApiDateTime startDate, ApiDateTime endDate, string repeatType, EventAlertType alertType, bool isAllDayLong, List <SharingParam> sharingOptions)
        {
            var sharingOptionsList = sharingOptions ?? new List <SharingParam>();

            var oldEvent = _dataProvider.GetEventById(eventId);

            //check permissions
            CheckPermissions(oldEvent, CalendarAccessRights.FullAccessAction);

            name = (name ?? "").Trim();
            if (String.IsNullOrEmpty(name))
            {
                throw new Exception(Resources.CalendarApiResource.ErrorEmptyName);
            }

            description = (description ?? "").Trim();

            TimeZoneInfo timeZone = null;
            int          calId    = int.Parse(oldEvent.CalendarId);

            if (!int.TryParse(calendarId, out calId))
            {
                calId    = int.Parse(oldEvent.CalendarId);
                timeZone = _dataProvider.GetTimeZoneForSharedEventsCalendar(SecurityContext.CurrentAccount.ID);
            }
            else
            {
                timeZone = _dataProvider.GetTimeZoneForCalendar(SecurityContext.CurrentAccount.ID, calId);
            }

            var rrule  = RecurrenceRule.Parse(repeatType);
            var usrIds = new List <Guid>();
            var evt    = _dataProvider.UpdateEvent(eventId, calId,
                                                   oldEvent.OwnerId, name, description, startDate.UtcTime, endDate.UtcTime, rrule, alertType, isAllDayLong,
                                                   sharingOptionsList.Select(o => o as SharingOptions.PublicItem).ToList());

            if (evt != null)
            {
                //clear old rights
                CoreContext.AuthorizationManager.RemoveAllAces(evt);

                foreach (var opt in sharingOptionsList)
                {
                    if (String.Equals(opt.actionId, AccessOption.FullAccessOption.Id, StringComparison.InvariantCultureIgnoreCase))
                    {
                        CoreContext.AuthorizationManager.AddAce(new AzRecord(opt.Id, CalendarAccessRights.FullAccessAction.ID, ASC.Common.Security.Authorizing.AceType.Allow, evt));
                    }
                }

                //notify
                CalendarNotifyClient.NotifyAboutSharingEvent(evt, oldEvent);

                evt.CalendarId = calendarId;
                return(new EventWrapper(evt, SecurityContext.CurrentAccount.ID, timeZone).GetList(startDate.UtcTime, startDate.UtcTime.AddMonths(_monthCount)));
            }
            return(null);
        }
示例#2
0
        private List <EventWrapper> CreateEvent(int calendarId, string name, string description, DateTime utcStartDate, DateTime utcEndDate, RecurrenceRule rrule, EventAlertType alertType, bool isAllDayLong, List <SharingParam> sharingOptions)
        {
            var sharingOptionsList = sharingOptions ?? new List <SharingParam>();

            //check permissions
            CheckPermissions(_dataProvider.GetCalendarById(calendarId),
                             CalendarAccessRights.FullAccessAction);

            name = (name ?? "").Trim();
            if (String.IsNullOrEmpty(name))
            {
                throw new Exception(Resources.CalendarApiResource.ErrorEmptyName);
            }

            description = (description ?? "").Trim();

            var usrIds = new List <Guid>();
            var evt    = _dataProvider.CreateEvent(calendarId, SecurityContext.CurrentAccount.ID,
                                                   name, description, utcStartDate, utcEndDate, rrule, alertType, isAllDayLong,
                                                   sharingOptionsList.Select(o => o as SharingOptions.PublicItem).ToList());

            if (evt != null)
            {
                foreach (var opt in sharingOptionsList)
                {
                    if (String.Equals(opt.actionId, AccessOption.FullAccessOption.Id, StringComparison.InvariantCultureIgnoreCase))
                    {
                        CoreContext.AuthorizationManager.AddAce(new AzRecord(opt.Id, CalendarAccessRights.FullAccessAction.ID, ASC.Common.Security.Authorizing.AceType.Allow, evt));
                    }
                }

                //notify
                CalendarNotifyClient.NotifyAboutSharingEvent(evt);

                return(new EventWrapper(evt, SecurityContext.CurrentAccount.ID,
                                        _dataProvider.GetTimeZoneForCalendar(SecurityContext.CurrentAccount.ID, calendarId))
                       .GetList(utcStartDate, utcStartDate.AddMonths(_monthCount)));
            }
            return(null);
        }