コード例 #1
0
ファイル: MailInboxViewTest.cs プロジェクト: ozel981/MailBox
 public void ConstructorTest()
 {
     #region Init variables
     int            mailID  = 1;
     bool           read    = true;
     string         name    = "testname";
     string         surname = "testsurname";
     string         address = "*****@*****.**";
     UserGlobalView sender  = new UserGlobalView
     {
         Name    = name,
         Surname = surname,
         Address = address
     };
     string   topic    = "testtopic";
     DateTime dateTime = new DateTime(2021, 1, 1);
     #endregion
     MailInboxView inboxMail = new MailInboxView
     {
         MailID = mailID,
         Sender = sender,
         Date   = dateTime,
         Topic  = topic,
         Read   = read
     };
     #region Tests
     Assert.NotNull(inboxMail);
     Assert.Equal(inboxMail.MailID, mailID);
     Assert.Equal(inboxMail.Read, read);
     Assert.Equal(inboxMail.Sender, sender);
     Assert.Equal(inboxMail.Topic, topic);
     Assert.Equal(inboxMail.Date, dateTime);
     #endregion
 }
コード例 #2
0
ファイル: MailService.cs プロジェクト: ozel981/MailBox
        public PagingMailInboxView GetUserMails(int userID, int page, SortingEnum sorting, FilterEnum filter, string filterPhrase)
        {
            filterPhrase ??= "";

            bool firstPage = (page == 1);

            var userMails = _context.UserMails
                            .Include(x => x.Mail)
                            .ThenInclude(x => x.Sender)
                            .Where(x => x.UserID == userID).AsQueryable();

            switch (filter)
            {
            case FilterEnum.FilterTopic:
                userMails = userMails.Where(x => x.Mail.Topic.StartsWith(filterPhrase)).AsQueryable();
                break;

            case FilterEnum.FilterSenderName:
                userMails = userMails.Where(x => x.Mail.Sender.FirstName.StartsWith(filterPhrase)).AsQueryable();
                break;

            case FilterEnum.FilterSenderSurname:
                userMails = userMails.Where(x => x.Mail.Sender.LastName.StartsWith(filterPhrase)).AsQueryable();
                break;
            }

            switch (sorting)
            {
            case SortingEnum.ByDateFromNewest:
                userMails = userMails.OrderByDescending(x => x.Mail.Date);
                break;

            case SortingEnum.ByDateFromOldest:
                userMails = userMails.OrderBy(x => x.Mail.Date);
                break;

            case SortingEnum.BySenderAZ:
                userMails = userMails.OrderBy(x => x.Mail.Sender.FirstName).ThenBy(x => x.Mail.Sender.LastName).ThenByDescending(x => x.Mail.Date);
                break;

            case SortingEnum.BySenderZA:
                userMails = userMails.OrderByDescending(x => x.Mail.Sender.FirstName).ThenByDescending(x => x.Mail.Sender.LastName).ThenByDescending(x => x.Mail.Date);
                break;

            case SortingEnum.ByTopicAZ:
                userMails = userMails.OrderBy(x => x.Mail.Topic).ThenByDescending(x => x.Mail.Date);
                break;

            case SortingEnum.ByTopicZA:
                userMails = userMails.OrderByDescending(x => x.Mail.Topic).ThenByDescending(x => x.Mail.Date);
                break;
            }

            bool lastPage = (userMails.Count() <= 5 * page);

            userMails = userMails.Skip((page - 1) * 5).Take(5);

            List <MailInboxView> mails = new List <MailInboxView>();

            foreach (var um in userMails)
            {
                MailInboxView miv = new MailInboxView
                {
                    MailID = um.MailID,
                    Read   = um.Read,
                    Sender = new UserGlobalView
                    {
                        Name    = um.Mail.Sender.FirstName,
                        Surname = um.Mail.Sender.LastName,
                        Address = um.Mail.Sender.Email
                    },
                    Topic = um.Mail.Topic,
                    Date  = um.Mail.Date,
                };
                mails.Add(miv);
            }

            return(new PagingMailInboxView {
                Mails = mails, FirstPage = firstPage, LastPage = lastPage
            });
        }