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;
            }
        }
Ejemplo n.º 2
0
        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);
        }