Exemplo n.º 1
0
        public void ForwardEvent(StoreId id, ForwardEventParameters parameters, Event updateToEvent = null, int?seriesSequenceNumber = null, string occurrencesViewPropertiesBlob = null, CommandContext commandContext = null)
        {
            using (ICalendarItemBase calendarItemBase = this.Bind(id))
            {
                if (updateToEvent != null)
                {
                    calendarItemBase.OpenAsReadWrite();
                    this.UpdateOnly(updateToEvent, calendarItemBase, base.GetSaveMode(updateToEvent.ChangeKey, commandContext));
                }
                CalendarItemBase calendarItemBase2 = (CalendarItemBase)calendarItemBase;
                BodyFormat       targetFormat      = BodyFormat.TextPlain;
                if (parameters != null && parameters.Notes != null)
                {
                    targetFormat = parameters.Notes.ContentType.ToStorageType();
                }
                ReplyForwardConfiguration replyForwardParameters = new ReplyForwardConfiguration(targetFormat)
                {
                    ShouldSuppressReadReceipt = false
                };
                MailboxSession mailboxSession = base.Session as MailboxSession;
                using (MessageItem messageItem = calendarItemBase2.CreateForward(mailboxSession, CalendarItemBase.GetDraftsFolderIdOrThrow(mailboxSession), replyForwardParameters, seriesSequenceNumber, occurrencesViewPropertiesBlob))
                {
                    EventWorkflowParametersTranslator <ForwardEventParameters, ForwardEventParametersSchema> .Instance.SetPropertiesFromEntityOnStorageObject(parameters, messageItem);

                    foreach (Recipient <RecipientSchema> recipient in parameters.Forwardees)
                    {
                        messageItem.Recipients.Add(new Participant(recipient.Name, recipient.EmailAddress, "SMTP"));
                    }
                    MeetingMessage.SendLocalOrRemote(messageItem, true, true);
                }
            }
        }
 public void closeMeeting(String topic)
 {
     try {
         while (checkServerNeedsUpdate())
         {
             _vectorClock = _serverService.updateServer();
         }
         ;
         MeetingMessage meetingMessage = _serverService.closeMeeting(topic, _username);
         Meeting        meeting        = meetingMessage.Meeting;
         Console.WriteLine(meeting.ToString());
         _vectorClock = meetingMessage.VectorClock;
     }
     catch (SocketException) {
         Console.WriteLine("Previously connected server now disconnected...");
         newServerConnection();
         closeMeeting(topic);
     }
     catch (ClosedMeetingException e) {
         Console.WriteLine(e.message);
     }
     catch (NotEnoughAttendeesExceptions e) {
         Console.WriteLine(e.message);
     }
     catch (UnknownMeetingException e) {
         Console.WriteLine(e.message);
     }
 }
Exemplo n.º 3
0
        public static CalendarItemBase TryGetCorrelatedItem(MeetingMessage meetingMessage)
        {
            CalendarItemBase result = null;

            try
            {
                ExTraceGlobals.CalendarTracer.TraceDebug <string>(0L, "Retreiving calendar item associated with meeting message. Value = '{0}'", (meetingMessage.Id != null) ? meetingMessage.Id.ObjectId.ToBase64String() : "null");
                result = meetingMessage.GetCorrelatedItem();
            }
            catch (CorrelationFailedException ex)
            {
                ExTraceGlobals.CalendarDataTracer.TraceDebug <string>(0L, "Can not retrieve calendar item associated with Meeting message.  Exception: {0}", ex.Message);
            }
            catch (CorruptDataException ex2)
            {
                ExTraceGlobals.CalendarDataTracer.TraceDebug <string>(0L, "Can not retrieve calendar item associated with Meeting message.  Exception: {0}", ex2.Message);
            }
            catch (ObjectDisposedException ex3)
            {
                ExTraceGlobals.CalendarDataTracer.TraceDebug <string>(0L, "Can not retrieve calendar item associated with Meeting message.  Exception: {0}", ex3.Message);
            }
            catch (StorageTransientException ex4)
            {
                ExTraceGlobals.CalendarDataTracer.TraceDebug <string>(0L, "Can not retrieve calendar item associated with Meeting message.  Exception: {0}", ex4.Message);
            }
            catch (InvalidOperationException ex5)
            {
                ExTraceGlobals.CalendarDataTracer.TraceDebug <string>(0L, "Can not retrieve calendar item associated with Meeting message.  Exception: {0}", ex5.Message);
            }
            return(result);
        }
        public void createMeeting(String topic, int minAtt, List <Slot> slots, List <String> invitees)
        {
            try {
                while (checkServerNeedsUpdate())
                {
                    _vectorClock = _serverService.updateServer();
                }
                ;
                MeetingMessage meetingMessage = _serverService.createMeeting(_username, topic, minAtt, slots);
                Meeting        meeting        = meetingMessage.Meeting;
                lock (_clientMeetings)
                    _clientMeetings.Add(meeting.Topic, meeting);

                Console.WriteLine(meeting.ToString());
                sendInvite(meeting);
                _vectorClock = meetingMessage.VectorClock;
            }
            catch (SocketException) {
                Console.WriteLine("Previously connected server now disconnected...");
                newServerConnection();
                createMeeting(topic, minAtt, slots, invitees);
            }
            catch (AlreadyExistingMeetingException e) {
                Console.WriteLine(e.message);
            }
        }
        public static void ProcessXsoMeetingMessage(IStoreSession session, MeetingMessage xsoMeetingMessage, CalendarItemBase xsoCalendarItem, IXSOFactory xsoFactory = null)
        {
            MeetingMessage message = MeetingMessageTranslator.Instance.ConvertToEntity(xsoMeetingMessage);
            Event          @event  = EventTranslator.Instance.ConvertToEntity(xsoCalendarItem);

            MeetingMessageProcessor.ProcessMeetingMessage(session, message, @event, xsoFactory);
            EventTranslator.Instance.SetPropertiesFromEntityOnStorageObject(@event, xsoCalendarItem);
        }
