/// <summary>
        /// Converts <see cref="MeetingNotificationItemEntity"/> to a <see cref="MeetingNotificationItemTableEntity"/>.
        /// </summary>
        /// <param name="meetingNotificationItemEntity"> meetingNotificationItemEntity. </param>
        /// <returns><see cref="MeetingNotificationItemTableEntity"/>.</returns>
        public static MeetingNotificationItemTableEntity ConvertToMeetingNotificationItemTableEntity(this MeetingNotificationItemEntity meetingNotificationItemEntity)
        {
            if (meetingNotificationItemEntity is null)
            {
                return(null);
            }

            MeetingNotificationItemTableEntity meetingNotificationItemTableEntity = new MeetingNotificationItemTableEntity();

            meetingNotificationItemTableEntity.PartitionKey      = meetingNotificationItemEntity.Application;
            meetingNotificationItemTableEntity.RowKey            = meetingNotificationItemEntity.NotificationId;
            meetingNotificationItemTableEntity.Application       = meetingNotificationItemEntity.Application;
            meetingNotificationItemTableEntity.RequiredAttendees = meetingNotificationItemEntity.RequiredAttendees;
            meetingNotificationItemTableEntity.OptionalAttendees = meetingNotificationItemEntity.OptionalAttendees;
            meetingNotificationItemTableEntity.Application       = meetingNotificationItemEntity.Application;
            meetingNotificationItemTableEntity.ErrorMessage      = meetingNotificationItemEntity.ErrorMessage;
            meetingNotificationItemTableEntity.DayofMonth        = meetingNotificationItemEntity.DayofMonth ?? default;
            meetingNotificationItemTableEntity.DayOfWeekByMonth  = meetingNotificationItemEntity.DayOfWeekByMonth;
            meetingNotificationItemTableEntity.DaysOfWeek        = meetingNotificationItemEntity.DaysOfWeek;
            meetingNotificationItemTableEntity.EndDate           = meetingNotificationItemEntity.EndDate;
            meetingNotificationItemTableEntity.IsAllDayEvent     = meetingNotificationItemEntity.IsAllDayEvent;
            meetingNotificationItemTableEntity.From                       = meetingNotificationItemEntity.From;
            meetingNotificationItemTableEntity.IsCancel                   = meetingNotificationItemEntity.IsCancel;
            meetingNotificationItemTableEntity.IsOnlineMeeting            = meetingNotificationItemEntity.IsOnlineMeeting;
            meetingNotificationItemTableEntity.NotificationId             = meetingNotificationItemEntity.NotificationId;
            meetingNotificationItemTableEntity.Priority                   = meetingNotificationItemEntity.Priority.ToString();
            meetingNotificationItemTableEntity.IsPrivate                  = meetingNotificationItemEntity.IsPrivate;
            meetingNotificationItemTableEntity.IsResponseRequested        = meetingNotificationItemEntity.IsResponseRequested;
            meetingNotificationItemTableEntity.Status                     = meetingNotificationItemEntity.Status.ToString();
            meetingNotificationItemTableEntity.Subject                    = meetingNotificationItemEntity.Subject;
            meetingNotificationItemTableEntity.Location                   = meetingNotificationItemEntity.Location;
            meetingNotificationItemTableEntity.Timestamp                  = meetingNotificationItemEntity.Timestamp;
            meetingNotificationItemTableEntity.MonthOfYear                = meetingNotificationItemEntity.MonthOfYear;
            meetingNotificationItemTableEntity.TrackingId                 = meetingNotificationItemEntity.TrackingId;
            meetingNotificationItemTableEntity.TryCount                   = meetingNotificationItemEntity.TryCount;
            meetingNotificationItemTableEntity.ETag                       = meetingNotificationItemEntity.ETag;
            meetingNotificationItemTableEntity.OccurrenceId               = meetingNotificationItemEntity.OccurrenceId;
            meetingNotificationItemTableEntity.Ocurrences                 = meetingNotificationItemEntity.Ocurrences ?? default;
            meetingNotificationItemTableEntity.RecurrencePattern          = meetingNotificationItemEntity.RecurrencePattern.ToString();
            meetingNotificationItemTableEntity.ReminderMinutesBeforeStart = meetingNotificationItemEntity.ReminderMinutesBeforeStart;
            meetingNotificationItemTableEntity.TemplateId                 = meetingNotificationItemEntity.TemplateId;
            meetingNotificationItemTableEntity.End                 = meetingNotificationItemEntity.End;
            meetingNotificationItemTableEntity.Start               = meetingNotificationItemEntity.Start;
            meetingNotificationItemTableEntity.SequenceNumber      = meetingNotificationItemEntity.SequenceNumber ?? default;
            meetingNotificationItemTableEntity.SendOnUtcDate       = meetingNotificationItemEntity.SendOnUtcDate;
            meetingNotificationItemTableEntity.TrackingId          = meetingNotificationItemEntity.TrackingId;
            meetingNotificationItemTableEntity.TryCount            = meetingNotificationItemEntity.TryCount;
            meetingNotificationItemTableEntity.Timestamp           = meetingNotificationItemEntity.Timestamp;
            meetingNotificationItemTableEntity.RowKey              = meetingNotificationItemEntity.NotificationId;
            meetingNotificationItemTableEntity.PartitionKey        = meetingNotificationItemEntity.Application;
            meetingNotificationItemTableEntity.Interval            = meetingNotificationItemEntity.Interval;
            meetingNotificationItemTableEntity.ICalUid             = meetingNotificationItemEntity.ICalUid;
            meetingNotificationItemTableEntity.ShowAs              = meetingNotificationItemEntity.ShowAs;
            meetingNotificationItemTableEntity.AttachmentReference = meetingNotificationItemEntity.AttachmentReference;
            meetingNotificationItemTableEntity.EmailAccountUsed    = meetingNotificationItemEntity.EmailAccountUsed;
            meetingNotificationItemTableEntity.EventId             = meetingNotificationItemEntity.EventId;
            meetingNotificationItemTableEntity.ShowAs              = meetingNotificationItemEntity.ShowAs;
            return(meetingNotificationItemTableEntity);
        }
        private MeetingNotificationItemEntity ConvertToMeetingNotificationItemEntity(MeetingNotificationItemTableEntity meetingNotificationItemTableEntity)
        {
            MeetingNotificationItemEntity meetingNotificationItemEntity = new MeetingNotificationItemEntity();

            meetingNotificationItemEntity.Application       = meetingNotificationItemTableEntity.Application;
            meetingNotificationItemEntity.NotificationId    = meetingNotificationItemTableEntity.NotificationId;
            meetingNotificationItemEntity.RequiredAttendees = meetingNotificationItemTableEntity.RequiredAttendees;
            meetingNotificationItemEntity.OptionalAttendees = meetingNotificationItemTableEntity.OptionalAttendees;
            meetingNotificationItemEntity.Application       = meetingNotificationItemTableEntity.Application;
            meetingNotificationItemEntity.ErrorMessage      = meetingNotificationItemTableEntity.ErrorMessage;
            meetingNotificationItemEntity.DayofMonth        = meetingNotificationItemTableEntity.DayofMonth;
            meetingNotificationItemEntity.DayOfWeekByMonth  = meetingNotificationItemTableEntity.DayOfWeekByMonth;
            meetingNotificationItemEntity.DaysOfWeek        = meetingNotificationItemTableEntity.DaysOfWeek;
            meetingNotificationItemEntity.IsAllDayEvent     = meetingNotificationItemTableEntity.IsAllDayEvent;
            meetingNotificationItemEntity.From                       = meetingNotificationItemTableEntity.From;
            meetingNotificationItemEntity.IsCancel                   = meetingNotificationItemTableEntity.IsCancel;
            meetingNotificationItemEntity.IsOnlineMeeting            = meetingNotificationItemTableEntity.IsOnlineMeeting;
            meetingNotificationItemEntity.NotificationId             = meetingNotificationItemTableEntity.NotificationId;
            meetingNotificationItemEntity.Priority                   = meetingNotificationItemTableEntity.Priority == null ? NotificationPriority.Low : (NotificationPriority)Enum.Parse(typeof(NotificationPriority), meetingNotificationItemTableEntity.Priority);
            meetingNotificationItemEntity.IsPrivate                  = meetingNotificationItemTableEntity.IsPrivate;
            meetingNotificationItemEntity.IsResponseRequested        = meetingNotificationItemTableEntity.IsResponseRequested;
            meetingNotificationItemEntity.Status                     = meetingNotificationItemTableEntity.Status == null ? NotificationItemStatus.Queued : (NotificationItemStatus)Enum.Parse(typeof(NotificationItemStatus), meetingNotificationItemTableEntity.Status);
            meetingNotificationItemEntity.Subject                    = meetingNotificationItemTableEntity.Subject;
            meetingNotificationItemEntity.Location                   = meetingNotificationItemTableEntity.Location;
            meetingNotificationItemEntity.Timestamp                  = meetingNotificationItemTableEntity.Timestamp;
            meetingNotificationItemEntity.MonthOfYear                = meetingNotificationItemTableEntity.MonthOfYear;
            meetingNotificationItemEntity.TrackingId                 = meetingNotificationItemTableEntity.TrackingId;
            meetingNotificationItemEntity.TryCount                   = meetingNotificationItemTableEntity.TryCount;
            meetingNotificationItemEntity.ETag                       = meetingNotificationItemTableEntity.ETag;
            meetingNotificationItemEntity.OccurrenceId               = meetingNotificationItemTableEntity.OccurrenceId;
            meetingNotificationItemEntity.Ocurrences                 = meetingNotificationItemTableEntity.Ocurrences;
            meetingNotificationItemEntity.RecurrencePattern          = meetingNotificationItemTableEntity.RecurrencePattern == null ? MeetingRecurrencePattern.None : (MeetingRecurrencePattern)Enum.Parse(typeof(MeetingRecurrencePattern), meetingNotificationItemTableEntity.RecurrencePattern);
            meetingNotificationItemEntity.ReminderMinutesBeforeStart = meetingNotificationItemTableEntity.ReminderMinutesBeforeStart;
            meetingNotificationItemEntity.TemplateId                 = meetingNotificationItemTableEntity.TemplateId;
            meetingNotificationItemEntity.End                 = meetingNotificationItemTableEntity.End;
            meetingNotificationItemEntity.Start               = meetingNotificationItemTableEntity.Start;
            meetingNotificationItemEntity.EndDate             = meetingNotificationItemTableEntity.EndDate;
            meetingNotificationItemEntity.SequenceNumber      = meetingNotificationItemTableEntity.SequenceNumber;
            meetingNotificationItemEntity.SendOnUtcDate       = meetingNotificationItemTableEntity.SendOnUtcDate;
            meetingNotificationItemEntity.TrackingId          = meetingNotificationItemTableEntity.TrackingId;
            meetingNotificationItemEntity.TryCount            = meetingNotificationItemTableEntity.TryCount;
            meetingNotificationItemEntity.Timestamp           = meetingNotificationItemTableEntity.Timestamp;
            meetingNotificationItemEntity.RowKey              = meetingNotificationItemTableEntity.NotificationId;
            meetingNotificationItemEntity.PartitionKey        = meetingNotificationItemTableEntity.Application;
            meetingNotificationItemEntity.Interval            = meetingNotificationItemTableEntity.Interval;
            meetingNotificationItemEntity.ICalUid             = meetingNotificationItemTableEntity.ICalUid;
            meetingNotificationItemEntity.AttachmentReference = meetingNotificationItemTableEntity.AttachmentReference;
            meetingNotificationItemEntity.EventId             = meetingNotificationItemTableEntity.EventId;
            meetingNotificationItemEntity.EmailAccountUsed    = meetingNotificationItemTableEntity.EmailAccountUsed;
            meetingNotificationItemEntity.Action              = meetingNotificationItemTableEntity.Action;
            return(meetingNotificationItemEntity);
        }
