public static void NotifyAboutSharingCalendar(ASC.Api.Calendar.BusinessObjects.Calendar calendar, ASC.Api.Calendar.BusinessObjects.Calendar oldCalendar) { var initatorInterceptor = new InitiatorInterceptor(new DirectRecipient(SecurityContext.CurrentAccount.ID.ToString(), SecurityContext.CurrentAccount.Name)); try { var usr = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID); var userLink = PerformUrl(CommonLinkUtility.GetUserProfile(usr.ID.ToString(), false)); foreach (var item in calendar.SharingOptions.PublicItems) { if (oldCalendar != null && oldCalendar.SharingOptions.PublicItems.Exists(i => i.Id.Equals(item.Id))) { continue; } var r = CalendarNotifySource.Instance.GetRecipientsProvider().GetRecipient(item.Id.ToString()); if (r != null) { _notifyClient.SendNoticeAsync(CalendarNotifySource.CalendarSharing, null, r, true, new TagValue("SharingType", "calendar"), new TagValue("UserName", usr.DisplayUserName()), new TagValue("UserLink", userLink), new TagValue("CalendarName", calendar.Name)); } } _notifyClient.EndSingleRecipientEvent(_syncName); } finally { _notifyClient.RemoveInterceptor(initatorInterceptor.Name); } }
public static void NotifyAboutSharingCalendar(ASC.Api.Calendar.BusinessObjects.Calendar calendar) { NotifyAboutSharingCalendar(calendar, null); }
public List<Calendar> GetCalendarsByIds(object[] calIds) { var cc = new ColumnCollection(); var calId = cc.RegistryColumn("cal.id"); var calName = cc.RegistryColumn("cal.name"); var calDescription = cc.RegistryColumn("cal.description"); var calTenant = cc.RegistryColumn("cal.tenant"); var calTextColor = cc.RegistryColumn("cal.text_color"); var calBackground = cc.RegistryColumn("cal.background_color"); var calOwner = cc.RegistryColumn("cal.owner_id"); var calAlertType = cc.RegistryColumn("cal.alert_type"); var calTimeZone = cc.RegistryColumn("cal.time_zone"); var iCalUrl = cc.RegistryColumn("cal.ical_url"); var usrId = cc.RegistryColumn("cal_usr.user_id"); var usrHideEvents = cc.RegistryColumn("cal_usr.hide_events"); var usrIsAccepted = cc.RegistryColumn("cal_usr.is_accepted"); var usrTextColor = cc.RegistryColumn("cal_usr.text_color"); var usrBackground = cc.RegistryColumn("cal_usr.background_color"); var usrAlertType = cc.RegistryColumn("cal_usr.alert_type"); var usrCalName = cc.RegistryColumn("cal_usr.name"); var usrTimeZone = cc.RegistryColumn("cal_usr.time_zone"); var data = DbManager.ExecuteList(new SqlQuery(_calendarTable).Select(cc.SelectQuery) .LeftOuterJoin(_calendarUserTable, Exp.EqColumns(calId.Name, "cal_usr.calendar_id")) .Where(Exp.In(calId.Name, calIds))); var cc1 = new ColumnCollection(); var itemCalId = cc1.RegistryColumn("cal_itm.calendar_id"); var itemId = cc1.RegistryColumn("cal_itm.item_id"); var itemIsGroup = cc1.RegistryColumn("cal_itm.is_group"); var sharingData = DbManager.ExecuteList(new SqlQuery(_calendarItemTable).Select(cc1.SelectQuery) .Where(Exp.In(itemCalId.Name, calIds))); //parsing var calendars = new List<Calendar>(); foreach (var r in data) { var calendar = calendars.Find(c => string.Equals(c.Id, calId.Parse<int>(r).ToString(), StringComparison.InvariantCultureIgnoreCase)); if (calendar == null) { calendar = new Calendar() { Id = calId.Parse<int>(r).ToString(), Name = calName.Parse<string>(r), Description = calDescription.Parse<string>(r), TenantId = calTenant.Parse<int>(r), OwnerId = calOwner.Parse<Guid>(r), EventAlertType = (EventAlertType)calAlertType.Parse<int>(r), TimeZone = calTimeZone.Parse<TimeZoneInfo>(r), iCalUrl = iCalUrl.Parse<string>(r), }; calendar.Context.HtmlTextColor = calTextColor.Parse<string>(r); calendar.Context.HtmlBackgroundColor = calBackground.Parse<string>(r); if (!String.IsNullOrEmpty(calendar.iCalUrl)) { calendar.Context.CanChangeTimeZone = false; calendar.Context.CanChangeAlertType = false; } calendars.Add(calendar); foreach (var row in sharingData) { var _calId = itemCalId.Parse<int>(row).ToString(); if (String.Equals(_calId, calendar.Id, StringComparison.InvariantCultureIgnoreCase)) { calendar.SharingOptions.PublicItems.Add(new ASC.Web.Core.Calendars.SharingOptions.PublicItem() { Id = itemId.Parse<Guid>(row), IsGroup = itemIsGroup.Parse<bool>(row) }); } } } if (!usrId.IsNull(r)) { var uvs = new UserViewSettings() { CalendarId = calendar.Id.ToString(), UserId = usrId.Parse<Guid>(r), IsHideEvents = usrHideEvents.Parse<bool>(r), IsAccepted = usrIsAccepted.Parse<bool>(r), TextColor = usrTextColor.Parse<string>(r), BackgroundColor = usrBackground.Parse<string>(r), EventAlertType = (EventAlertType)usrAlertType.Parse<int>(r), Name = usrCalName.Parse<string>(r), TimeZone = usrTimeZone.Parse<TimeZoneInfo>(r) }; calendar.ViewSettings.Add(uvs); } } return calendars; }