Exemplo n.º 6
0
 internal bool ProcessMeetingMessage(MeetingMessage meetingMessage, bool doCalendarItemSave)
 {
     this.CalendarItemBase = MeetingUtilities.TryPreProcessCalendarItem(meetingMessage, this.userContext, doCalendarItemSave);
     if (this.CalendarItemBase != null)
     {
         return(this.CalendarItemBase.IsOrganizer());
     }
     return(meetingMessage.IsOrganizer());
 }
        // Token: 0x0600281E RID: 10270 RVA: 0x000E32F8 File Offset: 0x000E14F8
        protected void RenderSendOnBehalf(TextWriter writer)
        {
            MeetingMessage meetingMessage = (MeetingMessage)base.Item;

            if (this.isSendOnBehalfOf)
            {
                RenderingUtilities.RenderSendOnBehalf(writer, base.UserContext, meetingMessage.From);
            }
        }
Exemplo n.º 8
0
        protected void RenderSender(TextWriter writer)
        {
            MeetingMessage meetingMessage = base.Item as MeetingMessage;

            if (Utilities.IsOnBehalfOf(meetingMessage.Sender, meetingMessage.From))
            {
                RenderingUtilities.RenderSenderOnBehalfOf(meetingMessage.Sender, meetingMessage.From, writer, base.UserContext);
                return;
            }
            RenderingUtilities.RenderSender(base.UserContext, writer, meetingMessage.From);
        }
Exemplo n.º 9
0
        public static void ThrowIfMeetingResponseInvalid(MeetingMessage meetingMessage)
        {
            MeetingUtilities.ThrowIfWebParts();
            MeetingRequest meetingRequest = meetingMessage as MeetingRequest;

            if (meetingRequest != null && meetingRequest.IsMailboxOwnerTheSender())
            {
                throw new OwaOperationNotSupportedException(LocalizedStrings.GetNonEncoded(679811893));
            }
            MeetingUtilities.ThrowIfInArchiveMailbox(meetingMessage);
        }
Exemplo n.º 10
0
 // Token: 0x060013D2 RID: 5074 RVA: 0x00072004 File Offset: 0x00070204
 protected virtual bool IsItemDelegated()
 {
     if (this.XsoItem is MeetingRequest || this.XsoItem is MeetingCancellation)
     {
         MeetingMessage meetingMessage = this.XsoItem as MeetingMessage;
         if (meetingMessage != null && meetingMessage.IsDelegated())
         {
             return(true);
         }
     }
     return(false);
 }
