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); }
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); }