Пример #3
0
        public async Task GetMeetingNotificationItemEntitiesBetweenDatesTests()
        {
            var statusList = new List <NotificationItemStatus>()
            {
                NotificationItemStatus.Failed
            };
            var meetingNotificationItemEntity = new MeetingNotificationItemTableEntity()
            {
                Application    = this.applicationName,
                NotificationId = Guid.NewGuid().ToString(),
            };
            var notificationList = new List <MeetingNotificationItemTableEntity>()
            {
                meetingNotificationItemEntity
            };
            var meetingHistoryTable = new Mock <CloudTable>(new Uri("http://unittests.localhost.com/FakeTable"), (TableClientConfiguration)null);

            _ = this.cloudStorageClient.Setup(x => x.GetCloudTable("MeetingHistory")).Returns(meetingHistoryTable.Object);
            _ = meetingHistoryTable.Setup(x => x.ExecuteQuery(It.IsAny <TableQuery <MeetingNotificationItemTableEntity> >(), It.IsAny <TableRequestOptions>(), It.IsAny <OperationContext>())).Returns(notificationList);
            IOptions <StorageAccountSetting> options = Options.Create <StorageAccountSetting>(new StorageAccountSetting {
                BlobContainerName = "Test", ConnectionString = "Test Con", MailTemplateTableName = "MailTemplate", EmailHistoryTableName = "EmailHistory", MeetingHistoryTableName = "MeetingHistory", NotificationQueueName = "test-queue"
            });
            var classUnderTest = new TableStorageEmailRepository(options, this.cloudStorageClient.Object, this.logger.Object, this.mailAttachmentRepository.Object);

            // dateRange is Null.
            _ = Assert.ThrowsAsync <ArgumentNullException>(async() => await classUnderTest.GetPendingOrFailedMeetingNotificationsByDateRange(null, this.applicationName, statusList));

            // applicationname is Null
            var result = await classUnderTest.GetPendingOrFailedMeetingNotificationsByDateRange(this.dateRange, null, statusList);

            Assert.IsNotNull(result);
            Assert.AreEqual(result.FirstOrDefault().NotificationId, meetingNotificationItemEntity.NotificationId);

            // NotificationStatusList is null
            result = await classUnderTest.GetPendingOrFailedMeetingNotificationsByDateRange(this.dateRange, this.applicationName, null);

            Assert.IsNotNull(result);
            Assert.AreEqual(result.FirstOrDefault().NotificationId, meetingNotificationItemEntity.NotificationId);

            // Fetched records are null
            notificationList = null;
            _ = meetingHistoryTable.Setup(x => x.ExecuteQuery(It.IsAny <TableQuery <MeetingNotificationItemTableEntity> >(), It.IsAny <TableRequestOptions>(), It.IsAny <OperationContext>())).Returns(notificationList);
            classUnderTest = new TableStorageEmailRepository(options, this.cloudStorageClient.Object, this.logger.Object, this.mailAttachmentRepository.Object);
            result         = await classUnderTest.GetPendingOrFailedMeetingNotificationsByDateRange(this.dateRange, this.applicationName, null);

            Assert.IsNull(result);
        }