Exemplo n.º 11
0
        /// <summary>
        /// 根据主题查询会议
        /// </summary>
        /// <param name="senderAppointmentSubject"></param>
        /// <param name="config"></param>
        /// <returns></returns>
        public static MeetingMessage GetSenderMeeting(string senderAppointmentSubject, ExchangeAdminConfig config)
        {
            InitializeEws(config);
            SearchFilter.IsEqualTo  senderMeetingMessageSearchBySubject = new SearchFilter.IsEqualTo(MeetingMessageSchema.Subject, senderAppointmentSubject);
            FindItemsResults <Item> senderMeetingRequestResult          = Service.FindItems(WellKnownFolderName.Inbox, senderMeetingMessageSearchBySubject, new ItemView(1));

            MeetingMessage senderMeetingMessage = senderMeetingRequestResult.First() as MeetingMessage;

            senderMeetingMessage.Load();

            return(senderMeetingMessage);
        }
        // Token: 0x06001479 RID: 5241 RVA: 0x00076460 File Offset: 0x00074660
        private MessageItem CreateSubstituteDelegatedMeetingRequestMessage()
        {
            MessageItem messageItem = null;
            bool        flag        = false;

            try
            {
                MeetingMessage meetingMessage = base.XsoItem as MeetingMessage;
                messageItem = MessageItem.CreateInMemory(StoreObjectSchema.ContentConversionProperties);
                if (messageItem == null)
                {
                    AirSyncDiagnostics.TraceError(ExTraceGlobals.XsoTracer, null, "CreateSubstituteDelegatedMeetingRequestMessage failed to create in memory message item");
                    return(null);
                }
                Item.CopyItemContent(meetingMessage, messageItem);
                messageItem.ClassName = "IPM.Note";
                messageItem.AttachmentCollection.RemoveAll();
                int    num = meetingMessage.Body.PreviewText.IndexOf("*~*~*~*~*~*~*~*~*~*");
                string value;
                if (num == -1)
                {
                    ExTimeZone promotedTimeZoneFromItem = TimeZoneHelper.GetPromotedTimeZoneFromItem(meetingMessage);
                    value = CalendarItemBase.CreateWhenStringForBodyPrefix(meetingMessage, promotedTimeZoneFromItem);
                }
                else
                {
                    value = meetingMessage.Body.PreviewText.Substring(0, num + "*~*~*~*~*~*~*~*~*~*".Length);
                }
                using (TextWriter textWriter = messageItem.Body.OpenTextWriter(BodyFormat.TextPlain))
                {
                    textWriter.Write(value);
                }
            }
            catch (Exception ex)
            {
                AirSyncDiagnostics.TraceError <string>(ExTraceGlobals.XsoTracer, null, "CreateSubstituteDelegatedMeetingRequestMessage: exception thrown: {0}", ex.Message);
                if (messageItem != null)
                {
                    flag = true;
                }
                throw;
            }
            finally
            {
                if (flag)
                {
                    messageItem.Dispose();
                    messageItem = null;
                }
            }
            return(messageItem);
        }
Exemplo n.º 13
0
        private void DeliverToDeletedItems(MailboxSession mailboxSession, MeetingMessage meetingMessage, StoreDriverDeliveryEventArgsImpl deliveryArgument)
        {
            StoreObjectId defaultFolderId = mailboxSession.GetDefaultFolderId(DefaultFolderType.DeletedItems);

            if (defaultFolderId == null)
            {
                MeetingMessageProcessingAgent.tracer.TraceError <string, IExchangePrincipal>((long)this.GetHashCode(), "Meeting message {0} to mailbox {1} could not deliver to Deleted Items as this folder does not exist", meetingMessage.InternetMessageId, mailboxSession.MailboxOwner);
                return;
            }
            deliveryArgument.DeliverToFolder    = defaultFolderId;
            deliveryArgument.ShouldSkipMoveRule = true;
            MeetingMessageProcessingAgent.tracer.TraceDebug <string, IExchangePrincipal>((long)this.GetHashCode(), "Meeting message {0} to mailbox {1} is assigned to deliver to Deleted Items", meetingMessage.InternetMessageId, mailboxSession.MailboxOwner);
        }
        // Token: 0x0600281D RID: 10269 RVA: 0x000E3268 File Offset: 0x000E1468
        protected void RenderSender(TextWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException("writer");
            }
            MeetingMessage meetingMessage = base.Item as MeetingMessage;

            if (Utilities.IsOnBehalfOf(meetingMessage.Sender, meetingMessage.From))
            {
                writer.Write(LocalizedStrings.GetHtmlEncoded(-165544498), RenderingUtilities.GetSender(base.UserContext, meetingMessage.Sender, "spnFrom", false, SenderDisplayMode.NameOnly), RenderingUtilities.GetSender(base.UserContext, meetingMessage.From, "spnOrg", false, SenderDisplayMode.NameOnly));
                return;
            }
            RenderingUtilities.RenderSender(base.UserContext, writer, meetingMessage.From, SenderDisplayMode.NameOnly, null);
        }
