public CalendarWrapper(BaseCalendar calendar, UserViewSettings userViewSettings) { _userViewSettings = userViewSettings; if (_userViewSettings == null && calendar is ASC.Api.Calendar.BusinessObjects.Calendar) { _userViewSettings = (calendar as ASC.Api.Calendar.BusinessObjects.Calendar) .ViewSettings.Find(s => s.UserId == SecurityContext.CurrentAccount.ID); } if (_userViewSettings == null) { UserCalendar = calendar; _userId = SecurityContext.CurrentAccount.ID; } else { UserCalendar = calendar.GetUserCalendar(_userViewSettings); _userId = _userViewSettings.UserId; } }
public CalendarWrapper Get(BaseCalendar calendar, UserViewSettings userViewSettings) { var calendarWraper = new CalendarWrapper(); calendarWraper._userViewSettings = userViewSettings; if (calendarWraper._userViewSettings == null && calendar is BusinessObjects.Calendar) { calendarWraper._userViewSettings = (calendar as BusinessObjects.Calendar) .ViewSettings.Find(s => s.UserId == AuthContext.CurrentAccount.ID); } if (calendarWraper._userViewSettings == null) { calendarWraper.UserCalendar = calendar; calendarWraper._userId = AuthContext.CurrentAccount.ID; } else { calendarWraper.UserCalendar = calendar.GetUserCalendar(calendarWraper._userViewSettings); calendarWraper._userId = calendarWraper._userViewSettings.UserId; } //---IsSubscription if (calendarWraper.UserCalendar.Id != null) { if (calendarWraper.UserCalendar.IsiCalStream()) { calendarWraper.IsSubscription = true; } else if (calendarWraper.UserCalendar.Id.Equals(SharedEventsCalendar.CalendarId, StringComparison.InvariantCultureIgnoreCase)) { calendarWraper.IsSubscription = true; } else if (calendarWraper.UserCalendar.OwnerId.Equals(calendarWraper._userId)) { calendarWraper.IsSubscription = false; } else { calendarWraper.IsSubscription = true; } //---iCalUrl if (calendarWraper.UserCalendar.IsiCalStream()) { calendarWraper.iCalUrl = (calendarWraper.UserCalendar as BusinessObjects.Calendar).iCalUrl; } else { calendarWraper.iCalUrl = ""; } //---isiCalStream if (calendarWraper.UserCalendar.IsiCalStream()) { calendarWraper.IsiCalStream = true; } else { calendarWraper.IsiCalStream = false; } //---IsHidden calendarWraper.IsHidden = calendarWraper._userViewSettings != null ? calendarWraper._userViewSettings.IsHideEvents : false; //---CanAlertModify calendarWraper.CanAlertModify = calendarWraper.UserCalendar.Context.CanChangeAlertType; //---IsShared calendarWraper.IsShared = calendarWraper.UserCalendar.SharingOptions.SharedForAll || calendarWraper.UserCalendar.SharingOptions.PublicItems.Count > 0; //---Permissions var p = new CalendarPermissions() { Data = PublicItemCollectionHelper.GetForCalendar(calendarWraper.UserCalendar) }; foreach (var item in calendarWraper.UserCalendar.SharingOptions.PublicItems) { if (item.IsGroup) { p.UserParams.Add(new UserParams() { Id = item.Id, Name = UserManager.GetGroupInfo(item.Id).Name }); } else { p.UserParams.Add(new UserParams() { Id = item.Id, Name = UserManager.GetUsers(item.Id).DisplayUserName(DisplayUserSettingsHelper) }); } } calendarWraper.Permissions = p; //---IsEditable if (calendarWraper.UserCalendar.IsiCalStream()) { calendarWraper.IsEditable = false; } else if (calendarWraper.UserCalendar is ISecurityObject) { calendarWraper.IsEditable = PermissionContext.PermissionResolver.Check(Authentication.GetAccountByID(TenantManager.GetCurrentTenant().TenantId, calendarWraper._userId), (ISecurityObject)calendarWraper.UserCalendar as ISecurityObject, null, CalendarAccessRights.FullAccessAction); } else { calendarWraper.IsEditable = false; } //---TextColor calendarWraper.TextColor = String.IsNullOrEmpty(calendarWraper.UserCalendar.Context.HtmlTextColor) ? BusinessObjects.Calendar.DefaultTextColor : calendarWraper.UserCalendar.Context.HtmlTextColor; //---BackgroundColor calendarWraper.BackgroundColor = String.IsNullOrEmpty(calendarWraper.UserCalendar.Context.HtmlBackgroundColor) ? BusinessObjects.Calendar.DefaultBackgroundColor : calendarWraper.UserCalendar.Context.HtmlBackgroundColor; //---Description calendarWraper.Description = calendarWraper.UserCalendar.Description; //---Title calendarWraper.Title = calendarWraper.UserCalendar.Name; //---Id calendarWraper.Id = calendarWraper.UserCalendar.Id; //---IsTodo if (calendarWraper.UserCalendar.IsExistTodo()) { calendarWraper.IsTodo = (calendarWraper.UserCalendar as BusinessObjects.Calendar).IsTodo; } else { calendarWraper.IsTodo = 0; } //---Owner var owner = new UserParams() { Id = calendarWraper.UserCalendar.OwnerId, Name = "" }; if (calendarWraper.UserCalendar.OwnerId != Guid.Empty) { owner.Name = UserManager.GetUsers(calendarWraper.UserCalendar.OwnerId).DisplayUserName(DisplayUserSettingsHelper); } calendarWraper.Owner = owner; //---IsAcceptedSubscription calendarWraper.IsAcceptedSubscription = calendarWraper._userViewSettings == null || calendarWraper._userViewSettings.IsAccepted; //---DefaultAlertType calendarWraper.DefaultAlertType = EventAlertWrapper.ConvertToTypeSurrogated(calendarWraper.UserCalendar.EventAlertType); //---TimeZoneInfo calendarWraper.TimeZoneInfo = TimeZoneWrapperHelper.Get(calendarWraper.UserCalendar.TimeZone); //---CanEditTimeZone calendarWraper.CanEditTimeZone = calendarWraper.UserCalendar.Context.CanChangeTimeZone; } return(calendarWraper); }