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 }
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 }); }