Exemplo n.º 15
0
 // Token: 0x06000572 RID: 1394 RVA: 0x0002B20C File Offset: 0x0002940C
 protected override void OnLoad(EventArgs e)
 {
     base.OnLoad(e);
     this.MeetingPageWriterFactory(this.ItemType, e);
     if (!this.isCalendarItem)
     {
         MeetingMessage meetingMessage = base.Item as MeetingMessage;
         if (meetingMessage == null)
         {
             throw new OwaInvalidOperationException("Item must be of MeetingMessage type");
         }
         if (!meetingMessage.IsRead)
         {
             meetingMessage.MarkAsRead(Utilities.ShouldSuppressReadReceipt(base.UserContext, meetingMessage), false);
         }
         base.HandleReadReceipt(meetingMessage);
     }
     else
     {
         string queryStringParameter  = Utilities.GetQueryStringParameter(base.Request, "dy", false);
         string queryStringParameter2 = Utilities.GetQueryStringParameter(base.Request, "mn", false);
         string queryStringParameter3 = Utilities.GetQueryStringParameter(base.Request, "yr", false);
         int    num;
         int    month;
         int    year;
         if (!string.IsNullOrEmpty(queryStringParameter) && int.TryParse(queryStringParameter, out num) && !string.IsNullOrEmpty(queryStringParameter2) && int.TryParse(queryStringParameter2, out month) && !string.IsNullOrEmpty(queryStringParameter3) && int.TryParse(queryStringParameter3, out year))
         {
             try
             {
                 this.day = new ExDateTime(base.UserContext.TimeZone, year, month, num).Date;
             }
             catch (ArgumentOutOfRangeException)
             {
                 base.Infobar.AddMessageLocalized(883484089, InfobarMessageType.Error);
             }
         }
     }
     this.SetInfobarMessages();
     if (this.day == ExDateTime.MinValue)
     {
         if (this.meetingPageWriter.CalendarItemBase != null && !this.isMeetingResponse)
         {
             this.day = this.meetingPageWriter.CalendarItemBase.StartTime;
             return;
         }
         this.day = DateTimeUtilities.GetLocalTime().Date;
     }
 }
Exemplo n.º 16
0
 protected Item BindItem(Item item, ExchangeService service, PropertySet propertySet)
 {
     if (item.GetType() == typeof(Microsoft.Exchange.WebServices.Data.Appointment))
     {
         return(Appointment.Bind(service, item.Id, propertySet));
     }
     else if (item.GetType() == typeof(Microsoft.Exchange.WebServices.Data.Task))
     {
         return(Task.Bind(service, item.Id, propertySet));
     }
     else if (item.GetType() == typeof(Microsoft.Exchange.WebServices.Data.Contact))
     {
         return(Contact.Bind(service, item.Id, propertySet));
     }
     else if (item.GetType() == typeof(Microsoft.Exchange.WebServices.Data.ContactGroup))
     {
         return(ContactGroup.Bind(service, item.Id, propertySet));
     }
     else if (item.GetType() == typeof(Microsoft.Exchange.WebServices.Data.PostItem))
     {
         return(PostItem.Bind(service, item.Id, propertySet));
     }
     else if (item.GetType() == typeof(Microsoft.Exchange.WebServices.Data.MeetingCancellation))
     {
         return(MeetingCancellation.Bind(service, item.Id, propertySet));
     }
     else if (item.GetType() == typeof(Microsoft.Exchange.WebServices.Data.MeetingRequest))
     {
         return(MeetingRequest.Bind(service, item.Id, propertySet));
     }
     else if (item.GetType() == typeof(Microsoft.Exchange.WebServices.Data.MeetingResponse))
     {
         return(MeetingResponse.Bind(service, item.Id, propertySet));
     }
     else if (item.GetType() == typeof(Microsoft.Exchange.WebServices.Data.MeetingMessage))
     {
         return(MeetingMessage.Bind(service, item.Id, propertySet));
     }
     else if (item.GetType() == typeof(Microsoft.Exchange.WebServices.Data.EmailMessage))
     {
         return(EmailMessage.Bind(service, item.Id, propertySet));
     }
     else
     {
         throw new Exception("Unknown Exchange Item type: " + item.GetType().FullName);
     }
 }
Exemplo n.º 17
0
        public static string GetReceivedOnBehalfOfDisplayName(MeetingMessage meetingMessage)
        {
            if (meetingMessage == null)
            {
                throw new ArgumentNullException("meetingMessage");
            }
            string result = LocalizedStrings.GetNonEncoded(-1018465893);

            if (meetingMessage.ReceivedRepresenting == null || string.IsNullOrEmpty(meetingMessage.ReceivedRepresenting.DisplayName))
            {
                result = LocalizedStrings.GetNonEncoded(-595380497);
            }
            else
            {
                result = meetingMessage.ReceivedRepresenting.DisplayName;
            }
            return(result);
        }
        // Token: 0x060007B0 RID: 1968 RVA: 0x00036FC0 File Offset: 0x000351C0
        internal static bool IsSelfForwardedEvent(MeetingMessage mtgMessage, MailboxSession session)
        {
            if (mtgMessage == null || mtgMessage.IsExternalMessage)
            {
                return(false);
            }
            Participant participant = null;

            if (OldMessageDeletion.IsSenderSame(mtgMessage.Sender, session, out participant))
            {
                string text = (string)Utils.SafeGetProperty(mtgMessage, MessageItemSchema.ReceivedRepresentingEmailAddress, string.Empty);
                if (text.Equals(session.MailboxOwner.LegacyDn, StringComparison.OrdinalIgnoreCase))
                {
                    return(true);
                }
            }
            return(false);
        }
        // Token: 0x06000920 RID: 2336 RVA: 0x0003D85C File Offset: 0x0003BA5C
        private static CalendarNotificationType AnalyzeEvent(MapiEvent mapiEvent, MeetingMessage meeting)
        {
            CalendarNotificationType result = CalendarNotificationType.Uninteresting;

            if (meeting is MeetingRequest)
            {
                MeetingRequest     meetingRequest     = (MeetingRequest)meeting;
                MeetingMessageType meetingRequestType = meetingRequest.MeetingRequestType;
                if (meetingRequestType <= MeetingMessageType.FullUpdate)
                {
                    if (meetingRequestType != MeetingMessageType.NewMeetingRequest)
                    {
                        if (meetingRequestType != MeetingMessageType.FullUpdate)
                        {
                            return(result);
                        }
                        goto IL_4A;
                    }
                }
                else
                {
                    if (meetingRequestType == MeetingMessageType.InformationalUpdate || meetingRequestType == MeetingMessageType.SilentUpdate)
                    {
                        goto IL_4A;
                    }
                    if (meetingRequestType != MeetingMessageType.PrincipalWantsCopy)
                    {
                        return(result);
                    }
                }
                return(CalendarNotificationType.NewUpdate);

IL_4A:
                if (CalendarChangeProcessor.InterestingFlagsExists(meetingRequest.ChangeHighlight, MapiExtendedEventFlags.NoReminderPropertyModified))
                {
                    result = CalendarNotificationType.ChangedUpdate;
                }
            }
            else if (meeting is MeetingCancellation)
            {
                result = CalendarNotificationType.DeletedUpdate;
            }
            return(result);
        }
Exemplo n.º 20
0
        public static CalendarItemBase TryPreProcessCalendarItem(MeetingMessage meetingMessage, UserContext userContext, bool doCalendarItemSave)
        {
            if (meetingMessage == null)
            {
                throw new ArgumentNullException("meetingMessage");
            }
            if (userContext == null)
            {
                throw new ArgumentNullException("userContext");
            }
            CalendarItemBase calendarItemBase = null;

            meetingMessage.OpenAsReadWrite();
            try
            {
                ExTraceGlobals.CalendarTracer.TraceDebug <string>(0L, "Retreiving calendar item associated with meeting request. Value = '{0}'", (meetingMessage.Id != null) ? meetingMessage.Id.ObjectId.ToBase64String() : "null");
                calendarItemBase = meetingMessage.PreProcess(userContext.CalendarSettings.AddNewRequestsTentatively, userContext.CalendarSettings.ProcessExternalMeetingMessages, userContext.CalendarSettings.DefaultReminderTime);
                if (doCalendarItemSave && calendarItemBase != null)
                {
                    Utilities.ValidateCalendarItemBaseStoreObject(calendarItemBase);
                }
                if (meetingMessage.IsDirty)
                {
                    MeetingUtilities.SaveItem(meetingMessage, new PropertyDefinition[0]);
                }
            }
            catch (CorrelationFailedException ex)
            {
                ExTraceGlobals.CalendarDataTracer.TraceDebug <string>(0L, "Calendar item associated with meeting request could not be found.  Exception: {0}", ex.Message);
            }
            catch (CalendarProcessingException ex2)
            {
                ExTraceGlobals.CalendarDataTracer.TraceDebug <string>(0L, "Calendar item associated with meeting request could not be found.  Exception: {0}", ex2.Message);
            }
            catch (StoragePermanentException ex3)
            {
                ExTraceGlobals.CalendarDataTracer.TraceDebug <string>(0L, "Calendar item associated with meeting request could not be found.  Exception: {0}", ex3.Message);
            }
            catch (ConnectionFailedTransientException innerException)
            {
                throw new OwaAccessDeniedException(LocalizedStrings.GetNonEncoded(995407892), innerException);
            }
            return(calendarItemBase);
        }
        // Token: 0x060007BC RID: 1980 RVA: 0x00037DC8 File Offset: 0x00035FC8
        public static void CleanUp(MailboxSession mailboxSession, MeetingMessage item, CalendarItemBase originalCalItem, Trace tracer, out bool fullUpdateDeleted)
        {
            fullUpdateDeleted = false;
            byte[] valueOrDefault = item.GetValueOrDefault <byte[]>(CalendarItemBaseSchema.GlobalObjectId, null);
            if (valueOrDefault == null)
            {
                return;
            }
            int valueOrDefault2 = item.GetValueOrDefault <int>(CalendarItemBaseSchema.AppointmentSequenceNumber, -1);

            if (valueOrDefault2 == -1)
            {
                return;
            }
            OldMessageDeletion.LatestItemInfo latestInfo;
            latestInfo.LatestSequenceNumber = -1;
            List <VersionedId> oldMeetingMessages = RUMOldMessageDeletion.GetOldMeetingMessages(mailboxSession, item, valueOrDefault, valueOrDefault2, out latestInfo);

            if (oldMeetingMessages == null && latestInfo.LatestSequenceNumber >= valueOrDefault2)
            {
                RUMOldMessageDeletion.MarkMeetingMessageAsOld(item, tracer);
                fullUpdateDeleted = false;
                return;
            }
            if (oldMeetingMessages != null && oldMeetingMessages.Count > 0)
            {
                foreach (VersionedId storeId in oldMeetingMessages)
                {
                    using (MeetingMessage meetingMessage = MeetingMessage.Bind(mailboxSession, storeId))
                    {
                        RUMOldMessageDeletion.MarkMeetingMessageAsOld(meetingMessage, tracer);
                    }
                }
            }
            MeetingRequest meetingRequest = item as MeetingRequest;

            if (meetingRequest != null)
            {
                OldMessageDeletion.ApplyRollingHighlight(meetingRequest, item.InternetMessageId, originalCalItem, latestInfo);
            }
            fullUpdateDeleted = latestInfo.FullUpdateDeleted;
        }
 // Token: 0x060007BE RID: 1982 RVA: 0x00038224 File Offset: 0x00036424
 private static void MarkMeetingMessageAsOld(MeetingMessage meetingMessage, Trace tracer)
 {
     meetingMessage.MarkAsOutOfDate();
     meetingMessage.IsRead = true;
     try
     {
         int num = 3;
         ConflictResolutionResult saveResults;
         do
         {
             saveResults = meetingMessage.Save(SaveMode.ResolveConflicts);
             meetingMessage.Load();
             num--;
         }while (num > 0 && !CalendarProcessing.CheckSaveResults(meetingMessage, saveResults, meetingMessage.InternetMessageId));
     }
     catch (ObjectNotFoundException arg)
     {
         tracer.TraceWarning <object, ObjectNotFoundException>(0L, "{0}: RUMOldMessageDeletion: Tried to mark a meeting message as Outdated, which does not exist anymore. Exception: {1}", TraceContext.Get(), arg);
     }
 }
Exemplo n.º 23
0
        public virtual void RespondToEvent(StoreId id, RespondToEventParameters parameters, Event updateToEvent = null)
        {
            if (parameters == null)
            {
                throw new InvalidRequestException(CalendaringStrings.ErrorMissingRequiredRespondParameter);
            }
            MeetingResponse meetingResponse = null;

            try
            {
                try
                {
                    using (ICalendarItemBase calendarItemBase = this.Bind(id))
                    {
                        calendarItemBase.OpenAsReadWrite();
                        if (updateToEvent != null)
                        {
                            EventTranslator.Instance.SetPropertiesFromEntityOnStorageObject(updateToEvent, calendarItemBase);
                        }
                        meetingResponse = calendarItemBase.RespondToMeetingRequest(default(ResponseTypeConverter).Convert(parameters.Response), true, true, parameters.ProposedStartTime, parameters.ProposedEndTime);
                    }
                }
                catch (ObjectNotFoundException innerException)
                {
                    throw new AccessDeniedException(Strings.ErrorAccessDenied, innerException);
                }
                if (parameters.SendResponse)
                {
                    EventWorkflowParametersTranslator <RespondToEventParameters, RespondToEventParametersSchema> .Instance.SetPropertiesFromEntityOnStorageObject(parameters, meetingResponse);

                    MeetingMessage.SendLocalOrRemote(meetingResponse, true, true);
                }
            }
            finally
            {
                if (meetingResponse != null)
                {
                    meetingResponse.Dispose();
                }
            }
        }
Exemplo n.º 24
0
 public void ModifyCategories()
 {
     this.ThrowIfWebPartsCannotActAsOwner();
     string[] addCategories    = (string[])base.GetParameter("catAdd");
     string[] removeCategories = (string[])base.GetParameter("catRem");
     using (Item item = this.GetItem())
     {
         CategoryContextMenu.ModifyCategories(item, addCategories, removeCategories);
         MeetingMessage meetingMessage = item as MeetingMessage;
         if (meetingMessage != null)
         {
             CalendarItemBase calendarItemBase = MeetingUtilities.TryGetCorrelatedItem(meetingMessage);
             if (calendarItemBase != null)
             {
                 CategoryContextMenu.ModifyCategories(calendarItemBase, addCategories, removeCategories);
                 Utilities.SaveItem(calendarItemBase);
             }
         }
         Utilities.SaveItem(item, true, SaveMode.FailOnAnyConflict);
         item.Load();
         this.Writer.Write("var sCats = \"");
         StringBuilder stringBuilder = new StringBuilder();
         StringWriter  stringWriter  = new StringWriter(stringBuilder);
         CategorySwatch.RenderCategories(base.OwaContext, stringWriter, item);
         stringWriter.Close();
         Utilities.JavascriptEncode(stringBuilder.ToString(), this.Writer);
         this.Writer.Write("\";");
         this.Writer.Write("a_rgCats = ");
         CategorySwatch.RenderCategoriesJavascriptArray(this.SanitizingWriter, item);
         this.Writer.Write(";");
         this.Writer.Write("a_sId = \"");
         Utilities.JavascriptEncode(Utilities.GetIdAsString(item), this.Writer);
         this.Writer.Write("\";");
         this.Writer.Write("a_sCK = \"");
         Utilities.JavascriptEncode(item.Id.ChangeKeyAsBase64String(), this.Writer);
         this.Writer.Write("\";");
     }
 }
        public void joinMeetingSlot(String topic, String slot)
        {
            try {
                while (checkServerNeedsUpdate())
                {
                    _vectorClock = _serverService.updateServer();
                }
                ;
                Meeting meeting = getServerService().getMeeting(topic);
                if (!meeting.checkInvitation(_username))
                {
                    Console.WriteLine("You were not invited to this meeting!");
                }

                MeetingMessage meetingMessage = _serverService.joinMeetingSlot(topic, slot, _username);
                meeting = meetingMessage.Meeting;
                if (!meeting.checkInvitation(_username))
                {
                    _clientMeetings.Add(meeting.Topic, meeting);
                }

                Console.WriteLine(meeting.ToString());
                _vectorClock = meetingMessage.VectorClock;
            }
            catch (SocketException) {
                Console.WriteLine("Previously connected server now disconnected...");
                newServerConnection();
                joinMeetingSlot(topic, slot);
            }catch (ClosedMeetingException e) {
                Console.WriteLine(e.message);
            }
            catch (SlotNotFoundException e) {
                Console.WriteLine(e.message);
            }
            catch (UnknownMeetingException e) {
                Console.WriteLine(e.message);
            }
        }
Exemplo n.º 26
0
        // Token: 0x06002916 RID: 10518 RVA: 0x000E8828 File Offset: 0x000E6A28
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            string queryStringParameter = Utilities.GetQueryStringParameter(base.Request, "t");

            this.MeetingPageWriterFactory(queryStringParameter, e);
            JunkEmailUtilities.GetJunkEmailPropertiesForItem(base.Item, base.IsEmbeddedItem, base.ForceEnableItemLink, base.UserContext, out this.isInJunkEmailFolder, out this.isSuspectedPhishingItem, out this.itemLinkEnabled, out this.isJunkOrPhishing);
            if (this.isJunkOrPhishing)
            {
                this.bodyMarkup = Markup.PlainText;
            }
            if (!ObjectClass.IsCalendarItemCalendarItemOccurrenceOrRecurrenceException(queryStringParameter) && !base.IsPreviewForm)
            {
                MeetingMessage meetingMessage = base.Item as MeetingMessage;
                if (meetingMessage == null)
                {
                    throw new OwaInvalidOperationException("Item must be of MeetingMessage type");
                }
                if (meetingMessage != null && !meetingMessage.IsRead)
                {
                    meetingMessage.MarkAsRead(Utilities.ShouldSuppressReadReceipt(base.UserContext, meetingMessage), false);
                }
            }
            object obj = base.Item.TryGetProperty(ItemSchema.SentTime);

            if (obj != null && !(obj is PropertyError))
            {
                this.sentTime = (ExDateTime)obj;
            }
            if (this.sharedFromOlderVersion)
            {
                this.meetingPageWriter.FormInfobar.AddMessage(SanitizedHtmlString.Format(LocalizedStrings.GetNonEncoded(1896884103), new object[]
                {
                    this.receiverDisplayName
                }), InfobarMessageType.Informational);
            }
        }
 // Token: 0x060007B3 RID: 1971 RVA: 0x0003708C File Offset: 0x0003528C
 private void QueryAndDeleteMatchingItems(MailboxSession itemStore, MeetingMessage item, CalendarItemBase originalCalendarItem, byte[] itemGloblObjectId, string internetMessageId, string sentRepresenting, int itemSequenceNumber, ref OldMessageDeletion.LatestItemInfo latestInfo)
 {
     try
     {
         List <VersionedId> list = this.QueryMatchingItems(itemStore, item, itemGloblObjectId, sentRepresenting, itemSequenceNumber, ref latestInfo);
         if (item is MeetingRequest && itemSequenceNumber >= latestInfo.LatestSequenceNumber)
         {
             OldMessageDeletion.ApplyRollingHighlight((MeetingRequest)item, internetMessageId, originalCalendarItem, latestInfo);
         }
         if (list != null && list.Count != 0)
         {
             StoreId[] array = list.ToArray();
             OldMessageDeletion.Tracer.TraceDebug <object, ArrayTracer <StoreId> >((long)this.GetHashCode(), "{0}: Deleting message: {1}", TraceContext.Get(), new ArrayTracer <StoreId>(array));
             CalendarAssistant.TracerPfd.TracePfd <int, object, ArrayTracer <StoreId> >((long)this.GetHashCode(), "PFD IWC {0} {1}: Deleting message: {2}", 29847, TraceContext.Get(), new ArrayTracer <StoreId>(array));
             AggregateOperationResult aggregateOperationResult = itemStore.Delete(DeleteItemFlags.MoveToDeletedItems, array);
             OldMessageDeletion.Tracer.TraceDebug <object, OperationResult>((long)this.GetHashCode(), "{0}: Deleting items returned: {1}", TraceContext.Get(), aggregateOperationResult.OperationResult);
             CalendarAssistantPerformanceCounters.MeetingMessagesDeleted.IncrementBy((long)list.Count);
         }
     }
     catch (ObjectNotFoundException arg)
     {
         OldMessageDeletion.Tracer.TraceDebug <object, ObjectNotFoundException>((long)this.GetHashCode(), "{0}: Stopped OMD because we encountered an exception: {1}", TraceContext.Get(), arg);
     }
 }
 public static void ProcessMeetingMessage(IStoreSession session, MeetingMessage message, Event @event, IXSOFactory xsoFactory = null)
 {
     try
     {
         MeetingMessageType type = message.Type;
         if (type != MeetingMessageType.SeriesRequest)
         {
             throw new NotSupportedException(string.Format("Not supported meeting message type: {0}", message.Type));
         }
         ProcessMeetingMessageCommand processMeetingMessageCommand = new ProcessSeriesMeetingRequest
         {
             MeetingMessage = message,
             Event          = @event
         };
         CalendaringContainer calendaringContainer = new CalendaringContainer(session, xsoFactory);
         processMeetingMessageCommand.Scope = (calendaringContainer.Calendars.Default.Events as Events);
         processMeetingMessageCommand.Execute(null);
     }
     catch (Exception arg)
     {
         ExTraceGlobals.MeetingMessageProcessingTracer.TraceError <string, Exception>(0L, "Error processing meeting message for message '{0}'. Error {1}", message.Id ?? string.Empty, arg);
         throw;
     }
 }
Exemplo n.º 29
0
 public void CancelEvent(StoreId id, CancelEventParameters parameters, int?seriesSequenceNumber = null, bool deleteAfterCancelling = true, Event updateToEvent = null, byte[] masterGoid = null)
 {
     using (ICalendarItemBase calendarItemBase = this.Bind(id))
     {
         if (calendarItemBase.IsMeeting && !calendarItemBase.IsOrganizer())
         {
             throw new InvalidRequestException(CalendaringStrings.ErrorNotAuthorizedToCancel);
         }
         calendarItemBase.OpenAsReadWrite();
         if (updateToEvent != null)
         {
             EventTranslator.Instance.SetPropertiesFromEntityOnStorageObject(updateToEvent, calendarItemBase);
         }
         if (calendarItemBase.IsMeeting && calendarItemBase.AttendeeCollection != null && calendarItemBase.AttendeeCollection.Count > 0)
         {
             using (MeetingCancellation meetingCancellation = ((CalendarItemBase)calendarItemBase).CancelMeeting(seriesSequenceNumber, masterGoid))
             {
                 if (parameters != null)
                 {
                     EventWorkflowParametersTranslator <CancelEventParameters, CancelEventParametersSchema> .Instance.SetPropertiesFromEntityOnStorageObject(parameters, meetingCancellation);
                 }
                 MeetingMessage.SendLocalOrRemote(meetingCancellation, true, true);
                 goto IL_95;
             }
         }
         if (updateToEvent != null)
         {
             calendarItemBase.SaveWithConflictCheck(SaveMode.ResolveConflicts);
         }
         IL_95 :;
     }
     if (deleteAfterCancelling)
     {
         this.Delete(id, DeleteItemFlags.MoveToDeletedItems | DeleteItemFlags.CancelCalendarItem);
     }
 }
Exemplo n.º 30
0
        // Token: 0x06002FE6 RID: 12262 RVA: 0x001178DC File Offset: 0x00115ADC
        public static void GetReceiverGSCalendarIdStringAndDisplayName(UserContext userContext, MeetingMessage item, out string id, out string displayName)
        {
            id          = string.Empty;
            displayName = null;
            ExchangePrincipal exchangePrincipal;

            if (userContext.DelegateSessionManager.TryGetExchangePrincipal(item.ReceivedRepresenting.EmailAddress, out exchangePrincipal))
            {
                OwaStoreObjectId owaStoreObjectId = OwaStoreObjectId.CreateFromGSCalendarLegacyDN(exchangePrincipal.LegacyDn);
                id          = owaStoreObjectId.ToBase64String();
                displayName = exchangePrincipal.MailboxInfo.DisplayName;
            }
        }